Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ingeniería de Software I.
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
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.
Figura 4. Autor
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
Figura 6. Autor
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.