el Trabajo

Transcripción

el Trabajo
Curso de Desarrollo Avanzado de Aplicaciones Informáticas
Informatorio 2015
Herramientas de
Software para testing:
WebInject
Equipo:
Software Seekers
Integrantes:
Acosta, Marisel - Testing & Qa
Ford, Sara - Testing & QA
García, Eduardo - Project Leader
Ibañez, Fabián - Developer
Saucedo, Daniel - Ui & UX Designer
Curso de Desarrollo Avanzado de Aplicaciones Informáticas
Informatorio 2015
Software Testing o Prueba del Software
Es el proceso empleado para identificar la correctitud, completitud, seguridad y calidad
en el desarrollo de un software. El testeo de un producto de software es uno de los pasos más
complejos e importantes en el desarrollo de software. Esto incluye el proceso de encontrar
errores en el mismo; pero no sólo se limita a eso, sino que además se relaciona a atributos
como la fiabilidad, eficiencia, portabilidad, escalabilidad, mantenibilidad, compatibilidad,
usabilidad y capacidad del mismo.
A la hora de desarrollar cualquier producto informático, es necesario antes de comenzar
con su distribución oficial el testeo, siendo esta la forma más fiable y completa de conocer y
localizar los posibles fallos y puntos débiles que el programa o aplicación pueda poseer.
Es casi imposible, excepto para los programas más pequeños, testear un software como
una única entidad independiente. Es por eso que el proceso de testing debe estar guiado por
una estructura adecuada al proceso de desarrollo.
El Proceso General de Testing
Un sistema complejo suele testearse en varias etapas que por lo general se ejecutan
siguiendo una estrategia bottom-up ('de abajo a arriba'), aunque el proceso general es iterativo.
Se debe volver a las fases anteriores cada vez que se encuentra un error en la fase que está
siendo ejecutada para testearlas también ya que la corrección de la falla puede afectar al
desempeño de sus módulos anteriores.
Generalmente se entiende que el testing se realiza una vez que se termina de codificar,
pero si se realiza el trabajo de esta forma, entonces
el testing se convierte en una
actividad costosa e ineficiente desde varios puntos de vista:
Curso de Desarrollo Avanzado de Aplicaciones Informáticas
Informatorio 2015
● Los testers están ociosos durante la mayor parte del proyecto y están
sobrecargados de trabajo cuando esté por finalizar.
● Los errores tienden a ser detectados muy tarde. Se descubre un gran número de errores
cuando el presupuesto se está terminando.
● Los errores tienden a ser detectados por los usuarios y no por el personal de desarrollo,
lo que implica un desprestigio para el grupo de desarrollo.
Debido a estas cuestiones, el proceso de testing debe ir de la mano con el proceso de
codificación para así poder minimizar el impacto negativo de posibles errores en el código del
programa
Coordinación entre el proceso de testing y el proceso de desarrollo
Tipos de Testeo
Tradicionalmente el testing de software se ha dividido en dos estrategias básicas que se
supone son de aplicación universal.
● Testing estructural o de caja blanca: Testear un software siguiendo esta estrategia
implica que se tiene en cuenta la estructura del c´odigo fuente del programa para
seleccionar casos de prueba –es decir, el testing está guiado fundamentalmente por la
existencia de sentencias tipo if, case, while, etc. En muchas ocasiones se pone tanto
énfasis en la estructura del código que se ignora la especificaci´on del programa,
convirtiendo al testing en una tarea un tanto desprolija e inconsistente.
Se dice que el testing estructural prueba lo que el programa hace y no lo que se supone
que debe hacer.
● Testing basado en modelos o de caja negra: Testear una pieza de software como una
caja negra significa ejecutar el software sin considerar ningún detalle sobre como fue
Curso de Desarrollo Avanzado de Aplicaciones Informáticas
Informatorio 2015
implementado. Esta estrategia se basa en seleccionar los casos de prueba
analizando la especificación o modelo del programa, en lugar de su implementación.
Los casos de prueba se calculan partiendo del modelo, es posible comenzar a “testear”
casi desde el comienzo del proyecto –al menos mucho antes de que se haya terminado
de programar la primera unidad. Por otra parte, pero por la misma razón, los casos de
prueba son mucho más resistentes a los cambios en la implementación que aquellos
calculados con técnicas de testing estructural.
Se dice que el testing basado en modelos prueba lo que el programa se supone que
debe hacer, y no lo que el programa hace.
Existen muchas herramientas para el testeo de software en la actualidad y en este
trabajo se expondrá uno en particular denominado WebInject y del cual se hablará en adelante.
WebInject es una herramienta para realizar pruebas automatizadas de aplicaciones y
servicios Web. Su primera versión (beta) fue lanzada el 19 de Febrero de 2004, desde la cual
han habido muchas versiones hasta llegar a su última, difundida el 4 de Enero de 2006. Puede
ser utilizado para probar individualmente, distintos componentes de un sistema, que tengan
interfaz HTTP (JSP, ASP, CGI, PHP, AJAX, Servlets, XML/SOAP servicios web, REST, entre otros.)
Arquitectura
Curso de Desarrollo Avanzado de Aplicaciones Informáticas
Informatorio 2015
WebInject consiste en un motor donde se ejecutan todas las pruebas y cuenta
además con una interfaz de usuario que es opcional. El motor de WebInject puede ser
ejecutado por líneas de código o por la interfaz de usuario.
Para comenzar a usar el motor de prueba de WebInject lo primero que se debe hacer es
cargar dos archivos, uno denominado testcases.xml que contendrá todos los casos de prueba
que deberán ser ejecutados por el motor de testeo y el segundo archivo con nombre config.xml
que se utiliza para almacenar todos los ajustes de configuración del proyecto.
El paso siguiente es la ejecución del motor de pruebas de WebInject, quien recibe datos
de los archivos testcases.xml y config.xml para ajustar las acciones que deberá ejecutar al
momento de hacer las pruebas al sistema bajo testeo. Luego el motor envía solicitudes a la
aplicación/servicio bajo verificación, donde el objeto de prueba responde al motor de acuerdo a
las solicitudes enviadas con anterioridad. Una vez ejecutados todos los casos de prueba, el
motor genera varios archivos de salidas los cuales se enumeran a continuación:
● results.html; un archivo HTML generado para mostrar los resultados detallados de la
ejecución de la prueba . El mismo se guarda en el directorio donde se encuentre
WebInject y se sobrescribe cada vez que se ejecuta la herramienta . El archivo contiene
los datos que pasan desde el archivo de casos de prueba ( Identificadores de casos de
prueba / descripciones , etc ), así como la información generada desde el motor de
prueba (test caso de aprobación / reprobación , tiempos de ejecución , etc ) . Aquí es
donde se pueden encontrar los datos de resultados más detallados.
● results.xml; contiene los mismos datos que el archivo results.html pero en formato XML
para manipular los datos obtenidos mediante programas externos.
● http.log: un archivo de registro ( http.log ) generado para capturar las solicitudes HTTP
que se envían al servidor web del sistema bajo prueba y las respuestas HTTP que se
reciben del sistema bajo prueba.
Ventajas:
1. Es una herramienta gratuita.
2. Puede ejecutarse en los sistemas Microsoft Windows, GNU/Linux, BSD, Solaris, MAC OS,
y otros.
3. Posee una arquitectura abierta lo que permite la modificación del codigo fuente
mediante el lenguaje Pearl.
4. Genera un gráfico en tiempo de ejecución para mostrar la evolución de las pruebas en
tiempo real.
Desventajas:
1. Las pruebas se deben escribir en un editor externo con formato XML.
2. Hay que tener el intérprete de Pearl instalado en el sistema.
Curso de Desarrollo Avanzado de Aplicaciones Informáticas
Informatorio 2015
Conclusión
El testing es una parte muy importante en el proceso de desarrollo de software, ya que
es un proceso que permite analizar el producto de una forma ágil y eficaz para la detección de
errores y la posterior corrección de los mismos, todo encaminado a la producción de software
de calidad. En el caso de WebInject se debe destacar las virtudes y bondades que posee de
acuerdo a su simplicidad para ejecución y flexibilidad basados en su arquitectura de software
libre. Fundados en estas herramientas que se poseen en la actualidad podemos ser capaces de
llevar a las tecnologías y más que nada a la solución de necesidades a un nivel de excelencia
para satisfacer las exigencias del mercado creciente en tecnologías de la información.
URLs:
http://www.iworld.com.mx/iw_TestCenter_read.asp?iwid=140
http://www.alegsa.com.ar/Dic/testeo%20del%20software.php
http://www.innovaxp.com/es/blog/por-que-es-tan-importante-testear-un-software-antes-deponerlo-en-marcha/
http://www.webinject.org/download.html
http://www.webinject.org/manual.html
http://www.qatestingtools.com/sourceforge/webinject
http://www.fceia.unr.edu.ar/ingsoft/testing-intro-a.pdf

Documentos relacionados