Académique Documents
Professionnel Documents
Culture Documents
Marcelo Vinjoy
Ing Roberto Landaburu
Anlisis de Software
TESTING (Pruebas).
La elaboracin de un sistema de software requiere de una serie de actividades en las
cuales es muy factible que aparezcan fallas. Dichas fallas pueden aparecer desde el
primer momento, ya sea en la especificacin de los objetivos, en el diseo en el
desarrollo del proyecto. Debido a al imperfeccin natural del hombre, el desarrollo de
software debe poseer una etapa que garantice la calidad. Dicha etapa suele llamarse
Pruebas o Testing.
Las pruebas de un software garantizan la calidad del mismo. Igualmente, dan pie a una
revisin final de las especificaciones, del diseo y de la codificacin. El diseo de los
casos de prueba de un programa consta de un conjunto de tcnicas para la creacin de
casos de prueba que satisfagan los objetivos globales del testing.
Cada da se crean pruebas ms minuciosas y bien planificadas, ya que muchos
sistemas se estn automatizando y es importante tomar en cuenta el costo de la
reparacin de una falla en el software elaborado. No es extrao que una empresa de
desarrollo de software emplee mayor esfuerzo en la etapa de las pruebas que en la
propia implementacin del sistema, ms si se trata de una programa de suma
importancia como los de control de trfico areo, control de reactores nucleares o
equipos de medicina. Sin embargo, muchas veces suele subestimarse la importancia
de las pruebas del software.
1. Definicin del Testing
La Definicin de las Pruebas a un determinado software se encuentra encerrada en las
siguientes caractersticas:
1.- La prueba es un proceso de ejecucin de un programa con la intencin de
descubrir un error.
2.- Un buen caso de prueba es aquel que tiene una alta probabilidad de mostrar un
error no descubierto hasta entonces.
3.- Una prueba tiene xito si descubre un error que no se haya detectado
anteriormente.
Someter a pruebas (testing) un producto es la actividad que se dedica a encontrar
fallas o errores en dicho producto. No se trata de determinar si funciona o no. La
diferencia est en la actitud que tome el que elabore las pruebas, ya que no es lo
mismo que alguien busque las fallas a que alguien quiera demostrar que todo est
bien. Dijkstra recalca esta diferencia diciendo:
1
la mayora de los casos debe decir : "el software NO est listo, NO se puede avanzar
en el desarrollo, NO se puede entregar al cliente".
1.2.3 Barreras como empleado de una empresa
Algunas veces, la etapa de pruebas, puede estar orientada de acuerdo con la poltica
con que trabaja la empresa. La compaa que desarrolla el software puede tener dos
actitudes: la de entregar un buen programa con un mnimo de errores menores o un
programa que no cumpla con los requisitos exigidos y presente gran cantidad de fallas.
En la cultura de la empresa, es importante evaluar algunos casos:
Hay una mentalidad corto-placista?. Entonces, en esa empresa siempre
resultar ms importante terminar rpidamente con un software que terminarlo
bien. Por ende, el tester es quien interfiere con el objetivo prioritario ("cobrar por
solo decir: "hemos terminado") por estar defendiendo un objetivo percibido por la
empresa como mucho menos importante: "satisfacer al cliente". En este tipo de
empresa se observa que:
Si el proyecto se retrasa, lo primero en sacrificarse son las pruebas (y la
documentacin).
manera, el personal encargado de las pruebas puede evitar decir los errores
para no recibir sanciones o "malas caras". Es importante que la empresa y los
programadores tengan un trato justo con el tester y que ste proporcione las
noticias (bien sea buenas o malas) de una forma correcta a las personas
involucradas con la elaboracin del sistema.
Cmo reacciona la empresa ante los errores de sus empleados? Por un lado,
hay empresas que son bastantes tolerantes con los errores de sus empleados
("errar es de humanos", "uno aprende con sus errores", "equivocarse le
proporciona al empleado la oportunidad de crecer en autonoma y
responsabilidad"), lo que en ocasiones puede generar con el tiempo una actitud
de irresponsabilidad por parte, tanto del empleado, como de la empresa. Por
otro lado, hay empresas que responden al error con una serie controles,
revisiones, chequeos, penalizaciones y castigos que suelen hacer ms dao que
bien, ya que existen ocasiones en que se afecta a un personal no involucrado
con la falla. Hay empresas que buscan relacionar los sueldos de los empleados
a la tasa de errores que cometen. Esto luce bien en teora, pero suele resultar
contraproducente en la prctica. De hecho no es extrao que ante esta situacin
los empleados se esfuercen ingeniosamente para evitar errores y que sus
errores no se vea reflejado en los sueldos. Quizs el caso ms extremo es el de
cierta empresa que penalizaba a sus programadores segn el nmero de errores
que sus compaeros le encontraran. Al cabo de muy poco tiempo, el numero de
errores por programador haba descendido a cero, ya que los programadores no
reportaban los errores que encontraban en el trabajo de sus compaeros.
Quin asume los errores en la empresa? Cada vez que se producen errores la
empresa busca un chivo expiatorio, cuando el usuario reporta su insatisfaccin
por las fallas del software, los ingenieros invertirn mucho tiempo y esfuerzo
cubrindose las espaldas para evitar cargar con la culpa. Pero una vez que el
usuario reclama, qu pasos se toman para determinar el tamao y el origen del
error? Quin asume la responsabilidad de la correccin del error? Quin da
la cara ante los usuarios? A modo de ejemplo, considere l siguiente caso,
reportado por la agencia Efe el 24 de Mayo de 1990:
La compaa telefnica Nippon Telegraph and Telephone (NTT), la mayor del mundo,
recarg 12.2 millones de dlares a las facturas de sus clientes debido a un error en sus
computadoras. Los recargos se descubrieron durante una investigacin por todo el
pas, tras detectarse por reclamos de sus usuarios que la central de Yokohama cargaba
en exceso las facturas de sus clientes. El presidente de la firma, Haruo Yamaguchi,
present pblicamente sus excusas y seal que dichos recargos se produjeron por la
errnea introduccin de datos en las computadoras en 1985. Yamaguchi aadi que se
devolver el dinero antes del mes de julio prximo y que se gastarn 52 millones de
dlares en un nuevo sistema de cobro que evite en lo sucesivo errores similares. Es
5
importante tomar en cuenta los valores que se ponen en practica en situaciones como
esta: la honestidad de la empresa se ve ratificada cuando la compaa decide devolver
el dinero a sus clientes.
Es impresionante que una empresa tome la decisin de hacerse responsable en un
caso como este e invertir dinero en corregir sus errores con la finalidad de reflejar una
buena imagen ante sus usuarios.
1.3 Objetivos de la prueba
El objetivo fundamental es disear pruebas para encontrar diferentes clases de errores,
hacindolo con la menor cantidad de tiempo y esfuerzo. Si la prueba se lleva a cabo
con xito (de acuerdo con el objetivo anteriormente establecido), se descubrirn errores
en el software. Como ventaja secundaria, la prueba demuestra hasta qu punto las
funciones del software parecen funcionar de acuerdo con las especificaciones y
requisitos de rendimiento. Adems, los datos que se van recogiendo a medida que se
lleva a cabo la prueba proporciona una buena indicacin de la finalidad del software y,
de alguna manera, indican la calidad del software como un todo.
1.4 Principios de la prueba
Para la aplicacin de mtodos para el diseo de casos de prueba efectivos, un
ingeniero de software deber conocer los principios bsicos que guan las pruebas del
software, entre los que podemos mencionar:
A todas las pruebas se les debera poder hacer un seguimiento hasta los
requisitos del cliente. Como ya sabemos, el objetivo de las pruebas del software
es descubrir errores. Aquellas fallas que impiden que el programa cumpla con
sus requisitos son consideradas como defectos graves.
Las pruebas deberan planificarse mucho antes de que empiecen. Una vez
completado el modelo de requisitos, es recomendable comenzar con la
planificacin de las pruebas; y luego de consolidar el modelo de diseo,
podemos comenzar con la definicin detallada de los casos de prueba. Por
tanto, se puede planificar y disear todas las pruebas antes de generar ningn
cdigo.
No son posibles las pruebas exhaustivas. Es imposible ejecutar todas las
combinaciones de caminos durante las pruebas. Es posible, sin embargo,
asegurarse de que se han aplicado todas las condiciones del diseo de pruebas.
1.5 Lecciones
1. Para ser ms efectivas, las pruebas deberan ser conducidas por un
equipo independiente. Un programador (o equipo de programadores) no
debe hacer sus propias pruebas.
6