10 herramientas de prueba de PHP para complementos de WordPress
Publicado: 2022-08-05Ningún software está libre de errores. Este es un axioma que se aplica a todos los lenguajes de programación y todas las aplicaciones.
Cuando esos errores se implementan dentro de su sitio web en producción, puede sufrir consecuencias adversas de diversa gravedad. Estos son algunos ejemplos, que van desde molestos hasta económicamente perjudiciales:
- Leve: un usuario que no puede hacer clic en un enlace roto.
- Grave: No funciona el botón "Enviar" de un formulario de contacto, que el usuario descubre solo después de haber redactado su mensaje.
- Grave: una pasarela de pago no configurada correctamente, lo que hace que los usuarios no puedan comprar productos en su tienda de comercio electrónico y, por lo tanto, abandonen el sitio.
Ninguna herramienta por sí sola es suficiente para manejar todos los aspectos de la prueba de una aplicación desde todos los ángulos posibles. De hecho, además de encontrar errores, es vital ejecutar pruebas adicionales para validar otras funciones de la aplicación, como:
- Accesibilidad y usabilidad
- Rendimiento aceptable
- Manipulación de tráfico y carga
En este artículo, revisaremos 10 herramientas creadas por la comunidad de código abierto que pueden ayudar a crear una pila para probar el código PHP en los complementos de WordPress. Algunas de estas herramientas fueron diseñadas específicamente para probar código PHP; otros están destinados a probar el código de WordPress; y se crearon algunas otras herramientas para manejar algunas funciones genéricas que son útiles para las pruebas.
1. Dev Kinsta
DevKinsta es una suite de desarrollo local para sitios de WordPress. Con solo proporcionar algunos detalles básicos, una instancia local de un sitio de WordPress se instala de inmediato y viene con varias herramientas de desarrollo útiles, como una bandeja de entrada de correo electrónico, un administrador de base de datos y un registro para facilitar la resolución de problemas.
Los desarrolladores y diseñadores normalmente utilizan DevKinsta al crear sus temas y complementos de WordPress. Pero también se puede utilizar como servidor web local para ejecutar pruebas de integración y funcionalidad. Esto se logra junto con una herramienta HTTP que lo ayuda a verificar que el contenido y los encabezados de su respuesta sean correctos.
Las características principales de DevKinsta son:
- Fácil de activar un nuevo entorno de WordPress y eliminarlo una vez que ya no sea necesario
- Permite probar contra cualquier versión compatible de PHP y WordPress, y cualquier combinación de ellos.
- Se integra a la perfección con MyKinsta, donde los usuarios pueden crear una copia de seguridad externa de sus sitios y datos
2. Unidad PHP
PHPUnit es un marco de prueba orientado al programador para PHP. Es el framework más popular para ejecutar pruebas unitarias en código PHP, con el objetivo de validar unidades individuales de código fuente.
Las pruebas de PHPUnit permiten a los desarrolladores encontrar problemas lo antes posible dentro del ciclo de desarrollo, lo que ayuda a garantizar que no se hayan introducido regresiones en el código (es decir, los cambios en alguna parte del código no han causado problemas en otro lugar).
Las características principales de PHPUnit son:
- Prueba de nuevas funciones
- Validación de código recién refactorizado
- Puede ser completamente automatizado y ejecutado dentro del proceso de Integración Continua de su elección
- depuración
- Documentación automática sobre el uso esperado a través de la invocación de funciones y restricciones
- Permite el enfoque de desarrollo basado en pruebas (TDD) en el que los desarrolladores primero crean las primeras pruebas y luego la funcionalidad.
3. Mono Cerebral
Brain Monkey es una utilidad de prueba para PHP y WordPress. Proporciona herramientas independientes del marco que le permiten redefinir los métodos PHP y probar el comportamiento de cualquier aplicación PHP. También proporciona herramientas específicas para probar el código de WordPress.
Las principales características de Brain Monkey son:
- Permite que las pruebas unitarias interactúen con bibliotecas externas descargadas
- Permite la invocación de funciones de WordPress sin necesidad de cargar el entorno de WordPress
- Puede afirmar que las funciones de WordPress (como
add_filter
odo_action
) invocan la funcionalidad como se esperaba
4. Falsificador de cerebros
Brain Faker usa Faker (una popular biblioteca de PHP para generar datos falsos) y Brain Monkey para proporcionar una generación fácil de objetos de WordPress falsos y funciones relacionadas para que las pruebe, que incluyen:
- Instancias de
WP_Post
y funciones relacionadas simuladas comoget_post
yget_post_field
- Instancias de
WP_User
y funciones relacionadas simuladas comoget_userdata
,get_user_by
,user_can
y más - Instancias de
WP_Term
y funciones relacionadas simuladas comoget_term
yget_term_by
- Instancias
WP_Comment
- Instancias de
WP_Site
y funciones relacionadas simuladas comoget_site
- Instancias de
WP_Post_Type
y funciones relacionadas simuladas comoget_post_type_object
ypost_type_exists
- Instancias de
WP_Taxonomy
y funciones relacionadas simuladas comoget_taxonomy
ytaxonomy_exists
- Instancias
WP_Error
Las características principales de Brain Faker son:
- Inyecta datos de WordPress falsos pero realistas en la prueba unitaria: acceder a la fecha de modificación de una publicación falsa se comportará como una fecha (p. ej
2022-04-17T13:06:58+00:00
), el nombre de un usuario será adecuado (p. ej.,"John Smith"
), una instancia de publicación falsa es creada por una instancia de usuario falsa, y así sucesivamente - Los datos falsos pueden proporcionarse previamente o generarse aleatoriamente
- Extensible: los desarrolladores pueden simular clases y funciones desde sus propios complementos de WordPress
5. Burla
Mockery es un marco de objeto simulado de PHP simple pero flexible destinado a usarse junto con PHPUnit, PHPSpec o cualquier otro marco de prueba de unidad. Ofrece un marco doble de prueba capaz de definir todas las posibles operaciones e interacciones de objetos utilizando un lenguaje específico de dominio (DSL) legible por humanos.
Las características principales de Mockery son:
- Habilita la generación flexible de objetos simulados y stubs (que brindan respuestas enlatadas predefinidas a llamadas específicas realizadas durante las pruebas)
- Mejora las capacidades de aislamiento de prueba de PHPUnit
- API flexible para expresar expectativas simuladas, imitando tanto como sea posible una descripción en lenguaje natural (por ejemplo,
$mock->shouldReceive('myMethod')->once()->andReturn('Hello world!');
) - Pruebas unitarias utilizando objetos simulados en memoria para evitar la necesidad de acceder a sistemas más lentos (como bases de datos, sistemas de archivos o servicios externos)
- Puede burlarse del comportamiento determinista y no determinista
6. Herramienta de exportación nativa de WordPress
La herramienta de exportación nativa de WordPress descarga los datos de WordPress del sitio en su dispositivo como un archivo XML, incluidas publicaciones, páginas, tipos de publicaciones personalizadas, comentarios, campos personalizados, categorías, etiquetas, taxonomías personalizadas, usuarios y medios. El archivo XML presenta un formato personalizado (llamado archivo WordPress eXtended RSS o WXR) que se puede importar a cualquier sitio de WordPress.
Esta herramienta no está diseñada específicamente para realizar pruebas. Sin embargo, su utilidad proviene de poder crear instantáneas de la base de datos de WordPress que contienen un conjunto de datos adecuado, que luego se puede usar para realizar pruebas. Esto significa que el sitio de WordPress en producción, que contiene datos reales, se puede exportar e importar a una instancia de desarrollo o ensayo para probar nuevas funciones.
Las características principales de la herramienta de exportación de WordPress son:
- Creación de datos de prueba usando un sitio real de WordPress
- Archivo de exportación compartible de toda la base de datos
- Útil tanto para integración como para pruebas unitarias
7. Beber
Guzzle es un cliente PHP HTTP que facilita el envío de solicitudes HTTP y la integración con servicios web.
Guzzle es una herramienta genérica, por lo que la prueba es solo uno de sus posibles casos de uso. Junto con un servidor web local como DevKinsta, Guzzle permite ejecutar pruebas de integración: puede usar Guzzle para enviar una solicitud HTTP contra el servidor web de desarrollo y luego pasar la respuesta a una prueba unitaria en PHPUnit que verifica el contenido y los encabezados. se establecen como se esperaba.
Las características principales de Guzzle son:
- Cumple con la recomendación estándar de PHP "PSR-7" (para interfaces de mensajes HTTP), lo que evita el bloqueo de proveedores
- Sencillo y rápido
- Las pruebas se ejecutan en un sitio de WordPress real, lo que aumenta la confiabilidad
- Se puede ejecutar desde PHPUnit para mayor facilidad y velocidad.
- Las pruebas de integración se pueden automatizar y agregar al proceso de integración continua
8. WP-CLI
WP-CLI es la interfaz de línea de comandos para WordPress. Con él, puede actualizar complementos, configurar instalaciones multisitio y mucho más, sin usar un navegador web.
WP-CLI no es específicamente una herramienta de prueba, pero la prueba se encuentra entre sus muchos casos de uso. Por ejemplo, después de activar un nuevo servidor web de desarrollo, puede ejecutar un script bash que contiene comandos WP-CLI para importar datos de prueba al sitio de WordPress, crear usuarios con las funciones y capacidades adecuadas, instalar complementos de terceros necesarios y otras tareas de este tipo.
Como el script con los comandos WP-CLI se puede almacenar en su repositorio de Git, el proceso para ejecutar las pruebas de integración se puede automatizar e integrar dentro de su proceso de Integración Continua:
- Use la herramienta de exportación de WordPress para generar datos de prueba reales y guárdelos en el repositorio de Git.
- Use DevKinsta para lanzar un servidor web con una nueva instancia de WordPress.
- Use WP-CLI para importar los datos de prueba al sitio de WordPress (DevKinsta se puede operar a través de WP-CLI).
- Cree una prueba de unidad en PHPUnit para que Guzzle ejecute una solicitud HTTP contra el servidor web para verificar el contenido y los encabezados de su respuesta.
Las características principales de WP-CLI son:
- Permite la ejecución remota de comandos contra la instancia de WordPress a través de una interfaz de línea de comandos
- Extensible con otras herramientas
- Mejora las capacidades de la pila de prueba
- Permite la automatización completa del proceso.
9. Depuración X
XDebug es una extensión para PHP que proporciona una gama de funciones para mejorar la experiencia de desarrollo de PHP, incluida la depuración, mejoras en el informe de errores de PHP, seguimiento, creación de perfiles y análisis de cobertura de código.
XDebug no lo ayudará a probar su código, pero lo ayudará a descubrir dónde está el error. La combinación de XDebug con PHPUnit es particularmente efectiva: si una prueba falla y no puede encontrar el origen del problema, puede usar XDebug para agregar puntos de interrupción en el código de prueba de la unidad. Cuando vuelva a ejecutar la prueba unitaria, la secuencia de comandos PHP se detendrá en cada uno de esos puntos de interrupción, lo que le permitirá inspeccionar el estado actual de la ejecución (pila de llamadas, valores de propiedades y objetos, etc.) e intentar descubrir qué está mal.
Las características principales de XDebug son:
- Cuenta con integraciones para editores de PHP populares, incluidos VS Code, PHPStorm y Sublime
- Perfila cuánto tiempo se dedica a cada llamada de función y cuánta memoria consume
- Mucho más poderoso que simplemente usar
var_dump
para depurar código - Permite la modificación de valores de variables sobre la marcha al hacer una pausa en los puntos de interrupción
10. PHP Stan
PHPStan es una herramienta de análisis estático para PHP, diseñada para encontrar errores en el código incluso antes de escribir las pruebas.
El objetivo de PHPStan es reducir la cantidad de pruebas que los desarrolladores deben escribir. Esta herramienta es la primera que se ejecuta en la pila de pruebas y detecta de manera preventiva tantos errores como sea posible. Solo aquellos errores que no pueden deducirse del análisis estático (por ejemplo, aquellos con lógica defectuosa) deben validarse mediante pruebas unitarias.
PHPStan funciona escaneando todo el código base y buscando discrepancias. Por ejemplo, el valor de respuesta de una función que devuelve un valor flotante no se puede asignar a un parámetro de función de tipo entero. Siempre que el código contenga tal ocurrencia, es un error potencial, y PHPStan lo alertará durante la etapa de desarrollo, justo mientras está escribiendo el código de la aplicación.
Las características principales de PHPStan son:
- Automatización e integración dentro de su proceso de Integración Continua existente
- Localiza muchos errores complicados, como las discrepancias de tipo
- Escanea todo el código base y encuentra errores en partes del código que rara vez se ejecutan
- Organizado en niveles de complejidad creciente para permitir una integración gradual
- Presenta extensiones para los marcos PHP y CMS más populares, incluidos Symfony, Laravel, Doctrine, Nette y WordPress
Resumen
El costo de que los errores pasen desapercibidos en su aplicación en producción puede ser perjudicial para su reputación e ingresos, por lo que debe intentar erradicarlos antes de que afecten a sus usuarios.
En aplicaciones complejas, es casi imposible tener un 100 % de confianza en que no contendrá errores. Debido a esto, debe configurar un proceso para encontrar y eliminar tantos errores como sea posible durante el ciclo de desarrollo inicial.
Con un conjunto de herramientas de prueba bien diseñado, puede minimizar en gran medida las posibilidades de que su aplicación se comporte de manera inesperada. La comunidad de código abierto ha creado y puesto a disposición muchas herramientas para probar los diferentes aspectos de una aplicación, ¡lo cual puede y debe hacer! - hacer uso de para producir una pila de prueba completa.
En este artículo, revisamos 10 herramientas para ayudarlo a lograr sus objetivos para probar el código PHP en un complemento de WordPress.
¿Cuál de estas herramientas usaste para tu último proyecto? ¡Háganos saber lo que construyó con él en la sección de comentarios a continuación!