
Tu suite de tests pasa al 100 %. Verde absoluto. Llevas semanas sin que falle nada. Suena bien, pero hay un problema: los bugs siguen apareciendo en producción. Tus tests no los detectan porque llevan meses probando exactamente lo mismo, de la misma forma, con los mismos datos. Bienvenido a la paradoja del pesticida.
El término lo acuñó Boris Beizer en Software Testing Techniques (1990) y es uno de los siete principios fundamentales del testing según ISTQB. La idea es sencilla: si aplicas el mismo pesticida una y otra vez, los insectos desarrollan resistencia y dejan de morir. En testing ocurre lo mismo: si ejecutas los mismos tests repetidamente, dejan de encontrar defectos nuevos.
No es que los tests estén mal escritos. Es que el software evoluciona, los patrones de uso cambian y las zonas de riesgo se desplazan. Pero los tests siguen mirando donde miraban el primer día.
Hay razones técnicas y psicológicas, y suelen combinarse:
Si reconoces varias de estas situaciones, probablemente la paradoja ya esté instalada en tu equipo:
La paradoja del pesticida no se resuelve añadiendo más tests del mismo tipo. Hay que cambiar el enfoque. Estas son las estrategias que mejor funcionan en equipos reales.
Esta es, en mi experiencia, la medida con mayor impacto inmediato. Cuando un QA lleva meses en el mismo proyecto, desarrolla puntos ciegos: sabe cómo funciona el sistema, conoce los atajos y, sin darse cuenta, deja de cuestionar lo que ya tiene interiorizado.
La rotación rompe esa inercia. Un QA que llega fresco a un proyecto:
Cómo implementarlo sin caos
Los tests automatizados verifican lo que ya sabes. El testing exploratorio descubre lo que no sabías que podía fallar. Pero “explorar libremente” sin estructura es poco efectivo. Usa sesiones con carta de misión:
El testing exploratorio no sustituye a la automatización: la complementa cubriendo precisamente los huecos que la suite automatizada no alcanza.
Igual que revisas y refactorizas código de producción, la suite de tests necesita mantenimiento activo:
Un buen momento para esta revisión es al final de cada sprint o tras cada release. No hace falta una auditoría masiva: con dedicar una o dos horas por ciclo ya se nota la diferencia.
La cobertura de código mide cuántas líneas se ejecutan. El mutation testing mide cuántos bugs detectarían tus tests si se introdujeran. Herramientas como Stryker inyectan pequeñas mutaciones en el código (cambiar un > por >=, eliminar una condición, invertir un booleano) y comprueban si algún test falla.
Si una mutación sobrevive, significa que tus tests no detectarían ese tipo de bug. Es la forma más objetiva de saber si tu suite realmente protege el código o solo lo recorre.
Si siempre pruebas con el usuario test@example.com y la contraseña 123456, solo estás validando un camino. Introduce variabilidad:
Sienta a un QA y a un desarrollador delante de la misma pantalla. El desarrollador conoce los atajos del código, las condiciones de carrera que le preocupan, los edge cases que no documentó. El QA aporta la mentalidad destructiva y el conocimiento de cómo el usuario real interactúa con el sistema.
Esa combinación encuentra bugs que ninguno de los dos encontraría solo. Es especialmente útil antes de releases importantes o en funcionalidades críticas.
La paradoja del pesticida es un recordatorio de que el testing no es una actividad que se configura una vez y se olvida. Es un proceso vivo que necesita adaptarse al ritmo del software que protege.
Si tu suite lleva meses sin encontrar nada, no celebres: investiga. Rota a las personas, varía las técnicas, cuestiona los datos y revisa lo que ya tienes. El objetivo no es tener más tests, sino tener los tests adecuados en cada momento.
Empieza por algo pequeño. Esta semana, elige un módulo crítico y pide a alguien que no lo conozca que lo pruebe durante una hora. Te sorprenderá lo que encuentra.
Los scripts E2E necesitan datos sensibles —tokens de API, credenciales, URLs privadas— sin que aparezcan en el código. En JMO Labs hemos añadido variables de script con modo privado: se inyectan automáticamente, se enmascaran en los logs y se acceden con una sintaxis limpia.

Los tests E2E se rompen con cada cambio de interfaz. En JMO Labs construimos un pipeline de 5 fases con IA que planifica, ejecuta, repara selectores, diagnostica fallos y verifica resultados de forma autónoma. La caché de selectores hace que cada ejecución sea más rápida que la anterior.

Playwright no es solo para tests E2E. En JMO Labs lo usamos como motor completo: 9 fases de comprobación, localizador de 9 estrategias con self-healing, grabación de vídeo, testing responsive con viewports reales y accesibilidad con axe-core.