1-Introducción 2-Que es el test 3-Ideas importantes sobre el test 4-Perfil del tester 5-Propuesta de test plan 6-Planificación y control del test 6.1-Recursos del test 6.2-Criterios de "completitud" 8-Organización del test 9-Técnicas de test de relectura de código, o técnicas "humanas" |
|||||||||||||||
1-Introducción | |||||||||||||||
En los sistemas electrónicos y el software, el test es una de las fases más importantes, probablemente tanto como el propio desarrollo. Las empresas con más experiencia son conscientes de ello, y saben que un test adecuado tiene una implicación directa en la calidad del producto final, y al contrario de lo que puede parecer a simple vista, comporta a menudo un ahorro de dinero importante. Este ahorro se puede dar en variables fácilmente cuantificables, como el número de reparaciones, horas de asistencia técnica, sustitución de equipos, y en otras variables más difíciles de evaluar, como la satisfacción del cliente, la imagen del producto, o incluso la satisfacción de los propios trabajadores. A pesar de su importancia, el test es poco tratado en las universidades en las que, con frecuencia, se trata de pasada. No obstante se ha escrito y discutido mucho sobre éste, y como a continuación ser verá, a pesar de disponer de técnicas y metodologías precisas, es un proceso bastante intuitivo. Este dossier se basa en uno de estos escritos, en concreto en el libro "The art of software testing" de Glenford J.Myers, que se considera como un clásico y referencia en la materia. También se basa en otra información recopilada de Internet y en la experiencia adquirida en los diferentes puestos de trabajo por los que he pasado. Aunque los contextos en que se ejecuta el software y el firmware no son del todo iguales, lo que aquí se expone es aplicable a ambos. De hecho la diferencia software-firmware es cada vez más pequeña, ya que los entornos de los sistemas embedded son cada vez más complejos y más parecidos a los entornos de lo que entendemos por software. Por esto es cada vez más importante aplicar técnicas de test de software sobre el firmware. La parte que posiblemente queda un poco más alejada de éste texto es la relacionada con los drivers o controladores, los cuales se encuentran a medio camino entre el software y el hardware. Sobre estos se pueden aplicar algunas de las técnicas aquí expuestas, pero también se han de aplicar otras más propias del hardware o la electrónica. Así, el objetivo de este documento es dar una visión general del test de software y de firmware, de como enfocarlo, y de algunas de las muchas técnicas que existen para llevarlo a término. |
|||||||||||||||
2-Que es el test | |||||||||||||||
Antes de entrar en detalles sobre el test, es interesante hacer una aproximación general a este, y una buena forma de hacerlo es intentando definirlo. Normalmente el test se entiende como:
Aunque en el contexto general de un proyecto, el objetivo final del test es garantizar o verificar una cualidad ( ausencia de errores ), entender el test tal como se expresa en las definiciones anteriores generalmente lleva a un test infructuoso y sin éxito. Los mejores resultados se obtienen cuando se plantea de la siguiente forma:
Esto tiene implicaciones directas en el modo de trabajar del encargado del test y en la posición de la empresa respecto el test. Esto es así porque las personas tendemos a guiarnos por objetivos, y si partimos con la idea de demostrar que un software no presenta errores, probablemente lo acabemos consiguiendo sin muchas dificultades. Por otro lado si el test se realiza con la intención de encontrar errores seguramente se encuentren más. El tester es un cazador de errores, y como buen cazador, cuantos más y más grandes sean los errores que cace, mejor será este. Esto no solo tiene implicaciones en el modo de trabajar del tester y en la posición de la empresa respecto a este, sino que también las tiene en el diseño de los casos de test. Es decir que los testers y los responsables del test han de ser conscientes y han de asimilar que las tareas de test son "tareas destructivas" ( con una intención final constructiva, está claro ). Es bajo esta condición cuando los tests dan mejores resultados. Por tanto un buen plan de test es aquél que maximiza las probabilidades de encontrar errores: De esto se puede extraer que "Un test fracasa cuando no se encuentra ningun error" ya que:
Finalmente, la mejor forma de reforzar, o aproximarse a la afirmación de que "el producto satisface los criterios de calidad" es justificando que, a pesar de haberlo intentado, ha sido imposible demostrar que es falsa, más que limitarse a confirmarla. |
|||||||||||||||
3-Ideas importantes sobre el test | |||||||||||||||
Como se ha comentado, el test de software se encuentra muy ligado a factores psicológicos. Esto influye en diversos aspectos que se han de tener en cuenta a la hora de planificar, realizar, y analizar los tests. A continuación se listan algunas de estas consideraciones:
|
|||||||||||||||
|
|||||||||||||||