Está en la página 1de 21

capacitacin y gua para el desarrollo de software

Pruebas de Software

Pruebas de Software

capacitacin y gua para el desarrollo de software


PRUEBAS DE SOFTWARE ..................................................................................3
INTRODUCCIN .................................................................................................. 3
Definiciones [1] ........................................................................................... 3
Filosofa y Economa ..................................................................................... 4
Justificacin ................................................................................................ 4
PRINCIPIOS [1].................................................................................................. 7
NIVELES DE PRUEBAS ........................................................................................... 7
TIPOS DE PRUEBAS .............................................................................................. 9
MTODOS DE PRUEBA ......................................................................................... 10
Test incrementales ..................................................................................... 10
Top Down ................................................................................................. 10
Bottom Up ................................................................................................ 10
Caja Negra................................................................................................ 10
Caja Negra................................................................................................ 11
Caja Blanca ............................................................................................... 12
DISEO DE CASOS DE PRUEBAS ............................................................................. 14
PLANIFICACIN ................................................................................................ 16
Criterio de Completitud de las pruebas ......................................................... 16
REVISIONES

.................................................................................................... 18

Objetivos .................................................................................................. 18
Beneficios ................................................................................................. 19
Formales vs Informales .............................................................................. 20
Condiciones para comenzar ......................................................................... 20
Checklists guas en revisiones...................................................................... 21
REFERENCIAS .................................................................................................. 21

Pruebas de Software

capacitacin y gua para el desarrollo de software

Pruebas de Software
INTRODUCCIN
Definiciones [1]
Testing: es el proceso orientado a demostrar que un programa no tiene errores. 1 Imposible. 2 - Tentacin a disear tests que no detecten errores.
Testing: es la tarea de demostrar que un programa realiza las funciones para las
cuales fue construido.
Testing: es la tarea de probar que un programa realiza lo que se supone debe hacer.
An haciendo lo esperado, puede contener errores.
Testing: es la ejecucin de programas de software con el objetivo de detectar
defectos y fallas. Proceso destructivo, sdico.
Test Exitoso: aquel que detecta errores
Test No exitoso: aquel que no los detecta
Problema psicolgico, requiere un cambio de actitud ya que naturalmente somos
constructivos.
Error: una equivocacin de una persona al desarrollar alguna actividad de desarrollo
de software.
Defecto: se produce cuando una persona comete un error.
Falla: es un desvo respecto del comportamiento esperado del sistema, puede
producirse en cualquier etapa
Notas:
Defecto es una vista interna, lo ven los desarrolladores. Falla es una vista externa, la
ven los usuarios.

Pruebas de Software

capacitacin y gua para el desarrollo de software


Filosofa y Economa

Grfico tomado de Rakitin[2]


Justificacin
1. La realizacin de tareas de pruebas conlleva un costo asociado que puede
inducir a tomar decisiones de no realizarlas.
2. No realizarlas tambin conlleva un costo asociado.
El problema es determinar cul de estos costos es mayor.

Pruebas de Software

capacitacin y gua para el desarrollo de software


Presuponemos los siguientes objetivos:
Menores costos, menores tiempos de desarrollo y mayor satisfaccin del cliente.

Pruebas de Software

capacitacin y gua para el desarrollo de software

Pruebas de Software

capacitacin y gua para el desarrollo de software

PRINCIPIOS [1]
1. Una parte necesaria de un test es la definicin de los resultados esperados
2. Un programador debe evitar probar su propio desarrollo
3. Una organizacin no debe probar sus propios desarrollos
4. Revise los resultados de los test en profundidad
5. Los test deben incluir entradas invlidas e inesperadas as como las vlidas y esperadas
6. Revisar un programa para verificar que hace lo que se espera que haga es slo la mitad de
la prueba; la otra mitad consiste comprobar que no haga lo que no se espera
7. No tirar los test a la basura a menos que el programa sea basura
8. No planear esfuerzos de pruebas asumiendo que no se encontrarn errores
9. La probabilidad de encontrar errores en una seccin de un programa es proporcional al
nmero de errores ya encontrados en esa seccin
10. El testing constituye una tarea creativa e intelectualmente desafiante

NIVELES DE PRUEBAS

Test Unitarios

Test de Componentes / Test de Integracin

Test de Funcionalidad

Test de Sistema

Test de Aceptacin

Test de Instalacin

Pruebas de Software

capacitacin y gua para el desarrollo de software


Modelo tradicional
class VV_Tardio

Pruebas
Aceptacion
Cliente
Desarrollo de
requerimientos

Pruebas de
Sistema

Diseo de
Arquitectura

Pruebas
Funcionales

Pruebas de
Integracin

Diseo Detallado

Pruebas Unitarias

Desarrolladores

Testers

Codificacin

Modelo actualizado
class VV_Temprano

Pruebas
Aceptacion
Cliente
Desarrollo de
requerimientos

Pruebas de
Sistema

Diseo de
Arquitectura
Pruebas de Sistema
Diseo / Pre
Ejecucin

Pruebas de
Integracin

Pruebas de
Integracin Diseo
/ Ejecucin
Diseo Detallado

Pruebas Funcionales
Diseo / Pre
Ejecucin

Pruebas
Funcionales

Testers

Pruebas Unitarias

Pruebas Unitarias
Diseo / Ejecucin
Codificacin

Desarrolladores

Pruebas de Software

capacitacin y gua para el desarrollo de software

Niveles de pruebas
Test

Objetivo

Participantes

Ambiente

Mtodo

Unitario

Detectar errores
en los datos,
lgica, algoritmos

Programadores

Desarrollo

Caja Blanca

Integracin

Detectar errores
de interfaces y
relaciones entre
componentes

Programadores

Desarrollo

Caja Blanca,
Top Down,
Bottom Up

Funcional

Detectar errores
en la
implementacin de
requerimientos

Testers, Analistas

Desarrollo

Funcional

Sistema

Detectar fallas en
el cubrimiento de
los requerimientos

Testers, Analistas

Desarrollo

Funcional

Aceptacin

Detectar fallas en
la implementacin
del sistema

Testers,
Analistas, Cliente

Productivo

Funcional

TIPOS DE PRUEBAS

Test de Facilidad

Test de Volumen

Test de Stress

Test de Usabilidad

Test de Seguridad

Test de Performance

Test de Configuracin

Test de Insta labilidad

Test de Fiabilidad

Test de Recuperacin

Test de Documentacin

Test de Mantenibilidad

Pruebas de Software

capacitacin y gua para el desarrollo de software

MTODOS DE PRUEBA
Test incrementales
Testeo continuo, distribuye las pruebas de integracin en la integracin diaria del
cdigo compartido.
Top Down
Se requieren Stubs para suplantar los mdulos inferiores an no
implementados
Los Stubs se quitan a medida que se desarrollan los diferentes mdulos
Un test por mdulo que se suma
Realizar test de regresin sobre los mdulos
Desventajas
Se retraza la prueba del procesamiento real realizado generalmente en
mdulos de ms bajo nivel
Desarrollar Stubs que emulen a los mdulos es mucho trabajo
Bottom Up
Las pruebas comienzan en el ms bajo nivel con la integracin de
algoritmos que realizan procesamiento
Se escriben test que dan el contexto de ejecucin a los mdulos
Se prueban los mdulos
Se desarrolla e integran funcionalidades del mdulo superior y se repite
Desventajas
Hasta que se logra un nivel determinado, la aplicacin no es visible
Problemas asociados a volumen, recursos y tiempo se prueban en etapas
tardas

Pruebas de Software

10

capacitacin y gua para el desarrollo de software


Caja Negra

-00 -10 -9 -8 -. 0 8 9 10 +00

Pruebas funcionales sin acceso al cdigo fuente de las aplicaciones, se trabaja con
entradas y salidas

Condicin de entrada

Clase de equivalencia
vlida

Clase de equivalencia
invlida

Valores > 1 y Valores <


99

Valores < 1

Rango de
valores (1, 99)

Pruebas de Software

Valores > 99

11

capacitacin y gua para el desarrollo de software

Caja Blanca
Pruebas con acceso al cdigo fuente (datos y lgica). Se trabaja con entradas, salidas
y el conocimiento interno.

Entrada

Sistema bajo
Prueba

Salida

-00

+00

Pruebas de Caja Blanca

Es imposible probar
con todas
combinaciones
posibles. Trabajamos
con caminos,
decisiones o
condiciones

Pruebas de Software

public void foo(int a, int b, int x) {


if (a>1 && b==0) {
x=x/a;
}
if (a==2 || x>1) {
x=x+1;
}
}

12

capacitacin y gua para el desarrollo de software

Caminos: a = 2, b = 0, x = 2
Falencias:
- si y debera ser o no se detecta.
- si x>0 en lugar de 1 no se detecta
- si x sin modificar (a,b,d) es un error no se
detecta

SI

a > 1 y b == 0

NO

x=x/a

a == 2 o x > 1

SI

NO

x=x+1

Decisiones: para cada decisin un test por


true y uno por false. O sea (ace, abd) o (acd,
abe)
Test 1 - a = 3, b = 0, x = 3
Test 2 - a = 2, b = 1, x = 1
Falencias: 50% de posibilidad al elegir
- Si elijo el test 2, si en lugar de x>1 era x<1,
no sera detectado

d
Condiciones: un test por cada condicin (true, false)
.
Condiciones: (4) a>1, b=0, a=2, x>1
Tests:
a >1, a <= 1, b = 0, b<>0, a = 2, a<> 2, x > 1, x <= 1
Tests resultantes:
a = 2, b = 0, x=4 (ace)
a = 1, b = 1, x=1 (adb)
Falencias: no se ensayan todas las decisiones por
solapamiento de condiciones
a = 1, b = 0, x = 1
a = 2, b = 1, x = 3
No se prueba nunca (ac)

Valores lmite

Pruebas de Software

13

capacitacin y gua para el desarrollo de software

DISEO DE CASOS DE PRUEBAS


Clases de equivalencia
Decisiones/condiciones
Valores lmites
Tester Visitante

Ejemplo:

Pruebas de Software

14

capacitacin y gua para el desarrollo de software


Clases de Equivalencia
Clases

Condicin Entrada

Costo del
proyecto

Clase Equivalencia

Test

Valor positivo > 0.00

Prueba con entrada

Id Test
1

costo = 150000.00
Valor cero (0)

Prueba con entrada

costo = 0.00
3

Valor < 0

Prueba con entrada

costo = - 1000.00
Decisiones / Condiciones
Condicin

Lgica

Costo >=
100000.00

Condicin a probar
true

Test
Prueba con entrada

costo = 150000.00
false

Prueba con entrada

costo = 60000.00
2

Costo <
100000.00

true

Prueba con entrada

costo = 60000.00
false

Prueba con entrada

costo = 150000.00
3

Costo >=
50000.00

true

Prueba con entrada

costo = 150000.00
false

Prueba con entrada

costo = 10000.00
Valores Lmites
Lmite

Valor

100000.00

Condicin a probar
=

Test
Prueba con entrada

costo = 100000.00
>

Prueba con entrada

costo = 100001.00
<

Prueba con entrada

costo = 99999.00
2

50000.00

Prueba con entrada

costo = 50000.00
>

Prueba con entrada

costo = 50001.00
<

Prueba con entrada

costo = 49999.00

Pruebas de Software

15

capacitacin y gua para el desarrollo de software

PLANIFICACIN
Planificacin General

Objetivos

Criterios de Completitud

Cronograma

Responsabilidades

Planificacin Tcnica

Estndares de Casos de Pruebas

Herramientas

Infraestructura

Procedimientos

Criterio de Completitud de las pruebas


1. Parar cuando se agot el tiempo asignado
2. Parar cuando los test dan todos resultados esperados
Desventajas:


No garantiza la realizacin de las pruebas (1), si el tiempo asignado a los


test fue usado en desarrollo

No garantiza buenos test (2), condiciona a veces a escribir test exitosos (no
detectan errores)

Otros criterios ms concretos y eficientes


1. Cuando todos los test den resultados esperados, los cuales fueron diseados
tal que satisfagan criterios de Condiciones y un anlisis de Valores Lmites
2. Cuando hayan sido detectados y reparados N errores
3. Cuando haya pasado M das sin detectar errores
Ejemplo:
Despus de las revisiones: 5 errores cada 100 lneas (mtricas)
Objetivos: 98% de codificacin, 95% de diseo
Programa: 10.000 lneas
Errores estimados: 10.000 / 100 * 5 = 500 errores.
Distribucin de errores por tareas
Requeriminetos Funcionales

8.12 %

Diseo de Arquitectura

26.92 %

Diseo Detallado

22.44 %

Codificacin

26.05 %

Integracin

8.98 %

Pruebas

2.76 %

Pruebas de Software

16

capacitacin y gua para el desarrollo de software


Inespecificados

4.73 %

Codificacin (180), Diseo (320).


Objetivo de las pruebas:
Detectar 180 * 98 / 100 = 176 errores de codificacin
Detectar 320 * 95 / 100 = 304 errores de diseo

Si los errores no se detectan despus de N tiempo, y los casos son OK,


terminamos.
La evolucin del nmero de errores es una ayuda interesante para la toma de
decisiones como se ve en la figura:

Pruebas de Software

17

capacitacin y gua para el desarrollo de software

Grfico tomada de Myers [1]

REVISIONES
Revisin rigurosa y en profundidad de un artefacto de software realizado con el fin de
detectar errores.
Objetivos
1. Detectar problemas de anlisis, diseo y cdigo en forma temprana
2. Definir y acordar criterios de retrabado para su resolucin
3. Verificar que se resolvi de acuerdo al criterio acordado

Pruebas de Software

18

capacitacin y gua para el desarrollo de software


Beneficios
1. Genera datos acerca del producto y el proceso de desarrollo
2. Genera conocimiento entre miembros del grupo de desarrollo
3. Aumenta la efectividad de la validacin y verificacin
4. Contribuye a la instalacin del concepto de calidad
Formales: Con roles y responsabilidades y un procedimiento definido
Informales: Con roles desdibujados y sin procedimiento

Moderador
Lector

Autor

Anlisis
Diseo
Cdigo

Gerente

Inspector

Anotador

Pruebas de Software

19

capacitacin y gua para el desarrollo de software


Formales vs Informales
Atributo

Formal

Objetivos

Informal

Detectar errores

Detectar errores

Verificar re trabajo

Discutir alternativas de
solucin

Focalizada sobre si o no los


productos cubren los
requerimientos

Focalizada en demostrar
cmo los productos cubren
los requerimientos

Decisiones

Decisiones concensuadas

Decisiones del autor

Responsable

Moderador entrenado

Autor

Asistentes

Pares con asistencia


registrada

Pares y responsables
tcnicos, sin registrar

Material

Presentador por el Lector

Presentado por el autor

Mtricas

Requeridas

Opcionales

Procedimiento

Formalmente registrado

Informal

Entrenamiento

Requerido para todos los


roles

No requerido

Condiciones para comenzar


Tipo Inspeccin

Requerimientos

Diseo

Cdigo

Activos a
Inspeccionar
ERS

EDA, EDD

Fuentes

Listo para realizar


revisin?

Material
requerido para el
grupo

Entrenamiento realizado

EERS

Documento de visin
acordado

Ckecklists

Entrenamiento realizado

ERS

ERS revisada y todos los


problemas detectados
resueltos

EDA

Entrenamiento realizado

Fuentes

EDA y EDD revisadas y


todos los problemas
detectados resueltos

Estndares
definidos

EDD
Checklists

Checklists

Mdulos seleccionados
segn criterio definido
Cdigo compilado sin
errores
Validacin

Pruebas

Entrenamiento realizado

ERS
Procedimientos de

Pruebas de Software

20

capacitacin y gua para el desarrollo de software


Tipo Inspeccin

Activos a
Inspeccionar

Listo para realizar


revisin?

Material
requerido para el
grupo
validacin

Pruebas

Procedimientos

Entrenamiento realizado

Test Checklists

ERS revisada y todos los


problemas detectados
resueltos

Checklists guas en revisiones


Requerimientos
Diseo
C++
Java

REFERENCIAS
[1] The Art of Software Testing, Second Edition, Glenford J. Myers, John Wiley & Sons,
Inc., 2004.
[2] Software Verification and Validation for Practitioners and Managers, Second Edition,
Steven R. Rakitin, Artech House, 2001.
[3] Code Complete, Second Edition, Steve McConnell, Redmond, Wa.: Microsoft Press,
2004.

Pruebas de Software

21

También podría gustarte