Principios Básicos Del Proceso de Pruebas
Principios Básicos Del Proceso de Pruebas
Principios Básicos Del Proceso de Pruebas
Contenido
Contenido...................................................................................................................... i 1.Principios bsicos del proceso de pruebas.............................................................1 1.1Por qu es necesario el proceso de pruebas?....................................................1 1.1.1Contexto de los sistemas de software...........................................................1 1.1.2Causas de los defectos del software..............................................................2 1.1.3Funcin del proceso de pruebas en el desarrollo, mantenimiento y operaciones de software........................................................................................ 2 1.1.4Proceso de pruebas y calidad........................................................................2 1.1.5Con cuntas pruebas es suficiente?.............................................................3 1.2En qu consiste el proceso de pruebas?............................................................5 1.3Siete principios para las pruebas.........................................................................5 1.4Proceso bsico de pruebas.................................................................................. 7 1.4.1Planificacin y control de pruebas.................................................................7 1.4.2Anlisis y diseo de pruebas.........................................................................7 1.4.3Implementacin y ejecucin de pruebas.......................................................8 1.4.4Evaluacin de los criterios de salida e informes............................................8 1.5La psicologa de las pruebas................................................................................9 1.6Cdigo deontolgico............................................................................................ 9 2.1.1Modelo V (modelo de desarrollo secuencial)...............................................11 .................................................................................................................... 12 ............................................................................................................................ 12 Validacin Vs. Verificacin...................................................................................12 2.1.2Modelos de desarrollo iterativo-incremental................................................13 2.1.3Pruebas en un Modelo de Ciclo de Vida.......................................................14 2.2Niveles de prueba........................................................................................... 15 i
2.2.1Pruebas de componente.............................................................................. 15 2.2.2Pruebas de integracin................................................................................15 2.2.3Pruebas de sistema..................................................................................... 15 2.2.4Pruebas de aceptacin................................................................................ 16 2.3Tipos de prueba.............................................................................................. 17 2.3.1Pruebas de funciones (Pruebas funcionales)...............................................17 2.3.2Pruebas de caractersticas no funcionales del software (pruebas no funcionales)......................................................................................................... 18 2.3.3Pruebas de estructura / arquitectura de software (Pruebas estructurales)..19 2.3.4Pruebas asociadas a cambios: Repeticin de pruebas y pruebas de regresin............................................................................................................. 19 2.4Pruebas de mantenimiento............................................................................. 19 3.Tcnicas estticas................................................................................................ 20 3.1Las tcnicas estticas y el proceso de pruebas..............................................20 3.2Proceso de revisin......................................................................................... 20 3.2.1Actividades de una revisin formal..............................................................20 3.2.2Funciones y responsabilidades....................................................................21 3.2.3Tipos de revisiones...................................................................................... 22 3.2.4Factores de xito de las revisiones..............................................................22 3.3Anlisis esttico con herramientas.................................................................23 4.Tcnicas de diseo de pruebas............................................................................24 4.1Proceso de desarrollo de pruebas......................................................................24 Trazabilidad............................................................................................................ 25 Las pruebas deben ser trazables: Qu casos de prueba han sido incluidos en el catlogo de pruebas, basados en qu requisitos?..................................................25 4.2Categoras de tcnicas de diseo de pruebas. ..................................................26 4.3.1Particin de equivalencia. ...........................................................................29 ii
4.3.2Anlisis de valores lmite.............................................................................30 4.3.3Pruebas de tabla de decisin.......................................................................31 4.3.4Pruebas de transicin de estado..................................................................31 4.3.5Pruebas de caso de uso............................................................................... 32 4.4Tcnicas basadas en la estructura o tcnicas de caja blanca ..........................32 4.4.1Pruebas de sentencias y cobertura..............................................................33 4.4.2Pruebas de decisin y cobertura..................................................................33 4.4.3Otras tcnicas basadas en las estructura....................................................33 4.5Tcnicas basadas en la experiencia...................................................................33 4.6Seleccin de tcnica de prueba.........................................................................34 5.Gestin de pruebas.............................................................................................. 35 5.1Organizacin de pruebas................................................................................... 35 5.1.1Organizacin de pruebas e independencia..................................................35 5.1.2Tareas del Lder de Pruebas y del Probador.................................................38 5.2Planificacin y estimacin de pruebas...............................................................40 5.2.1Planificacin de pruebas.............................................................................. 40 5.2.2Actividades de planificacin de pruebas .....................................................42 5.2.3Criterios de entrada .................................................................................... 43 5.2.4Criterios de salida ....................................................................................... 43 5.2.5Estimacin de pruebas ...............................................................................43 5.2.6Estrategia de pruebas, enfoque de pruebas................................................44 5.3Seguimiento y control del progreso de las pruebas...........................................45 5.3.1Seguimiento del progreso de las pruebas....................................................45 5.3.2Informes de pruebas ................................................................................... 45 5.3.3Control de pruebas...................................................................................... 46 5.4Gestin de la configuracin...............................................................................46 iii
5.5Riesgo y pruebas............................................................................................... 46 5.5.1Riesgos del proyecto................................................................................... 46 5.5.2Riesgos del producto................................................................................... 47 5.6Gestin de incidencias ...................................................................................... 47 6.Herramientas de soporte de pruebas......................................................................49 6.1Tipos de herramientas de pruebas....................................................................49 6.1.1Significado y objetivo de las herramientas de pruebas...............................49 6.1.2 Clasificacin de herramientas de prueba....................................................50 6.1.3 Herramientas de soporte para la gestin de pruebas.................................50 6.1.4Herramientas de soporte para las pruebas estticas...................................51 6.1.5 Herramientas de soporte para la especificacin de prueba........................51 6.1.6 Herramientas de soporte para la ejecucin y el registro de pruebas..........51 6.1.7 Herramientas de soporte para el rendimiento y la monitorizacin.............51 6.1.8 Herramientas de soporte para necesidades de pruebas especficas..........52 6.2Uso efectivo de las herramientas: Ventajas potenciales y riesgos.....................52 6.2.1 Ventajas potenciales y riesgos de las herramientas de soporte de pruebas (para todas las herramientas).............................................................................. 52 6.2.2 Consideraciones especiales para algunos tipos de herramientas...............53 6.3Introduccin de una herramienta en una organizacin......................................53
iv
Fallos: Son todos aquellos errores y detectados no detectados durante la construccin y el periodo de pruebas, pero el cliente lo encuentra una vez liberado el sistema.
El costo de los defectos depende de la etapa en la que se detecta. Cuando es una etapa temprana, los costos pueden ser cero o muy bajos, conforme avance el desarrollo, el costo ser incremental, as pues, es ms sencillo y barato corregir un error en papel que hacerlo una vez que el software se ha compilado, ya que se requerira cambiar especificaciones, documentos y volver a capturar y compilar, lo que lleva mucho ms tiempo y dinero, ms an, en una etapa de produccin con el cliente, un fallo puede detener sus operaciones, generando prdidas millonarias.
Existen unas leyes que definen bsicamente la aplicacin de las pruebas de software y ayudan a refinar el producto de software a travs de las etapas involucradas. La prueba puede ser usada para mostrar la presencia de errores, pero nunca su ausencia. La principal dificultad del proceso de prueba es decidir cundo parar. Evitar casos de pruebas no planificados, no reusables y triviales a menos que el programa sea verdaderamente sencillo. Una parte necesaria de un caso de prueba es la definicin del resultado esperado. Los casos de pruebas tienen que ser escritos no solo para condiciones de entrada vlidas y esperadas sino tambin para condiciones no vlidas e inesperadas. El nmero de errores sin descubrir es directamente proporcional al nmero de errores descubiertos. Esttico Revisiones / Revisiones guiadas (walktrought) Anlisis del flujo de control Anlisis de flujo de datos Mtricas del compilador/analizar Caja Negra Particin de equivalencia Anlisis de valores lmite Pruebas de transicin de estado Tablas de Decisin Pruebas de casos de uso Tcnicas basadas en la experiencia Caja Cobertura de sentencia Blanca. Cobertura de rama (Branch) Cobertura de condicin Cobertura de camino
Para determinar la cantidad de pruebas que se realizarn se deben de tomar en cuenta diferentes aspectos como son: Los riesgos tcnicos Los riesgos de seguridad 3
Dinmico
Las pruebas deben facilitar la informacin suficiente para adoptar las decisiones que mejor convengan a las partes interesadas en el software. Los tipos de prueba son: Pruebas basadas en riesgo (risk-based testing). Pruebas basadas en plazos y presupuestos (time and budget testing).
Y para ello se debe considerar: Seleccionar qu es lo que debe medir la prueba, es decir, cul es su objetivo, para qu exactamente se hace la prueba. Decidir cmo se va a realizar la prueba, es decir, qu clase de prueba se va a utilizar para medir la calidad y qu clase de elementos de prueba se deben usar. Desarrollar los casos de prueba. Un caso de prueba es un conjunto de datos o situaciones de prueba que se utilizarn para ejecutar la unidad que se prueba o para revelar algo sobre el atributo de calidad que se est midiendo. Determinar cules deberan ser los resultados esperados de los casos de prueba y crear el documento que los contenga. Ejecutar los casos de prueba.
El principal objetivo puede ser provocar el mximo nmero de defectos para de sta manera subsanarlos antes de que el producto llegue al usuario. Otro objetivo puede ser el evaluar la calidad o facilitar informacin sobre las caractersticas del sistema.
El mismo proceso de pruebas puede contener errores. Las condiciones de prueba pueden ser inapropiadas.
2. Las pruebas exhaustivas no existen, se deben realizar anlisis de riesgos y prioridades para centralizar los esfuerzos de las pruebas. No es posible realizar pruebas exhaustivas por condiciones como el tiempo, costo, esfuerzo y dificultad de las mismas. 3. Pruebas tempranas, desde el inicio del ciclo de vida del software o del desarrollo del sistema. Cuanto ms temprana es la deteccin de un defecto, menos costosa es su correccin (antes de la implementacin) La preparacin de pruebas tambin consume tiempo.
4. Agrupacin de defectos ya que la mayora de los fallos operativos se concentran en un nmero reducido de mdulos. Vale la pena investigar un mismo mdulo donde se ha detectado un defecto ya que aparecen agrupados como hongos. 5. La paradoja del pesticida. Cuanto ms se ejecute una misma prueba, menor cantidad de defectos sern encontrados (con esa misma prueba). Los casos de prueba deben revisarse peridicamente y deben escribirse pruebas nuevas y diferentes para poder detectar ms defectos. 6. Las pruebas se llevan a cabo de diferente manera segn el contexto. 7. La falacia de la Ausencia de Errores. La deteccin y correccin de defectos depende de la usabilidad y si cumple con las expectativas y necesidades del usuario. En la mayora de los casos el proceso de pruebas no detectar todos los defectos del sistema, pero los defectos ms importantes deberan ser detectados.
Incluye las siguientes actividades: Verificar que los entregables planificados sean liberados Cierre de reporte de incidentes Documentar la aceptacin del sistema Analizar lecciones aprendidas para determinar cambios necesarios en futuras versiones
Debido a que puede ser mal interpretada la realizacin de las pruebas, creyendo que es una especie de sabotaje hacia el software, se debe mejorar la comunicacin entre las personas que prueban y los dems: Empezar juntos Comunicar hallazgos Ser empticos Corroborar que se haya entendido lo que se ha querido comunicar
Cliente y empleador
actuarn en el mejor de los intereses de su cliente y empleador, en coherencia con el inters pblico Producto Los probadores de software certificados garantizarn que los productos entregables que proporcionan se ajustan a los ms altos estndares profesionales Los probadores de software certificados mantendrn la integridad y la independencia en su criterio profesional Los jefes y lderes de pruebas de software certificados suscribirn y fomentarn un enfoque tico en la gestin de las pruebas de software Los probadores de software certificados aumentarn la integridad y la reputacin de la profesin en coherencia con el inters pblico Los probadores de software certificados sern equitativos y apoyarn a sus compaeros fomentando la cooperacin con los desarrolladores de software Los probadores de software certificados participarn en un aprendizaje a lo largo de toda la vida por lo que respecta a la prctica de su profesin y fomentarn la adopcin de un enfoque tico en la prctica de su profesin.
Criterio
Gestin
Profesin
Compaeros
Nivel individual
10
2.
2.1
11
Verificar es comprobar si los requisitos y definiciones en niveles previos han sido implementados correctamente. Validar significa comprobar lo adecuado de los resultados de un nivel de desarrollo.
12
Modelo prototipado: desarrollo rpido de una representacin seguida de modificaciones sucesivas hasta que el sistema sea finalizado.
Desarrollo rpido de aplicaciones: La interfaz de usuario se implementa usando una funcionalidad que posteriormente ser desarrollada.
Proceso unificado: Modelo orientado a objeto y producto de la compaa Rational/IBM que aporta el lenguaje de modelado UML y soporte al proceso unificado.
Programacin extrema: el desarrollo y las pruebas tienen lugar sin una especificacin de requisitos especificada.
Caractersticas de los modelos iterativos: Cada iteracin contribuye con una caracterstica adicional al sistema a desarrollar. Cada iteracin puede ser probada por separado. Las pruebas de regresin y la automatizacin de pruebas son de gran relevancia. En cada iteracin la verificacin y validacin se puede efectuar por separado.
14
2.2
Niveles de prueba
2.2.1 Pruebas de componente
Datos de configuracin Tienen por objetivo localizar defectos y comprobar el funcionamiento; para ello pueden utilizarse controladores y simuladores. Se llevan a cabo mediante el acceso al cdigo y con la participacin del programador. Dadas las convenciones de cada lenguaje de programacin para la asignacin de nombres a sus respectivos componentes, se podr hacer referencia a un componente como: Prueba de mdulo (module test, en lenguaje C), prueba de clase (class test por ejemplo en Java) o prueba de unidad (unit test por ejemplo en Pascal).
De componentes De sistema
entre
los
Prueban las interacciones entre los distintos sistemas o entre el hardware y el software.
Pueden incluir pruebas basadas en riesgo y/o en especificaciones de requisitos, procesos de negocio, casos de uso u otras descripciones de texto de alto nivel o modelos de comportamiento de sistema, interacciones con el sistema operativo y recursos del sistema.
Base de pruebas
16
2.3
Tipos de prueba
2.3.1 Pruebas de funciones (Pruebas funcionales)
Estn basadas en funciones y caractersticas. Deben ser descritas como una especificacin de requerimientos, casos de uso o especificaciones funcionales. Caractersticas a ser probadas: Adecuacin (suitability): Las funciones implementadas son adecuadas para su uso esperado? Exactitud (accuracy): Las funciones presentan los resultados correctos? Interoperabilidad (Interoperability): Las interacciones con el entorno del sistema presentan algn problema? Seguridad (secury): estn protegidos los datos contra accesos no aprobados o prdida? Cumplimiento de funcionalidad (compliance): El sistema cumple con normas y reglamentos aplicables? Tres enfoques para probar los requisitos funcionales: Pruebas basadas en procesos de negocio: Cada proceso de negocio sirve como fuente generar derivar/generar pruebas. Estos pueden asignar prioridades a los casos de prueba. Pruebas basadas en casos de uso: Los casos de prueba se derivan/generan a partir de la secuencia de usos esperados o razonables. Las secuencias usadas con mayor frecuencia reciben una prioridad ms alta. Pruebas basadas en requisitos: Los casos de prueba se derivan de la especificacin de requisitos.
17
El nmero de casos de prueba variar en funcin del tipo/profundidad de las pruebas basadas en la especificacin de requisitos.
funcionales)
Incluyen pero no estn limitadas a: pruebas de performance, pruebas de carga, pruebas de estrs, pruebas de usabilidad y pruebas de portabilidad. Pueden ser realizadas en todos los niveles. Pruebas de caractersticas de software no funcionales. Prueba de carga (load test): Sistema bajo carga (carga mnima, ms
usuarios/transacciones). Prueba de rendimiento (performance test): Rapidez con la cual un sistema ejecuta una determina instruccin. Prueba de volumen (Volume test): Procesamiento de grandes cantidades de datos/ficheros. Prueba de estrs (stress test): Reaccin a la sobrecarga/recuperacin tras el retorno a una carga normal. Prueba de estabilidad (stability test): Rendimiento modo de operacin continua. Prueba de robustez (test for robustness): Reaccin a entradas errneas o datos no especificados. o Reaccin a fallos hardware/recuperacin ante situaciones de desastre.
Pruebas de cumplimiento: Cumplir con normas y reglamentos (interno/externo). Pruebas de usabilidad: Estructurado, comprensible, fcil de aprender por parte del usuario.
18
Portabilidad:
Adaptabilidad,
reemplazabilidad,
instalabilidad,
coexistencia,
estructurales)
Tambin llamadas de caja blanca. Pueden tambin aplicarse a nivel de sistema, integracin de sistema o pruebas de aceptacin.
regresin
Es la repeticin de testeo en un programa que ya ha sido testeado, despus de una modificacin, a fin de descubrir cualquier defecto introducido o no cubierto por los cambios realizados. Pueden ser realizados en todos los niveles de testeo. Son ejecutadas muchas veces y por lo general evolucionan lentamente.
2.4
Pruebas de mantenimiento
Una vez que el sistema ha sido liberado, su ambiente es corregido, cambiado o extendido. Se realizan en sistemas operacionales y son ocasionadas por las modificaciones, migraciones o retiro del software. Cualquier nueva versin del producto, cada nueva actualizacin y cada cambio del software requiere pruebas adicionales, tales como: Configuracin: Composicin de un componente o de un sistema definido como el nmero, naturaleza e interconexiones de las partes que lo constituyen. Anlisis de impacto: Valoracin del cambio en las capas de documentacin de desarrollo, documentacin de pruebas y componentes.
19
Pruebas de mantenimiento: Prueba de los cambios de un sistema en operacin o el impacto de un entorno modificado para un sistema en operacin.
3. Tcnicas estticas
3.1
Se basan en las revisiones y el anlisis automatizado del cdigo o de cualquier otra documentacin sin ejecutar el cdigo. Tienen por objetivo identificar el defecto, con diferentes tcnicas pueden encontrar diferentes defectos de una manera eficiente y efectiva.
3.2
Proceso de revisin
La forma en la que se hace una revisin depende de los objetivos que se tienen previstos.
Corregir los defectos detectados Hacer un seguimiento Comprobar los criterios de salida
21
Se ofrece formacin sobre las tcnicas La direccin respalda la implementacin de un buen proceso de revisin. Se hace hincapi en el aprendizaje y en la mejora del proceso
3.3
Estas herramientas analizan el cdigo del programa y las salidas generadas. El valor del anlisis esttico es: La deteccin temprana de defectos Advertencia temprana sobre aspectos sospechosos del cdigo o diseo Detectar dependencias e inconsistencias Mantenibilidad del cdigo y del diseo Prevencin de defectos
Defectos ms comunes: Referenciar una variable con un valor indefinido Interfaces inconsistentes entre mdulos o componentes Variables que no se utilizan o que se declaran en forma incorrecta Cdigo inaccesible Ausencia de lgica o lgica errnea Construcciones demasiado complicadas Vulnerabilidad de seguridad Infracciones de sintaxis del cdigo y modelos de software 23
Caso de prueba Caso 1 de prueba Caso 1 de prueba Caso 1 de prueba Caso 1 de prueba 1
Trazabilidad Las pruebas deben ser trazables: Qu casos de prueba han sido incluidos en el catlogo de pruebas, basados en qu requisitos? Las consecuencias de los cambios en los requisitos sobre las pruebas a realizar pueden ser identificadas directamente. La trazabilidad tambin ayuda a determinar la cobertura de requisitos. Caso de prueba Caso 1 de prueba Caso 1 de prueba Caso 1 de prueba Caso 1 de prueba 1 Caso de prueba Caso 1 de prueba 1 Caso de prueba Caso 1 de prueba 1
Escenario de
Definiciones Objeto de prueba (test object): Elemento a ser revisado: un documento o una pieza de software en el proceso de desarrollo de software. Condicin de prueba (test condition): Elemento o evento: una funcin, una transaccin, un criterio de calidad o un elemento en el sistema. Criterios de prueba (test criteria): El objeto de prueba debe cumplir los criterios de prueba con el propsito de superar la prueba.
25
Calendario de ejecucin de prueba (test execution Schedule): Un esquema para la ejecucin de procedimientos de prueba. Los procedimientos de prueba estn incluidos en el calendario de ejecucin de prueba en sus contextos y en el orden en el cual deben ser ejecutados. Descripcin de un caso de prueba segn el estndar IEEE 829 Precondiciones (Preconditions): situacin previa a la ejecucin de pruebas o caractersticas de un objeto de pruebas antes de llevar a la prctica (ejecucin) un caso de prueba. Valores de entrada (input values): descripcin de los datos de entrada de un objeto de pruebas. Resultados esperados (expected results): datos de salida que se espera que produzca un objeto de pruebas. Poscondiciones (post conditions): caractersticas de un objeto de prueba tras la ejecucin de pruebas, Dependencias (dependencies): orden de ejecucin de casos de prueba, razn de las dependencias. Identificador distinguible (distinct identification): identificador o cdigo con el objeto de vincular, por ejemplo, un informe de errores al caso de prueba en ele cual ha sido detectado. Requisitos (requeriments): caractersticas del objeto de pruebas que el caso de prueba debe evaluar.
Combinacin de casos de prueba Una especificacin de procedimiento de prueba: define la secuencia de acciones para la ejecucin de un caso de prueba individual o un juego de pruebas. Es un script (guin) o guin cinematogrfico para la prueba describiendo los pasos, tratamiento y/o actividades necesarias para la ejecucin de la prueba. El plan de prueba (dinmico) establece la secuencia de las pruebas planificadas, quien debe realizarlas y cuando. Se deben considerar las restricciones como las prioridades, la disponibilidad de recursos, la infraestructura de prueba.
4.2
especificacin) y/o caja blanca (tambin conocidas como tcnicas basadas en la estructura), en las primeras, solamente se conocen los datos de entrada y sus respectivas salidas sin conocer cmo funciona internamente (cdigo) un sistema, mientras que en el segundo tipo, se conocen los aspectos del sistema. Algunas de las caractersticas del diseo de tcnicas de diseo de pruebas basadas en especificacin son: El problema a solucionar, el software o sus componentes se basan en modelos. En base a modelos sistemticos pueden obtenerse los casos de prueba.
Pruebas de caja negra (black box) y caja blanca (White box) Aseguramiento de la calidad analtico Dinmico Caja negra Particin de equivalencia. Anlisis de valores lmite. Pruebas de transicin de estado. Tablas de decisin.
Algoritmo dual (pairwise) Tcnicas basadas en la experiencia Caja blanca Cobertura de sentencia. Esttico Cobertura de rama. Cobertura de condicin.
Cobertura de camino. Revisiones/ Revisiones guiadas (walkthroughs) Anlisis del flujo de control Anlisis de flujo de datos Mtricas compilador / analizador.
Tcnica de caja negra (Black Box) El probador observa el objeto de prueba como una caja negra. Los casos de prueba se obtienen a partir de anlisis de la especificacin (funcional y no funcional) de un componente o sistema. La funcionalidad es el foco de atencin. 27
Diseo de caso de prueba. Casos de prueba basados en especificaciones. Estructura interna del programa irrelevante Prueba todas las combinaciones entrada/salida de datos seleccionadas respectivamente.
Caja negra
Tcnica de caja blanca (White Box). El probador conoce la estructura interna del programa / cdigo. Los casos de prueba son seleccionados en base a la estructura interna del programa / cdigo. La estructura del programa es ele foco de atencin.
Diseo de caso de prueba. Casos de prueba basados en la estructura del programa. - El proceso de pruebas es controlado externamente - Anlisis del flujo de control dentro del objeto de prueba a lo largo de la ejecucin de pruebas. Mtodos basados en la especificacin: El objeto de prueba ha sido seleccionado de acuerdo con el modelo funcional; la cobertura de la especificacin puede ser medida. Mtodos basados en la estructura: La estructura interna del objeto de prueba es utilizada para disear los casos de prueba; el porcentaje de cobertura es medido y utilizado como fuente para la creacin de casos de prueba adicionales. Mtodos basados en la experiencia: El conocimiento y experiencia respecto a los objetos de prueba y su entorno son las fuentes para el diseo de casos de prueba
4.3
Mtodo sistemtico para el diseo de casos de prueba, es decir, con una mnima cantidad de casos de prueba se puede esperar un valor de cobertura especfico.
La particin del rango de valores en clases de equivalencia a partir de las especificaciones cubre los requisitos funcionales.
La asignacin de prioridades a clases de equivalencia puede ser utilizada para la asignacin de prioridades a los casos de prueba (los valores de entrada utilizados con poca frecuencia deben ser los ltimos en ser probados).
Las pruebas de las excepciones conocidas est cubierta por los casos de prueba de acuerdo con las clases de equivalencia negativas.
La particin de equivalencia es aplicable a todos los niveles de prueba. Puede ser utilizada para lograr objetivos de cobertura de entradas y salidas. Puede ser utilizada para entradas manuales (humanas) o va interfaces de un sistema o parmetros de interfaces en pruebas de integracin.
Por ejemplo, si se requiera validar una edad determinada para poder ser sujeto de un crdito bancario, la persona debe ser mayor de 18 aos pero menor de 70 aos, por lo tanto, aparecen tres posibles situaciones: Por debajo de lo requerido. El sujeto tiene 15 aos de edad, es decir, menor de 18. Dentro del rango. El sujeto tiene 35 aos de edad, es decir, entra en el rango de 18 y 70. Por arriba del rango. El sujeto tiene 75 aos de edad, es decir, es mayor de 70. 30
Como puede verse, es una tcnica sencilla pero muy eficaz con la cual pueden encontrarse errores de forma rpida, inclusive, dichos errores pueden ser previsibles durante la planeacin y especificacin del caso de prueba. Cabe mencionar, que los rangos por arriba y por debajo pueden ser inmediatos (lmite +1, o bien, lmite-1) ya que una entrada mucho mayor o mucho menor son indistintos y puede volverse engorroso.
Si el televisor est encendido, validar que el canal actual sea diferente al que se desea cambiar y ste es diferente, intentar hacer el cambio.
Como puede observarse, el que pueda o no cumplirse una prueba depende de estados previos o pre-condiciones. sta prueba puede estar muy relacionada con las tablas de decisin y siempre debe tenerse en cuenta que los estados del sistema u objeto de prueba son independientes, identificables y finitos en nmero.
4.4
32
Nivel de sistema: La estructura puede ser una estructura de mens, procesos de negocio o una estructura de pgina web.
4.5
de guiones de prueba (scripts) para pruebas automatizadas con un sistema propietario, puede usar su experiencia para realizar las mismas pruebas automatizadas en un sistema libre. Este tipo de pruebas pueden ayudar a agilizar las pruebas cuando se tiene poco tiempo para completar el proyecto, cuando existen tester novatos o desconocen el sistema a probar, cuando no existe una documentacin detallada o sencillamente no existe, entre muchas otras. La efectividad de dicha tcnica depende mucho del tester y su experiencia y conocimiento, es recomendable que no sea la nica tcnica usada y por el contrario, utilizarla como complemento a una serie de pruebas formales, o bien, pruebas al azar una vez que todos los casos de prueba han sido probados.
4.6
34
5. Gestin de pruebas.
5.1
Organizacin de pruebas
5.1.1 Organizacin de pruebas e independencia
La gestin de pruebas como parte del proceso de pruebas La gestin d pruebas es la gestin del proyecto de los proyectos de pruebas. El proceso de pruebas es una actividad que cubre por completo el proceso de desarrollo de software. Las actividades propias de la gestin de pruebas son necesarias a lo largo de todo el proceso de pruebas. Actividad Concepcin de pruebas Planificacin de pruebas Control de pruebas Pruebas de aceptacin Producto resultado del trabajo Plan de pruebas (esttico) Plan de pruebas (dinmico) Informe de estado, accin de control Entrega (release) del producto software
La organizacin del equipo de pruebas depende en gran medida del tipo de proyecto que se est llevando a cabo, sin embargo, existen ventajas al tener probadores externos al equipo de trabajo que contribuyen a la efectividad de las pruebas as como el nivel de calidad que se busca. As pues, algunos de los beneficios relacionados con la independencia de las personas quienes prueban y a quienes ser entregado son: Objetividad en los resultados. La tarea de un desarrollador es la de crear, la de un probador es destruir, encontrar fallos que harn fracasar al programa, por tanto, se realizan pruebas exhaustivas para lograr dicho fin, despus de todo, es su trabajo. Prediccin de errores. Cuando existen probadores en los equipos de desarrollo, la experiencia de los primeros puede encontrar errores incluso antes de que se cometan, ahorrando tiempo y costos. 35
Se realiza el software segn la visin del cliente. Al tener probadores provenientes de la parte de negocio, o bien, la comunidad de usuarios se afinan detalles y acciones de acuerdo a la medida del cliente, ya que en papel no es tan sencillo compartir una visin del producto final, sin embargo, al tener a dichos probadores, se garantiza un producto a la medida.
Especializacin. Se pueden tener probadores especialistas para pruebas especficas, tales como pruebas de usabilidad, de carga, seguridad o de certificacin segn estndares y normativas.
Sin embargo, nos es conveniente tener completamente un equipo conformado por externos/independientes ya que pueden estar completamente aislados del proyecto y pueden ser vistos como cuellos de botella, pudiendo o no generarlos en realidad. Perfiles del personal de pruebas. Jefe de pruebas o director de pruebas (Test Manager). o Planifica y da seguimiento y control al proyecto. Debe tener habilidades para gestionar y otorgar calidad al software; requiere experiencia como jefe de proyecto. Diseador de pruebas (Test designer). o Disea los casos de pruebas necesarios y establece un orden. Entre sus conocimientos figuran el desarrollo y pruebas, ingeniera de software, especificaciones tcnicas y requisitos funcionales. Ingeniero de automatizacin de pruebas (test automation engineer). o Evala las posibilidades de automatizacin. Entre sus competencias se encuentra la experiencia como probador, conocimiento tcnico en el mbito de diseo y automatizacin de pruebas, conocimientos de programacin y amplios conocimiento en el uso de las herramientas utilizadas. Administrador de pruebas (test administrator)/ Administrador del sistema de pruebas (test system administrator). o Prepara y opera el entorno de pruebas (debe cumplir los requisitos del sistema de pruebas). Sus competencias necesarias son la administracin de sistemas, 36
conocimientos de herramientas de desarrollo y pruebas, y si aplica, bases de datos, redes, instalacin y operacin de software de sistema. Probador (tester). o Ejecuta las pruebas de acuerdo con la especificacin de casos de prueba,, las competencias necesarias incluye conocimiento bsico del software y de pruebas, operacin de herramientas de pruebas as como su ejecucin y conocimiento respecto a los objetos de prueba. Experto tcnico (technical expert). o Asiste al equipo de pruebas cuando se requiere, debe conocer la administracin de bases de datos, ser experto en interfaces de usuario as como experto en redes. Competencias no tcnicas (soft skills): Trabajo en equipo: instinto (poltico y) diplomtico. Disposicin a preguntar sobre hechos aparentemente obvios. Persistencia, fuerte personalidad. Meticulosidad y creatividad. Capacidad para tratar situaciones complejas. Capacidad de aprender rpidamente.
37
38
Iniciar la especificacin, preparacin, implementacin y ejecucin de pruebas, y monitorear y controlar la ejecucin. Adaptar la planificacin basada en el progreso y los resultados de prueba (a veces documentados en los repostes de estado) y tomar cualquier accin necesaria para compensar por problemas.
Establecer la gestin de configuracin adecuada del testware para trazabilidad. Introducir las mtricas apropiadas para medir el progreso de la prueba y evaluar la calidad de las pruebas y del producto. Decidir que debe ser automatizado, hasta qu grado y cmo. Elegir las herramientas para apoyar las pruebas y organizar cualquier entrenamiento en el uso de herramientas para los probadores. Decidir sobre la implementacin del entorno de prueba. Programar las pruebas. Escribir informes de resumen de prueba basados en la informacin reunida durante las pruebas.
Las tareas tpicas del probador pueden incluir: Revisar y contribuir a los planes de prueba. Analizar, revisar y evaluar los requisitos de usuario, especificaciones y modelos para testabilidad. Crear especificaciones de prueba. Configurar el entorno de prueba (a menudos coordinado con la administracin del sistema y la gestin de red). Preparar y adquirir datos de prueba. Implementar las pruebas en todos los niveles de prueba, ejecutar y registrar las pruebas, evaluar los resultados y documentar las desviaciones de los resultados esperados. Usar la administracin de prueba o las herramientas de gestin y probar las herramientas de prueba como sea requerido. Automatizar las pruebas (puede ser apoyado por un desarrollador o un experto en automatizacin de pruebas). Medir el rendimiento de los componentes y sistemas (de ser aplicable). Revisar las pruebas desarrolladas por otros. 39
Las personas que trabajan en anlisis de prueba, diseo de prueba, tipos de prueba especficos o en automatizacin de prueba pueden ser especialistas en estos roles. Dependiendo del nivel de prueba y de los riesgos relacionados con el producto y el proyecto, diferentes personas pueden encargarse del rol de probador, manteniendo algn grado de independencia. Tpicamente los probadores a nivel de componente e integracin seran desarrolladores, probadores al nivel de prueba de aceptacin seran usuarios y expertos del negocio, y los probadores para pruebas de aceptacin operacionales seran operadores.
5.2
40
Se puede encontrar la estructura y contenidos de un plan de calidad en el estndar IEEE 730 (con informacin adicional del estndar IEEE 983). Elementos de un plan de aseguramiento de la calidad de acuerdo con el estndar 730: planificacin y descripcin de: Organizacin del proyecto. Documentos que cubren el ciclo de vida de desarrollo. Estndares, mtodos y convenciones de la misma manera que un mecanismo que asegure que aquellos son seguidos (cumplidos). Revisiones y auditorias durante el ciclo de vida de desarrollo. Proceso de pruebas. Documentacin de errores, acciones correctivas.
Plan de pruebas maestro Esttico (master test plan) Despus de definir roles, el proceso de pruebas comienza con su fase de planificacin. El primer paso es la creacin de un plan de pruebas maestro que cubre todas las fases del proceso de pruebas y se fijan las reglas segn los objetivos de pruebas. Posteriormente el plan es ampliado basado en retroalimentacin debido a que se puede especificar o detallar ms el proceso o puede extenderse el ciclo. El estndar IEEE 829 aporta una estructura de plan de pruebas maestro acreditada.
4. Caractersticas/prestaciones sujetas a 12. Responsabilidades. pruebas. 5. Caractersticas/prestaciones no sujetas 13. Dotacin de personal y formacin. a pruebas. 6. Enfoque 7. Criterios de paso / fallo 8. Criterios de suspensin / reanudacin. 14. Calendario. 15. Riesgos y contingencias. 16. Aprobacin.
Actividades a realizar Las actividades en el desarrollo de pruebas son: Estategia de pruebas (test strategy). o Describe el nivel de pruebas y su intensidad as como mtricas y evala los riesgos. Es muy til cuando un sistema no se puede probar completamente. 42
Planificacin de recursos (Resource planning). o Estima los esfuerzos necesarios as como los profesionales designados a cada tarea. Cuanta con un calendario.
Mtricas: En estas, los tiempos se estiman en base a proyectos similares o anteriores, o bien, en valores tpicos. Experiencia: El enfoque de un experto o el propietario del sistema ofrece valores para estimar el esfuerzo.
Algunas recomendaciones son: Reserva un tiempo extra: En ocasiones, los proyectos se retrasan y obligan a consumir tiempo de las pruebas, por lo que ste tiempo de reserva es de gran ayuda. Depuracin de errores: Existen momentos en los que las estructuras del sistema son inestables, y el repararlo lleva tiempo, mismo que debe ser considerado en el plan, Recursos para el periodo planeado: Se deben considerar das de descanso de los recursos y los das feriados, as como un par de das por si el profesional requiera una incapacidad o tiempo para entender parte del sistema. Pruebas paralelas: Si existen versiones o mdulos independientes que no se afectan mutuamente (excluyentes) se podran realizar la prueba de ambos en el mismo tiempo. Las estimaciones pueden equivocarse: Constantemente obtener retroalimentacin de la ejecucin y los estados en los que se mantiene el reparar un error son fundamentales para re-calcular los tiempos asignados. Esto tambin es de gran ayuda para siguientes estimaciones. La experiencia previa puede ayudar: El tener un expertis sobre el sistema a probar o uno anterior puede ayudar a identificar problemas no considerados y que ocasionaran prdida de tiempo que podra traducirse en atrasos del proyecto.
44
Enfoque analtico (analytical approach): Se realiza un anlisis previo a las pruebas, por ejemplo, pruebas basadas en riesgos (risk-based-testing).
Enfoque heurstico (heuristic approach): Las pruebas son ms reactivas, por ejemplo, pruebas exploratorias.
5.3
45
5.4
Gestin de la configuracin
La gestin de la configuracin es establecer y mantener la integridad de los productos del sistema a lo largo del ciclo de vida del mismo; lo que en algunas ocasiones debe garantizar que la documentacin del sistema sea clara, concisa, completa y posible de dar mantenimiento as como disponible para el equipo de pruebas, el cliente y auditoria, por tanto, todos los elementos a probar se han identificado plenamente y se ha llevado a cabo por lo menos una prueba al mismo.
5.5
Riesgo y pruebas
Un riesgo es la posibilidad de ocurrir un peligro o amenaza y el no controlarlo puede causar problemas serios en el desarrollo del sistema. El nivel de riesgo es medido conforme a la probabilidad de que ste suceda y/o bajo qu circunstancias.
Si se trabaja con externos, pueden surgir problemas con el entendimiento del negocio, o problemas con presupuestos y contratos.
5.6
Gestin de incidencias
La Gestin de Incidencias tiene como objetivo resolver, de la manera ms rpida y eficaz posible, cualquier incidente que cause una interrupcin en el servicio. La Gestin de Incidencias no debe confundirse con la Gestin de Problemas, pues a diferencia de esta ltima, no se preocupa de encontrar y analizar las causas subyacentes a un determinado incidente sino exclusivamente a restaurar el servicio. Sin embargo, es obvio, que existe una fuerte interrelacin entre ambas. Los objetivos principales de la Gestin de Incidencias son: Detectar cualquier alteracin en los servicios TI. Registrar y clasificar estas alteraciones. Asignar el personal encargado de restaurar el servicio segn se define en el SLA correspondiente. Esta actividad requiere un estrecho contacto con los usuarios, por lo que el Centro de Servicios debe jugar un papel esencial en el mismo. El siguiente diagrama resume el proceso de Gestin de Incidencias:
47
Aunque el concepto de incidencia se asocia naturalmente con cualquier mal funcionamiento de los sistemas de hardware y software, segn el libro de Soporte del Servicio de ITIL una incidencia es: Cualquier evento que no forma parte de la operacin estndar de un servicio y que causa, o puede causar, una interrupcin o una reduccin de calidad del mismo. Por lo que casi cualquier llamada al Centro de Servicios puede clasificarse como un incidente, a excepcin las Peticiones de Servicio tales como concesin de nuevas licencias, cambio de informacin de acceso, etc. Cualquier cambio que requiera una modificacin de la infraestructura no se considera un servicio estndar y requiere el inicio de una Peticin de Cambio (RFC) que debe ser tratada segn los principios de la Gestin de Cambios. Los principales beneficios de una correcta Gestin de Incidencias incluyen: Mejorar la productividad de los usuarios. Cumplimiento de los niveles de servicio acordados en el SLA. Mayor control de los procesos y monitorizacin del servicio. Optimizacin de los recursos disponibles. Una CMDB ms precisa, pues se registran los incidentes en relacin con los elementos de configuracin. Y principalmente: mejora la satisfaccin general de clientes y usuarios. 48
Por otro lado una incorrecta Gestin de Incidencias puede acarrear efectos adversos tales como: Reduccin de los niveles de servicio. Se dilapidan valiosos recursos: demasiada gente o gente del nivel inadecuado trabajando concurrentemente en la resolucin de la incidencia. Se pierde valiosa informacin sobre las causas y efectos de las incidencias para futuras reestructuraciones y evoluciones. Se crean clientes y usuarios insatisfechos por la mala y/o lenta gestin de sus incidencias. Las principales dificultades a la hora de implementar la Gestin de Incidencias se resumen en: No se siguen los procedimientos previstos y se resuelven las incidencias sin registrarlas o se escalan innecesariamente y/o omitiendo los protocolos preestablecidos. No existe un margen operativo que permita gestionar los picos de incidencias, por lo que stas no se registran adecuadamente e impiden la correcta operacin de los protocolos de clasificacin y escalado.
6.
6.1
49
Ejecucin: Son aquellas auxiliares en la ejecucin de las pruebas para facilitar o apoyar a la realizacin de los casos de prueba, dependiendo del tipo de pruebas pueden ser suits (o frames) completas o herramientas sencillas.
Otras: Son herramientas que si bien, no tienen como propsito la dedicacin en el rea de pruebas, son tiles para otros mbitos, algunos ejemplos son las hojas de clculo, editores de texto, captores de pantalla, entre otros.
50
usuario hasta una gran cantidad para ver el comportamiento del sistema, es decir, cmo maneja la informacin, tiempo de respuesta, si falla en actualizar bases de datos, si se pierde conexin, entre otros.
Evaluacin de calidad de los datos. Consiste en validar que los datos de entrada a utilizar realmente sean tiles para su propsito, por ejemplo, con un cierto formato, que se basen en plantillas, que se presenten de cierta forma, etc.
6.2
Algunos riesgos: Se debe aprender a usar una nueva herramienta, lo cul puede llevar tiempo y capacitacin generando retrasos en el proyecto. La herramienta tiene limitantes no esperadas o no especificadas. Pueden aumentar los costos del proyecto debido a las licencias, o bien, la ayuda y/o soporte no son de ayuda.
52
Se requiere experiencia para conocer cmo se comporta la herramienta para poder estimar tiempos correctamente, en caso contrario, puede retrasar el proyecto.
En ocasiones requiere ms esfuerzo usar una herramienta que el necesario para un ingeniero de pruebas.
6.3
53
Siempre es recomendable utilizar proyectos piloto para conocer el comportamiento de una herramienta y verificar que es realmente lo que se necesita, los objetivos de dicho piloto son: Conocer detalladamente la herramienta. El costo de implementarlo. El costo de la herramienta o del soporte. Si la herramienta se ajusta a las necesidades o no de la empresa.
Los factores de xito para el despliegue de la herramienta dentro de una organizacin incluyen: Hacer extensiva la herramienta al resto de la organizacin de una manera incremental. Adaptar y mejorar los procesos segn se requiera para la herramienta. Impartir capacitacin. Hacer un seguimiento de los beneficios y desventajas que presenta la herramienta. Difundir las lecciones aprendidas as como la informacin recaba para que todo el equipo puede valorarla y ofrecer su visin.
54
Glosario:
Error (error) (IEEE 610): Accin humana que produce un resultado incorrecto. Ejemplo: un error de programacin. Software (IEEE610): Programas de ordenador, procedimientos y posiblemente documentacin y datos pertenecientes a la operacin de un sistema basado en una computadora. Calidad de software (ISO/IEC 9126): La totalidad de la funcionalidad y presentaciones de un producto software que estn relacionadas con su capacidad de satisfacer las necesidades explcitas o implcitas. Calidad (IEEE 610): Grado en el cual un componente, sistema o proceso satisface requisitos especificados y/o necesidades y expectativas del usuario/cliente. De acuerdo a la norma ISO/IEC 9126 la calidad software consiste en: Atributos funcionales Atributos no funcionales Funcionabilidad Fiabilidad Usabilidad Eficiencia Mantenibilidad Portabilidad
Funcionalidad: Correccin: la funcionalidad satisface los atributos / capacidades requeridos Completitud: la funcionalidad satisface todos los requisitos (funcionales) Segn ISO/IEC 9126 incluye: Adecuacin (suitability) Exactitud (accuracy) Interoperabilidad (interoperability) Seguridad (security) Cumplimiento de funcionalidad (funcionality complience)
Precondiciones Conjunto de valores de entrada Conjunto de resultados esperados Pos condiciones esperadas Identificador nico Dependencia de otros casos de prueba Referencia al requisito que ser Forma en la cual se debe ejecutar el caso de prueba y verificar los resultados (opcional) Prioridad (opcional)
Revisin (review) (IEEE Std 1028): Evaluacin de un producto para detectar discrepancias respecto de los resultados planificados y para recomendar mejoras. (IEEE 1028) Evaluacin de un producto o del estado de un proyecto para detectar discrepancias con los resultados planificados y para recomendar mejoras. Algunos ejemplos incluyen la revisin de gestin, revisin de gestin, revisin informal, revisin tcnica, inspeccin y revisin guiada. Requisito / Requerimiento (requirement) (IEEE 610): Condicin o capacidad necesaria para un usuario con el objeto de solucionar un problema o lograr un objetivo que debe ser alcanzado o posedo por un sistema o componente de un sistema, para satisfacer un contrato, estndar, especificacin u otro documento impuesto formalmente. Especificacin de procedimiento depruebas (test procedure specification) (escenario de prueba test scenario) (IEEE829): Documento que especifiaca la secuencia de acciones para la ejecucin de una prueba. Tambin conocido como script de prueba manual. Registro de prueba (test log) (protocolo de prueba- test protocol; informe de pruebas-test report) (IEEE 829): Registro cronolgico de los detalles relevantes respecto a la ejecucin de pruebas: cundo se desarrollaron las pruebas, qu resultados fueron generados. Verificacin (ISO 9000): Comprobacin con los requisitos establecidos. Validacin (ISO 9000): comprobacin de la idoneidad para el uso esperado.
56
Fuentes consultadas: http://www.ecured.cu/index.php/Pruebas_de_software http://formandobits.com/2013/07/los-siete-principios-de-las-pruebas-software/ http://materias.fi.uba.ar/7548/PruebasSoftware.pdf http://jorgemontanoblog.files.wordpress.com/2011/10/control-de-calidad-de-software-final.pdf http://itilv3.osiatis.es/operacion_servicios_TI/gestion_incidencias/introduccion_objetivos.php http://www.juntadeandalucia.es/servicios/madeja/contenido/recurso/344 http://www.softqanetwork.com/criterios-de-entrada-y-salida-en-software-testing http://www.softqanetwork.com/criterios-de-entrada-y-salida-en-software-testing http://www.dovinet.com/es-do/verArticulo.aspx?Id=73 http://calidadysoftware.blogspot.com/2012/04/testing-ii-planificacion-de-las-pruebas.html http://www.softqanetwork.com/software-testing-life-cycle http://agile.csc.ncsu.edu/SEMaterials/WhiteBox.pdf http://dc.exa.unrc.edu.ar/rio2013/sites/default/files/notas-03.pdf http://indalog.ual.es/mtorres/LP/Prueba.pdf http://www.lsi.us.es/docencia/get.php?id=361
57