Curso de testing en PHP con PHPUnit

Aprende a desarrollar tests unitarios en PHP con el framework PHPUnit
Material disponible
Intermedio
24 Clases 9 h
89€
65€
Precio en promoción
La creación de tests es un pilar fundamental del desarrollo moderno de software. No solo permite garantizar que el código sea más robusto y confiable, sino también facilita prácticas esenciales como el refactoring, la integración continua y el despliegue continuo. Adoptar una estrategia de testing ideal para crear código mantenible en proyectos de cualquier tamaño.

En EscuelaIT hemos abordado en muchas ocasiones la disciplina de testing, aportando mucho conocimiento de base para poder entender cómo se desarrollan los test, junto con toda la teoría relacionada con esta práctica. Un curso ideal para profundizar en ello es el Curso de Pruebas del Software.

Tenemos diversos cursos adicionales en el catálogo, pero todavía no habíamos cubierto  específicamente el testing en PHP. Es por ello que vamos a abordarlo con el framework para pruebas más popular existente en este lenguaje: PHPUnit.

Qué aprenderé en el Curso de testing en PHP con PHPUnit

  • Instalación y configuración del entorno para trabajar con PHPUnit
  • Desarrollar pruebas unitarias sobre clases PHP a partir de numerosos ejemplos
  • Pruebas de excepciones
  • Uso de Data Providers
  • Uso de varios tipos de dobles, mock, stub, fake
  • Cómo las pruebas nos abren técnicas como el refactoring
  • Cómo medir la cobertura de nuestras pruebas

Objetivos del curso

Explicar a los programadores en PHP, de manera práctica y a través de numerosos ejemplos, cómo realizar sus pruebas del software usando PHPUnit. Abordaremos las utilidades que nos ofrece el framework para desarrollar los tests de manera sencilla y eficiente, como los distintos asserts, data providers, preparación de las pruebas o el uso de dobles, sin olvidarnos de buenas prácticas y la aplicación de técnicas como el refactoring.

Por qué debes aprender Testing en PHP

Aprender pruebas del software es esencial para dominar las disciplinas de desarrollo de software moderno y nos permite subir un escalón fundamental en nuestro nivel como desarrollador.

En este curso aprenderemos a trabajar con PHPUnit, de modo que puedas saber cómo se implementan las pruebas en PHP. Además veremos cómo diseñar correctamente las pruebas con las herramientas que nos ofrece el framework.

Qué tengo que saber

Este es un curso específico de PHPUnit. Es muy práctico y aunque mencionaremos aspectos de la teoría de la disciplina de pruebas del software, pasaremos por encima sobre los distintos conceptos. Por ello es importante tomar antes el Curso de Pruebas del Software de EscuelaIT con Luis Fernández.

Obviamente, también hay que tener un buen control del lenguaje PHP y la programación orientada a objetos

Clases y contenidos

Introducción a PHPUnit y primeras prácticas

En los primeros vídeos del curso de PHPUnit vamos a explicar algunas generalidades de test y la organización de los proyectos PHP y las pruebas, junto con algunos conceptos de Composer para configurar el autoload de clases, tanto para los test como el código de producción. También realizaremos los primeros tests unitarios y exploraremos la configuración del framework de pruebas.

Presentación del curso de PHPUnit Gratis

En esta presentación del Curso de PHPUnit veremos los objetivos, el enfoque práctico y cuáles son las referencias a otros cursos recomendados para adquirir conocimientos teóricos fundamentales de Pruebas del Software, que iremos abordando por medio de ejemplos en el framework de pruebas de PHP.

Entorno de desarrollo Gratis

En este vídeo vamos a montar un proyecto PHP desde cero, creando una estructura de carpetas básica, con sus espacios de nombres (namespaces de PHP) para el código de test y el código de producción. Además veremos la instalación del propio PHPUnit.

Primeros tests unitarios con PHPUnit Gratis

En este vídeo vamos a realizar las primeras prácticas de tests unitarios, usando el framework PHPUnit. Realizaremos un enfoque basado en TDD, de modo que construiremos primero las pruebas y luego el código que queremos probar. Este mismo enfoque de TDD lo realizaremos a lo largo de todo el curso. Además veremos cuáles son los elementos principales de toda prueba (Given // When // Then) o (Arrange // Act // Assert).

Comando phpunit y alias

A continuación vamos a ver cómo utilizar el comando phpunit indicando diversas configuraciones por medio de flags. También explicaremos cómo podemos crear un alias del comando para no tener que repetir todo el tiempo la ruta del ejecutable de PHPUnit.

Método setUp() y tearDown()

El método setUp() de PHPUnit nos permite definir las acciones que queremos realizar para preparar todos los test de una clase de casos de test. También analizaremos el método tearDown() con el cual conseguimos deshacer cualquier tipo de acción después de los casos de test.

Configuración de las pruebas con phpunit.xml

Vemos cómo se crea y personaliza el archivo de configuración de las pruebas phpunit.xml.

Clase en vivo sobre PHPUnit

Veremos qué es PHPUnit y cómo podemos desarrollar nuestros primeros test unitarios en PHP. Una clase en vivo gratuita para presentar el Curso de PHPUnit.

Testing en PHP con PHPUnit

En esta clase vamos a presentar el curso de PHPUnit ofreciendo un conocimiento esencial sobre cómo realizar los test unitarios en PHP.

Pruebas unitarias con PHPUnit

En estos vídeos vamos a entrar en detalle sobre el desarrollo de las pruebas unitarias con PHPUnit. Primero estudiaremos la manera de crear juegos de test a partir de arrays de datos, para facilitar la creación de pruebas con distintos conjuntos de datos y expectativas sin repetir el código. Veremos distintas formas de decorar nuestros tests, incluyendo el mecanismo más moderno basado en atributos. Luego abordaremos distintos ejemplos donde practicaremos con aserciones y aprenderemos a trabajar con las excepciones.

Data providers de PHPUnit

Mediante los Data providers podemos definir conjuntos de datos sobre los cuales queremos realizar los tests. De este modo podemos declarar los datos de los test y los expectations en un mismo lugar, alimentando un método que se ejecutará por cada uno de los elementos del data provider, lo que nos ahorra gran cantidad de código prácticamente duplicado.

Atributos de PHP y PHPUnit

Los atributos son una nueva característica de PHP con la que podemos decorar elementos de software, introduciendo de una manera cómoda configuraciones declarativas en el código. Veremos como PHPUnit nos ofrece la posibilidad de decorar los métodos para indicar diversas configuraciones.

Aserciones en PHPUnit

En este primer vídeo dedicado a acepciones vamos a profundizar un poco entre los métodos disponibles para hacer asserts con el framework PHPUnit.

Aserciones para arrays

Vamos a ver una segunda tanda de aserciones disponibles en PHPUnit para conseguir comprobar los estados de los arrays. Dejando claro que estas son unas de las muchas aserciones que dispone el framework.

Comprobación de excepciones

Nuestros test también pueden, y deben, verificar que bajo ciertas circunstancias las clases van a levantar excepciones. Veremos algunos ejemplos en los cuales verificaremos que se levanta la excepción, que ésta es de un tipo de terminado, incluso que el mensaje recibido en la excepción es el que debe de ser.

Refactoring

A lo largo del curso mostramos diversas prácticas generalizadas para desarrollar las pruebas y el código de la aplicación, centrándonos en TDD. Adicionalmente en este vídeo queremos mostrar otra práctica frecuente que podemos realizar cuando tenemos pruebas, el refactoring.

Refactoring

Aunque tenemos un curso completo de Refactoring en EscuelaIT, en este vídeo vamos a ver cómo sería esa técnica y el modo en el que las pruebas nos permiten la red de seguridad necesaria para cambiar el diseño del software, sin modificar su funcionalidad, sabiendo que las clases seguirán funcionando correctamente.

Desarrollo de dobles para los test unitarios

Para poder realizar test unitarios necesitaremos doblar nuestras dependencias. En estos vídeos vamos a ver cómo se realiza esta labor en PHPUnit. Comenzaremos explicando cómo debemos diseñar un software para que se permita doblar y luego veremos cómo realizar distintos tipos de dobles con PHPUnit de manera práctica.

Dobles y diseño del software

Este es el primero de los vídeos dedicados a dobles de pruebas. Explicaremos que son los dobles de manera general y cómo el código que debemos de probar debe tener un diseño adecuado para poder implementar las técnicas de dobles. Veremos cómo se puede realizar la Inversión de Dependencias propuesta por SOLID y cómo inyectar la dependencia mediante el constructor. Esto lo veremos con un ejemplo sencillo que luego usaremos para poder implementar los dobles.

Dobles en PHPUnit con createMock()

En este vídeo vamos a ver el primero de los métodos para crear dobles utilizando el framework PHPUnit. Veremos cómo usar createMock() para crear un doble de tipo dummy.

Dobles en PHPUnit con createStub()

En este vídeo vamos a conocer un segundo método para crear dobles de pruebas en PHPUnit. Veremos como usar createStub() para crear un doble de tipo Stub.

Expectations en Mocks

En este vídeo vamos a aprender a crear un tipo de doble de pruebas del software llamado Mock. Para realizar este tipo de doble necesitamos configurar las expectations sobre el método createMock() de PHPUnit.

Resumen de dobles

En este último vídeo dedicado a los dobles de pruebas unitarias en PHPUnit vamos a realizar un resumen general que nos permita entender de manera global todo el panorama de los dobles. Veremos además cuáles son los casos de uso de los dos métodos para creación de dobles, createMock() y createStub(), de modo que sepamos perfectamente cuando usar uno u otro.

Bases de datos en tests unitarios

En los próximos vídeos veremos cómo realizar los test de clases que requieren de las bases de datos para poder hacer su trabajo.

Ejemplos de tests con bases de datos

En este vídeo vamos a ver unos ejemplos de casos de test que involucran bases de datos. En vez de dobles vamos a usar una base de datos SQLite en memoria. Implementaremos el mismo principio de Inversión de Dependencias para poder enviarle una conexión con base de datos distinta en las pruebas y en el código de producción.

Ejemplos de pruebas de validación en modelos

Vamos a ver cómo gestionar unas validaciones simples en el modelo que trabajaba con la base de datos y cómo podemos probar que ciertos métodos, si los llamamos con datos incorrectos, nos devuelven los correspondientes errores de validación.

Configuración de PHPUnit para visualizar cobertura de test

Cómo configurar PHPUnit para que al correr las pruebas también nos informe sobre la cobertura de test que estamos alcanzando.

Cobertura de los tests en PHPUnit

Cómo podemos obtener los porcentajes de cobertura de tests en PHPUnit. Veremos el proceso de configuración de Xdebug para usarlo para el cálculo de la cobertura de test en PHPUnit. Veremos cómo configurar el sistema para que nos genere un informe completo de la cobertura de pruebas que tenemos en nuestro proyecto.

Pruebas y automatización

Ejemplos de automatización de las pruebas con GitHub Actions para integración continua y despliegue continuo.

Cómo automatizar las pruebas con GitHub Actions

Un ejemplo de creación de un Action dentro de GitHub que nos permite ejecutar las pruebas después de hacer un commit en la rama main. Veremos cómo configurar el sistema de CI/CD de GitHub para que las pruebas se corran con cada actualización del repositorio Git.

Cómo proteger la rama main evitando commits cuyas pruebas hayan fallado

En este vídeo veremos cómo proteger la rama main del repositorio. Esto nos permite asegurarnos que las pruebas han sido ejecutadas de manera exitosa antes de incorporar cambios en la rama main.

Tutoría final PHPUnit

Vamos a desarrollar mejoras en los test de la clase de presentación en vivo del curso de PHPUnit, para aplicar diversos conocimientos que hemos ido abordando a lo largo del curso.

Valoraciones

José Rubén Mariño García

¿Conoces nuestra tarifa plana?

Toda la formación de EscuelaIT, con más de 200 cursos completos para aprender las más variadas tecnologías de programación, diseño y marketing online. Todo! con tu suscripción.

Suscríbete