Hola queridos.
Lo primero de todo, enhorabuena por el curro @RSN . Brutal y muchísimas gracias.
Tras mucha insistencia, por fin me ha proporcionado mi empresa una licencia de Claude Code. Era algo que buscaba desde hace tiempo para mis proyectos y porque qué coño, es una inversión que considero importante en mí y mi futuro como QA/programador. Como he mencionado, curro de QA y entre una de las cosas que llevo, es la automatización de las pruebas de UI de una serie de aplicaciones nativas de Android e iOS. Todos los proyectos (uno por cada app) está basado en Appium para controlar el driver y la definición de los elementos y acciones de las pantallas, Serenity BDD para el reporting, y Cucumber para escribir los tests. Como no quiero que se vea un tochopost, dejo un poco más explicado la estructura del proyecto y cuáles son las partes que lo conforman vía spoiler:
spoiler
La estructura del proyecto es la siguiente:
En src/test:
- apps // Carpeta donde se encuentra el .apk o el .ipa a testear
- java
| - driver // AndroidDriver e iOSDriver
| - features // Pantallas de la app. Definiciones de elementos y acciones sobre dichos elementos (clicks, visibilidad, textos...)
| - locales // Clases para cargar los ficheros de idioma del dispositivo
| - runner // Runner de Cucumber que indica dónde se encuentran los tests de Cucumber (recources/features) y la implementación de los pasos (useCases)
| - steps // Clases middleware entre features y useCases donde se realizan los Asserts o se propagan acciones como clicks
| - useCases // Implementación de los steps de Gherkin de los tests de Cucumber
| - utils // Funciones auxiliares y otras cosas
- resources
| - features // Ficheros de tests de Cucumber
| - locales // Ficheros de traducciones
A modo resumen, cuando se realiza "test" en Gradle, el driver seleccionado instala la app en el dispositivo, y a través del runner, comienza la ejecución de los tests de Cucumber en los ficheros .feature.
Tras analizar un poco qué tareas repetitivas realizo cuando tengo que hacer cambios o añadir nuevos tests, he llegado a tres puntos donde puedo comenzar:
- Podría montar un mecanismo para, cada vez que tenga que crear una pantalla nueva o añadir uno o varios elementos a pantallas creadas, Claude Code se encargue de añadir esos elementos y las acciones asociadas que puede realizar (tocaría features y steps seguramente). Esto me ahorraría tener que hacerlo de forma manual que además de repetitivo, es un coñazo.
- Podría también, automatizar el proceso de levantar Appium en el terminal, ejecutar gradle test y obtener el reporting empaquetado listo para subir
- Y el más difícil todavía, al trabajar con Historias de Usuario, solamente pasarle a Claude Code los criterios de aceptación de la US y a partir de ahí, escribir automáticamente los tests y todo el código añadido que satisfagan dichos criterios de aceptación
A partir de aquí, tengo un mar de dudas para poder abordar estos puntos y es donde os pido un poco de ayuda, o arrojarme un poco de luz y luego ya buscarme yo la vida:
- Mi primer pensamiento es decir, bueno, puedo intentar usarlo a puro prompt de forma "Haz esto" o "haz aquello con estas restricciones/aclaraciones" como haría con cualquier chat de IA, BUT:
¿Es una buena idea?
¿Se pueden crear prompts "esqueleto" o parametrizados para indicarle cosas cómo, nombre de la rama, pantalla que tiene que añadir, elementos, aclaraciones, restricciones, etc...?
- Entiendo que la verdadera potencia es el Agente, pero... ¿en el punto anterior le estaría sacando el rendimiento, o hay "algo más"?
- ¿Cómo podría aplicar Skills y cuáles véis idóneas para esta clase de proyectos? Estoy un poco verde y todavía no visualizo muy bien el propósito
Perdonad el tocho, y las dudas que aunque parezcan un poco chorras, todavía me falta mucho aprendizaje, pero siento que es un oportunidad importante, porque creo realmente que esto tiene una potencia muy tocha y ha venido para quedarse.
Muchísimas gracias por adelantado