Anda di halaman 1dari 26

Pruebas de software

El desarrollo del software no es una actividad en la cual los errores de proceso, estn exentos en el desarrollo del mismo.
Es muy comn que en diversos programas que se estn ya ejecutando, se presenten errores que dificultan las operaciones que se
supone de deben de realizar por cada uno de los mdulos del programa o bien por todo el programa en s.
Los problemas comunes que se presentan en el caso del cdigo ya trabajando, suceden pues no se cuidaron los procesos de calidad en
el mismo y, esto se puede solucionar desde el momento en que se definen los requerimientos del sistema, en el momento del diseo, en
el desarrollo del mismo y, lgicamente, cuando el programa ya instalado se comprob bajo los estndares ms altos de calidad.
Se argumenta que muchos de los errores que se presentan en un programa, se deben a la innata habilidad del ser humano de provocar
errores en las actividades que realiza, por ello, dentro del desarrollo del software, se deben idear actividades que tiendan a visualizar,
analizar y corregir estos errores, de ello trata esta actividad.
En la actividad centraremos la atencin en definir cules son los fundamentos de las pruebas del software, mismos que definen los
objetivos de la fase de pruebas.
Ahora, cules son los fundamentos de la prueba del software, bien:
En lo que se llama etapa de pruebas del software se deben crear una serie de casos de prueba en donde se hacen los intentos por
destruir el software que se supone, se ha desarrollado adecuadamente para su funcionamiento.
Para que esto de resultado (la etapa en la que se destruye el software), debemos eliminar la ideas sobre la calidad del software, por igual
la idea de la correccin, ya que no son los sentidos estrictos de la prueba.
La prueba tiene como objetivo descubrir un error (un bug) en el proceso de ejecucin de nuestro programa, adems, lo que se considera
un buen caso de prueba, tiene la estricta intencin de mostrar un error que antes no haba sido descubierto pro quien desarroll el
cdigo.
Por lgica, una prueba de software tiene xito si se descubre un error que antes no haba sido detectado.
En las pruebas del software est el xito muy marcado cuando se descubren errores, considerando que esto se haga en el menor tiempo
posible, el esfuerzo menor tambin es una consideracin a ste caso de pruebas del software, a ste proceso le llamaremos Testing.


Conceptos a considerar dentro del proceso de pruebas
Dentro del proceso de pruebas tenemos el trabajo que se realiza por parte de la persona encargado del proceso: (STE) o el ingeniero
de pruebas, que es quien da la certezas a los clientes de que el equipo de desarrollo va a ofrecer un producto de calidad al cliente. Un
STE debe ser persuasivo, explorador, autosuficiente y organizado, implacable en sus tareas, creativo, perfeccionista, tener y usar un
excelente juicio, debe ser diplomtico y manejar las situaciones con mucho tacto. Al ser una persona con una gran responsabilidad,
deber tener una actitud de empata hacia el trabajo que va a realizar, debe considerar el o los puntos de vista del cliente, abogar por el
trabajo de calidad y prestar mucha atencin a los detalles del proceso que est trabajando.
El trabajo del Software Test Engineer tiene los siguientes propsitos:
Detectar errores en el proceso que se est desarrollando
Hacer una deteccin de errores tan pronto como sea posible
Dar visibilidad al proyecto
Hacer el anlisis de la posibles causas que estn provocando los errores
Hace un equipo de trabajo bien conformado
Dar seguimiento y asegurarse que los errores se reparen, siempre teniendo como meta que el usuario final obtenga del producto lo
que solicit y lo que quiere
Consideremos que el ingeniero de prueba no da calidad al proceso, l hace la promocin para que el producto software sea
entregado bajo ste concepto
El ingeniero de pruebas apoyar su trabajo en el Testware, que no es otra cosa que el medio de trabajo por el cual se hace la aplicacin
de las pruebas. A este medio de trabajo le llamaremos: Documentacin, scripts, resultados esperados, archivos, bases de datos,
configuraciones, adems de cualquier software adicional (o servicio) que se vaya a emplear en las pruebas.
Existe un proceso de evaluacin del sistema o bien de un componente que nos ayuda a hacer la determinacin si nuestro producto, en
una fase, llega a satisfacer las condiciones que le han sido impuestas al inicio de tal fase o meta. A ste proceso se la llama Verificacin.
Adems, existe la validacin, que es el proceso de evaluacin de un sistema o componente para que lleguemos a determinar si en el
proceso o al final del desarrollo, nuestro producto cumple con los requisitos especficos.
Es importante considerar que en el proceso de las prueba, lo que vamos a probar, son los requerimientos funcionales del programa, los
no funcionales, adems de los aspectos para corromper el sistema, esto lo podemos hacer con el testing y a travs de los momentos de
anlisis, diseo, construccin, estabilizacin, liberacin del sistema mismo.
Ahora, Por qu es importante probar el software?
Al ser verificado en su funcionalidad, tanto para quien le desarrolla como para quien le recibe, se aumenta la competitividad
comercial
Co las pruebas, se pretende alcanzar mayor calidad en el software
Permitir los cambios de la Tecnologa que le va a recibir
Existe la reduccin de costos y riesgos
Se incrementa de productividad
Permite el Re-Trabajo

Consideremos cmo es un proceso de prueba:












PRUEBA

EVALUACIN

DEPURACIN
MODELO
DE
FIABILIDAD
Es importante considerar que un proceso de prueba tiene dos entradas:

Configuracin del software, el cual incluye la especificacin de requisitos del software, la especificacin del diseo y el cdigo
fuente

Configuracin de prueba, lo que incluye un plan y un procedimiento de prueba

Ahora, si el funcionamiento del software en prueba parece ser correcto y los errores encontrados son fciles de corregir, podemos
concluir que:

La calidad y la fiabilidad del software son aceptables, o bien tenemos que:
Las pruebas son improcedentes para revelar los errores serios en el cdigo

En lo que se refiere a las verificaciones de un buen funcionamiento del software, tenemos que tratar de disear las pruebas que
tengan las mayores probabilidades de encontrar el mayor nmero de errores con una mnima cantidad de esfuerzo y, desde luego,
de tiempo.

En ste contexto, tenemos que dentro de los productos de la ingeniera del software, est a nuestra disposicin un grupo de
pruebas que nos auxilian en ste sentido:

Pruebas de caja negra
Esta accin consiste en la realizacin de pruebas a manera de que se compruebe que cada funcin es operativo en el
software
En ste tipo de prueba, tenemos que verificar que el software recibe una entrada y con la accin requerida, se nos
proporciona una salida, la esperada en los requerimientos especificados.
Para lo que es la prueba de caja negra, se debe realizar un examen meticuloso de los detalles procedimentales, verificando
los caminos lgicos que debe recorrer el programa en su funcionamiento, esto comprobando los bucles y condiciones y
haciendo un examen el estado del programa en varios puntos


Cuando se aplica a profundidad la prueba de caja negra, la primera impresin que se tendr, es la de tener programas seguros en su
funcionamiento, definir si los caminos son los lgicos para el funcionamiento del programa, se habrn desarrollado los casos de prueba
para los mismos caminos lgicos del software, se deben evaluar los resultados.

Se debe considerar el tiempo de ejecucin de la prueba de caja negra, ya que ste es importante para la entrega del producto, por ello
es recomendable que slo se haga un estudio de los caminos lgicos ms importantes en el software.


Pruebas de caja blanca
Esto consiste en el desarrollo de pruebas de forma que podamos, con las acciones pertinentes, asegurar que la operacin
interna se ajusta a las especificaciones solicitadas y que los componentes internos han sido probados de forma adecuada

La prueba de caja blanca es un mtodo de diseo de casos de prueba, sta usa la estructura de control del diseo
procedimental para derivar los casos de prueba.

Las pruebas de caja blanca pretenden avalar que:

Se ejecutan al menos una vez todos los caminos independientes de cada mdulo

Se utilizan las decisiones en la parte considerada como verdadera y en su parte falsa

Se ejecuten todos los bucles en sus lmites

Se manejan todas las estructuras de datos interna











En el proceso de las pruebas del software, debemos identificar a los Responsables de las actividades de Pruebas

Tarea Responsable
Elaboracin y ajuste del Plan de Pruebas de Aceptacin
Elaboracin y ajuste de los scripts de pruebas
Elaboracin y ajuste de los casos de pruebas
Ing. en Desarrollo de Software
Csar Andrade Duarte
Revisin y aprobacin del Plan de Pruebas de Aceptacin
Revisin y aprobacin de los scripts de pruebas
Revisin y aprobacin de los casos de pruebas
Ing. en Desarrollo d Software
Estefana Santos Snchez
Elaboracin de los datos de prueba

Ing. En sistemas Computacionales
Pedro Jimnez Zamudio

Suministro del ambiente de pruebas

Ing. En Sistemas Computacionales
Esteban Lpez Lpez

Instalacin del ambiente de pruebas

Ing. en Desarrollo de Software
Esteban Lpez Lpez

Ejecucin de las pruebas de validacin

Ing. en Desarrollo de Software
Sandra Ricarte Linares

Ejecucin de las pruebas de aceptacin

Ing. en Desarrollo de Software
Sandra Ricarte Linares

Evaluacin de las pruebas

Ing. en Desarrollo de Software
Mara Estrada Jurez

Reporte de avance de las pruebas

Ing. en Desarrollo de Software
Mara Estrada Jurez

Reporte sumario de pruebas

Ing. en Desarrollo de Software
Mara Estrada Jurez


El software y su evaluacin por las pruebas respectivas

En el proceso (en ste caso) del plan de prueba, se pretende valorar el siguiente producto

Especificacin del producto:

La escuela primaria Jos Antonio Torres ha encargado a la compaa Asesora e Ingeniera del software un desarrollo informtico
llamado calculadora, a travs de la cual los alumnos que estn tomando clases dentro del rea de cmputo identifiquen las
operaciones matemticas que se llevan desde segundo grado, hasta sexto de primaria.

Las especificaciones del cliente, son:

Software que ejecute los siguientes requerimientos funcionales

OPERACION RESTA DE DOS NUMEROS
OPERACION MULTIPLICACION DE DOS NUMEROS
OPERACION SUMA DE DOS NUMEROS
OPERACION DIVISION DE DOS NUMEROS
OPERACION CALCULO DEL AREA DE UN CUADRADO
OPERACION CALCULO DEL AREA DE UN CIRCULO
OPERACION CALCULO DEL AREA DE UN TRIANGULO

El programa que se especifica estar dentro de su sistema de red, mismo que ser aplicado a 20 computadoras que estn
trabajando en el espacio destinado al servicio del sistemas de cmputo

La instalacin del sistema es un servicio de red dentro del local de la institucin mencionada






De acuerdo a un caso de uso, se pretende que el software realice lo siguiente:




El software ha sido desarrollado y ahora es tiempo de que el trabajo de pruebas sea desarrollado por los encargados del proceso.

El software en s:

package PROGRAMACION;
import javax.swing.JOptionPane;
//@utor ENRIQUE TORRESCANO MONTIEL
/*@author HENRU TORREZKHANOM
*/
public class CalculadoraPrimaria {
public static void main(String[] args) {
int opcion2;
int a, b, c;
do{
opcion2 =Integer.parseInt(JOptionPane.showInputDialog("ESCUELA PRIMARIA JOSE ANTONIO TORRES \n"
+ "\n BIENVENIDO A LA CALCULADORA QUE OPERA EL SISTEMA DE COMPUTO DE LA "
+ "\n ESCUELA PRIMARIA *** JOSE ANTONIO TORRES *** \n"
+ "\n ASIGNATURA PRUEBAS Y MANTENIMIENTO DE SOFTWARE \n"
+ "\n *** INGENERIA EN DESARROLLO DE SOFTWARE ***"
+ "\n *** PROFESORA EMILIA VALDEZ SILVA ***"
+ "\n CUATRIMESTRE: DECIMO \n"
+ "\n ALUMNO: ENRIQUE TORRESCANO MONTIEL"
+ "\n AL10511060 \n"
+"\n INICIEMOS \n"
+"\n CALCULADORA QUE REALIZA OPERACIONES CON NUMEROS ENTEROS \n"
+ "\n *** NUESTRO MENU ... *** \n"
/*En NetBeans se crea un proyecto,
* dentro de la clase Main crea un programa, donde se definan dos numeros,
*se resten, se multipliquen, se sumen, se dividan,
* se realice el calculo DEL AREA DE UN CUADRADO,
* EL CALCULO DEL AREA DE UN CIRCULO, EL CALCULO DEL AREA DE UN TRIANGULO
*para despues mostrar el resultado en pantalla*/

+ "\n 1.- RESTA \n"
+ "\n 2.- MULTIPLICACION \n"
+ "\n 3.- SUMA \n"
+ "\n 4.- DIVISION \n"
+ "\n 5.- CALCULO DEL AREA DE UN CUADRADO \n"
+ "\n 6.- CALCULO DEL AREA DE UN CIRCULO \n"
+ "\n 7.- CALCULO DEL AREA DE UN TRIANGULO \n\n"
+"\n INSTRUCCIONES: \n"
+ "\n INTRODUCE UNO DE LOS NUMEROS DE LA LISTA UBICADA EN ESTA PANTALLA \n"
+ "EN CADA OPERACIN SERAN SOLICITADOS NUMEROS ENTEROS, \n"
+ "POR FAVOR, INGRESA LOS NUMEROS DESPUES DE ELEGIR UNA OPCION \n"
+ "POSTERIORMENTE SIGUE LAS INDICACIONES EN PANTALLA, "
+ "ESTO PARA CONTINUAR EN LA CALCULADORA O PARA ABANDONAR EL PROGRAMA"));

if (opcion2>0 && opcion2<=10){
switch (opcion2){
case 1: a =Integer.parseInt(JOptionPane.showInputDialog("Por favor, "
+ "Ingresa el primer numero para la resta :"));
b =Integer.parseInt(JOptionPane.showInputDialog("Por favor, "
+ "Ingresa el segundo numero para la resta :"));
JOptionPane.showMessageDialog(null,"El resultado de la resta es:\n"+restando(a,b));

break;
case 2: a =Integer.parseInt(JOptionPane.showInputDialog("Por favor, "
+ "Ingresa el primer numero para la multiplicacion :"));
b =Integer.parseInt(JOptionPane.showInputDialog("Por favor, "
+ "Ingresa el segundo numero para la multiplicacion uno:"));
JOptionPane.showMessageDialog(null,"El resultado de la multiplicacion es: "
+ " es:\n"+multiplicando(a,b));
break;
case 3: a =Integer.parseInt(JOptionPane.showInputDialog("Por favor, "
+ "Ingresa el primer numero para la suma :"));
b =Integer.parseInt(JOptionPane.showInputDialog("Por favor, "
+ "Ingresa el segundo numero para la suma:"));
JOptionPane.showMessageDialog(null,"El resultado de la suma es:\n"+sumando(a,b));
break;
case 4: a =Integer.parseInt(JOptionPane.showInputDialog("Por favor, "
+ "Ingresa el primer numero para la division:"));
b =Integer.parseInt(JOptionPane.showInputDialog("Por favor, "
+ "Ingresa el segundo numero para la division:"));
JOptionPane.showMessageDialog(null,"El resultado de la division es:\n"+dividiendo (a,b));
break;
case 5: areadelcuadrado();
break;
case 6: areadelcirculo();
break;
case 7: areadeltriangulo();
break;
}
}
c=Integer.parseInt(JOptionPane.showInputDialog("POR FAVOR, "
+ " ELIGE LA OPCION DESEADA: 1 VOLVER AL PROGRAMA / 2 ABANDONAR EL PROGRAMA "));
}
while(c==1);
}
public static int restando(int a, int b){
int c = a-b;
return c;
}
public static int multiplicando(int a, int b){
int c = a*b;
return c;
}
public static int sumando(int a, int b){
int c = a+b;
return c;
}
public static int dividiendo(int a, int b){
int c = a/b;
return c;
}
public static void areadelcuadrado(){
int l = Integer.parseInt(JOptionPane.showInputDialog("POR FAVOR, INGRESA"
+ " EL VALOR DADO AL LADO DE UN CUADRADO:"));
int c = l*l;
JOptionPane.showMessageDialog(null,"EL RESULTADO OBTENIDO EN EL "
+ " AREA DEL CUADRADO ES:\n"+c);
}
public static void areadelcirculo(){
int r = Integer.parseInt(JOptionPane.showInputDialog("POR FAVOR, INGRESA"
+ " EL VALOR DEL RADIO DEL CIRCULO:"));
float pi= 3.1416F;
float ac = pi*r*r;
JOptionPane.showMessageDialog(null,"EL RESULTADO OBTENIDO EN EL AREA "
+ " DEL CIRCULO ES:\n"+ac);
}
public static void areadeltriangulo(){
int a = Integer.parseInt(JOptionPane.showInputDialog("POR FAVOR INGRESA EL VALOR"
+ " DE LA BASE DEL TRIANGULO:"));
int b = Integer.parseInt(JOptionPane.showInputDialog("POR FAVOR INGRESA EL VALOR"
+ " DE LA ALTURA DEL TRIANGULO:"));float pi= 3.1416F;
float areadeltriangulo = (b*a)/2;
JOptionPane.showMessageDialog(null,"EL RESULTADO EN EL AREA"
+ " DEL TRIANGULO ES:\n"+areadeltriangulo);
}
}

El cdigo del software incrustado en el programa que se desarroll
(Observar que en ninguna de las capturas de pantalla aparecen errores de compilacin)













La primer accin del programa
Parte 1



















Parte dos del cdigo en el programa NetBeans




















Parte 3




















Parte 4 ( y final del cdigo)




















La primer imagen despus de dar Run




















Acciones del programa
La accin solicitada y a realizar en el programa, es la de la resta
Notemos que los datos de entrada, que en ste caso son: 1 para la operacin, 4 para el primer valor, 2 para la operacin de resta y 2
como valor de salida, se presentan adecuadamente


















Si mostramos otra accin, tenemos que
Se elige la opcin Clculo del rea de un tringulo Se hace el ingreso con valor de la base; 6






Se ingresa el valor de la altura






El resultado esperado se presenta como se program




Si hiciramos lo mismo con el resto de las operaciones, el resultado sera lo programado ya que en la compilacin los errores no existen
Ahora vamos a destruir el software, veamos que sucede con lo anterior
Hago cambio en la clase pblica
El resultado








Otros cambios






























Ahora, se supone que nuestro programa hace distintas operaciones, provoco el cambio en la estructura del cdigo y veamos lo que
sucede
Cambi el signo de resta por divisin, el resultado es el siguiente



















Elijo opcin 1, que es resta


















EL RESULTADO NO ES EL ESPERADO YA QUE EL
PROGRAMA DIVIDI EN LUGAR DE RESTAR

Ahora vamos a ver en qu consiste la prueba a travs de uno de los modelos usados para tal fin
Si usare CMMI para nuestro propsito, tendra que
CAPABILITY MATURITY MODEL INTEGRATED
Permite eliminar inconsistencias
Reducir duplicaciones.
Incrementa la claridad y comprensin
Nos proporciona una terminologa en comn
Proporciona estilos consistentes
Establece las reglas de construccin uniformes
Nos ayuda a mantener componentes comunes

Cmo se hace la evaluacin de los procesos mediante CMMI?
Disciplina del
Modelo
Modelo Fuente Descripcin Modelo Fuente
Software
El CMM para software
(SW-CMM)
Es el modelo que describe lo principios y las prcticas
fundamentales de la madurez de procesos software.
CMM est organizado para auxiliar a las
organizaciones de software a mejorar mediante una
trayectoria evolutiva, permitiendo el crecimiento con
fines especficos, desde un ambiente considerado
como catico hacia ambientes maduros y
disciplinados en los procesos de software
Ingeniera de
Sistemas
Modelo de Capacidad
de Ingeniera de
Sistemas (EIA/IS
731)
Integra a todas las disciplinas de sistemas para que se
identifiquen todas las necesidades tcnicas y de
negocio de una manera muy efectiva
Proceso integrado
de desarrollo de
productos
Desarrollo integrado
de producto CMM
(IPD CMM)
Es en s un eenfoque sistemtico para el desarrollo del
producto.
Se considera que una colaboracin oportuna de las
disciplinas que son necesarias en el ciclo de vida del
producto informtico. incrementa la satisfaccin del
cliente

Los niveles y sus caractersticas comunes
Nivel Sus Caractersticas El Resultado
Inicial
Existe la ausencia de gestin de proyectos.
El proceso de software suele ser cambiante e irregular:
Planes, estimaciones y calidad impredecibles
El rendimiento tiene una dependencia con la capacidad individual
de los miembros del grupo
Eestablecimiento de programas de formacin del personal de
desarrollo y mantenimiento
Productividad
y calidad
insuficiente
Existe un
riesgo
mximo ante
el proceso
Repetible
Los procesos de software ahora se presentan con las
caractersticas de estables y repetibles
La organizacin puede ya establecer polticas de gerencia de
proyectos y procesos
La planificacin se basa en proyectos similares, esto es muy
adecuado para disminuir costos y tiempos
Existen estndares definidos y exigidos
El proceso tiende a enmarcarse en un sistema de gerencia de
proyectos, est basado en experiencias pasadas
Aun existen
la
productividad
y calidad
baja
Se sigue en
riesgo alto
Definido
Los procesos ahora ya son definidos, esto quiere decir que ya son
estandarizados, documentados e institucionalizados
Los procesos de ingeniera y gerencia, al ser estables, se
integran en uno slo
Existe una comprensin en comn de los procesos, funciones y
responsabilidades para el proyecto de pruebas
La organizacin desarrolladora conserva un grupo consagrado a la
definicin, mejoramiento y difusin del proceso de Ingeniera de
Software
Se presenta
la
productividad
y calidad
media
Riesgo
medio
Gestionado
Los procesos ahora ya pueden ser medibles o cuantificables
Productividad y calidad se miden y registran, esto se hace para
cada proyecto de la organizacin
Se establecen las metas cuantitativas de la calidad del software
Mediante el uso de las mtricas de software, es ptimo crear una
base cuantitativa para la evaluacin y estimacin en proyectos
similares y futuros
Se presenta
la
productividad
y la alta
calidad
El riesgo ya
es mnimo
Optimizado
Los procesos se mejoran consecutivamente
La organizacin persigue el nivel mximo de capacidad de trabajo
Se hace la incorporacin de nuevas tecnologas y mtodos para
mejorar los procesos en prueba
Se presenta
ya la
productividad
y la calidad
total.
No existe
ningn riesgo


ATENTAMENTE
Enrique Torrescano Montiel