¿Que es una Aserción?

Citando a Steve McConnell, una aserción se define como:

".. código que se usa durante el desarrollo -usualmente una rutina o una macro- que permite a un programa auto diagnosticarse al momento que se ejecuta"

O dicho en términos mas simples, piensa en las aserciones como banderas que te indican cuando ocurre algún evento que nunca debería de ocurrir.

Pongamos un ejemplo donde has desarrollado un programa para procesar facturaciones de una pequeña empresa, y sabes que tu programa máximo puede procesar 10,000 facturaciones al día. Estas seguro que la empresa es tan pequeña que normalmente no llegara ni al 10% de esa cantidad, pero sin embargo el riesgo existe. Aquí es donde es útil una aserción.

Las aserciones son especialmente útiles en programas donde necesitas la mayor confiabilidad posible, y en caso de que ocurra un error poder diagnosticarlo rápidamente.

Todo código que vaya a producción no debe de depender de las aserciones para funcionar. Debes de utilizar un correcto manejo de errores (excepciones, loggeo, etc) para los errores que puedes esperar que ocurran comúnmente, y las aserciones para los errores que nunca deberían de ocurrir.

En términos prácticos

Lenguajes como C#, Java o PHP ya traen incluida esta funcionalidad. Comúnmente una aserción recibe un par de parámetros. Una expresión booleana y el mensaje que salta en caso de error.

En Java la declaramos de la siguiente manera:

int numero = 5;
assert numero > 10 : "El número es menor a 10!";

En C# hacemos uso de la clase Debug:

int numero = 5;
Debug.Assert(numero > 10, "El número es menor a 10!");

En PHP usamos utilizamos assert():

$numero = 5;
assert($numero > 10);

Todos lanzaran errores o warnings avisándonos de la catástrofe.

Enlaces: