Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Herramientas para Automatizar El Proceso de Control de Calidad
Herramientas para Automatizar El Proceso de Control de Calidad
Cochabamba - Bolivia
2018
Agradecimientos
A mis padres, por su ayuda y la paciencia que han tenido conmigo.
A mis hermanos por estar siempre ahí cuando los necesitaba.
A mi universidad por brindarme oportunidades para desarrollarme a nivel profesional.
Y a mí tutor que siempre estaré agradecido por el tiempo y los consejos que me brindo.
2
ÍNDICE DE CONTENIDO
ÍNDICE DE FIGURAS................................................................................................................... 4
ÍNDICE DE TABLAS .................................................................................................................... 5
1. RESUMEN ......................................................................................................................... 6
INTRODUCCIÓN ........................................................................................................................ 7
2. ANTECEDENTES ................................................................................................................. 7
3. DEFINICIÓN DEL PROBLEMA .............................................................................................. 7
4. OBJETIVO GENERAL ........................................................................................................... 7
4.1 OBJETIVOS ESPECÍFICOS .....................................................................................................7
5. ALCANCE ........................................................................................................................... 8
6. JUSTIFICACIÓN .................................................................................................................. 8
7. CALIDAD DE SOFTWARE .................................................................................................... 9
7.1 COSTO DE LA CALIDAD .....................................................................................................10
8.2 ¿CÓMO ALCANZAR LA CALIDAD? ......................................................................................12
8. TEST DE SOFTWARE ......................................................................................................... 13
8.1 AMBIENTE DE TEST ...........................................................................................................17
9. BIENVENIDO A LA ERA DE LA AUTOMATIZACIÓN .............................................................. 22
9.1 PRINCIPIOS DE LA AUTOMATIZACIÓN ..............................................................................23
9.2 AUTOMATIZACIÓN TEST ...................................................................................................23
9.3 TESTS MANUALES POR TESTS AUTOMATIZADOS .............................................................23
9.4 CUESTIONES ACERCA DE LA AUTOMATIZACIÓN...............................................................24
10. DIFERENCIA ENTRE PRUEBAS FUNCIONALES, PRUEBAS NO FUNCIONALES .................... 24
11. HERRAMIENTAS DE AUTOMATIZACIÓN PÁRA EL PROCESO DE CONTROL DE CALIDAD ... 25
11.1 HERRAMIENTAS DE PRUEBA UNITARIA ............................................................................25
11.2 HERRAMIENTAS DE PRUEBA FUNCIONAL .........................................................................31
11.3 HERRAMIENTAS DE PRUEBAS DE RENDIMIENTO .............................................................36
11.4 HERRAMIENTAS DE SEGUIMIENTOS DE BUGS ..................................................................39
12. CONCLUSIONES ........................................................................................................... 43
13. BIBLIOGRAFÍA.............................................................................................................. 44
3
ÍNDICE DE FIGURAS
4
ÍNDICE DE TABLAS
5
1. RESUMEN
6
INTRODUCCIÓN
2. ANTECEDENTES
¿Por qué se escogió este tema?, en la era de la Ingeniería de Software existe muchas
empresas que se dedican al desarrollo de software a nivel nacional y en Bolivia se
desarrolla productos de la talla mundial.
Se forma una pregunta ¿Cómo desarrollar un producto de software de calidad?
4. OBJETIVO GENERAL
7
5. ALCANCE
6. JUSTIFICACIÓN
8
7. CALIDAD DE SOFTWARE
Visión del usuario: La calidad en términos de las metas específicas del usuario
final, si un producto las satisface, tiene calidad.
Visión del producto: Sugiere que la calidad tiene que ver con las características
inherentes (funciones y características) de un producto.
Visión del valor: se mide de acuerdo con lo que un cliente está dispuesto a pagar
por un producto.
Factores de calidad
Los factores de calidad que contempla ISO/IEC 9126 no son necesariamente usados para
mediciones directas, pero proveen una valiosa base para medidas indirectas y una
excelente lista para determinar la calidad de un sistema.
La ISO/IEC 9126 fue desarrollado en un intento de identificar los atributos clave de calidad
de software, esta norma nos indica las características de la calidad y los alineamientos
para su uso. El estándar identifica 6 atributos clave de calidad:
o Adaptabilidad.
o Corrección.
o Interoperabilidad.
o Conformidad.
o Seguridad.
9
Confiabilidad: cantidad de tiempo que el software está disponible para su uso.
Está referido por los siguientes suba tributos:
o Madurez,
o Tolerancia a fallos.
o Facilidad de recuperación.
Usabilidad: grado en que el software es fácil de usar. Viene reflejado por los
siguientes suba tributos:
o Facilidad de comprensión.
o Facilidad de aprendizaje.
o Operatividad.
Eficiencia: grado en que el software hace óptimo el uso de los recursos del
sistema. Está indicado por los siguientes suba tributos:
o Tiempo de uso.
o Recursos utilizados.
o Facilidad de análisis.
o Facilidad de cambio.
o Estabilidad.
o Facilidad de prueba.
o Facilidad de instalación.
o Facilidad de ajuste.
o Facilidad de adaptación al cambio.
10
Una vez que se han normalizado los costos de calidad sobre un precio base, tenemos los
datos necesarios para evaluar el lugar en donde hay oportunidades de mejorar nuestros
procesos.
Es más, podemos evaluar como los cambios en términos de dinero. Los costos de calidad
engloban todos los costos involucrados en la búsqueda, y se clasifican en:
Costo de prevención:
Incluye el costo de las actividades de gestión necesarias para planificar y coordinar todas
las actividades de control y garantía de calidad. El costo de actividades técnicas
adicionales para desarrollar modelos completos de requisitos y diseño. Costos de
planificación de tests y el costo de todo el entrenamiento asociado a esas actividades.
Costo de evaluación:
Incluyen actividades para la comprensión de profundidad de la condición del producto.
Entre los ejemplos de costos de evaluación tenemos:
Costo para la realización de revisiones técnicas para productos resultantes de
Ingeniería de Software.
Costo para la recolección de datos y la evaluación de métricas.
Costo de test y depuración.
Costo de fallas:
Son aquellos que no existirían si ningún error hubiera surgido antes o después de la
entrega de un producto a clientes. Estos costos se pueden subdividir en costos de fallas
internas y costos de fallas externas.
11
En cuanto al valor aproximado de los costos, esto queda relativo a la media de un error se
ejemplifica este escenario a través de una gráfica.
16000
14102 $
14000
12000
10000
8000 7134 $
6000
4000
2000 977 $
139 $ 455 $
0
Requisitos Proyecto Codificación Tests Mantenimiento
12
Técnicas de Gestión de Software:
La calidad de software se ve afectada positivamente cuando un gerente de proyecto
utiliza estimaciones para comprobar que las fechas de entregas no se corrompen.
Control de Calidad:
Se aplica una serie de pasos de test para descubrir errores en la lógica de procesamiento,
manipulación de los datos y comunicación de interfaz. Una combinación de medios y
retroalimentación permite a un equipo de software ajustar el proceso cuando cualquiera
de estos productos resultantes deje de cumplir las metas establecidas para la calidad.
Garantía de Calidad:
Consiste en un conjunto de funciones de auditoria e informes que posibilita una
evaluación de efectividad y de la completitud de las acciones de control de calidad. Se
pretende proporcionar al personal técnico administrativo los datos del producto, ganando,
por lo tanto, entendimiento y confianza de que las acciones para alcanzar la calidad
deseada del producto están funcionando.
Incidencia de Software
Error:
Acción humana que produce un resultado incorrecto, por ejemplo, un error de
programación.
Defecto:
Imperfección en un componente o sistema que puede causar que el componente
sistema falle en desempeñar las funciones requeridas, por ejemplo, si se localiza
un defecto durante una ejecución puede causar un fallo en un componente de
sistema.
Fallo:
Manifestación física o funcional de un defecto, por ejemplo, desviación de un
componente o sistema respecto a la presentación, servicio o resultado esperado.
8. TEST DE SOFTWARE
13
Verificación: ¿La forma en que construimos el software?
Test que permite verificar si el software está siendo construido correctamente.
Test de caja blanca, se a veces test de caja de cristal es un método de diseño de casos
de prueba que usa la estructura de control del diseño procedimental para obtener los
casos de prueba. Mediante los métodos de prueba de caja blanca el ingeniero de software
puede obtener los siguientes casos de prueba que:
Garanticen que se ejercita por lo menos una vez todos los caminos independientes
de cada módulo.
Ejercitan todas las decisiones lógicas en sus vertientes verdaderas y falsas.
Ejecuten todos los bucles en sus límites y con sus límites operacionales.
Ejerciten las estructuras internas de datos para asegurar la validez.
14
Fuente: Roger Perssman Ingeniería de Software un enfoque práctico
Test de caja negra, también denominado prueba de comportamiento, se centran en los
requisitos funcionales del software o sea la prueba de caja negra permite al ingeniero de
software obtener conjunto de condiciones de entrada que ejerciten completamente todos
los requisitos funcionales de un programa.
La técnica de caja negra intenta encontrar errores de la siguiente categoría:
Funciones incorrectas ausentes.
Errores de interfaz.
Errores en estructuras de datos o en accesos a base de datos externas.
Errores de rendimiento.
Errores de inicialización y de terminación.
Procedimientos de test
El proceso de prueba este en paralelo al proceso de desarrollo.
Despliegue Test
Comienzo Comienzo
Verificación
Ciclo de vida
del desarrollo Validación Ciclo de vida del test
Correcciones
Completas
15
Planificación
Preparación
Procedimientos iniciales:
Esta etapa es donde se realiza un estudio en profundidad de los requisitos de negocio del
sistema a ser desarrollado, garantizando que este completo. Deben definir las principales
actividades de prueba que se ejecutarán.
Planificación:
Etapa que consiste en la elaboración de una estrategia de prueba y un plan de prueba,
con el objetivo de minimizar los principales riesgos del negocio y proporcionar caminos
para las próximas etapas.
Preparación:
El objetivo de esta etapa es preparar el ambiente para que las pruebas se ejecuten
correctamente. Esta preparación implica la definición de configuración de equipos,
entrenamientos, instalación de herramientas de test, etc.
Especificación:
Consiste en elaborar y revisar casos de prueba de acuerdo a los requisitos definidos en
los procedimientos iniciales.
Ejecución:
En esta etapa se ejecutan los casos de prueba de forma manual o automática. En casos
de corrección de errores los ajustes de mejoras, una nueva ejecución es efectuada
garantizando la integridad del sistema.
Entrega:
16
Etapa de cierre de las pruebas, donde se elaboró una documentación con todas las
ocurrencias de tests, buscando la mejora del proceso.
El entorno de prueba es la estructura donde se ejecutan las pruebas que va mucho más
allá de una simple configuración de software y hardware.
Es importante resaltar que el equipo de test no solo está compuesto por un ingeniero de
calidad, cuando se tiene un proyecto de pruebas se encuentran otros profesionales cuya
responsabilidad va más allá de ejecutar tests:
Otro elemento importante del entorno de prueba son las herramientas de prueba. Estas
son el apoyo de los profesionales de esa área, cubren gran parte de las actividades de
prueba y son aplicables en todas las fases del ciclo de vida del software.
La elección adecuada de herramientas influye positivamente en la eficiencia y eficacia de
las pruebas, para ello es importante analizar factores como objetivos de la organización,
costos de la herramienta y el nivel de conocimiento para manejarla.
17
Behavior Driven Development o BDD es un conjunto de prácticas de ingeniería de
software diseñadas para ayudar a los equipos a construir y entregar software más valioso
y de mayor calidad, se basa en prácticas ágiles. Pero lo más importante es que BDD
proporciona un lenguaje común (Gherkin) basado en oraciones simples y estructuradas
que facilitan la comunicación entre los miembros del equipo del proyecto y las partes
interesadas de la empresa
BDD fue diseñado originalmente como una versión mejorada de TDD Desarrollo guiado
por pruebas, es una técnica extraordinariamente efectiva que utiliza pruebas unitarias
para especificar, diseñar y verificar el código de aplicación.
Gherkin
Es un lenguaje comprensible por humanos y por ordenadores, con el que vamos a
describir las funcionalidades, definiendo el comportamiento del software, sin entrar en su
implementación. Se trata de un lenguaje fácil de leer, fácil de entender y fácil de escribir.
Utilizar Gherkin permite crear una documentación viva a la vez que automatiza los tests,
haciéndolo además con un lenguaje que puede entender el negocio. Actualmente
Gherkin soporta más de 60 idiomas.
Lo interesante de Gherkin es que para empezar a hacer BDD solo se debe conocer 5
palabras, con las que construiremos sentencias con las que se describen las
funcionalidades:
18
Then: especifica el resultado esperado en el test. se observa los cambios en el
sistema y se verifica si son los deseados.
Ejemplo:
Feature: Usuario ingresa en la aplicación.
Scenario: Login correcto.
Given: Introducir un nombre de usuario en el campo correcto.
And: introducir un password en el campo correcto.
When: Hacer click en el botón.
Then: Debería mostrarse un mensaje.
Escribir un test.
Ver como todos los test fallan.
Escribir código.
Reescribir el test.
19
Crear un entorno de trabajo
Casi tan importante como tener que crear test automáticos que validen el producto es
tener un entorno que permita que estos test se ejecuten de manera correcta, eficiente y
eficaz. Si un test existe, pero no se ejecuta nunca, es inestable a causa del entorno o es
excesivamente lento, no se utilizará y el esfuerzo por crear un proceso eficiente no servirá
de nada.
Para crear un entorno de trabajo eficiente se debe pensar dónde se ejecutarán los tests
(en una máquina local, en una máquina de integración continua) y con qué frecuencia se
ejecutarán (se ejecutará en cada commit, de manera nocturna, cada cierto tiempo...). La
idea que debe primar es que estos tests serán los que indiquen si el sprint está terminado
y es válido, por lo que los desarrolladores podrán ejecutarlos cuando quieran y que el
resultado que proporcionen debe ser real de dónde lo estés ejecutando. Para ayudar con
esto existen herramientas como Vagrant o Docker que permiten definir máquinas
virtuales de manera sencilla y ligera que permiten al desarrollador tener un entorno "de
producción" en su propio ordenador.
Es importante que las retrospectivas de cada sprint sirvan para detectar cuales fueron los
errores y las mejoras para el siguiente sprint y servirán para ir definiendo mejor como se
escribirán los escenarios.
Técnicas de test
20
Fuente: Bastos
Test de Unidad:
Test de unidad se aplica en el elemento más pequeño de un sistema, cada componente
es probado para asegurar que funciona correctamente. Normalmente desarrolla una única
función cohesiva. La función de la prueba unitaria es de analizar cada pequeña parte y
probar que funciona correctamente.
Test de integración
Test integración es una extensión lógica de las pruebas unitarias. Dos unidades que ya
fueron probadas y combinadas en un componente y su interface son probadas entre ellas.
Un componente, se refiere a un agregado que está integrado en más de una unidad,
estas son combinadas en componentes, que son agregadas por orden en partes más
grandes del programa. El motivo del test de integración es de verificar la funcionalidad y la
seguridad entre los componentes que han sido integrados. Identifica los problemas que
ocurren cuando las unidades se combinan, y este consta de:
Test Top-Down:
Comprueba la integración de cada módulo, empezando por el módulo de mayor
nivel.
Test Bottom-up:
Comprueba la integración de cada módulo empezando por los módulos de bajo
nivel.
Test de Regresión:
Re-ejecución de los mismos subconjuntos de pruebas para asegurar que la
inclusión de nuevos módulos no haya propagado efectos colaterales no deseados
en el sistema.
Test Humo:
Rutina de test que ocurre en el sistema entero, el propósito es detectar errores a
cada uno de los módulos que se ha integrado.
Test de Validación
Test de validación en la Ingeniería de Software son el proceso de revisión que verifica que
el sistema de software producido que cumple con las especificaciones y que logra su
cometido. Es normalmente una parte del proceso de pruebas de software de un proyecto,
que también utiliza técnicas tales como evaluaciones, la validación es el proceso de
comprobar lo que se especificó es lo que el usuario realmente quiere, a continuación,
tenemos algunos test de validación:
21
Test Alpha:
Se produce en un ambiente controlado, donde el desarrollador monitorea el uso
del sistema por los usuarios finales registrando posibles errores funcionales.
Test Beta:
Ocurre en el propio ambiente de producción sin la presencia del desarrollador. Los
errores encontrados se registra en intervalos regulares por los propios usuarios
finales.
Test de Recuperación:
Evalúa la capacidad del sistema de recuperarse mediante las fallas, retornando el
procedimiento en poco o en ningún tiempo de parada.
Test de Seguridad:
Comprueba si los mecanismos de protección incorporados al sistema están aptos
para protegerlos de accesos indebidos.
Test de Rendimiento:
Evalúa el rendimiento del sistema como tiempo de ejecución, uso de recursos.
Test de Disponibilidad:
También conocido como prueba de configuración, valida la flexibilidad del sistema
en ser operado en los diversos tipos de ambientes.
22
9.1 PRINCIPIOS DE LA AUTOMATIZACIÓN
Así como en cualquier proceso, la automatización de test tiene principios a fin de evitar
futuros problemas, a continuación, seguiremos algunos de los principios de
automatización:
Diseñe los casos de prueba para automatizar
Busque expandir el universo de la automatización en lugar de simplemente repetir
los mismos scripts. Explore lo que usted tiene en las manos y lo que necesita
hacer más.
No piense en automatizar el 100% de todo.
No automatice lo que no es importante
No piense que las interfaz de usuario nunca va a cambiar. El cambio es casi una
constante en buena parte de las aplicaciones. Las herramientas tienen que
adaptarse a estas nuevas interfaces.
Proyectos de automatización de pruebas requieren una mezcla de perfiles en el
equipo: habilidades de programación, planificación y ejecución de gestión de
proyectos.
Diseñe la automatización de tests para facilitar las revisiones.
Inicie la automatización de tests lo antes posible en un proyecto.
23
Para tests de regresión y rendimiento, no hay duda de que test automatizado sea lo más
adecuado.
¿Qué automatizar?
Saber que módulos y áreas a probar en el sistema
¿Cuándo automatizar?
Varía de acuerdo con las situaciones de la empresa. En algunos casos cuando no
hay ninguna automatización de las pruebas, otros casos cuando la empresa desea
mejorar la automatización existente.
¿Dónde automatizar?
Decidir si será en un ambiente la parte o compartido con el desarrollo.
¿Cómo automatizar?
Definir las técnicas y herramientas que se utilizarán.
¿Quién va automatizar?
Delegar la función para los integrantes que poseen el perfil adecuado.
Pruebas funcionales:
Se basan en el funcionamiento del producto, buscando si la solución satisface las
necesidades por la que fue creada. Este tipo de prueba permite determinar si se ha
construido el software deseado y si es oportuno liberar la versión del producto al mercado.
Este análisis también permite a las empresas, que hacen uso intensivo de las tecnologías
de la información, determinar si han adquirido el software deseado.
Para ello, se propone una estrategia basada en el análisis de riesgos del producto,
definiendo claramente el contexto y los objetivos. Y se elabora y planifican una serie de
24
pruebas basadas en las funcionalidades prioritarias, considerando su complejidad, una
prueba funcional es una prueba basada en la ejecución, revisión y retroalimentación de
las funcionalidades previamente diseñadas para el software, hay distintos tipos, por
ejemplo:
Pruebas unitarias.
Pruebas de componentes.
Pruebas de integración.
Pruebas de sistema.
Pruebas de aceptación.
Pruebas de regresión.
Pruebas no funcionales:
Son complementarias a las anteriores y se centran en pruebas necesarias para medir las
características de los sistemas software, es decir tienen por objetivo evaluar “cómo”
funciona el producto software. Este tipo de prueba puede cuantificarse mediante
diferentes escalas según el análisis realizado (tiempos de respuesta, operaciones por
segundo etc.) A esta clase de test se corresponden:
Pruebas de compatibilidad.
Pruebas de seguridad.
Pruebas de estrés
Pruebas de usabilidad.
Pruebas de rendimiento.
Pruebas de escalabilidad.
Pruebas de mantenibilidad.
Pruebas de portabilidad.
Las pruebas unitarias son una de las formas que se tiene para probar pequeñas e
individuales porciones de código. Permiten detectar efectivamente la inyección de
defectos durante fases sucesivas de desarrollo o mantenimiento. A través de estas, se
verifica que cierto módulo o funcionalidad se ejecuta dentro de los parámetros y
25
especificaciones concretadas en documentos, tales como los casos de uso y el diseño
detallado que proporcionan un contrato escrito que la porción de código debe cumplir. Las
pruebas Unitarias típicamente son automatizadas, pero pueden llevarse a cabo de forma
manual.
Una prueba unitaria es completa si cumple con los siguientes elementos:
Reutilizables: no se deben crear pruebas que solo puedan ser ejecutadas una
sola vez. También es útil para integración continua.
Profesionales: las pruebas deben ser consideradas igual que el código con la
misma profesionalidad y documentación.
Ventajas
Es necesario saber que las pruebas unitarias por sí solas, no son perfectas, puesto que
comprueban el código en pequeños grupos, pero no la integración total del mismo. Para
ver si hay errores de integración es necesario realizar otro tipo de pruebas de software
conjuntas y de esta manera comprobar la efectividad total del código. A continuación, se
explicará las ventajas de las pruebas unitarias:
Proporciona un trabajo ágil: Como procedimiento ágil que es, te permite poder
detectar los errores a tiempo, de forma que puedas reescribir el código o corregir
errores sin necesidad de tener que volver al principio y rehacer el trabajo,
disminuyendo el tiempo y costo.
Detectar errores rápido: A diferencias de otros procesos, los tests unitarios nos
permiten detectar los errores rápidamente, analizamos el código por partes,
haciendo pequeñas pruebas y de manera periódica, además, las pruebas se
pueden realizar las veces que hagan falta hasta obtener el resultado óptimo.
Facilita los cambios y favorece la integración: Los tests unitarios, nos permiten
modificar partes del código sin afectar al conjunto, simplemente para poder
solucionar bugs que nos encontramos por el camino.
Proporciona información: Gracias al continuo flujo de información y la
superación de errores, se puede recopilar gran cantidad de información para
evitar bugs en un futuro.
26
Proceso debugging: Los Tests unitarios ayudan en el proceso de debugging.
Cuando se encuentra un error o bug en el código, solo es necesario desglosar el
trozo de código testeado. Esta es uno de los motivos principales por los que los
tests unitarios se hacen en pequeños trozos de código, simplifica mucho la tarea
de resolver problemas.
Junit
Anotaciones:
27
Nunit
Nunit es un framework open source para pruebas unitarias de sistemas realizados con la
plataforma Microsoft.NET. Sirve al mismo propósito que realiza JUnit en el mundo java.
Consiste en probar métodos de una clase especifica fue desarrollado en C#, y pertenece
a xUnit que son todos aquellos frameworks de prueba heredados de JUnit y que, por lo
tanto, siguen las normas marcadas por el mismo.
Características:
Atributos:
28
Values Proporciona un conjunto de valores en línea para un
parámetro de un método.
Fuente: NUnit
TestNG
TestNG es un framework para pruebas desarrollado en las líneas de JUnit y NUnit, sin
embargo, introduce algunas funcionalidades nuevas que lo hacen más poderoso de
pruebas unidad, funcional,
Características:
anotaciones
configuración flexible
integración con herramientas (Eclipse IDEA Maven)
Anotaciones:
29
@BeforeGroups Lista de grupos que este método de configuración ejecutará
antes. Se garantiza que este método se ejecute poco antes de
que se invoque el primer método de prueba que pertenece a
cualquiera de estos grupos.
Anotaciones Si Si Si
Alto nivel de Si
Si Si
programación
Tabla 5 herramientas de Test unitario
Fuente: propio
30
11.2 HERRAMIENTAS DE PRUEBA FUNCIONAL
Se denominan pruebas funcionales a las pruebas de software que tienen que probar que
los sistemas desarrollados cumplan con las funciones específicas para las cuales fueron
creadas, es común que este tipo de pruebas sean desarrolladas por analistas de pruebas
con el apoyo de algunos usuarios finales, esta etapa suele ser la última etapa de prueba y
al dar conformidad sobre esta, el siguiente paso es el pase a producción.
Dentro de los importantes beneficios que tiene este tipo de pruebas esta la mitigación del
riesgo de aparición de fallos en producción, el cumplimiento de los objetivos de los
proyectos en términos de calidad y resultados esperados principalmente, pero también de
plazos y costos.
Para llevar a cabo las pruebas funcionales, es necesario seguir un procedimiento
determinado en las siguientes fases:
Selenium
Selenium es una suite compuesta por las herramientas: selenium IDE, Selenium Remote
Control, Selenium Webdriver y Selenium Grid. Cada uno con la finalidad de garantizar la
automatización de las pruebas funcionales de forma práctica y eficiente.
31
Selenium no es una herramienta única, sino un conjunto de herramientas que ayuda a los
ingenieros de calidad a automatizar las aplicaciones basadas en la web de manera más
eficiente. A continuación, explicaremos cada una de las herramientas disponibles:
Selenium IDE
Características:
Fácil grabación y reproducción.
Autocompletar para todos los comandos comunes de Selenium.
Depurar y establecer puntos de interrupción.
Todo en un archivo de proyecto, que contiene todos los casos de prueba.
32
Un servidor que automáticamente inicia y mata los navegadores, y actúa como
proxy HTTP para las solicitudes web de ellos.
Bibliotecas cliente para su lenguaje informático favorito.
Selenium Webdriver
Es la versión mejorada del remote control lo que lo hizo popularmente conocido como
Selenium 2.0, se trata de una clase con la estructura más concisa, permitiendo una
interacción más eficaz con el browser y superando la limitación de su predecesor.
Selenium WebDriver es el nombre de la interfaz clave contra la cual se deben escribir las
pruebas en java, las clases de implementación que se usaran.
Características:
Está diseñado en una interfaz de programación más simple y concisa.
Impulsa el navegador de manera mucho más efectiva y supera las limitaciones de
Selenium 1.0 que afectaron nuestra cobertura de prueba funcional, como la carga
o descarga de archivos.
API orientado a objetos compacta en comparación con Selenium 1.0.
Selenium Grid
33
A partir de la segunda versión Selenium, ha pasado a contar con una nueva funcionalidad
que permite la ejecución de pruebas en diversos ordenadores de forma simultánea,
independientemente del sistema operativo y navegador que estén usando.
Es una gran alternativa para aplicar algunas técnicas de pruebas, tales como el de carga,
en términos generales, hay dos razones por las cuales es posible usar Selenium Grid:
Para ejecutar en múltiples navegadores, múltiples versiones de navegador que se
ejecuten en diferentes sistemas operativos.
Para reducir el tiempo que tarda en completar un pase de prueba.
Canoo Webtest
Características:
webtest tiene una sintaxis sencilla con pasos que tienen nombres significativos.
Proporciona informes que visualiza toda la información que permite comprender
rápido el error.
Webtest está escrito en java esto quiere decir que se ejecuta en sistemas
operativos donde esté instalado el JDK
Los scripts de Webtest se integra fácilmente con herramientas de integración
continua y soporte en IDE.
Cucumber
34
Cucumber fue escrito originalmente en el lenguaje de programación Ruby y se usó para
pruebas de Ruby, ahora es compatible con una variedad de diferentes lenguajes de
programación a través de varias implementaciones incluyendo java. Ejecuta pruebas de
aceptación automatizadas escritas en un estilo de desarrollo guiado por el
comportamiento (BDD).
HP UFT
Al grabar un aprueba sobre una interfaz de usuario, UFT registra las líneas de código de
la prueba correspondientes con cada acción que realiza. Cada línea, por lo general,
representa una pantalla. Los componentes se llaman objetos y las acciones que se
realizan en ellos se denominan operaciones.
35
Permite una mayor velocidad, cobertura de la prueba y repetición de pruebas de
menos recursos. Provocando también una reducción en los costes debido a la
posibilidad de ejecutar pruebas y la creación automática de documentos de
prueba.
Selenium HP UFT
Lenguajes java, C#, Ruby, Python, Perl VB Script
Soportados PHP, JavaScript
Navegadores Chrome, internet explorer, Chrome, internet explorer,
Soportados Firefox, Opera, Safari. Firefox, Safari
Entornos Soportados Windows, Linux, Mac, otros. Windows
Gratuito Si No
Framework Selenium + Eclipse + Maven, HP Quality center y
Jenkins, Hudson & its plug-ins, performance center
TestNG + SVN Nunit, Junit. integrados dentro de HP
ALM
Alto Nivel de Si No
Programación
Integración con Si HP Mercurial, HP Quality
herramientas center
externas
Resultado e informes Integración con jenkins Results Viewer, Screen
y análisis Recorder y soporte QC
Ayuda y Poca online Mucha dentro de la
documentación herramienta online
Tabla 6 Herramientas de Prueba Funcional
Fuente: propia
Las pruebas de rendimiento son las pruebas que se realizan, desde una perspectiva, para
determinar lo rápido que realiza una tarea un sistema en condiciones particulares de
trabajo. También puede servir para validar y verificar otros atributos de la calidad del
sistema, tales como escalabilidad, fiabilidad y uso de los recursos.
Es una práctica informática que se esfuerza por mejorar el rendimiento, englobándose en
el diseño y la arquitectura de un sistema, antes incluso del esfuerzo inicial de la
codificación.
36
Ventajas
JMeter
JMeter es una herramienta libre basada en el lenguaje java, que permite realizar pruebas
de rendimiento sobre aplicaciones web. Es una herramienta se carga para llevar acabo
simulaciones sobre cualquier recurso de software.
Esta herramienta destaca por su versatilidad, estabilidad y por ser de uso gratuito.
También permite la ejecución de pruebas distribuidas entre distintos ordenadores para
realizar pruebas de rendimiento.
37
Esta herramienta muestra los resultados de las pruebas en una amplia variedad de
informes y gráficas. Además, facilita a una rápida detección de los cuellos de botella
existentes debido al tiempo de respuesta excesivo.
WebLOAD
Características:
38
En la siguiente tabla se visualizará un cuadro comparativo de las herramientas de test de
rendimiento, en este caso se tomó las herramientas de JMeter y WebLOAD.
JMeter WebLOAD
Protocolos soportados HTTP, HTTPS, FTP, FTP, UDP, TCP, SMTP,
SOAP/XML, RPC, JDBC, Telnet, POP, SSL
LDAP, JMS
Informes de análisis Si Si muestra gráficamente
los resultados
Monitorización y análisis Si, se amplía cuando coopera Si
en tiempo real con otros módulos
Alto nivel de Si Si
programación
Multiplataforma Windows, Linux, Mac Windows, Linux, Mac
Necesita conexión a No Si
internet
Tabla 7 Herramientas de Test de rendimiento
Fuente: propia
Bugzilla
39
los defectos de software, permitiendo el seguimiento de múltiples productos. Permite
categorizar los defectos de software de acuerdo a su prioridad y severidad, así como
asignarles versiones para su solución.
Bugzilla utiliza un servidor HTTP (como puede ser apache) y una base de datos
(normalmente Mysql) para llevar a cabo su trabajo. Los errores pueden ser enviados por
cualquiera y pueden ser asignados a un desarrollador en particular. Cada error puede
tener diferente prioridad y encontrarse en diferentes estados, así como ir acompañado de
notas del usuario o ejemplos de código que ayuden a corregir el error.
Características:
Seguridad
Campos personalizables
Flujo de trabajo personalizado
Interfaz de servicios web
Soporte para motores de base de datos múltiples
Controlar la visibilidad de errores
Eventum
40
Jira Software
En 2003 se creó jira para supervisar y gestionar errores de desarrollo de software. Desde
entonces, se ha ampliado para ayudar a los equipos a planificar y supervisar todos los
aspectos del ciclo de desarrollo de software. Desde la limpieza del backlog hasta la
gestión de publicaciones.
Detecta errores en cualquier parte de tus proyectos de software con Jira Software.
Cuando se encuentre un error, crea una incidencia y añade todos los datos de
importancia, incluyendo: descripciones, nivel de gravedad, captura de pantalla, versión,
etc. Las incidencias pueden representar cualquier cosa desde un error de software, una
tarea de proyecto o un formulario de solicitud.
Características:
41
En la siguiente tabla se visualizará un cuadro comparativo de las herramientas de
seguimiento de bugs, en este caso se tomó las herramientas Bugzilla, Eventum y Jira
Software.
42
12. CONCLUSIONES
43
13. BIBLIOGRAFÍA
44