Principios Básicos
del proceso de pruebas
Objetivo
Capacitar al
lector para que reconozca, recuerde y memorice los conceptos relacionados con
el proceso de pruebas, además estará en la capacidad de establecer, asociar,
crear afirmaciones, clasificar y categorizar ejemplos sobre los conceptos del
proceso de pruebas.
1.
Contexto del proceso de pruebas
1.1.
Por qué son necesarias las pruebas.
·
Porque las pruebas permiten
detectar fallas que pueden llegar a generar grandes pérdidas monetarias para
una organización, entre más tiempo se demore en encontrar la falla, mayor será
el costo.
·
Evitar el incumplimiento de plazos
y contratos que generen malestar al cliente.
a.
Causas de defectos en el software.
·
Un ser humano puede cometer un
error en un documento o el código de una aplicación. En código el error
introducido es un defecto que puede producir un fallo en el sistema de manera
parcial o total.
b.
Las pruebas y la calidad.
·
Sirve para medir la calidad del
software en términos de defectos con lo que respecta a requisitos y
características funcionales y no funcionales
definidos al inicio del proyecto.
·
Aportan fiabilidad a la calidad
del software en caso de detectar pocos o ningún defecto.
·
Pasar una prueba diseñada
correctamente reduce el riesgo de un proyecto. Sin embargo si una prueba
detecta un defecto, esto aporta calidad la calidad del sistema de software.
·
Las pruebas deben hacer parte del
proceso de calidad (mismo destalle que especificación de código y diseño por
ejemplo).
1.2.
¿Cuántas pruebas son suficientes?
·
Para determinar un número se debe
tener en cuenta los riesgos técnicos, tecnológicos, de seguridad y comerciales,
limitaciones del proyecto como tiempo y presupuesto.
·
Las pruebas definidas servirán
para informar debidamente a las partes interesadas sobre la toma de decisiones
sobre la siguiente fase del proyecto o la entrega al cliente.
1.3.
¿Qué es Testing?
·
Un proceso de ejecución de pruebas
para demostrar que un programa es libre de errores.
·
El proceso de recopilación de
información mediante observaciones y compararlas con las expectativas.
·
Las pruebas de software es un
proceso de ejecución de un programa con la intención de encontrar errores.
·
Es una investigación técnica y
empírica de un producto, hecho en nombre de los interesados, con la intención
de revelar información relacionada con la calidad de un producto o servicio.
·
Según IEEE: El proceso de
funcionamiento de un sistema o componente bajo ciertas condiciones, observar o
registrar los resultados, y hacer una evaluación de algún aspecto del sistema o
componente.
1.4.
Principios de las
pruebas
·
Principio 1 – El Testing demuestra
la presencia de errores.
Mediante el testing podemos demostrar la presencia de errores, pero no
la ausencia de los mismos. Incluso si no
se detectan deficiencias, no es una prueba de la corrección.
Este principio se deriva de la teoría del proceso de la experimentación
científica [Popper] y ha sido adoptado por los testers. La analogía utilizada
en la ciencia es útil para explicar este principio, no importa la cantidad de
cisnes blancos que vemos, no podemos decir ’todos los cisnes son blancos”. Sin
embargo, tan pronto como vemos un cisne negro, podemos decir ’No todos los
cisnes son blancos”. De la misma manera, sin embargo, que muchas pruebas se
hayan ejecutado sin encontrar un error, no demuestra que “No hay errores”. Tan
pronto como nos encontramos con un error, se ha mostrado ’Este código no está
libre de errores”.
·
Principio 2 – El testing
exhaustivo es imposible
Probar todas las combinaciones de entradas y condiciones es imposible
(salvo en casos triviales). En vez de intentar probar todo, debemos enfocar las
pruebas en base a riesgos y prioridades.
·
Principio 3 – Testing Temprano.
Las actividades de prueba deben comenzar tan pronto como sea posible en
el software o el sistema. Las pruebas deben enfocarse en los objetivos
definidos en el Test Plan
El objetivo principal de las pruebas estáticas es llevar a cabo las
pruebas tan pronto como sea posible, encontrar y corregir defectos de forma más
barata y prevenir los defectos que aparezcan en
etapas posteriores de este proyecto. Estas actividades nos ayudan a
conocer al principio los defectos e identificar los posibles grupos. Recuerden
que a partir de la definición de las pruebas, las pruebas no se inician hasta
que el código ha sido terminado.
·
Principio 4 – Agrupamiento de
defectos.
Un pequeño número de módulos contienen la mayoría de los defectos
detectados durante las pruebas de pre-lanzamiento. Un fenómeno que los testers
han observado es que muchos defectos tienden a agruparse. Esto puede suceder
debido a un área del código es particularmente compleja y delicada, o porque el
cambio de software y otros productos tiende a causar una reacción en cadena.
Igualmente, hay que tener en cuenta que este agrupamiento de defectos
va cambiando en el tiempo, por eso es importante centrarse en los “puntos
calientes”. los testers suelen utilizar
esta información al hacer su evaluación de riesgos para la planificación de las
pruebas, y se centrarán en los conocidos “puntos calientes”. Como el ”hot
spots” de los errores se limpia tenemos que posar nuestro enfoque en otros
lugares.
·
Principio 5 – La paradoja del
pesticida
Si las pruebas se repiten una y otra vez, con el tiempo el mismo
conjunto de casos de prueba ya no encuentran nuevos errores. Todas las técnicas
de prueba se dirigen a un conjunto diferente de bugs. Si los programadores
responden a las pruebas y la información de los errores mediante la reducción o
eliminación de tales errores, se deduce que como su software mejora, la eficacia de las pruebas anteriores
se daña, es decir, las pruebas se desgastan y tendrán que aprender, crear y
utilizar nuevas pruebas basadas en las nuevas técnicas para captar nuevos
errores.
Para superar esta ”paradoja de plaguicidas”, los casos de prueba deben
ser examinadas y revisadas periódicamente. Se llama la “paradoja de
plaguicidas”, después de que el fenómeno de la agricultura, donde los insectos
como el picudo del algodón construye la tolerancia a los pesticidas, provocando
la elección de pesticidas cada vez más potentes seguido de insectos cada vez
más potentes.
Pruebas nuevas y diferentes deben ser escritas para ejercitar las
distintas partes del software o el sistema para encontrar potencialmente más
defectos. Como el ”hot spots” de los errores se va limpiando, tenemos que posar
nuestro enfoque en otros lugares, a la siguiente serie de riesgos. Con el
tiempo, nuestro enfoque puede cambiar de encontrar errores de codificación, a
mirar los requisitos y documentos de diseño, y en busca de mejoras en los
procesos para que podamos prevenir los defectos en el producto.
·
Principio 6 – El testing es
dependiente del contexto.
Las pruebas se realizan de manera diferente en diferentes contextos.
Por ejemplo, la seguridad del software será testeada de forma diferente en un
sitio de comercio electrónico que uno donde se comparten fotografiás.
No todos los sistemas de software llevan el mismo nivel de riesgo y no
todos los problemas tienen el mismo impacto cuando se producen. Algunos de los
problemas que encontramos en el uso de software son bastante triviales, pero
otros pueden ser costosos y perjudiciales - provocando pérdida de reputación,
de dinero, tiempo o de negocios - e incluso puede resultar en lesiones o la
muerte.
A continuación se detallan algunos ejemplos de fallos de media por KLOC
que confirman que las pruebas son dependientes del contexto:
3 a 10
fallas por cada mil líneas de código (KLOC) típico de software comercial
1 a 3 fallos por KLOC típico de software industrial
0,01 fallos
por KLOC para el código de lanzamiento de la NASA.
·
Principio 7 – Falacia sobre la
ausencia de errores
Si construimos un sistema y, al hacerlo, encontramos y corregir
defectos, no quiere decir que lo convierte en un buen sistema. Encontrar y corregir defectos no sirve de
nada si el sistema integrado no se puede utilizar y no satisfacer las
necesidades de los usuarios y sus expectativas. Las personas y organizaciones
que compran y utilizan software como ayuda en su día a día no están interesadas en los defectos o el número de defectos, salvo que sean directamente afectados por la
inestabilidad del software. La gente que usa software está más interesada en
que la aplicación los apoye en la realización de sus tareas de manera eficiente y eficaz. Por eso revisiones en las
primeras etapas (requisitos y diseño) son una parte importante
de las pruebas y si los verdaderos usuarios del sistema no han estado
involucrados en el proceso de prueba en algún momento, entonces es probable que
no obtengan lo que realmente quieren, por ejemplo las páginas web puede parecer
libre de errores, pero si han sido diseñados de una manera que no es compatible
con los procesos de negocio del sistema no se podrán utilizar.
1.5.
Proceso de pruebas
a.
Planeación y control.
·
La planificación es la actividad
de definir los objetivos de las pruebas y la especificación de las pruebas con
vista a cumplir los objetivos y estrategias del proyecto en general
·
El control de las pruebas es
comparar el progreso real con el plan previsto o especificado en el documento
de plan de pruebas, entregando e informando acerca de las desviaciones con
respecto a lo planificado.
b.
Análisis y diseño.
·
Es la actividad durante la cual
los objetivos de las pruebas generales se transforman en casos de prueba y
planes de prueba tangibles.
·
Se revisan las bases de las
pruebas, evalúan la estabilidad de las pruebas, identificar y priorizar las
condiciones de las pruebas, diseñar y priorizar los casos de prueba.
·
Diseñar la configuración del
entorno, infraestructura y herramientas de pruebas.
·
Crear trazabilidad bidireccional
entre las pruebas y los casos de pruebas.
c.
Implementación y ejecución
·
Se explican los procedimientos o
guiones de prueba mediante la ejecución ordenada de los casos de prueba, así
como cualquier otra información.
d.
Evaluación de criterios de éxito y reporte de
resultados.
·
Evalúa la ejecución de pruebas
contra los objetivos definidos.
·
Crear un resumen de evidencia de
pruebas para las partes interesadas.
e.
Cierre de actividades.
Es la actividad donde se recopilan los datos de las actividades de
pruebas finalizadas para consolidar productos, soportes de pruebas, los hechos
y las cifras que evidenciarán o permitirán medir la calidad del software.
No hay comentarios:
Publicar un comentario