El siguiente texto es parte de un artículo publicado en testingfordamis y que tiene su origen en una publicación de Michael Bolton y traducida por Damian, webmaster de este blog. Sintéticamente nos explica la diferencia entre los conceptos de Testing y Checking a partir de mostrarnos el alcance del Rapid Software Testing.
Inicia con un poco de historia
«Esto siempre ha sido un problema – He estado trabajando con y discutiendo sobre esto desde 1987, y la literatura de esto se remonta al menos a 1961, pero algo nuevo ha sucedido: la informática móvil y distribuida a gran escala. Sí, esto es nuevo. Esto siempre ha sido un problema – He estado trabajando con y discutiendo sobre esto desde 1987, y la literatura de esto se remonta al menos a 1961, pero algo nuevo ha sucedido: la informática móvil y distribuida a gran escala. Sí, esto es nuevo. Veo que este es el mayor desafío para el Testing tal como lo conocemos desde el advenimiento de las micro-computadoras. ¿Por qué exactamente es un reto? Porque además de la complejidad de los productos y plataformas que han ido creciendo de manera constante durante décadas, ahora existe un gran mercado para los productos de software que se espera que sean distribuidos y actualizados al instante.»
Plantea la situación que todos vivimos actualmente
«Queremos probar un producto rápidamente. ¿Cómo lo hacemos? Es tentador decir «Hagamos que las herramientas lo hagan!» Esto pone una enorme presión sobre los testers de software especializados y aquellos que crean herramientas para que los testers usen. Mientras tanto, las personas que no son expertos testers de software, tienen visiones de la industrialización del Testing similares a aquellas primeras fábricas de gabinetes. Sí, siempre ha habido estas presiones, en algún grado. Ahora el toque de tambor de «despliegue continuo» ha abierto otro frente en esa guerra. Creemos que el trabajo cognitivo calificado no es trabajo de fábrica. Por eso es más importante que nunca entender lo que es Testing y cómo las herramientas pueden apoyarlo.»
Nos hace una Intro a la metodología Rapid Software Testing
«Por esta razón, en la metodología de Rapid Software Testing, distinguimos entre los aspectos del proceso de pruebas que las máquinas pueden hacer frente a los que sólo los humanos capacitados pueden hacer. Lo hemos hecho lingüísticamente mediante la adaptación de la palabra comun en Inglés «checking», para referirse a lo que las herramientas pueden hacer. Esto es exactamente paralelo con la convención de larga data de distinguir entre «programar» y «compilar».
La programación es lo que los programadores humanos hacen. La compilación es lo que hace una herramienta en particular para el programador, a pesar de que un compilador podría ser, técnicamente, lo que los programadores hacen. Ahora que lo pienso, nadie habla de la programación automática o programación manual. Hay programación, y hay un montón de otras cosas hechas por las herramientas. Una vez que se crea una herramienta para hacer esas cosas, nunca se llama de nuevo programación.»
Nos expone la diferencia entre Testing y Checking
«Primero echemos un vistazo a Testing y Checking. Aquí están nuestras nuevas definiciones propuestas, que pronto sustituirán a los que hemos utilizado durante años (sujeto a revisión y comentario por colegas):
Testing es el proceso de evaluación de un producto mediante el aprendizaje sobre él a través de la experimentación, que incluye hasta cierto punto: cuestionamiento, estudio, modelado, la observación y la inferencia.
(Un Test es una instancia del Testing)
Checking es el proceso de hacer las evaluaciones mediante la aplicación de reglas de decisión algorítmica a las observaciones específicas de un producto.
(Un check es una instancia del Checking.)
Notas explicativas:
«Evaluar» significa hacer un juicio de valor; ¿es bueno? ¿es malo? pasa? falla? qué bueno? lo malo? Cualquier cosa por el estilo.
«Evaluaciones» como un sustantivo se refiere al producto de la evaluación, que en el contexto de Checking va a ser un artefacto de algún tipo; una cadena de bits.
«Aprendizaje» es el proceso de desarrollo de la mente de uno. Sólo los humanos pueden aprender en el más amplio sentido del término, como lo estamos usando aquí, porque nos estamos refiriendo al conocimiento tácito y al explícito.
«Experimentación» implica la interacción con un objeto y la observación , ya que está en funcionando, sino que también nos estamos refiriendo a los «experimentos mentales» que involucran la interacción puramente hipotética. Al hacer referencia a la experimentación, no estamos negando o rechazando otros tipos de aprendizaje; simplemente estamos tratando de expresar que la experimentación es una práctica que caracteriza al Testing. También implica que el Testing es congruente con la ciencia.
La lista de palabras en la definición Testing no son exhaustivas de todo lo que podría estar involucrado en las pruebas, sino que representan los procesos mentales que pensamos que son más vitales y característicos.
«Algorítmico» significa que se puede expresar de manera explícita en una manera que una herramienta podría realizar.
«Observaciones» pretende abarcar todo el proceso de observar, y no sólo el resultado.
«Observaciones específicas» significa que el proceso de observación resulta en una cadena de bits (de lo contrario, las reglas de decisión algorítmica no podían operar en ellos).
Hay ciertas implicaciones en estas definiciones:
Testing abarca Checking, mientras que Checking no puede abarcar Testing
Checking es un proceso que puede, en principio ser realizado por una herramienta en lugar de un ser humano, mientras que el
Testing sólo puede ser apoyado por herramientas. Sin embargo, las herramientas se pueden utilizar para mucho más que comprobar.
No estamos diciendo que la verificación deba ser automatizada. Pero la característica definitoria de una verificación es que puede ser completamente automatizada, mientras que el Testing es intrínsecamente una actividad humana.
Testing es una investigación abierta – piensa en «Sherlock Holmes»- mientras que Checking es la abreviatura de «Checking de hechos» y se centra en los hechos y las normas específicas relacionadas con esos hechos.
Checking no es lo mismo que confirmación. Checking se utiliza a menudo en un modo de confirmación (típicamente durante las pruebas de regresión), pero también podemos imaginarlos utilizarse para des-confirmación o para la exploración especulativa (es decir, un conjunto de controles generados automáticamente que pisa al azar a través de un vasto espacio, en busca de algo diferente).
Un problema común en nuestra industria es que checking se confunde con Testing Nuestro propósito aquí es reducir la confusión.
Un verificación es descriptible; una prueba podría no serla (eso es porque, a diferencia de una verificación, una prueba implica conocimiento tácito)
Una afirmación, en el sentido de las Ciencias de la Computación, es una especie de verificación. Pero no todas las verificaciones son afirmaciones, e incluso en el caso de las afirmaciones, puede haber código antes de la afirmación que es parte de la verificación, pero no es parte de la afirmación.
Estas definiciones no son juicios morales. No estamos diciendo que la comprobación es inherentemente, hacer algo malo.Por el contrario, la comprobación puede ser algo muy importante que hacer. Nosotros afirmamos que para el checking se considere bueno, debe ocurrir en el contexto de un proceso de inspección. Checking es una táctica de Testing.»
Fuente:
Testing y Checking