Cómo mejorar la calidad de tus aplicaciones PHP

A nadie le gusta encontrar bugs en sus aplicaciones.

Mucho menos que sea el cliente quien los encuentre.

¿Qué podemos hacer para evitar estas desagradables situaciones? Testear.

Qué significa testear una aplicación

Testear una aplicación puede significar varias cosas pero básicamente, se trata de probar el funcionamiento tratando de confirmar que todo ocurre según lo planeado.

La parte desagradable del testing es que sólo puede darnos seguridad de que la aplicación falla.

En otras palabras el hecho de que todas las pruebas resulten exitosas puede significar dos cosas:

  1. Que efectivamente la aplicación esté libre de errores
  2. Que no hayamos realizado suficientes pruebas

Desafortunadamente no es posible determinar si estamos en la situación uno o la dos.

¡Claro que esto no significa que testear no valga la pena!

El punto es que nunca podremos tener un 100% de confianza en que la aplicación es correcta… aunque tener algo de confianza es mejor que no tener nada.

Qué tipos de testing existen

Existen diversos tipos de pruebas que pueden realizarse en aplicaciones.

La más básica es el testing manual.

Este tipo de prueba se trata de uno mismo usando la aplicación como espera que lo haría un usuario y evaluando los resultados a ojo.

Claramente se trata del testing más simple que puede realizarse pero, a su vez, el menos ventajoso:

  • Es lento
  • Es tedioso
  • Es poco confiable

Una segunda categoría de tests son los automatizados y, dentro de ellos, existen subdivisiones:

  • Los tests unitarios
  • Los tests de integración
  • Los tests de aceptación

Qué son los tests unitarios

Los tests unitarios son aquellos en los que se prueba una parte muy específica del código (Un método por ejemplo).

Se sabe de antemano qué resultado debe retornar una función dado un input y se verifica que así suceda.

Qué son los tests de integración

Los tests de integración son similares a los unitarios, salvo que lo que se prueba no es una unidad en aislamiento si no cómo dos o más unidades interactúan entre sí.

Qué son los tests de aceptación

Los tests de aceptación apuntan a verificar el correcto funcionamiento del sistema como tal, sin tomar en cuenta el código que está detrás.

La idea de estas pruebas es automatizar las que se realizarían en forma manual.

Qué herramientas pueden usarse para testear PHP

Existen varias herramientas que pueden utilizarse para verificar el código escrito con PHP.

La más conocida y utilizada es phpUnit.

Si bien esta herramienta está diseñada para la realización de pruebas unitarias, es posible utilizarla en otros tipos de pruebas también.

Las pruebas de aceptación requieren algún mecanismo de automatización de la interface de usuario (En el caso de aplicaciones web se trata de automatizar el navegador).

Una herramienta muy interesante para realizar pruebas de aceptación es CodeCeption para escribir las pruebas y Selenium para automatizar el uso del navegador.

¿Qué partes del código deben ser testeadas?

Como te podrás imaginar, no es posible tener el 100% del código cubierto por tests… una aplicación de mediana complejidad plantea un número realmente elevado de escenarios.

Esto quiere decir que debemos elegir qué partes deben ser verificadas y cuáles no.

La decisión no es sencilla, pero hay que tratar de fallar en favor de las partes críticas del sistema (Aquellas que, de no funcionar correctamente nos pondrían en serios problemas).

La buena noticia es que los tests, al ser automatizados, pueden ejecutarse tantas veces como sea necesario y, a medida que se descubren nuevos inconvenientes, nuevos tests pueden ser agregados al conjunto, haciendo que la aplicación se robustezca más y más.

¿Lo único que puede hacerse es testear?

No.

Existe otra serie de herramientas que apuntan a detectar problemas antes de ejecutar el código.

En lenguajes compilados por ejemplo, la verificación de compatibilidad de tipos de datos se produce antes de la ejecución de los programas… no es el caso de PHP.

Herramientas como phpStan pueden ayudar a mejorar la calidad del código mientras se está desarrollando.

Conclusión

El testing es una práctica sumamente importante a la hora de realizar desarrollos profesionales.

¿De qué forma verificas la calidad de tus aplicaciones?

mchojrin

Por mchojrin

Ayudo a desarrolladores PHP a afinar sus habilidades técnicas y avanzar en sus carreras

1 comentario

¿Te quedó alguna duda? Publica aca tu pregunta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.