Está en la página 1de 11

PONTIFICIA UNIVERSIDAD CATÓLICA DEL

ECUADOR SEDE ESMERALDAS

Escuela de Sistemas y computación.

Investigación formativa: Proyecto Formativo.

Pruebas manuales versus pruebas automatizadas


de software.

Ingeniería de Software I.

Favio Andrade, Jurgen Huerlo.

Diembre de 2018.
1. Resumen. -

2. Objetivos de la investigación. -

Objetivo principal.
 Realizar una comparativa argumentada entre las pruebas manuales y las
pruebas automatizadas en el desarrollo de software.

Objetivos Secundarios.
 Calificar el comportamiento y la eficacia de las pruebas automatizadas frente
a las pruebas manuales.
 Hallar en que ambientes de trabajos es mejor la implementación de una
prueba u otra argumentando las razones del porqué.

3. Antecedentes de la Investigación. -
En la actualidad el desarrollo de software a avanzado de forma creciente, lo que
hace que el testeo de las aplicaciones deba ser más estricto en todos los aspectos
para evitar problemas de vulnerabilidad, problemas en la lógica de programación
cuando una función o determinado método no está realizando bien la acción que
necesita hacer, es por esto que se hacen distintas pruebas y se pueden dividir entre
dos grandes grupos, las que son hechas directamente por el programador o el equipo
de trabajo denominadas pruebas manuales y las que son hechas por un software al
cual se le ha programado que realice ciertas acciones en una app y retorne un
reporte en caso de existir fallos.
La fase de pruebas del ciclo de vida del Software es definida como” un proceso o
una serie de procesos diseñados para asegurar que el código cumple para lo que está
diseñado y no haga nada de forma involuntario. Para lograr realizar la verificación
del código contra su diseño (y, por tanto, contra los requisitos del cliente), se toman
datos de ejemplo de entrada, y se plantean salidas esperadas de acuerdo a los
requerimientos.[1]
Lo que el autor da a entender es que se puede definir en general que las pruebas son
un conjunto de pasos a seguir para la verificación del correcto funcionamiento del
programa, para ello se toman datos de ejemplo que serán usados para comprobar
que la aplicación este haciendo lo correcto y para verificar esto se platean salidas
concretas con las cuales comparar los resultados esperados con los datos obtenidos
después de realizar los pasos.
Demostrando que las pruebas de software son muy importantes en la fase de
desarrollo de software el autor del artículo “Guía de pruebas software para
MoProSoft” expone lo siguiente: Si bien las pruebas se usan para demostrar que el
producto de software hace lo que se supone debe hacer y no hace nada que no esté
previsto, es importante su consideración en todos los niveles de la organización. Es
decir, para que las mismas puedan aplicarse con éxito durante el ciclo de desarrollo,
deben ser contempladas inicialmente como estratégicas por parte de directivos y
responsables de la gestión de los proyectos. Es por ello, que las pruebas deben
formar parte de cualquier actividad desarrollada en una organización ya que son el
medio para asegurar la calidad. [2]
Esto quiere decir que en cualquier proceso de la empresa por más mínimo que sea
se deben hacer pruebas y esto mismo llevándolo al área de desarrollo se aplica
cuando se le hace hasta el más mínimo cambio al software se debe pasar por un
entorno de pruebas antes de salir a producción ya que un software con errores o
vulnerabilidades afecta la calidad del producto.
En un ambiente de desarrollo continuo, las pruebas funcionales automatizadas
cumplen un papel fundamental, ya que permiten realizar regresiones de manera
rápida en pequeños ciclos de desarrollo por cada cambio introducido en el producto
software. Con la aparición de los servidores de integración continua, es posible
detectar la introducción de defectos en el código fuente lo antes posible[3]
Esto quiere decir que en los últimos años es cuando las pruebas automatizadas han
tomado una gran popularidad, todo esto debido a la aparición de los servidores de
integración continua que permiten un despliegue de la aplicación muy rápido
pasándola por múltiples entornos de prueba y lo que el autor explica es que gracias
a esto se pueden crear múltiples test automatizados, pero teniendo en cuenta el
navegador en el que se ejecutan.
Se busca poner en uso en la organización un proceso que permita controlar las
actividades de prueba y así gestionar la calidad de los productos. Para esto es
necesario definir las actividades, los roles y los artefactos que componen el proceso
de pruebas. Los objetivos antes planteados pretenden evitar y solucionar los
problemas detectados al inicio de la investigación con respecto a la calidad de las
soluciones y la gestión de las pruebas que se realicen en la organización en sentido
general.[4]
Otro autor propone una solución para agilizar los procedimientos en entornos de
pruebas manuales, en los cuales destacaría la eficacia de la minuciosidad que tienen
estas al detectar errores, pero con la buena organización que poseen las pruebas
automatizadas, esto se lograría armando un equipo completo en el cual cada
participante tenga asignada una parte del proceso de pruebas con esto evitaríamos
que una sola persona ejecute todas las pruebas, asegurando una buena gestión y la
calidad del producto.
Con otro punto de vista más enfocado a las pruebas en los servicios web un autor
nos explica que existen pruebas de unidad, pruebas basadas en modelos,
verificación formal, pruebas basadas en fallos, pruebas con particiones y pruebas
basadas en contratos son los métodos de pruebas cubiertos en este trabajo. No
obstante, al igual que cualquier otro tipo de API de integración, las pruebas
funcionales de servicios web, que son las tratadas en este capítulo, suelen realizarse
desde una perspectiva de caja negra. Así, la idea principal es la obtención de casos
de prueba, bien manualmente o bien generados automáticamente, que invoquen las
operaciones del servicio web y comprueben que éstas se comportan de la manera
esperada.[5]
Con esto queda muy claro que las pruebas de software no solo constituyen al
programa sino a todos los componentes que lo constituyen como por ejemplo una
API la cual debe ser probada y verificar que los datos que está extrayendo y
entregando son los correctos, probar que la conexión con la misma está yendo de
manera correcta, ya que al desplegar una aplicación sin probar por ejemplo la API
podrían surgir problemas ya que se podría estar solicitando una información pero
debido a que no hay una buena conexión no se estaría mostrando lo solicitado, y
esto ya afectaría mucho a la calidad del software ya que los usuarios encontrarían
estos errores.

4. Fundamentación teórica.
Existen diferentes niveles de pruebas en concreto 4 estos dependen en gran medida
de la fase en la cual se encuentra el desarrollo del software pero que la mayoría de
las veces no suelen cambiar y en cierta medida pueden llegar a ser niveles estáticos
en un proceso de pruebas, a continuación, se muestra en la figura los niveles y el
orden en el que estos van.

Figura 1.
J. C. Salazar Rodriguez (2017). Automatización de Pruebas de Software Web Basada en
Reglas de Negocio. [Figura]. Recuperado de http://hdl.handle.net/11349/5194

 Pruebas unitarias. - Esta se define como la unidad más pequeña de software


que puede probarse procedimientos, clases y funciones.
 Pruebas de integración. - Cuyo propósito es detectar defectos que pueden
suceder en las interfaces de las unidades de software (procedimientos,
funciones, clases) una vez se ponen en funcionamiento con otras unidades; y
ensamblar dichas unidades en subsistemas funcionales que puedan ser
posteriormente probados en las pruebas de sistema.[1]
 Pruebas de sistemas o funcionalidad. - Cuyo objetivo es verificar que el
sistema se comporta de acuerdo a los requerimientos. Evalúa tanto
funcionalidad como atributos de calidad tales como confiabilidad, usabilidad,
rendimiento, y seguridad. Esta fase es especialmente útil para detectar defectos
con interfaces externas de Hardware y Software.[1]
 Pruebas de aceptación. - las cuales son realizadas por los usuarios finales en
conjunto con los testers, con el fin de verificar que sus requerimientos y
expectativas hayan sido cumplidas en el producto final.[1]

En investigaciones pasadas ya se ha identificado los procedimientos y


características de las pruebas, que tienen mucho en común ya que como lo
mencionan diferentes autores los scripts que se usan para las pruebas automatizadas
son solo procedimientos a ejecutar de forma automática y sería lo más parecido a
que los testers y programadores hacen cuando se emplean las pruebas manuales ya
que se deben seguir ciertas medidas para garantizar que el software final carece de
errores que puedan afectar a su funcionamiento y a los usuarios finales.

4.1 Proceso de pruebas. -


Muchas empresas de desarrollo de software tienen una tendencia a pensar que el
proceso de las pruebas de software se debe realizar en la última etapa para
consolidar la calidad de su producto. Esa tendencia debe dejarse a un lado, ya que
las pruebas tienen que estar alineadas al proceso de desarrollo; es clave entonces
afirmar que es importante realizar un proceso de pruebas que incluya: “Revisión
de los requerimientos, realización de análisis documentales, identificación de
defectos, pruebas funcionales y no funcionales, pruebas dinámicas y estáticas,
pruebas de integración, informes de confianza en el nivel de calidad, información
para la toma de decisiones, planes de mejora continua”. [6]
Las actividades de un proceso de pruebas deben cumplir con lo siguiente:
planificar y controlar; seleccionas las condiciones de prueba; diseñar y ejecutar
casos de prueba; comprobar los resultados; evaluar los criterios de resultados;
elaborar informes del proceso y la aplicación objeto de las pruebas, incluyendo
bitácoras de experiencia. [7]

4.2 Pruebas Manuales y Pruebas automatizadas. -


La realización de pruebas manuales y automatizadas no debería ser excluyente
entre sí. Mientras que unas garantizan la calidad, las otras incrementan la
velocidad, de forma que puede seguir el ritmo de desarrollo y los ciclos rápidos de
lanzamiento Agile. Mediante el enfoque híbrido, puede escalar las pruebas para
satisfacer todas sus necesidades, reducir laboriosos procesos manuales por medio
de la automatización, y conservar aun así el toque humano, la automatización del
flujo de trabajo amplía las capacidades de comprobación manual y la cobertura de
las pruebas, a la vez que mejora la calidad general de su software. El objetivo es
lograr una cobertura óptima de las pruebas dentro del plazo y el presupuesto
establecidos.[8]
Esto claramente indica que lo principal es la calidad final del software, obviamente
una prueba automatizada es mucho más rápida y arroja resultados de una forma
más óptima, pero no logra reemplazar, lo minucioso que es una prueba manual y la
cantidad de errores o bugs que se pueden encontrar haciendo un correcto uso de
esta.

4.3 Metodología de Pruebas


Los procesos de aseguramiento de calidad de un producto de software suelen
dividirse en lo que respecta a su componente analítico en pruebas estáticas y
dinámicas. La diferencia fundamental entre estos tipos de pruebas, radica en que
las pruebas estáticas se centran en evaluar la calidad con la que se está generando
la documentación del proyecto, por medio de revisiones periódicas, mientras que
las pruebas dinámicas, requieren de la ejecución del software con el fin de medir el
nivel de calidad con la que este fue codificado y el nivel de cumplimiento en
relación con la especificación del sistema.
Realizar pruebas dinámicas a un producto de software, suele en la mayoría de los
casos confundirse con una simple actividad de ejecución de pruebas y reporte de
incidencias, sin embargo, para productos de complejidad media en adelante, lo
recomendable es implementar de manera formal una metodología de pruebas que
se ajuste y acople uniformemente con la metodología de desarrollo seleccionada
por la firma desarrolladora.

5. Metodología.
Se emplea la “búsqueda científica” en una primera instancia ya que lo que se busca
es encontrar cuantos autores han realizado investigaciones anteriores para tomarlos
como referencia y así poder sustentar mucho más la investigación y en el momento
dado comparar los resultados obtenidos, todo esto solo para buscar artículos
relacionados, para realizar la parte práctica de la investigación se han usado
“métodos empíricos de la investigación científica” esto quiere decir que no se hará
una suposición de algo ya que el trabajo también cuenta con una sustentación
practica llevada a cabo por los investigadores, es aquí en donde se realizan las
pruebas de software de manera automatizada y manual, comparando resultados,
observando tiempos de ejecución y eficacia de cada una de las pruebas, es por eso
que se emplean los métodos empíricos ya que se necesitan hechos reales para dar
una recomendación real y muy bien sustentada por parte de las diferentes pruebas.

6. Resultados.
Pruebas automatizadas.
Para las pruebas automatizadas se emplea la Herramienta Selenium WebDriver que
es la que permite configurar los test automatizados, el plugin Testng para poder
correr la prueba de una manera fácil y eficiente, todo esto configurado con el
lenguaje Java con un proyecto Maven y el entorno de desarrollo Spring Tool Suite.

Figura 2. Autor
En la figura 2 se puede observar como el navegador indica que un software
automatizado está controlando Chrome, esto es porque la prueba se ejecutó en ese
navegador con la librería “chromedriver” de Selenium y como se puede observar la
prueba ha hecho que aparezca un error.

Figura 3. Autor.

Como se puede observar internamente en la consola del IDE se muestra como se


inició el test, que puerto está usando el Testng y demás información que podría ser
relevante si el test llegara a fallar por diferentes motivos.

Figura 4. Autor

En esta figura aparece un cuadro en donde se nos enseña la cantidad de test


realizados, y si detecto alguna falla o si se saltó algún paso, y abajo se observan los
tiempos en que tomo hacer el test, pero de forma más detallada, cabe recalcar que es
un test de funcionalidad, ya que está probando que se verifiquen los campos con
datos falsos en busca de algún error en la funcionalidad del login.

Pruebas manuales.

Según el estándar IEEE 29119-4: Técnicas de prueba. Las pruebas funcionales están
dentro del conjunto de pruebas aprobadas y certificadas por ellos para la
verificación de la calidad de un software, por lo cual se procede a realizar la prueba.
Figura 5. Autor

En la figura 5 se observa el ingreso de datos erróneos para comprobar el


funcionamiento del login al comprobar los datos con la BDD.

Figura 6. Autor

Se obtienen los resultados, evidenciando que si se comprueban los datos ya que


aparece una alerta con el mensaje de que las credenciales ingresadas son incorrectas
ya que la información que se le ingreso no concordaba con los datos en la BDD con
la que trabaja el sistema.
Una vez realizada la prueba se procede con la documentación de la prueba, para la
cual se aplica el estándar IEEE 829: Documentación de prueba de software. La cual
tiene una serie de campos los cuales deben ser llenados para continuar con el
proceso de pruebas.

Proyecto: Nombre del proyecto “proyetofinal”.


Fecha: 19/12/18
Documento fuente: Aceptado.
Descripción: Test realizado al login del proyecto, en el cual se verifica que
comprueba los datos ingresados en una BDD y se verifica si es un usuario ya
registrado o no.
Estatus: Funcional.
Importancia: No critico.

Con esto culmina el proceso de prueba manual basado en los estándares IEEE la
información obtenida deberá ser archivada en la documentación del proyecto.

7. Discusión.

Actualmente se cuenta con muchas herramientas para poder realizar pruebas


automatizadas, por ejemplo, Selenium WebDriver que permite realizar test
automatizados de una forma muy fácil a las aplicaciones web ya sea que estas estén
ya en producción o en un servidor local, esta herramienta es verdaderamente buena
para las pruebas unitarias o de funcionalidad, ya que son pruebas que
verdaderamente se recomiendan automatizar ya que el desarrollador o tester no es
tan necesario y dan un muy buen rendimiento y proporcionan información útil para
continuar con el desarrollo de un proyecto, pero las pruebas manuales tienen algo
que las automatizadas no tienen ni tendrán y es la minuciosidad de un tester
realizando cada una de las pruebas en diferentes servicios o partes de la aplicación,
y también su necesidad en pruebas que en realidad necesitan la intervención de una
persona, por ejemplo las pruebas de aceptación las cuales necesariamente se deben
realizar con el cliente y el encargado de revisar la calidad del software, esto para
asegurar lo máximo posible la cantidad de errores que podría llegar a tener una app
web ya que no existe un software perfecto pero si se pueden reducir los defectos del
mismo para asegurar que no existan bugs, o fallas cuando la app este desplegada en
producción y que usuarios encuentren errores, en el caso práctico esta investigación,
se usó la herramienta ya antes mencionada Selenium WebDriver que es gratis para
el caso de las automatizadas y los estándares IEEE 29119-4 y 829.
Existen softwares y herramientas de paga para realizar las mismas tareas, pero con
algunas características mejoradas, Device Farm la herramienta para testear software
en dispositivos móviles que ofrece Amazon Web Service o AWS por sus siglas en
inglés, como su nombre lo indica son pruebas diseñadas para probar un software en
miles de dispositivos reales y reducir al mínimo la posibilidad de que el software
trabaje de forma errónea en un determinado modelo, ya sea por características de
hardware, o resolución de pantalla, es una opción muy potente y buena para
empresas que cuenten con el dinero suficiente para poder costear el mismo.
8. Conclusiones.
Las pruebas automatizadas abren un mundo de posibilidades en el desarrollo de
software ya que permiten obtener información de los errores que existan en un
programa, agilizan el tiempo enfocado a las pruebas en un proyecto, tiempos de
despliegue cuando se trabaja en conjunto con otras herramientas, pero no son
capaces de reemplazar del todo las pruebas manuales, ya que no todo lo que este
automatizado es bueno, porque podrían existir errores en la configuración de la
prueba entre muchas otras posibilidades, además de eso la mayoría del tiempo
siempre van enfocadas a un tipo específico de pruebas que pueden ser funcionales
por ejemplo, ya que son las más recomendadas para automatizar y comparándose a
las manuales que pueden ser aplicadas en cualquier tipo de prueba, no tendrían un
ventaja ya que la única diferencia y factor determinante es el tiempo, una lleva más
tiempo que la otra y por último en procesos determinados y pruebas determinadas el
tener un software automatizado es una gran ventaja ya que es eficaz y ayuda a
conseguir la calidad deseada.

Las pruebas manuales se pueden realizar siguiendo un determinado conjunto de


pasos y metodologías especificas dadas por los diferentes estándares que existen en
la actualidad y que es lo más recomendable o aplicarlas siguiendo el instinto del
desarrollador o tester para aplicar pruebas que le parezcan más importantes y para
terminar una recomendación es, usar las pruebas automatizadas en conjunto con las
metodologías agiles porque lo que se busca es un menor tiempo en el proceso de
desarrollo, y las pruebas manuales en las metodologías tradicionales o también en
las agiles ya que esta es muy versátil.
9. Referencias.

[1] J. C. Salazar Rodriguez and jcsalazarr@correo.udistrital.edu.co,


“Automatización de Pruebas de Software Web Basada en Reglas de
Negocio,” 2017.
[2] S. Guardati and A. Ponce, “Guía de pruebas de software para MoProSoft,”
REICIS. Rev. Española Innovación, Calid. e Ing. del Softw., vol. 7, no. 2, pp.
28–47, 2011.
[3] M. A. Mascheroni, M. K. Cogliolo, and E. Irrazábal, “Automatización de
pruebas de compatibilidad web en un entorno de desarrollo continuo de
software,” Nov. 2016.
[4] D. Jústiz-Núñez and D. Gómez-Suárez, “Proceso de pruebas para productos
de software en un laboratorio de calidad Testing process for software
products at a quality laboratory,” vol. XXXV, no. 2, pp. 131–145, 2014.
[5] M. Á. F. Fernández, “Aplicación de técnicas de pruebas automáticas basadas
en propiedades a los diferentes niveles de prueba del software,” 2015.
[6] J. Mera Paz, “Análisis del proceso de pruebas de calidad de software,” Ing.
Solidar., vol. 12, no. 20, p. 163, Oct. 2016.
[7] M. T., “Certif Founda,” 2011.
[8] Micro Focus, “Automatización de pruebas | Micro Focus.” [Online].
Available: https://www.microfocus.com/es-es/campaign/test-automation/.
[Accessed: 10-Dec-2018].

También podría gustarte