¿Qué se le puede pedir al testing?

Muchos están preocupados desde hace tiempo por hacer que cada vez más gente programe. Esto tiene que ver, entre otras cosas, con que la gente entienda cada vez más de tecnología, siendo que esta está cada vez más presente en la vida cotidiana de las personas.

Paralelamente deberíamos también pensar en difundir cuáles son las virtudes y limitaciones del desarrollo de software y en particular del testing de software.

Entender hasta dónde podemos llegar en temas como aseguramiento y control de la calidad, seguridad y/o auditabilidad es casi tan importante como saber programar.

A partir de esto, me permito recomendar este artículo de El gato y la caja llamado Vot no, donde se explican tres principios clave:

1. El objetivo del testing es incrementar confianza/disminuir riesgos
"El testing es la disciplina informática encargada de probar una pieza de software buscando incrementar la confianza que se tiene en que opera como debe. Funciona así: uno prepara una batería de casos de prueba, que son descripciones paso a paso de qué hacer con el sistema, y compara el resultado obtenido con el esperado. Si no son iguales, acabamos de encontrar un defecto (lo que coloquialmente se llama ‘un bug’).
Por otro lado, si sí lo son, la única garantía que tenemos es que esa interacción (y no otra, y mucho menos todas) funcionó bien la vez que la probamos, pero tampoco es que estamos tan seguros. Aún si corremos otra vez exactamente la misma secuencia, este segundo intento podría fallar porque no sabemos si el programa en cuestión tiene en cuenta alguna ‘variable invisible’, como por ejemplo la hora de la computadora, y entonces se comporta de una forma cuando esa variable es una (digamos, a las 9:13 de un martes), y de forma distinta en otra (por ejemplo, a las 4:12 de la madrugada del sábado). El que no se comporte distinto a las 4:12 del sábado, que tire la primera piedra."
2. El testing no garantiza la ausencia de defecto, sólo su presencia
"Aún si tuviésemos el código y pudiésemos mirar todas las variables involucradas, las alternativas crecen exponencialmente y los caminos posibles a probar son millones de millones. Es decir, el testing es un paso fundamental para asegurar la calidad del software, y cuando encuentra un defecto, hay que arreglarlo; pero el testing nunca puede asegurar la ausencia de defectos."
 3. El testing es una decisión económica
"Tener un alto grado de confianza en un sistema tan crítico como el que interviene en una elección requiere de mucho tiempo de trabajo por parte de un grupo de expertos, que utilizará técnicas como inspección ocular, revisión entre pares, testing, análisis estático y dinámico de código, penetration testing (no relacionado con Tinder) y un largo etcétera durante un periodo prolongado de tiempo." 
Es caro testear! Nosotros decidimos cuánto queremos invertir dependiendo de los riesgos que queremos mitigar.

Seguimos pensando..

Comentarios

Entradas más populares de este blog

10 definiciones de calidad

¿Qué es time and material?

Teoría Económica y Outsourcing