Documente Academic
Documente Profesional
Documente Cultură
1.1 ANTECEDENTES
La primera referencia a las Pruebas de Software puede ser rastreada a 1950, pero fue
recién en 1957 que la prueba fue distinguida del debugging [Het88]. Dijkstra en 1970
presentaba una importante limitación, que “La Prueba de Software puede ser usada para mostrar
la presencia de bugs, pero nunca su ausencia” (Dijkstra, 1970)
Myers en su segunda edición del libro “The art of Software testing” del año 2004, que
fue publicado originalmente en 1979, comenta el hecho de que, en el tiempo transcurrido entre
una edición y otra, la prueba de software no se ha convertido en una ciencia exacta, y que está
lejos de eso. De hecho, parece que se sabe mucho menos sobre la prueba de software, que sobre
cualquier otro aspecto relacionado con el desarrollo de software. La prueba continúa estando
entre las “artes oscuras” del desarrollo de software (Myers, 2004)
1.2 DEFINICIÓN
Se ha ido cambiando la percepción de que las pruebas de software se realizan únicamente al
final del proceso de creación de código fuente, siendo muy útil hacerlo de todas las etapas del
desarrollo del software; esto permite corregir errores y detectar fallas de fondo, a tiempo.
Una prueba es una actividad ejecutada para evaluar y mejorar la calidad del producto a través
de la identificación de defectos y problemas. (SWEBOK, 2014)
Las pruebas de software, en inglés “Testing” son los procesos que permiten verificar y revelar
la calidad de un producto Software. Son utilizadas para identificar posibles fallos de
implementación, Calidad, o usabilidad de un producto de un programa de ordenador o un
videojuego. (Tecnology, 2016)
1.3 IMPORTANCIA DE PRUEBAS
Hoy en día, forman parte de nuestras vidas multitud de sistemas que contienen software, como
por ejemplo los coches, smartphones, sistemas de producción de energía, programas bancarios,
etc.
Calidad:
Hay dos puntos principales que tienen casi todas las definiciones de calidad: la satisfacción del
cliente y el cumplimiento de los requisitos del producto.
Las pruebas de software se integran dentro de las diferentes fases del ciclo de vida del software
dentro de la Ingeniería de software. En este sentido, se ejecuta el aplicativo a probar y mediante
técnicas experimentales se trata de descubrir qué errores tiene.
Validación: Este tipo de actividades nos ayudan a confirmar que un producto cumple con su
uso previsto. Las actividades de validación tienen por objeto confirmar que un producto cumple
con las expectativas de sus clientes. En otras palabras, las actividades de validación se centran
en el producto final, que se prueba ampliamente desde el punto de vista del cliente. La
validación establece si el producto cumple con las expectativas generales de los usuarios.
Las actividades de validación son a menudo arriesgadas por lo que aumenta los costes de
desarrollo. Pueden ser ejecutadas en las primeras etapas del ciclo de desarrollo de software. Un
ejemplo de actividades de validación se puede encontrar en la metodología de desarrollo de
software XP. En la metodología XP, el cliente interactúa estrechamente con el grupo de
desarrollo de software y lleva a cabo las pruebas de aceptación durante cada iteración de
desarrollo.
En este trabajo se usará la definición de cuando se hace referencia a los términos error, falta o
defecto y falla:
Con estas definiciones, un defecto es una visión interna del sistema, desde la óptica de los
desarrolladores, una falla es una visión externa del sistema, o sea un problema que ve el usuario.
No todos los defectos corresponden a una falla. Por ejemplo: si un trozo de código defectuoso
nunca se ejecuta, el defecto nunca provocará la falla del código.
La Prueba puede revelar fallas, pero son las faltas las que pueden y deben ser removidas.
Para terminar de entender las pruebas debemos diferenciar los términos error, fallo y defecto.
Estos conceptos están relacionados entre sí, pero tienen significados diferentes. Para
comprender estas palabras y por ende las pruebas, vamos a ver como las define el ISTQB (El
Comité internacional de calificación de pruebas de software) (International Software Testing
Qualifications Board) realiza un glosario de términos de prueba de software estándar
“Una persona puede cometer un error que a su vez puede producir un defecto en el código de
programa o en un documento. Si se ejecuta un defecto en el código, el sistema puede no hacer
lo que debiera (o hacer algo que no debiera), lo que provocaría un fallo. Algunos defectos de
software pueden dar lugar a fallos, pero no todos los defectos lo hacen.”
Error: está provocado por la acción humana, por ejemplo, el error lo provocará el
desarrollador que realizará una incorrecta interpretación de un método del programa que
producirá un resultado no esperado.
Defecto: Provocado por un error de implementación, por ejemplo, el defecto lo
provocará el haber utilizado el operador “x + y > z” en vez de “x + y => z”
Tiene como objetivo realizar la prueba a cada unidad mínima a ser probada lo que permite un
mejor modo de manejar la integración de las unidades en los componentes mayores, así mismo
busca asegurar que el código funcione de acuerdo a las especificaciones y que el modulo lógico
sea válido.
Se caracteriza por lo siguiente:
Por cada unidad de prueba es necesario definir los casos (pruebas de caja blanca)
Las pruebas se diseña de tal forma que recorran la ejecución de todos los caminos
posibles dentro del código, por lo que es necesario que diseñador tenga acceso al
código fuente.
Verificar que las interfaces entre las entidades externas (usuarios) y las aplicaciones funcionan
correctamente y que las especificaciones de diseño sean alcanzadas.
Describe cómo verificar que las interfaces entre las componentes de software funcionan
correctamente.
Determina cómo la base de datos de prueba será cargada.
Determina el enfoque para avanzar desde un nivel de integración de las componentes al
siguiente.
Decide qué acciones tomar cuando se descubren problemas.
3.2.2 Prueba de Regresión
Determinar si los cambios recientes en una parte de la aplicación tienen efecto adverso
en otras partes.
En esta prueba se vuelve a probar el sistema a la luz de los cambios realizados durante
el debugging, mantenimiento o desarrollo de la nueva versión del sistema buscando
efectos adversos en otras partes.
Asegura los resultados de las prueba unitarias reduciendo el riesgo y a abaja calidad.
Recibe este nombre debido a que tiene como objetivo probar el sistema constantemente
buscando que saque humo o falle , en algunos proyectos va junto con las pruebas
funcionales. Permite detectar problemas que por lo regular no son detectadas en las
pruebas normales, Si ocurren tarde en el ciclo de desarrollo serán un forma de garantizar
un buen desarrollo.
Las pruebas del sistema deben enfocarse en requisitos que puedan ser tomados
directamente de casos de uso y reglas y funciones de negocios. El objetivo de estas
pruebas es verificar el ingreso, procesamiento y recuperación apropiado de datos, y la
implementación apropiada de las reglas de negocios. Este tipo de pruebas se basan en
técnicas de caja negra, ésto es, verificar el sistema (y sus procesos internos), la
interacción con las aplicaciones que lo usan via GUI y analizar las salidas o resultados.
Prueba funcionalidad
Prueba de Usabilidad
Prueba de Performance
Prueba de Documentación y Procedimientos
Prueba de Seguridad y Controles
Prueba de Volumen
Prueba de Esfuerzo (Stress)
Prueba de recuperación
Prueba de múltiples sitios
Humo.
Usabilidad
Performance
Funcionalidad
La prueba de sistema es compleja porque intenta validar un número de características al
mismo tiempo, a diferencia de otras pruebas que sólo se centran en uno o dos aspectos
del sistema al mismo tiempo.
Validar el tiempo de respuesta para las transacciones o funciones de negocios bajo las
siguientes dos condiciones:
Las pruebas de desempeño usualmente se ejecutan varias veces, utilizando en cada una,
carga diferente en el sistema. La prueba inicial debe ser ejecutada con una carga similar
a la esperada en el sistema. Una segunda prueba debe hacerse utilizando una carga
máxima.
Adicionalmente, las pruebas de desempeño pueden ser utilizadas para perfilar y refinar
el desempeño del sistema como una función de condiciones tales como carga o
configuraciones de hardware
Errores lógicos
Procesamiento ineficiente
Diseño pobre: muchas interfases, instrucciones y entradas/salidas.
Cuellos de botella en discos, CPU ó canales de entrada/salida
Salidas del sistema
Tiempos de respuesta
Capacidad de almacenamiento
Tasa de entrada/salida de datos
Número de transacciones que pueden ser manejadas simultáneamente.
Las pruebas de desempeño utilizan las técnicas de caja blanca y caja negra.
3.3.3 Pruebas de Carga
Verificar el tiempo de respuesta del sistema para transacciones o casos de uso de negocios,
bajo diferentes condiciones de carga.
Las pruebas de carga miden la capacidad del sistema para continuar funcionando
apropiadamente bajo diferentes condiciones de carga.
En esta prueba se usa el scrip de los desarrolladores para las pruebas de negocios las
cuales se modifica para incrementa el número de transacciones las cuales debe ser
utilizadas por múltiples de usuarios.
Estas pruebas debe ser ejecutadas en máquinas dedicadas o en un tiempo dedicado, asi
mismo la base de datos de prueba debe ser de igual tamaño o mayor que la diseñada.
Esta prueba ayuda a identificar y documentar bajo que condiciones FALLA el sistema.
Es aplicable, sin embargo, a programas que trabajan bajo cargas variables, interactivos,
de tiempo real y de control de proceso.
Al realizar estas pruebas se debe considera que producir stress en la red puede requerir
herramientas de red para sobrecargarla de tráfico y el espacio en disco utilizado para el
sistema debe ser reducido temporalmente para limitar el espacio disponible para el
crecimiento de la Base de datos y requiere sincronización de varios clientes accediendo
simultáneamente los mismos registros.
Las pruebas de volumen hacen referencia a grandes cantidades de datos para determinar
los límites en que se causa que el Sistema falle. También identifican la carga máxima o
volumen que el sistema puede manejar en un período dado. Por ejemplo, si el sistema
está procesando un conjunto de registros de Base de datos para generar un reporte, una
prueba de volumen podría usar una Base de datos de prueba grande y verificar que el
sistema se comporta normalmente y produce el reporte correctamente.
Un compilador puede ser alimentado por un programa para compilar que sea
absurdamente grande.
Un editor de nexos puede recibir un programa que contenga miles de módulos.
Un simulador de circuito electrónico puede recibir un circuito diseñado con miles
de componentes.
Puesto que obviamente, la prueba de volumen es una prueba costosa, tanto en tiempo
de máquina como en personal, se debe tratar de no exceder los límites. Sin embargo,
todo programa debería ser expuesto, al menos, a algunas pruebas de volumen.
Estas pruebas aseguran que una aplicación o sistema se recupere de una variedad de
anomalías de hardware, software o red con pérdidas de datos o fallas de integridad.
Las pruebas de tolerancia a fallas aseguran que, para aquellos sistemas que deben
mantenerse corriendo, cuando una condición de falla ocurre, los sistemas alternos o de
respaldo pueden tomar control del sistema sin pérdida de datos o transacciones.
Las pruebas de recuperación son contrarias a las pruebas en que la aplicación o sistema
es expuesto a condiciones extremas (o condiciones simuladas), tales como fallas en
dispositivos en entrada/salida o llaves o apuntadores inválidos de base de datos. Los
procesos de recuperación se invocan y la aplicación es monitoreada y/o inspeccionada
para verificar que éstos mecanismos se han ejecutado en forma apropiada.
El objetivo de esta prueba es determinar la habilidad del sistema para recuperarse de una
falla de hardware o software. Esta prueba evalúa las características de contingencia
construidas en el sistema para procesar interrupciones y para volver a puntos específicos
en el ciclo de procesamiento del sistema. La recuperación debe ser considerada en el
proceso de diseño. Errores de programación o de datos pueden ser incorporados ex
profeso en un sistema para determinar si se puede recuperar de ellos. Las fallas de equipo
(por ejemplo errores de paridad en memoria, errores en dispositivos de entrada/salida)
pueden ser simuladas.
La Base de datos y los procesos de Base de datos deben ser probados como sistemas
separados del proyecto. Estos sistemas deberían ser probados sin usar interfaces de
usuario (como las interfaces de datos). Se necesita realizar investigación adicional en el
DBMS para identificar las herramientas y técnicas que podrían existir para soportar las
pruebas identificadas más adelante.
Asegurar que el sistema funciona de acuerdo con el modelo de negocios emulando todos
los eventos en el tiempo y en función del tiempo.
Las pruebas del ciclo de negocio deberían emular las actividades ejecutadas en el a
través del tiempo. Debería identificarse un periodo, como por ejemplo un año, y las
transacciones y actividades que podrían ocurrir durante un periodo de un año deberían
ejecutarse. Incluyendo todos los ciclos y eventos diarios, semanales y mensuales que
sean datos sensitivos, como las agendas.
Verifica lo siguiente:
Validar y verificar que el cliente del sistema funciona apropiadamente en las estaciones
de trabajo recomendadas.
Comprobar que la aplicación sigue los estándares de estilo propios del cliente.
Se entienden como tales el formato de las ventanas, colores corporativos, tipos de letra
etc. En esta prueba se realiza una navegación por la aplicación verificando si se cumplen
con los estándares de GUI del cliente validado objetos gráficos contra el manual de
estilos del cliente.
Determinación por parte del cliente de la aceptación o rechazo del sistema desarrollado.
La prueba de aceptación es ejecutada antes de que la aplicación sea instalada dentro de
un ambiente de producción. La prueba de aceptación es generalmente desarrollada y
ejecutada por el cliente o un especialista de la aplicación y es conducida a determinar
como el sistema satisface sus criterios de aceptación validando los requisitos que han
sido levantados para el desarrollo, incluyendo a documentación y procesos de negocio.
Estas pruebas están destinadas a probar que el producto está listo para el uso operativo.
Suelen ser un subconjunto de las Pruebas de Sistema.
Sirve para que el usuario pueda validar si el producto final se ajusta a los requisitos
fijados, es decir, si el producto está listo para ser implantado para el uso operativo en el
entorno del usuario.
Verificar y validar que el sistema se instala apropiadamente en cada cliente, bajo las siguientes
condiciones:
Instalaciones nuevas, nuevas máquinas a las que nunca se les ha instalado el sistema.
Actualizar máquinas previamente instaladas con el sistema.
Instalar versiones viejas en máquinas previamente instaladas con el sistema.
Las pruebas de instalación tienen dos propósitos. El primero es asegurar que el sistema
puede ser instalado en todas las configuraciones posibles, tales como nuevas
instalaciones, actualizaciones, instalaciones completas o personalizadas, y bajo
condiciones normales o anormales; estas últimas incluyen insuficiente espacio en disco,
falta de privilegios para algunas tareas, etc.
El segundo propósito es verificar que, una vez instalado, el sistema opera correctamente.
Esto usualmente implica correr un número significativo de pruebas de Funcionalidad.
3.4.7 Pruebas Funcionales
Las pruebas Funcionales deben enfocarse en los requisitos funcionales, las pruebas
pueden estar basadas directamente en los Casos de Uso (o funciones de negocio), y las
reglas del negocio. Las metas de estas pruebas son:
Este tipo de pruebas están basadas en técnicas de caja negra, que es, verificar la
aplicación (y sus procesos internos) mediante la interacción con la aplicación vía GUI
y analizar la salida (resultados). Lo que se identifica a continuación es un diseño
preliminar de las pruebas recomendadas para cada aplicación.
Determina cuán bien el usuario podrá usar y entender la aplicación. Identifica las áreas
de diseño que hacen al sistema de difícil uso para el usuario.
Se deben crear casos de prueba para comprobar que se puede operar en el sistema de
forma adecuada.
Correr el sistema en el ambiente real para encontrar errores y validar el producto contra
sus especificaciones originales.
Prueba de aceptación donde La validación (o pruebas beta) involucra el uso del software
en un ambiente real.
Se selecciona un grupo de usuarios que ponen a trabajar el sistema en un ambiente real.
Usan el sistema en sus actividades cotidianas, procesan transacciones y producen salidas
normales del sistema.
Las transacciones y personas que usan el sistema son reales y trabajan en su área de
trabajo real.
Los usuarios están advertidos de que están usando un sistema que puede fallar y puede
realizar realizar pruebas a su antojo realizando uso de la aplicación.
Tabla de Pruebas de
decisión caminos
Grafos de
causa- efecto
Transición de
estados
Casos de uso
5 Calculadora
+ 1
5
Se valide que se recorre al menos una vez los caminos independientes de cada módulo
Se valide todas las decisiones lógicas tanto verdaderas como falsas.
Se valide todos los bucles del sistema dentro y sobre sus límites operacionales.
Se validen las estructuras internas de datos, para asegurar su integridad.
Las pruebas de caja blanca son útiles cuando se realizan pruebas en los siguientes niveles:
• Pruebas de Componentes: Permite validar la estructura de “las sentencias, las
decisiones, las ramas o caminos que se presentan en el componente”.
• Pruebas de integración: Permite validar la estructura por ejemplo de “árbol de
llamadas (un diagrama en el que los módulos llaman a otros módulos)”
• Pruebas de sistema: Permite validar la estructura de los “menús, procesos de negocio
o una estructura de una página web”.
𝐶𝑜𝑏𝑒𝑟𝑡𝑢𝑟𝑎 𝑑𝑒 𝑠𝑒𝑛𝑡𝑒𝑛𝑐𝑖𝑎 =
𝑁ú𝑚𝑒𝑟𝑜 𝑑𝑒 𝑠𝑒𝑛𝑡𝑒𝑛𝑐𝑖𝑎𝑠 𝑒𝑗𝑒𝑐𝑢𝑡𝑎𝑑𝑎𝑠
• Los casos de prueba deben diseñarse 𝑁ú𝑚𝑒𝑟𝑜 𝑡𝑜𝑡𝑎𝑙 𝑑𝑒 𝑠𝑒𝑛𝑡𝑒𝑛𝑡𝑖𝑎𝑠 𝑒𝑗𝑒𝑐𝑢𝑡𝑎𝑏𝑙𝑒𝑠
× 100%
para ejecutar las sentencias del sistema,
Validar las • Aunque el porcentaje de la cobertura de las
por lo tanto, deben dirigirse a sentencias
sentencias del sentencias es igual al 100%, no asegura que el
Pruebas de sentencia específicas, para aumentar la cobertura
código en el sistema este correcto, debido que no es posible
del sistema.
sistema. asegurar que cada decisión del sistema ha sido
• Una sentencia del sistema se ejecuta en ejecutada, por ejemplo, si el sistema cuenta con
su totalidad o no en absoluto. sentencias de condición, únicamente se prueba un
camino.
Validar y asegurar • Los casos de prueba buscan ejecutar los • La cobertura de decisión, permite evaluar el
Pruebas de decisión las decisiones del resultados de las decisiones. porcentaje de los resultados de decisión, que han
bloques básicos.
• El 100% de cobertura de decisión, garantiza el
o Identificar las decisiones que se 100% de cobertura de sentencia, pero no viceversa.
presentan en cada bloque, las
ramas y sus resultados.
1
El nodo predicado: corresponde a un nodo que presenta una condición del sistema, donde aparecen uno o más operadores lógicos, creando nodos descendientes por cada
condición. [18],
Para la generación de casos de pruebas es Grafica de flujo de acuerdo a instrucciones
necesario:
Secuencia Condicional
1. Convertir el código del sistema en una
gráfica de flujo.
2. Calcular la complejidad ciclomática
𝑉(𝐺) del grafo generado.
Mientras Hasta
El valor de 𝑉(𝐺) define:
Las técnicas basadas en especificación o pruebas de caja negra, no necesitan conocer la lógica
interna del sistema a probar para el desarrollo de los casos de prueba. Se basan en las posibles
entradas, las salidas del sistema como resultado y la validación del resultado, las pruebas son
exitosas si el resultado cumple los criterios de aceptación, en caso contrario la prueba revela un
defecto (salida errónea). Quien ejecuta las pruebas se basa en que hace el software y no en el
cómo, tiene en cuenta las respuestas del sistema y no la trayectoria interna de cálculos y
procesamiento realizado. (ISTQB, 2011)
La IEEE define esta técnica como “un enfoque que trata a un sistema o componente cuyas
entradas, salidas y funciones en general son conocidos, pero cuyo contenido o implementación
son desconocidos o irrelevantes” (ISO/IEC, 2010)
Las pruebas de caja negra se llevan a cabo sobre la interfaz del software, obviando el
comportamiento interno y la estructura del programa.
En la Ilustración 2, se presenta un ejemplo sobre pruebas sobre una calculadora, que como
entrada recibe los números y las operaciones que se requieren ejecutar sobre ellos y devuelve
una salida con el resultado de la operación.
Ilustración 3 Técnica de caja negra
En las siguientes subsecciones se presentan las técnicas de pruebas de acuerdo a este enfoque.
Como su nombre lo indica, esta técnica busca dividir las entradas o salidas del sistema en grupos
de acuerdo a un común comportamiento o por características comunes, por lo tanto, se espera
que sean procesados de la misma manera el resultado de la prueba para una entrada de una clase
es representativo para todas las entradas de la misma clase.
• Todos los valores numéricos de entrada que se encuentren dentro de los rangos X<=0 y
X>=10 son valores de entrada inválidos.
• Todos los valores numéricos de entrada que se encuentren dentro del rango 0<= X <=10
son valores de entrada válidos.
Esta técnica complementa a la de partición equivalente (toma como base a la anterior). En lugar
de seleccionar cualquier elemento de una clase de equivalencia, el AVL lleva a la elección de
casos de prueba "en los bordes" o “análisis de valores límite” de la clase. En lugar de centrarse
solamente en las condiciones de entrada, el AVL deriva casos de prueba también para el campo
de salida.
Los valores máximos y mínimos de una partición corresponden a los valores límites.
Los limites o fronteras son un buen lugar para encontrar defectos, debido que los
defectos tienden a encontrarse alrededor de ellos. Es probable que se presente un error
en los valores justo fuera del rango por ser aceptados o los valores justo en el límite del
rango por ser rechazados.
Los limites válidos constituye al valor límite de las particiones válidas y limites no
válidos corresponde a valor límite de las particiones no válidas. Por lo tanto, un valor
límite es el valor en un límite de una partición de equivalencia.
Las pruebas deben considerar los valores válidos, valores inválidos, valores límite
válidos y valores límite inválidos. Cuando se selecciona un valor límite, se debe
seleccionar el valor límite, al menos un valor dentro del límite y otro valor fuera del
límite, por lo tanto, por cada límite se seleccionan tres valores. Es importante tener
cuidado con el valor fuera del límite de la partición, debido que esta puede ser el valor
de la frontera de otra clase, lo que puede estar reduciendo los valores de selección a dos:
el valor límite y un valor dentro del límite.
El análisis de valores límite puede aplicarse en todos los niveles de pruebas.
Con frecuencia se presentan inconvenientes en el momento de definir los valores límites
de una partición, por lo que es necesario basarse en la especificación de los
requerimientos, y como segunda instancia buscar los límites de manera indirecta u
ocultos.
En el siguiente ejemplo anterior para el rango 0 < X < 10, se tienen las mismas particiones
con las fronteras: 0 y 10.
Tabla de decisiones
Las tablas de decisión permiten registrar todas las condiciones de entrada posibles junto
con todas las acciones resultantes del sistema.
Facilita la definición de las decisiones lógicas del sistema, debido que las tablas
representan relaciones lógicas entre las condiciones.
Las tablas de decisión, son muy útiles cuando se tienen reglas de negocio complejas y
se cuenta con varias condiciones de entradas que producen varias salidas.
Las tablas de decisión permiten determinar si los requerimientos están completos, los
casos de prueba se crean a partir de cualquier texto o documento y a menudo permiten
evidenciar ambigüedades o falencias en los requerimientos.
Las combinaciones posibles de la tabla de decisión se derivan de los requerimientos, se
debe analizar la especificación para identificar las condiciones y acciones del sistema.
Las filas de la tabla de decisión especifican las condiciones de entrada o acciones que
son realizadas en el sistema.
Las columnas de la tabla de decisión, representan los casos de prueba, especifican las
acciones que pueden ocurrir. Representa un conjunto único de combinaciones de
entrada.
Entrada 1 Si No Si
Entrada 2 Si N/A No
Entrada N Si N/A Si
Salidas/Respuestas
Salida 1 Si No Si
Salida 2 Si No No
Salida N No Si N/A
¿Mayor de edad? Si Si Si Si No
¿Empleado? Si No No Si N/A
¿Esta No N/A
Si Si No
pensionada?
¿Estudia en
No No No No Si
colegio?
Salidas/Respuestas
Recibe ingresos
Si Si N/A N/A N/A
por pensión.
Depende
económicamente N/A N/A N/A N/A Si
de los padres.
Así por ejemplo se tienen las siguientes entradas para definir los casos de pruebas y las salidas
o respuestas esperadas:
• El primer caso de prueba, las entradas definen a una persona que es mayor de edad, esta
empleada, es jubilada y no estudia en colegio. Por lo tanto, no cotiza pensión, recibe
ingresos por pensión y recibe sueldo por trabajo.
• El segundo caso de prueba, las entradas definen a una persona que es mayor de edad,
no está empleada, esta pensionada y no estudia en un colegio. Por lo tanto, no cotiza
pensión, recibe ingresos por pensión y no recibe sueldo por trabajo.
• El quinto caso de prueba, las entradas definen a un menor de edad y que estudia en el
colegio. Por lo tanto, depende económicamente de sus padres.
Técnica de prueba que busca representar de manera gráfica las “entradas o estímulos (causas)
del sistema con las salidas asociadas (efectos) del sistema.”
1. Se listan para un módulo las causas (condiciones de entrada) y los efectos (acciones),
asignando un identificador a cada uno de ellos.
2. Se desarrolla un grafo de causa-efecto.
3. Se convierte el grafo en una tabla de decisión.
4. Las reglas de la tabla de decisión se convierten a casos de prueba.
Casos de uso
Técnica de pruebas que se basa en los casos de uso del sistema, debido a que brindan
información importante y completa del sistema, específica las funcionalidades del negocio, los
escenarios, los flujos de procesos entre el sistema y el actor describen los usos particulares del
sistema para cada usuario u otro sistema, presenta el sistema de principio a fin. “Un sistema se
describe por la suma de sus casos de uso”. Las ventajas de los casos de uso son:
• Los casos de uso manejan lenguaje natural con términos del negocio y no un lenguaje
técnico. Describe las interacciones de los usuarios con el sistema de manera secuencial.
• Los casos de uso tienen precondiciones que el sistema debe cumplir antes de la
ejecución y post condiciones que indican los resultados finales del que el sistema luego
de su ejecución
• Los casos de uso describen un flujo del sistema principal basado en el uso más probable
y otros flujos asociados que describen las posibles excepciones que se pueden presentar.
• Cada escenario de un caso de uso representa un caso de prueba.
• Permite asegurar el cumplimento de los requerimientos del sistema y las expectativas
del usuario. Por lo tanto, son una base para las pruebas de aceptación.
• Dentro de los casos de pruebas se deben incluir los flujos normales de los actores
descritos en los casos de uso, los flujos de las excepciones o variantes que se describan,
la información adicional suministrara información sobre el propósito de la prueba, las
precondiciones.
Descripción
No No
Actor Sistema
paso paso
Post
Actor accede a su cuenta
condiciones
Aportan un valor agregado en la creación de casos de pruebas, debido que permiten identificar
casos especiales que comúnmente no son previstos mediante otros métodos, por lo tanto, estas
técnicas deben ser complemento a las técnicas formales, a continuación, se presentan las
técnicas: Predicción de error y pruebas exploratorias.
Predicción de error
Como su nombre lo indica, esta técnica busca identificar de manera anticipada los errores que
se pueden presentar en el sistema, se basan en la experiencia, en el conocimiento del sistema,
en su funcionamiento y en el conocimiento de ejecución de pruebas por parte del probador, para
identificar debilidades y los posibles defectos del sistema. Así como también en el historial de
problemas presentados en versiones anteriores o sistemas similares. Es importante tener en
cuenta los siguientes puntos:
Pruebas Exploratorias
En esta técnica de pruebas, se busca realizar pruebas del sistema sin que los casos de pruebas
se encuentren definidos de manera formal, pero se cuenta con el conocimiento del alcance de
la prueba, el enfoque de las pruebas y problemas esperados en una “carta de pruebas” que
presenta dicha información.
Útil cuando se cuenta con poca documentación, mala calidad de las especificaciones de
los requerimientos, “y existe una importante presión temporal”
Un aspecto importante sobre esta técnica es el aprendizaje del software por parte del
ejecutor de pruebas: su uso, sus fortalezas y sus debilidades.
En la Error! Reference source not found., se presenta la información sobre lo que permiten
conocer las pruebas exploratorias.
Explorar
Encontrar Identificar en el sistema
•Información del sistema •Que funciona.
(para incluir y mejorar •Que no funciona.
pruebas) •El uso.
•Defectos del sistema. •Fortalezas.
•Debilidades.
6. CONCLUSIONES Y RECOMENDACIONES
6.1. Conclusiones
6.2. Recomendaciones
6.3.