Testing vs. Checking


En esta nueva entrada vamos a hablar del común de las confusiones al momento de realizar tareas de testing. Muchas veces se confunde el Testing con el Checking lo cual puede resultar en aplicaciones de muy baja calidad debido que la tarea de testing esperada no es mas que una tarea de checking y al momento de poner la aplicación en manos del usuario final, el mismo se puede encontrar con muchos errores mas allá de que las funcionalidades cumplan con lo esperado.

La información que de este post se basa en los documentos de Micheal Bolton y mi experiencia.

Principales diferencias

Checking:

“El checking se enfoca en estar seguro que la aplicación no falla“

  • Es una confirmación
  • Su objetivo es de confirmar lo que intuimos.
  • Es un proceso de confirmación, verificación y validación.
  • Cuando ya creemos que algo es verdadero, lo verificamos mediante la comprobación (Checking).
  • Se realiza checking cuando hacemos un cambio en el código y queremos estar seguros que todo lo que funcionaba antes sigue funcionando.
  • Los mejores programadores realizan mucho checking cuando escriben y modifican su código.

Testing:

“El Testing se enfoca en aprender todo lo que importa sobre como funciona el programa suficientemente como para saber como podría no funcionar “

  • Es explorar y aprender
  • Su objetivo es encontrar nueva información.
  • Es un proceso de exploración, descubrimiento, investigación y aprendizaje.
  • Cuando se configura, se utiliza y se observa un producto con la intención de evaluarlo o con la intención de reconocer un problema que no pudimos anticipar estamos realizando testing.
  • Se realiza testing cuando estamos intentando encontrar los limites del producto y su diseño y cuando tenemos muchas preguntas acerca de este, que en la gran medida no han sido contestadas o incluso ni siquiera se han preguntado antes.

En cuanto a como se ejecutan

Checking:

“El Checking puede probar la presencia de errores, pero no la ausencia”

  • Su resultado es binario (T o F, Y o N, P o F).
  • Se basa en responder a la pregunta “¿Esta validación pasa o falla?”
  • Tales afirmaciones suelen ser simples matrices de decisión.
  • Cuando un check pasa, no se sabe si el programa funciona, sólo sabemos que todavía funciona dentro de nuestras expectativas. El programa podría tener graves problemas, a pesar de que el check pasó.

Testing:

“El testing es, en parte, el proceso de saber si nuestros checks han sido lo suficientemente buenos. En caso de que no lo sean seria razonable agregar mas checks para estar seguros de que ese problema no surja de nuevo ”

  • Tienen resultado abierto.
  • Se basa en responder a la pregunta “¿Hay un problema aquí?”
  • Esta clase de preguntas conlleva a que se necesite muchas observaciones “humanas” combinado con muchos juicios de valores.
  • Tampoco nos da una verdad absoluta sobre si el programa funciona, pero nos brindan una base fuerte como para hacer frente a la pregunta “¿Tiene problemas o no?”

Su relación con QA (Quality Assurence)

Checking:

“El Checking cuando es realizada por un programador puede ser parte de QA”

  • Cuando el programador corre los Unit Test, verifica que los resultados sean los esperados confirmando el conocimiento existente. Encontrar un error conlleva a hacer cambios para que el código responda según lo que indica el unit test. Es decir, el programador esta colaborando para asegurar la calidad de su trabajo haciendo checkings.
  • Rara vez se encuentra nueva información, ya que si se encuentra será una sorpresa y no muy placentera.

Testing:

“El testing no es QA, pero actúa en servicio de este”

  • La búsqueda de nueva información no es una práctica de QA de por sí, el testing recolecta información con la intención de fundamentar una decisión.
  • Evaluar un programa no asegura su calidad, pero puede fundamentar decisiones que van a tener un impacto en la calidad.

Conclusiones

Al momento de realizar testing es importante dar el valor agregado a la actividad (Creo que ahí es donde se encuentra la mas fuerte diferencia) y no quedarse con la mera actividad de hacer un checking siguiendo los pasos del CU y ejecutándolos en la aplicación de manera cuasi robótica ya que esa tarea solo nos asegura que no falla en base a los conocimientos que tenemos, pero no que la aplicación no tenga errores. El valor agregado del testing tiene que estar en investigar, preguntar, buscar alternativas, volver a preguntar y seguir adquiriendo conocimientos del producto que nos permitan llevarlo al limite.

Muchas veces al realizar testing se llega al punto de tomar decisiones de modificar la lógica de la aplicación, los CU o el diseño de la misma, que si nos basáramos en un checking no surgirían.

Es un tema que da mucho para debatir y cuestionar, pero es importante tenerlo siempre en mente.

Anuncios

Un pensamiento en “Testing vs. Checking”

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s