Herramienta de automatización de pruebas para una aplicación de Android

¡ La herramienta de mono de Android es genial!
Con una línea de script, inicia su aplicación y realiza pruebas de automatización:

adb shell monkey -p my.greate.package + -c android.intent.category.LAUNCHER -s 123 --pct-touch 99 --throttle 20 -v 1000

Puede configurarlo para hacer muchas cosas, en el ejemplo anterior, inicio una aplicación por nombre de paquete, restrinjo el mono solo para eventos táctiles. Hará 1000 eventos táctiles con un intervalo de 20 milisegundos entre ellos.


Sin embargo, esta herramienta no es suficiente para mí. Necesito algo sin pruebas predefinidas o grabadas, que pueda lanzar. Pero el mono no ve los componentes de la pantalla, hace clic aleatoriamente en la pantalla y, a veces, hay botones que nunca encuentra.

Vi este sitio con muchas alternativas, pero ninguna que sea de lanzamiento instantáneo sin configuraciones previas.

Ayúdame aquí, ¿cómo puedo hacer que mi mono sea más inteligente o encontrar una mejor alternativa?

Entonces, ¿quieres lanzarlo sin ninguna prueba (predefinida o grabada)? ¿Cómo se probará en esa circunstancia y qué tipo de informe espera ver?
Tengo otras herramientas para informar, solo las necesito para poder navegar por la aplicación, sin saberlo.
No entiendo. ¿Quieres ejercitar la aplicación, sin saber cómo funciona? Si la aplicación tiene algún estado interno, no puede hacerlo.
@IraBaxter Quiero maximizar mi tasa de éxito. Obviamente, hay aplicaciones en las que quiero poder navegar.
Esto se parece mucho a las pruebas unitarias de una función con argumentos aleatorios. Los primeros pueden ser lo suficientemente diferentes como para causar diferentes comportamientos, pero en general, la entrada se divide en muchas clases de equivalencia y la mayoría de los valores de argumentos aleatorios no producen un nuevo comportamiento. ¿Por qué crees que esto funciona?
@IraBaxter MI objetivo es navegar en aplicaciones, ¿cómo se relacionan las funciones aquí? De todos modos, si quieres hacer una discusión sobre esto, abre una sala de chat.
Entradas aleatorias a funciones es un análogo a las entradas aleatorias en la pantalla. Y la comunidad de pruebas sabe desde hace mucho tiempo que el primero es ineficaz. Simplemente no parece que la búsqueda de entradas aleatorias sea efectiva. No hay necesidad de sala de chat.

Respuestas (2)

Puede usar Sikuli X para automatizar cualquier cosa que pueda ver en la pantalla de su PC, incluido el uso del reconocimiento de imágenes para encontrar botones específicos para hacer clic, independientemente de la posición real en la pantalla. Por supuesto, esto puede incluir cualquier cosa que ocurra en el entorno de emulación o que se repita en la pantalla de la PC desde un dispositivo real.

Puede hacer clic, hacer doble clic, comprobar los resultados, escribir texto en los campos, etc., incluido el inicio de programas.

Es compatible con secuencias de comandos en python o java script.

Esto parece interesante. En mi caso necesito probar muchas aplicaciones que no vi antes. ¿Crees que me será útil? Porque no estoy seguro de qué tipo de script puedo poner allí, excepto limitar el área de interacción a la pantalla de mi emulador. ¿Puede Sikuli X reconocer botones o formas?
Sikuli reconoce cualquier cosa en la pantalla y puede "entrenarse" rápida y fácilmente: es increíblemente fácil de usar.
Ok, lo pruebo, tnx

Ranorex está en el sitio web que mencionaste, pero creo que hace exactamente lo que quieres. Puede utilizar el reconocimiento basado en imágenes, así como XPath, un potente identificador de elementos de la interfaz de usuario. Ranorex contiene muchas herramientas útiles de automatización de pruebas , por ejemplo, Ranorex Spy, que puede ser muy interesante para usted, ya que le permite crear archivos de instantáneas a partir de elementos de la GUI.

Requiere que codifique la lógica de detección de la interfaz de usuario por mí mismo y luego, de alguna manera, simule el evento de acuerdo con los resultados de mi detección. Entonces, si bien hay cierta simplicidad con XPath, preferiré opnecl para esa tarea. Pero en última instancia, prefiero usar algo que ya hace eso...