Precheck: compruebe que su escaneo móvil funcionará antes de que se ejecute durante horas
Precheck verifica que una aplicación móvil se instala, se inicia, inicia sesión y ejecuta sus prompts de interfaz en un dispositivo real. Cuando un bloqueo, como unas credenciales rechazadas, un fallo de la aplicación o una compilación que no se puede instalar, impide la cobertura, el escaneo se marca como error con el motivo y la pantalla que lo muestra.
Un escaneo móvil que no encuentra nada debería significar que la aplicación es segura. Con demasiada frecuencia significa que la aplicación nunca pasó de la pantalla de inicio de sesión.
Precheck es un nuevo paso de los escaneos móviles de Ostorlab. Se ejecuta en todos los escaneos dinámicos móviles: instala la aplicación en un dispositivo real, la inicia, inicia sesión con sus credenciales y ejecuta sus prompts de interfaz. Si algo lo impide, como una compilación que no se puede instalar, una aplicación que se cierra o se bloquea, o unas credenciales rechazadas, el escaneo se marca como error y usted recibe el motivo y la pantalla que lo demuestra.
El escaneo sigue ejecutándose en segundo plano, de modo que obtiene igualmente los resultados del análisis estático y la cobertura dinámica que permita una aplicación que solo funciona en parte.
¿Qué hace Precheck? (TL;DR)
Precheck confirma que la aplicación realmente se puede probar. Cuando un bloqueo lo impide, Precheck marca el escaneo como error y añade un enlace Learn more al grafo de llamadas de la interfaz, donde cada pantalla aparece coloreada según su estado. El análisis estático y la cobertura dinámica alcanzable se completan igualmente.
Por qué un informe vacío es el peor informe
Un escaneo móvil completo ejecuta varios análisis en paralelo: análisis estático, análisis dinámico, trazas de llamadas e interceptación del tráfico. En conjunto pueden tardar horas. La cobertura dinámica depende de una sola condición: la aplicación tiene que ejecutarse realmente y poder utilizarse en el dispositivo.
Cuando no es así, el escaneo «termina» igualmente:
- La compilación está destinada a una arquitectura que el dispositivo no admite, por lo que nunca llega a instalarse.
- La aplicación se cierra en la pantalla de bienvenida o se bloquea.
- La contraseña del entorno de staging caducó la semana pasada, por lo que todas las pantallas autenticadas quedan fuera de alcance.
- No se configuró un paso de 2FA, por lo que la aplicación espera indefinidamente un código.
- El backend de staging no está disponible, por lo que la aplicación muestra «Unable to connect» y no hace nada más.
En todos estos casos, el análisis dinámico explora lo que puede y apenas informa de nada. Un informe sin hallazgos procedente de una ejecución fallida tiene el mismo aspecto que uno procedente de una aplicación segura. Usted se entera horas después, si es que llega a enterarse.
En CI/CD, un pipeline que pasa por la razón equivocada es peor que uno que falla.
Precheck está diseñado para eliminar esa ambigüedad.
Qué comprueba Precheck
Precheck ejecuta dos comprobaciones en orden. Si la aplicación no se puede instalar, se omite la comprobación de la interfaz.
1. ¿Se instala la compilación en el dispositivo?
Precheck toma un dispositivo real, lo restablece a un estado limpio e instala su compilación. No se conforma con que el instalador indique que todo ha ido bien: también confirma que la aplicación está realmente presente en el dispositivo:
- Android (APK, AAB, XAPK): el paquete debe aparecer en la lista de paquetes instalados del dispositivo. Precheck también lee la actividad de inicio de la aplicación a partir del binario. En los paquetes XAPK, recorre cada APK dividido hasta encontrar el APK base.
- iOS (IPA): el bundle debe aparecer entre las aplicaciones instaladas del dispositivo. Precheck lee el
Info.plistdel bundle y contrasta con el dispositivo el identificador del bundle, la versión mínima de iOS y las capacidades de dispositivo requeridas.
Una compilación que no se puede instalar se notifica como error: ningún análisis dinámico puede funcionar sin ella, aunque el análisis estático se sigue ejecutando.
2. ¿Se inicia la aplicación, inicia sesión y sigue sus prompts?
A continuación, Precheck entrega la aplicación a Monkey Tester, el agente de IA de Ostorlab que maneja interfaces móviles. Le transmite:
- el dispositivo que debe utilizar,
- las credenciales que usted configuró (usuario y contraseña, campos personalizados de clave/valor, y 2FA por SMS, correo electrónico, TOTP o manual),
- sus prompts de interfaz, las instrucciones en lenguaje natural que usted da al escaneo, como «aceptar las condiciones, omitir la introducción, abrir la página de transferencias».
Monkey Tester inicia la aplicación, inicia sesión y ejecuta cada prompt. No se limita a capturar pantallas: evalúa cada pantalla a la que llega.
Cada pantalla recibe un veredicto
Para cada captura de pantalla, Monkey Tester devuelve cuatro datos:
| Campo | Significado |
|---|---|
prompt |
El prompt en el que estaba trabajando al tomar la captura, si lo hay |
status |
ONGOING, SUCCESS, ERROR o CRITICAL |
reason |
Qué elemento de la pantalla llevó a ese estado |
remediation |
Qué puede hacer usted al respecto, en el caso de ERROR y CRITICAL |
- ONGOING: el paso está en curso y todavía no hay ningún problema.
- SUCCESS: el prompt se ha completado y el resultado es visible en pantalla.
- ERROR: el prompt ha fallado (por ejemplo, un botón desactivado o una transferencia que no se ha realizado), pero la aplicación sigue funcionando.
- CRITICAL: un bloqueo real. Las credenciales proporcionadas se han rechazado, o la aplicación se cierra continuamente o está bloqueada.
Cada pantalla se marca con su estado, así que puede ver de un vistazo qué funciona y qué no, y cada estado incluye el motivo concreto que lo explica y cómo corregirlo.
Así se ve en un escaneo de Duolingo, en el que los prompts de interfaz pedían a Monkey Tester iniciar un curso de francés y, después, uno de georgiano.
SUCCESS: inicio de sesión. Monkey Tester llega a la pantalla principal, lo que demuestra que las credenciales funcionan.

SUCCESS: un prompt completado. La pantalla de configuración del curso de francés está abierta, por lo que el prompt se marca como completado.

ERROR: un prompt que no se puede completar. Duolingo no ofrece georgiano, por lo que el prompt falla. La aplicación sigue funcionando, así que se trata de un ERROR, no de un bloqueo.

CRITICAL: credenciales rechazadas. La aplicación muestra «Wrong username or password», por lo que no se puede probar nada de lo que hay tras el inicio de sesión.

El campo reason describe qué ha fallado por su parte, como un mensaje de error, una contraseña rechazada o un permiso que falta. Un ejemplo real termina con la propia corrección:
La autenticación falló con un mensaje explícito «Wrong username or password» tras introducir las credenciales proporcionadas. Corrección: proporcione credenciales válidas de Duolingo para la cuenta de prueba.
Qué ve usted cuando Precheck falla
Cuando un escaneo se marca como error, la página del escaneo muestra el motivo, con un botón Learn more que abre el grafo de llamadas de la interfaz en la pantalla que ha fallado. El grafo de llamadas de la interfaz es el mapa de todas las pantallas que alcanzó Monkey Tester y de las transiciones entre ellas, con cada pantalla coloreada según su estado en Precheck.
Bajo el capó: cómo está construido Precheck
Precheck se ejecuta como un paso ligero e independiente: Monkey Tester evalúa cada pantalla y Precheck toma la decisión final sobre si el escaneo se marca como error.
Un paso dedicado, no más trabajo para cada análisis
El atajo evidente habría sido añadir comprobaciones de estado a cada análisis dinámico. Decidimos no hacerlo, por dos razones.
- Rapidez de la primera respuesta. Las pruebas dinámicas en profundidad requieren una preparación completa del dispositivo, como configurar la interceptación del tráfico. Nada de eso es necesario para responder a la pregunta «¿se inicia esta aplicación?», así que Precheck lo omite. Lo único que se prueba es la aplicación.
- Un único punto de decisión. Si cada análisis detecta los fallos por su cuenta, se obtienen veredictos contradictorios. Un paso dedicado ofrece una única respuesta clara.
Por ello, Precheck se ejecuta como un paso ligero e independiente, en paralelo con el resto del escaneo.
El modelo evalúa, el código decide
El modelo de Monkey Tester ya decidía dónde pulsar a continuación. Lo ampliamos para que, en cada paso, devuelva también el prompt en el que está trabajando, un estado, un motivo y una corrección.
Se indica al modelo que:
- reserve
CRITICALpara bloqueos explícitos, - informe de fallos de inicio de sesión solo cuando se hayan proporcionado credenciales,
- redacte cada motivo como una corrección, por ejemplo «configurar el número de SMS para 2FA» en lugar de «se requiere 2FA».
El modelo emite un veredicto para cada pantalla. La decisión de marcar el escaneo como error la toma Precheck a partir del conjunto de esos veredictos, de modo que una sola pantalla mal interpretada no puede señalar un escaneo que claramente está avanzando.
Primero la evidencia, después el veredicto
Cada pantalla que visita Monkey Tester se guarda, con su captura, su estado, su motivo y el prompt de interfaz asociado, antes de que Precheck tome su decisión. Así, cuando un escaneo se marca como error, la evidencia ya está disponible y el enlace «Learn more» siempre abre un grafo de llamadas completo.
Estos veredictos también están disponibles a través de la API de Ostorlab y de las herramientas MCP, de modo que los asistentes de programación con IA conectados a Ostorlab pueden explicar por qué ha fallado un precheck.
Cómo sacar el máximo partido a Precheck
La mayoría de los errores de precheck se deben a la configuración del escaneo, por lo que tres elementos son los más importantes: las credenciales, unos prompts de interfaz redactados como objetivos y la configuración de la 2FA.
- Proporcione credenciales para cualquier aplicación con inicio de sesión. Así, Precheck puede verificarlas antes de que el resto del escaneo dependa de ellas.
- Redacte los prompts de interfaz como objetivos, como «abrir la página de configuración de la cuenta», y no como coordenadas o secuencias exactas de pulsaciones. Precheck marca un prompt como completado cuando el objetivo es visible en pantalla.
- Configure el 2FA (secreto TOTP, SMS o buzón de correo electrónico) si su inicio de sesión lo requiere. Una pantalla de 2FA sin responder se trata como un bloqueo.
- En CI/CD, trate un error de precheck como un paso fallido del pipeline. El mensaje de error indica qué corregir antes de volver a ejecutar el pipeline.
Solo un escaneo que se ha ejecutado merece confianza
Un escaneo de seguridad solo vale por sus hallazgos si realmente se ha ejecutado. Precheck verifica que el escaneo puede ejecutarse, con un dispositivo real, las pantallas reales de la aplicación y sus propias credenciales y prompts. Cuando no es posible, el escaneo se marca como error y usted recibe el motivo, una corrección sugerida y la pantalla que muestra el problema, en lugar de un informe sin hallazgos varias horas después.
Mientras tanto, el escaneo continúa y entrega todos los resultados que puede.
Precheck se ejecuta en todos los escaneos dinámicos móviles de Ostorlab para Android e iOS. Para utilizarlo, inicie un escaneo móvil con su compilación, sus credenciales de prueba y sus prompts de interfaz, y Precheck se ejecutará automáticamente. Consulte los requisitos previos del escaneo móvil para la configuración.
Etiquetas:
Mobile Security, Precheck, Dynamic Analysis, AI Agents, Monkey Tester, DevSecOps, CI/CD, Application Security