automatización de pruebas unitarias de códigos

14
Ing. Leonardo Torres Argomedo

Upload: eldiego1790

Post on 19-Jan-2016

16 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Automatización de Pruebas Unitarias de Códigos

Ing. Leonardo Torres Argomedo

Page 2: Automatización de Pruebas Unitarias de Códigos

Pruebas unitarias de códigos PHP

Las pruebas unitarias de softwarepermiten evitar errores a granescala que con el paso del tiemporequieren mayor inversión para sucorrección. Sin embargo a veces losframeworks de apoyo disponiblespara realizar estas pruebas no sonsuficientes por sí solos y necesitanser automatizados.

Aquí se presenta el desarrollo deuna estrategia de diseño para laautomatización de pruebasunitarias de códigos PHPutilizando el framework PHPUnit.

Page 3: Automatización de Pruebas Unitarias de Códigos

Las pruebas unitarias de softwarepermiten evaluar por separado elcorrecto funcionamiento de loscódigos que lo componen. En laactualidad, existen diferentessoluciones que permiten desarrollarlas pruebas unitarias, pero carecende facilidad en su manejo, lo queconlleva a que el programadordesista de su uso. Por lo anterior esnecesario contar con uncomponente intermedio que permitala comunicación con dichas libreríaso frameworks de una manerasencilla, rápida y eficaz.

Page 4: Automatización de Pruebas Unitarias de Códigos

La siguiente estrategia de diseño permite llevar a cabola automatización de pruebas unitarias para archivosde código escritos en el lenguaje PHP a través de unmódulo web que es desarrollado a su vez en dicholenguaje.

Existen dos enfoques principales para el diseño depruebas unitarias. Un enfoque de caja blancaorientado a la estructura del código y otro enfoque decaja negra orientado al correcto funcionamiento deéste a partir del análisis de entradas y salidas queposee y verificando que el resultado es el esperado.

Page 5: Automatización de Pruebas Unitarias de Códigos

ESTÁNDAR DE CODIFICACIÓN DISEÑADO Un estándar de codificación es un

conjunto de reglas que se utilizan paraescribir archivos de código fuente con elobjetivo de lograr estructuras de códigomucho más comprensibles e identificablespara otros programadores diferentes alautor.

Para realizar la correcta automatización depruebas unitarias para códigos PHP sedetermina que es necesario proponer unestándar de codificación que permitageneralizar la estructura de los códigos aser probados ya que ésta dependedirectamente de las reglas de desarrollode cada ambiente y desarrollador.

Page 6: Automatización de Pruebas Unitarias de Códigos

Estándar de codificación PHP

Page 7: Automatización de Pruebas Unitarias de Códigos
Page 8: Automatización de Pruebas Unitarias de Códigos
Page 9: Automatización de Pruebas Unitarias de Códigos

ESTRATEGIA DE DISEÑO DEPRUEBAS La estrategia se fomenta en un

procedimiento dividido en pasos bajolos cuales el desarrollador o encargadode pruebas podrá seleccionar susarchivos de código PHP o módulos declase, archivos que contienen funcionesque ejecutan tareas específicasentregando resultados a partir de unaserie de posibles entradas de datos.

La prueba unitaria busca responder silas funciones que componen el códigocumplen o no con el comportamientoesperado. A través de esta estrategia deautomatización el proceso seráautomatizado y se apoyará en elframework de pruebas unitariasPHPUnit.

Page 10: Automatización de Pruebas Unitarias de Códigos

La estrategia de diseño se compone de los pasos que se detallan a continuación.

PASO 1: Seleccionar Módulos de Clase:

Un módulo de clase es launidad de código máspequeña a la cual puederealizarse una pruebaunitaria. Se seleccionarán deuno en uno los archivos deeste tipo para llevar a cabo laejecución de las pruebas.

Page 11: Automatización de Pruebas Unitarias de Códigos

PASO 2: Validar estándar de codificación:

Después de realizar la selección de los módulos declase PHP comienza un ciclo iterativo por cada uno delos archivos de código PHP seleccionados. El archivopasa por una validación del estándar de codificaciónpropuesto.

PASO 3: Identificar tipos de parámetros:

Después de validar el estándar de codificación delarchivo seleccionado, se detectan las funciones ométodos que lo componen y por cada parámetro decada función o método se identifica el tipo deparámetro. Los tipos de parámetros seleccionadosserán almacenados en memoria para su posteriormanejo.

Page 12: Automatización de Pruebas Unitarias de Códigos

PASO 4: Identificar Asserts: Luego de identificar los tiposde parámetros de las funciones se identifican los posiblesasserts a partir de estos. Un assert es la salida o resultadoesperado de cierta entrada en la función o método aprobar. En PHPUnit son una colección de métodosestáticos para verificar los valores actuales con los valoresesperados.

PASO 5: Generar casos de Prueba:

Se genera o diseña una clase con los casos de prueba delarchivo PHP a partir del uso de la librería PHPUnit y sucomponente PHPUnit Framework TestCase. Con estecomponente es posible diseñar y ejecutar diferentes casosde prueba a partir de la lista de entradas generada en elpaso anterior.

Page 13: Automatización de Pruebas Unitarias de Códigos

PASO 6: Ejecutar la Prueba con PHPUnit:

Se ejecuta la prueba mediante el Framework depruebas PHPUnit. Se valida e inspeccionan losarchivos de casos de prueba definidos, verificando quese han contemplado todas las pruebas necesarias, queno existen pruebas duplicadas o implícitas en otras yque el tiempo estimado no sobrepasa la fecha límite deejecución.

Page 14: Automatización de Pruebas Unitarias de Códigos

PASO 7: Preparar Resultados:

Por cada una de las pruebas ejecutadas se produce un logde resultados. Dicho log indicará: Número de pruebas: Elnúmero de pruebas que han sido llevadas a cabo mediantela invocación de PHPUnit y los archivos de casos de pruebaen PHP.

Número de aciertos: Es el número de resultados esperadosa partir de los datos de entrada ingresados después de unaejecución de prueba mediante PHPUnit.

Número de fallos: Es el número de resultados no esperadosa partir de los datos de entrada ingresados después de unaejecución de prueba mediante PHPUnit.