La mayoría de los tipos de pruebas de software utilizan un plan de pruebas cuidadosamente definido para garantizar la cobertura. Sin embargo, aunque estos parámetros cubren muchas de las eventualidades del uso de un software, no siempre imitan el comportamiento de un usuario que no está familiarizado con la aplicación y que simplemente intenta interactuar con ella de forma exploratoria: El monkey testing.
En este artículo, echaremos un vistazo a todo lo relacionado con las pruebas con monos, incluido el software de pruebas con monos, los procesos, los tipos, los enfoques y mucho más.
¿Qué son las pruebas con monos?
La prueba del mono es una técnica de prueba de software cada vez más popular. Consiste en enviar entradas aleatorias a una aplicación para simular la imprevisibilidad de la interacción con la interfaz de usuario.
El objetivo es encontrar errores o fallos que podrían ser difíciles de detectar con casos de prueba predefinidos. Una prueba del mono imita la forma en que una persona sin experiencia ni conocimientos de una aplicación podría explorar el software de forma aleatoria.
Esta técnica es una buena opción tanto para
carga
como para
pruebas de estrés
aplicaciones. En efecto, las pruebas proporcionan entradas aleatorias continuas en un intento de romper la aplicación.
Existen muchas similitudes entre las pruebas con monos y las pruebas
pruebas ad hoc
En particular, su naturaleza aleatoria y la falta de dependencia de un plan de pruebas. Sin embargo, existen suficientes diferencias entre ambos como para considerarlos enfoques distintos.
Aunque algunos desarrolladores sugieren que las pruebas con monos son un tipo de pruebas ad hoc, una diferencia significativa entre ambas es que las pruebas con monos pueden realizarlas personas sin ningún conocimiento de la aplicación.
La prueba del mono consiste en no tener un plan de pruebas. Se trata de alimentar entradas aleatorias con el objetivo de colapsar el software.
¿Por qué se llama prueba del mono?
No hay consenso sobre por qué esta técnica se denomina «prueba del mono». Sin embargo, hay algunas teorías convincentes detrás del nombre.
Teoría 1: Teorema del mono infinito
La primera teoría sugiere que el nombre tiene que ver con el teorema del mono infinito, una metáfora utilizada para hablar de probabilidad estadística. En resumen, afirma que si un mono se sentara delante de una máquina de escribir y machacara teclas aleatorias durante un tiempo infinito, en algún momento produciría las obras completas de William Shakespeare.
La idea aquí es que las pruebas con monos simulan este machaqueo aleatorio de teclas y, con tiempo suficiente, cubrirán todas las eventualidades a las que se enfrentará la aplicación en producción.
Teoría 2: «El mono» de Macintosh
La otra teoría es que el nombre proviene de una aplicación de MacOS de 1983 llamada «El Mono». En resumen, el equipo que trabajaba en el primer ordenador Macintosh quería encontrar una forma de someter su máquina a pruebas de estrés.
Pensaron que si tenían un mono aporreando frenéticamente las teclas y moviendo el ratón, les ayudaría a probar la resistencia del ordenador. No tenían un mono vivo a mano, así que crearon una aplicación que podía simular este tipo de uso, y la llamaron «El mono».
¿Por qué son importantes las pruebas con monos?
La gran razón por la que las pruebas monkey son importantes es que ayudan a los equipos a descubrir casos extremos o comportamientos inesperados dentro de una aplicación. La idea es que los desarrolladores puedan utilizar las pruebas con monos junto con métodos más tradicionales para hacerse una mejor idea de cómo será recibida la aplicación en la calle.
Ni siquiera las pruebas exhaustivas de un producto pueden competir con decenas de miles o más de usuarios comprometidos con una aplicación durante un largo periodo de tiempo. En un pequeño porcentaje de estos casos, los usuarios pedirán a la aplicación que haga algo inesperado. Descubrir todos estos escenarios mediante casos de prueba es casi imposible.
Las pruebas con monos intentan cubrir estos escenarios casi aleatorios. Cuando los desarrolladores crean un caso de prueba, suelen tener un conocimiento profundo de la aplicación. Entienden cuáles son los objetivos de los usuarios y conocen la mejor secuencia de interacciones que deben utilizar para conseguir algo dentro de una aplicación.
Aleatorizar estas entradas significa que la aplicación se prueba de formas que los desarrolladores no han tenido en cuenta. En general, esto mejora la resistencia y durabilidad generales de un software y garantiza que pueda salir al mundo y enfrentarse a la imprevisibilidad de un amplio abanico de usuarios sin bloquearse.
¿Cuándo se deben realizar pruebas con monos?
Las pruebas con monos son una excelente técnica de prueba complementaria. Su mayor ventaja reside en su capacidad para encontrar fallos inesperados que no se descubrirían con los métodos de prueba de software más tradicionales. Como tal, es mejor cuando se utiliza junto con métodos como:
Por lo general, los desarrolladores emplean la prueba del mono al principio del proceso de prueba. Resulta especialmente útil cuando se carece de planes de pruebas predefinidos a los que recurrir.
¿Cómo se realizan las pruebas con monos?
En un pasado no tan lejano, las pruebas con monos se realizaban manualmente. Se emplearon probadores que pulsaban botones, introducían texto, seleccionaban objetos, etc., para ver cómo aguantaba el sistema entradas poco convencionales. Aquí hay problemas evidentes. En primer lugar, lleva bastante tiempo. En segundo lugar, hay pocas garantías de que estas acciones cubran todas las eventualidades.
Ejemplos de pruebas manuales con monos
He aquí algunos ejemplos de cómo se realizan las pruebas manuales con monos. También puede darle una idea de lo que pretenden simular las pruebas automatizadas con monos.
- El probador navega por un sitio web haciendo clic en enlaces aleatorios para ver si pueden bloquear la aplicación o conducir a páginas inesperadas.
- Un probador introduce textos aleatorios en un campo de formulario para ver cómo responde la aplicación
- El probador arrastra y suelta iconos y objetos para ver si se comportan como se espera o arrojan resultados no deseados.
Diferentes tipos de pruebas con monos
Hay tres tipos principales de pruebas de mono que los desarrolladores utilizan para descubrir información distinta sobre la resistencia de sus aplicaciones.
1. Pruebas con monos tontos
La prueba del mono tonto describe un enfoque en el que el probador no sabe nada sobre la aplicación que se está probando. En su lugar, se le pide al probador que curiosee sin ser consciente en absoluto del flujo de trabajo, pulsando botones, introduciendo texto, etc. Esta técnica puede ayudar a descubrir fallos importantes de los que los desarrolladores no son conscientes.
2. Pruebas con monos inteligentes
Con las pruebas smart monkey, el probador conoce un poco la aplicación y sus objetivos, e incluso tiene información detallada sobre su funcionamiento. Este proceso también utiliza un tipo más centrado de entrada aleatoria que está diseñado para empujar la aplicación más allá de límites particulares. Utilizar este enfoque es bueno tanto para las pruebas de estrés como para las de carga.
3. Pruebas con monos brillantes
Las pruebas con monos brillantes son el siguiente nivel de las pruebas con monos inteligentes. El probador tiene un conocimiento sólido y exhaustivo de la aplicación y se elige en función de este conocimiento. Este descuido puede ayudar al probador a descubrir muchos errores porque debe entender el producto desde la perspectiva del usuario.
Ventajas e inconvenientes de las pruebas con monos
Antes de decidirse a utilizar la técnica de la prueba del mono, debe comprender sus pros y sus contras.
Ventajas de las pruebas con monos
1. Encontrar errores raros u ocultos
Quizá el beneficio más convincente de las pruebas con monos sea la capacidad de la técnica para descubrir fallos, defectos o comportamientos que de otro modo pasarían desapercibidos. Encontrar estos casos extremos es un reto con las técnicas de prueba tradicionales, por lo que las pruebas monkey son una forma sólida de comprobar fallos, corrupciones de datos y cualquier otra cosa que amenace la estabilidad de una aplicación.
2. Garantiza la solidez
Las pruebas mono están diseñadas para ver cómo responde una aplicación a las condiciones impredecibles a las que se enfrentará durante su uso en el mundo real. Cuando una aplicación se pone en manos del usuario, dará lugar a un montón de entradas diferentes que los desarrolladores no pueden prever. Las pruebas con monos imitan esa situación, lo que da lugar a construcciones más fiables.
3. Relación coste-eficacia
En comparación con otros tipos de pruebas, las pruebas con monos son muy rentables. Esto se debe a varias razones. En primer lugar, no necesitas dedicar mucho tiempo a diseñar casos de uso para tu aplicación. Además, las herramientas de software de pruebas con monos están automatizadas en gran medida, lo que libera tiempo de los desarrolladores para otras tareas y le permite ahorrar dinero.
4. Versatilidad
Una de las mejores ventajas de las pruebas con monos es que pueden realizarlas personas sin conocimientos técnicos. De hecho, en algunos casos, es preferible tener a alguien completamente verde. Además, estas pruebas son muy fáciles de configurar, lo que reduce la dependencia de ingenieros cualificados.
5. Detección precoz de errores
Detectar y resolver los errores en una fase temprana del ciclo de desarrollo ahorra tiempo. Las pruebas con monos introducen un nivel de aleatoriedad en las pruebas, lo que puede ayudarle a encontrar fallos en su código cuando son fáciles de corregir.
Desventajas de las pruebas con monos
1. Cobertura
Aunque las pruebas mono pueden mejorar la cobertura de las pruebas, carecen de la minuciosidad planificada y estratégica de otros tipos de pruebas. En efecto, como estás bombardeando la aplicación con entradas aleatorias, estás a merced del caos a la hora de encontrar errores. Eso no quiere decir que no lo encuentre todo, pero sin una estrategia clara y predefinida, no se puede estar seguro al 100% de que se ha capturado todo.
2. Aplicaciones limitadas
La prueba del mono no es adecuada para todo tipo de aplicaciones. Es ideal para aplicaciones complejas con muchas características y funciones diferentes que, sobre todo, pueden dar lugar a interacciones inesperadas con el usuario. Los programas que ofrecen funciones más rígidas y predecibles tienen menos probabilidades de beneficiarse de estas pruebas.
3. Lleva mucho tiempo
Las pruebas manuales con monos llevan mucho tiempo. Requiere muchas interacciones con módulos y software, sin garantía de que en cada sesión se descubran errores. Por supuesto, se puede automatizar el proceso, lo que ahorra mucho tiempo y recursos.
4. Falsos positivos
Debido a la naturaleza caótica o aleatoria de las pruebas con monos, algunas entradas pueden simular escenarios que no ocurrirán durante el uso del producto en el mundo real. Esta situación puede dar lugar a la generación de falsos positivos, llevando a los codificadores a arreglar problemas que no son necesarios.
¿Qué es la prueba del mono del caos?
Las pruebas del caos son una técnica de ingeniería de software que utiliza experimentos controlados y deliberados diseñados para perturbar un sistema (e incluso inducir fallos) con el fin de evaluar su resistencia y capacidad de recuperación.
La idea de romper intencionadamente un sistema para garantizar su resistencia es bastante común en el ámbito del desarrollo de software, y estos métodos suelen dar como resultado construcciones que los ingenieros pueden respaldar.
En 2008, tras sufrir una corrupción de tres días en su base de datos, el popular servicio de streaming Netflix decidió migrar a Amazon Web Services (AWS). El objetivo era evitar puntos únicos de fallo y reducir los problemas de escalabilidad derivados de la ampliación de su servicio.
El equipo implementó la prueba del mono del caos para probar instancias de cara al público en la infraestructura de AWS. Los beneficios fueron dobles:
- El proceso puso al descubierto puntos débiles que los ingenieros de Netflix pudieron solucionar
- Esto inspiró al equipo a crear mecanismos automatizados de recuperación para su servicio.
Las pruebas con monos del caos forman parte de la ingeniería del caos. Se utiliza para probar la tolerancia a fallos de un sistema y su capacidad para mantener la estabilidad y el rendimiento incluso cuando fallan inesperadamente componentes individuales.
Aunque está relacionada con las pruebas con monos, es una técnica distinta.
Pruebas con monos frente a pruebas con gorilas
Es posible que también haya oído hablar del concepto de prueba Gorila en el desarrollo de software. Aunque ambas técnicas llevan el nombre de primates, tienen muchas similitudes y diferencias. Exploremos qué es la prueba Gorila y dónde puede utilizarse.
La prueba del gorila se considera una versión más estructurada de la prueba del mono. Por el contrario, las pruebas «mono» suelen utilizarse en las primeras fases de las pruebas, cuando no se dispone de casos de prueba formales. Las pruebas gorila, por su parte, utilizan una herramienta automatizada o un script para generar entradas aleatorias para una aplicación de software.
Las pruebas gorila son rápidas y mucho más eficaces que las pruebas mono manuales. Ofrece una amplia cobertura y es una forma excelente de encontrar fallos que deben resolverse. Sin embargo, se utiliza mejor para aplicaciones con límites bien definidos o para probar a fondo un módulo concreto.
Tanto las pruebas del mono como las del gorila tienen su lugar en las pruebas modernas de desarrollo de software. Comprenderlos es clave para utilizar el enfoque adecuado en el espacio adecuado.
¿Cuál es la mejor herramienta de pruebas con monos?
El software de pruebas con monos se ha convertido en una parte esencial del conjunto de herramientas del desarrollador moderno. Sin embargo, existen algunas opciones. Entonces, ¿cuál es la mejor herramienta de pruebas con monos? He aquí algunas que debe conocer.
1. ZAPTEST
ZAPTEST es una potente
herramienta de automatización de pruebas de software
que admite una amplia gama de técnicas de automatización de pruebas, incluidas las pruebas con monos. Algunas de las funciones de ZAPTEST que ayudan a realizar pruebas con monos son:
- Grabación de secuencias de comandos sin código: Los equipos pueden grabar las interacciones de los usuarios y convertirlas en código de prueba.
- Generación de entradas: ZAPTEST facilita la generación de entradas aleatorias, que es un elemento central de las pruebas con monos.
- Sólidos informes: ZAPTEST ofrece potentes funciones de generación de informes que le ayudarán a documentar sus pruebas
Por supuesto, estas funciones no son más que una pequeña muestra de las posibilidades que ofrece ZAPTEST para una amplia gama de técnicas de prueba, incluidas las pruebas con monos. Con la integración de WebDriver, las funciones de IA y ZAPTEST CoPilot, los equipos pueden experimentar el futuro de las pruebas de software en un solo lugar.
Además, los usuarios de ZAPTEST Enterprise tienen acceso a un experto de ZAP dedicado a tiempo completo y a licencias ilimitadas, todo ello por un coste fijo predecible.
2. Appium
Appium es una herramienta de código abierto. Puedes utilizarlo tanto para Android como para iOS. Permite a los usuarios automatizar las interacciones de las aplicaciones móviles y dispone de funciones de prueba de monos. Los desarrolladores pueden imitar una amplia gama de reacciones de la interfaz de usuario, como introducir texto, hacer clic, pulsar y desplazarse.
Mientras que Appium es una gran herramienta para los desarrolladores móviles, carece de capacidades para las pruebas de escritorio y web.
3. Prueba del mono
Monkey Test Es una plataforma de pruebas basada en la nube con una serie de capacidades de prueba que incluyen pruebas con monos. Aunque Monkey Test It es muy fácil de usar, quizá carezca de la potencia de otras herramientas rivales.
Otros inconvenientes son que podría tener un aspecto más elegante y una mejor documentación. Además, algunos usuarios se han quejado de los resultados inexactos de las pruebas. Dicho esto, es un programa sencillo con un precio bajo, así que no puedes esperar el mundo de él.
4. MonkeyTestJS
MonkeyTestJS es una herramienta australiana de código abierto basada en JavaScript y diseñada exclusivamente para aplicaciones web. Es bastante básico, pero es más que capaz de hacer el trabajo. Esta herramienta permite a los desarrolladores simular interacciones entre el usuario y la aplicación web, como clics, envío de formularios, entradas de teclado, etc.
Obviamente, una desventaja de la herramienta es que sólo está disponible para aplicaciones web. Sin embargo, merece la pena tenerlo en la caja de herramientas.
¿Cuál es la mejor herramienta dedicada a la prueba de monos en Android?
Hay algunas buenas opciones para los desarrolladores que quieren traer un poco de caos a sus pruebas de aplicaciones Android. Veamos dos.
1. UI/Aplication Exerciser Monkey para Android
UI/Application Exerciser Monkey para Android es una herramienta de línea de comandos que permite a los desarrolladores enviar entradas o eventos pseudoaleatorios tanto a dispositivos Android como a emulaciones. Esta herramienta se ejecuta en el shell Android Debug Bridge.
2. MonkeyRunner para Android
MonkeyRunner para Android es una popular herramienta de prueba de monos para Android. Se trata de una API que permite a los desarrolladores escribir programas que emulan o controlan un dispositivo Android. También es una buena opción para las pruebas funcionales y unitarias.
Ambas aplicaciones son buenas opciones. Sin embargo, son bastante técnicos, lo que no se adaptará a todos los equipos.
¿Hay que automatizar las pruebas con monos?
Uno de los mayores problemas de las pruebas manuales con monos es que llevan mucho tiempo. Otra cosa que debes tener en cuenta es que es difícil para unos pocos probadores simular realmente las diversas interacciones que una amplia base de usuarios puede tener con una aplicación concreta.
Así pues, saltan a la vista tres inconvenientes inmediatos. La prueba del mono manual es:
- El tiempo que consume
- Caro
- Posible falta de cobertura
Una herramienta automatizada de prueba de monos resuelve todos estos problemas.
¿Es ZAPTEST la opción adecuada para sus necesidades de pruebas con monos?
La prueba del mono es una buena técnica para tener en su repertorio de pruebas, especialmente si diseña aplicaciones complejas. Sin embargo, comprar un software dedicado a las pruebas con monos es caro.
ZAPTEST
es una herramienta
herramienta de automatización de pruebas de pila completa.
Es altamente personalizable y permite tanto a los desarrolladores como a los equipos no técnicos construir y diseñar un sinfín de técnicas de pruebas de software, incluidas las pruebas de mono.
Las pruebas con monos son una gran elección cuando se complementan con otros tipos de pruebas. ZAPTEST ofrece todo bajo un mismo techo, con el añadido de herramientas RPA de alta calidad.
Reflexiones finales
El software de pruebas Monkey ofrece a los desarrolladores una forma poco convencional de probar sus aplicaciones. La fuerza de esta técnica reside en su capacidad para simular la multitud de formas impredecibles en que un usuario puede interactuar con un programa informático. En resumen, las pruebas monkey proporcionan una cobertura que podría ser difícil de conseguir con un plan de pruebas.