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