Pruebas Unitarias de software para el proyecto de control de asistencia para el
personal de la empresa Saonsa S.A., 2022
Cáceres Gonzales, David, Campos Aquise, Mashiel, Carrión
abarca, Omar, Castro Hoyos, Jose, Human Pariona, Diego
Universidad Cesa Vallejo (UCV)
Abstract: beneficios y/o dificultades de las
Quality is a particularity that every application herramientas así como su comparativa entre
or system must achieve at the end of its ellas, para así lograr fomentar su uso en el
development. Likewise, tests are an desarrollo de software.
important component for this desired feature
to be fulfilled within a software and for this Palabras clave. Calidad del software, casos
reason it requires time to carry out this de prueba, herramientas de prueba unitaria.
process. The following article presents an
analysis of the project carried out for the 1. Introducción
company Saonsa S.A. in which the different
tools used to carry out the unit tests for the La necesidad de garantizar calidad en
nuestro sistema ha motivado la
project in question will be analyzed and empleabilidad de diferentes pruebas en su
described in order to recognize the benefits desarrollo y ejecución, las cuales parten
and/or difficulties of the tools as well as their siempre de las necesidades del cliente y/o
comparison between them, in order to usuario.
promote their use. in software development.
Keywords. Software quality, test cases, unit En este sentido el sistema de control de
test tools asistencia para el personal de la empresa
Saonsa desempeña la función de generar
el registro de los colaboradores y el control
Pruebas Unitarias de software para el de las asistencias las cuales permiten
proyecto de control de asistencia para llevar una supervisión de las entradas y
el personal de la empresa Saonsa S.A., salidas mediante los reportes como
2022 además de los turnos como también las
asistencias que son registradas en el
programa.
Resumen:
De tal manera las pruebas de software
La calidad es una particularidad que toda consisten en ejecutar un sistema o módulo
aplicación o sistema debe lograr al culminar con la necesidad de medir y mejorar la
su desarrollo. Asimismo, las pruebas son un calidad del proyecto bajo ciertas
componente importante para que se cumpla indicaciones a fin de hallar errores. Los
métodos básicos de prueba son: las
con esta característica deseada dentro de un
pruebas de caja blanca, enfoque
software y por ello mismo requiere de tiempo estructural o funcional y pruebas de caja
para realizar este proceso. En el siguiente negra. Este último se dedica a encontrar
artículo se realizó un análisis del proyecto errores funcionales que pueden ocurrir en
realizado para la empresa Saonsa S.A. en la la fase de obtención de requerimientos o
que se analizó y describió las diferente diseño por lo que se enfoca en las
herramientas empleadas para la realización funciones de entrada, salida, el uso
correcto de pruebas externas brindadas
de las pruebas unitarias para el proyecto en por el software y la observación del
cuestión con el fin de reconocer los comportamiento. Conociéndose
solamente las funciones de entrada y interpretarlas, analizarlas y tomar
salidas mas no las transformaciones que decisiones en base a ella. Estos test se
ocurren en el proceso. realizan generalmente sobre un módulo
en particular o cierto subsistema, se
Por otro lado la caja blanca también
conocido como enfoque estructural se enfocan los detalles referentes al código y
encarga de reconocer la codificación de puede basarse tanto a un nivel integral
una aplicación o programa analizando su como unitario para el desarrollo de un
estructura interna, verificando que la sistema
implementación de las unidades internas, Existen diferentes técnicas para diseñar
estructura y sus relaciones y estas sean pruebas de caja blanca que incluyen
realizadas correctamente teniendo como
objetividad la disminución de errores pruebas de condición, pruebas de flujo de
internos. Cabe indicar que las pruebas de datos, pruebas de bucle, pruebas básicas
caja blanca también se les identifica como de ruta y pruebas de condición y decisión.
pruebas unitarias teniendo un enfoque en
la lógica de procesamiento interno y Las pruebas de ruta básica están
estructura de datos permitiendo realizar enfocadas a encontrar una medida de
una aplicación simultánea de pruebas a
complejidad lógica en el diseño de los
diferentes componentes.
procedimientos. Para diseñar las pruebas
El presente trabajo sostiene el objetivo de se utilizará los principios de la ruta básica
colaborar con el progreso en el proceso de realizando los siguientes pasos:
pruebas y casos de pruebas, partiendo ● Primero: se debe obtener el gráfico
desde un código fuente en relación con las del flujo del módulo de diseño o
herramientas de ejecución de prueba. código.
Como también mostrar la estimación de la
generación de rutas de pruebas utilizando ● Segundo: se debe obtener la
como sustento las bases técnicas de complejidad ciclomática del diagrama
diseño de casos de pruebas. de flujo.
● Tercero: se define el conjunto básico
2. Pruebas unitarias de caminos independientes.
● Cuarto: consiste en determinar los
Según Perez (2018) Las pruebas unitarias casos de prueba que permita la
buscan aislar cada componente individual ejecución de cada uno de cada uno
y verifican el comportamiento de la unidad de los componentes.
mínima del código (p.26), las pruebas ● Quinto: ejecutar cada caso de prueba
unitarias tienen como fin asegurar que verificando que los resultados sean
cada componente funcione de forma los esperados
correcta. Estos test buscan validar el
comportamiento de un objeto y su lógica. El gráfico de flujo es una representación
En ese sentido, verifica que el estado de del flujo de código en la que un nodo
una instancia de una clase sea acertado puede representa una o varias
para los datos de entrada. declaraciones de procedimientos, este
Las pruebas de caja blanca son una mismo puede ser la consecuencia de un
técnica que permite monitorizar y analizar flujo de procesos y/o una decisión. Por
tanto el diseño, la estructura del código y otro lado, las flechas representan la
el código en sí y son realizadas con el secuencia del flujo de control. Las
propósito de mejorar la eficiencia del regiones son las áreas que limitan las
sistema. Este tipo de pruebas posibilitan aristas y los nodos.
que los propios sistemas pongan sus
métricas para que el usuario luego pueda
La complejidad ciclomática es una ejecutando la prueba unitaria que no se ha
medida que brinda la complejidad lógica superado.
que existe en un programa y esta posibilita
determinar el número de caminos a PHPUnit
buscar considerando tanto si hay PHPUnit es un framework para PHP que
coincidencia con el número de regiones permite la construcción de clases de
del diagrama de flujo así como la de su pruebas sobre aplicaciones
complejidad ciclomática. Aquí mismo se fundamentadas en PHP. Según Pellegrini
explica como la complejidad ciclomática, (2015) PHP es un lenguaje que permite la
V(G), para un grafo G se define como V(G) construcción de páginas web complicadas
= E- N + 2, en la que E es el número de (p. 203). Lo cual causa la necesidad de
aristas de grafo de flujo y N es el número mantener el control del adecuado
de nodos. Por ello mismo se entiende que desempeño de las mismas.
mientras más alto sea el valor la
complejidad ciclomática de un fragmento Selenium
de código, es más difícil entender, testear Selenium es una poderosa biblioteca de
y refactorizar este mismo. comandos en diversas lenguajes (C #,
Un camino independiente es cualquier Haskell, Java, JavaScript, Objective-C,
camino que introduce a un programa al Perl, PHP, Python, R y Ruby) que le
menos un nuevo conjunto de permiten al programador automatizar la
instrucciones de procesamiento o una relación del navegador. En otras palabras
nueva condición, increíblemente eficaz para los
que desde el punto de vista del diagrama desarrolladores que prueban
de flujo debe viajar a lo largo de al menos aplicaciones.
un borde que no se haya ejecutado antes.
El selenio de procedimientos para:
• Halla un componente en una página
3. Herramientas para la ejecución de las web
pruebas unitarias
• Realice clic en un factor
• Mandar una cadena a un componente
Microsoft Visual • Navegar a una página web
• Modificar a una pestaña distinto en la
Visual Studio nos da un sistema sencillo
misma ventana del navegador
para lograr generar nuestras propias • Toma una captura de pantalla de una
pruebas unitarias. según Guérin (2017) página web
nos permite la construcción de los
proyectos de pruebas y nos crea la
composición elemental que tiene que SoapUi
tener la prueba (p.33). En este sentido los SoapUI es la herramienta de mayor
evaluadores del equipo tienen la difusión para probar webservices en
posibilidad de usar Herramientas para arquitecturas orientadas a servicios (SOA)
pruebas Team System para generar y y Representational State Transfers
llevar a cabo pruebas. Si ejecuta una (REST) las cuales ofrecen pruebas
prueba unitaria en la que se crea un error, funcionales, rendimiento, simulacros.
almacenan un error y se lo asignan a Además, el proyecto SoapUI capta la
usted. En seguida, usted puede usar atención debido a la integración de
Visual Studio para reproducir el error ejemplos que facilita la interfaz del
desarrollador pudiendo hacer test de
seguridad. Entre estos conceptos (5) Automatización de planes de
encontramos: prueba sobre aplicaciones con
arquitectura orientada a servicios
1. Web Service Mocking. SOA y REST
2. Inspección de Webservices.
3. Pruebas funcionales de Webservices.
4. Pruebas de carga de Webservices Por lo tanto, las herramientas
seleccionadas fueron Microsoft Visual y
Codeception PHPUnit debido a su adaptabilidad y fácil
integración. Sin embargo, si desea editar
Segun Daniel (2019) Codeception es un acciones o crearlas desde cero entonces
instrumento que cubre los 3 tipos de Selenium y Atoum son la opción, pero
examen, unitarios, funcionales y de hay que recalcar la compatibilidad y que
aprobación. (p.12). Está hecha sobre debemos hacer como es el caso de
PHPUnit por lo cual preserva cada una de SoapUI.
las funciones y compatibilidades con él. Al
estar desarrollado sobre PHPUnit, 4. Herramientas para generar casos de
Codeception incorpora ciertos métodos a prueba
inconvenientes usuales en los diversos
tipos de examen unitarios. Existen muchas herramientas que
ayudan a generar de forma automática
Atoum los casos de prueba pero estas están
basadas en diferentes parámetros ya
Atoum (2016) nos menciona que es un mencionados con anterioridad.
moderno framework para realizar pruebas
El generar los casos de prueba es una
unitarias en PHPUnit o SimpleTest las
parte clave en el desarrollo de un
cuales simplifican la sintaxis debido a la
software, ya que este reduce
integración del ecosistema PHP.
considerablemente las actividades de
Además,de ser intuitivo en la ejecución este
prueba. Por eso, el desarrollo de un
se adapta a la retrocompatibilidad la cual es
componente genera rutas de pruebas
una de sus prioridades garantizando un
automáticas, comenzando de las
nivel de seguridad en el desarrollo ya que,
descripciones especificadas en los
separa cada método que se utilice en ellas.
requisitos funcionales guiados por los
patrones del componente.
En vista de lo anterior, tenemos claro las
definiciones y que herramienta se adapta a
nuestro criterio:
(1) Adaptabilidad y extensión con
otras herramientas
(2) Compatibilidad con múltiples
lenguajes de programación
(3) Interactividad con PHP
(4) Permite la integración de pruebas
ofreciendo opciones para depurar
nuestro código, generar perfiles y
emitir diagnósticos de forma fácil.
Figura 1. “Registrar usuario” Método
Tabla 1. Comparación de herramientas Es importante establecer el número de
casos de pruebas necesarias con la
5. Experimento finalidad que las pruebas sean las más
completas posible. La técnica de diseño es
Consiste en demostrar la factibilidad de
el camino básico con la cobertura de
generar las pruebas desde el código fuente,
decisión y condición posteriormente se
obteniendo un análisis de manera
inicia con el diagrama de flujo del método,
automática de las rutas como también de
para luego realizar el segundo paso en el
las técnicas de cobertura de decisión y
que realizaremos la complejidad ciclomática
condición
de la función.
5.1. Pruebas unitarias en código HTML y
el uso de Visual Studio
Para mostrar cómo se utilizan las
herramientas Visual Studio, se ha
desarrollado una prueba aplicada el
Formulario "Usuario", que pertenece a
nuestro proyecto de control de asistencia.
Este método recibe los datos del usuario a
registrar, para guardarlo en una base de
datos. Si esta no rellena el formulario
correctamente le lanza un mensaje que falta
datos, caso contrario guardará los datos
correctamente. Figura 2. Diagrama de flujo de grafo del
método registrar usuario
5.2. Pruebas unitarias en código PHP y el 6. Trabajo futuro
uso de PHP Unit
Este experimento ha abierto
Para mostrar cómo se utiliza la herramienta novedosas oportunidades para futuras
de PHPUnit, se ha desarrollado una prueba indagaciones. El procedimiento
postulado en la actualidad funciona en
aplicada el Formulario "Departamento", que
las próximas direcciones:
pertenece a nuestro proyecto de control de
asistencia. ● Añadir nueva funcionalidad a la
solución en que puede producir una
Este método recibe los datos del
serie de indicaciones para ser
departamento a registrar, para guardarlo en ejecutadas por cada ruta de caso de
una base de datos. Si esta no rellena el prueba, a partir de un código hasta un
procedimiento específico.
formulario correctamente le lanza un
mensaje que falta datos, caso contrario ● Sugerir algoritmos para procesar
guardará los datos correctamente. todos los senderos conocidos,
determinando el flujo de ejecución
condicional dando como
consecuencia la mezcla de valores
primordial para probar este camino.
● Adhesión de dichos resultados con
herramientas de ejecución
automática de pruebas para que se
generen casos de prueba con los
valores que corresponden en el
lenguaje de este instrumento.
7. Conclusiones
● En el transcurso del desarrollo del
proyecto se ha identificado técnicas
para los diseños de caso de prueba
como también la identificación y
selección de herramientas que
soporten las pruebas unitarias para
nuestro código
● Existe la necesidad de utilizar durante
el desarrollo de software el uso de
herramientas de ejecución
automática para las pruebas unitarias
y para cada uno de los casos de
pruebas.
Figura 3. Diagrama de flujo aplicada al
formulario Departamento
8. Referencias Introducción a las pruebas unitarias.
Microsoft. 21 de junio de 2022. Disponible
en [Link]
GUÉRIN, Brice. [Link] con C# en es/visualstudio/test/getting-started-with-
Visual Studio 2017 [en línea]. Barcelona: unit-testing?view=vs-
Ediciones Eni, 2018. [fecha de consulta: 2022&tabs=dotnet%2Cmstest
20 de junio de 2022]. Disponible en:
[Link]
61soCvNvsC&printsec=frontcover&dq=vi PHPUnit Manual. PHPUnit. 1 de abril de
sual+studio&hl=es&sa=X&ved=2ahUKEw 2022. Disponible en
iro9Sq0c74AhU- [Link]
vJUCHbULCpUQ6AF6BAgGEAI#v=onep
age&q=visual%20studio&f=false PHPUnit [Mensaje en un blog]. Estados
ISBN: 9782409010392 Unidos: Wikipedia (19 de abril de 2020).
[Fecha de consulta: 25 de junio de 2022].
PELLEGRINI, Silvia. Ordenando el caos Recuperado de
[en línea]. Chile: Ediciones UC, 2015. [Link]
[fecha de consulta: 20 de junio de 2022].
Disponible en: PHPUnit. IntelliJ IDEA. 17 de marzo de
[Link] 2022. Disponible en
1TDwAAQBAJ&pg=PA203&dq=herramie [Link]
nta+PHPUnit&hl=es&sa=X&ved=2ahUKE -[Link]
wjs6erB0874AhVjBLkGHbplBIQQ6wF6B
AgHEAE#v=onepage&q=herramienta%2 Qué es PHPUnit [Mensaje en un blog].
0PHPUnit&f=false Andalucía: Rubén Recacha (14 de enero
ISBN: 9789561417076 de 2020). [Fecha de consulta: 25 de junio
de 2022]. Recuperado de
PEREZ. Hugo. Automatizando Test de [Link]
Software con Selenium [en línea]. Brasil: phpunit/
Simplissmo Libros Ltda, 2018. [fecha de
consulta: 20 de junio de 2022]. Disponible
en: Selenium
[Link]
xmDwAAQBAJ&pg=PP19&dq=herramien Guía Selenium webdriver: Preguntas en
ta+Selenium&hl=es&sa=X&ved=2ahUKE una entrevista de trabajo [Mensaje en un
wj5vJD- blog]. Lituania: BitDegree (22 de
1M74AhV4FLkGHZUvCuQQ6AF6BAgLE diciembre de 2021). [Fecha de consulta:
AI#v=onepage&q=herramienta%20Seleni 25 de junio de 2022]. Recuperado de
um&f=false [Link]
ISBN: 9788595131378 m-webdriver/
BARRASA, Javier. Automatización plan
Pruebas en .NET. Microsoft. 13 de junio de pruebas funcional: Plataforma web de
de 2022. Disponible en la Universidad Politécnica de Madrid.
[Link] Tesis (optar por el grado en Ingeniería
es/dotnet/core/testing/#see-also Informática). Madrid: Universidad
Politécnica de Madrid, 2020.
Disponible en Tu primer test de aceptación con
[Link] Codeception [Mensaje en un blog].
PALOMINO_BARRASA.pdf Madrid: danielprimo (1 de agosto de
2019). [Fecha de consulta: 25 de junio de
DURAND, Sandra. Análisis y 2022]. Recuperado de
requerimientos de software [en línea]. [Link]
Huancayo: e-book, 2017 [fecha de test-de-aceptacion-con-codeception
consulta: 26 de junio de 2022].
Disponible en: Codeception. IntelliJ IDEA. 19 de enero de
[Link] 2022. Disponible en
9657d315c74 [Link]
-[Link]
Ejecución de pruebas funcionales. ¿Qué es Codeception? Ventajas y tipos
SoapUI. 17 de mayo de 2022. Disponible de pruebas [Mensaje en un blog]. Reino
en [Link] Unido: Duilio Palacios (17 de agosto de
automation/running-functional-tests/ 2014). [Fecha de consulta: 25 de junio de
2022]. Recuperado de
SoapUI [Mensaje en un blog]. Estadoa [Link]
Unidos: Wikipedia (24 de abril de 2021).
[Fecha de consulta: 25 de junio de 2022]. Atoum
Recuperado de
[Link] Running tests. Atoum. 8 de enero de
2016. Disponible en
SoapUI: jugando con web services [Link]
[Mensaje en un blog]. Madrid: Iván García ning_tests.html
Puebla (28 de diciembre de 2009). [Fecha
de consulta: 25 de junio de 2022]. Pruebas de caja blanca, caja negra y caja
Recuperado de gris [Mensaje en un blog]. Argentina:
[Link] Nadia Cavalleri (14 de octubre de 2020).
/28/introduccion-soap-ui/ [Fecha de consulta: 25 de junio de 2022].
Recuperado de
[Link]
caja-blanca-caja-negra-y-caja-gris/