Actualmente estoy trabajando en la construcción de un conjunto de pruebas funcionales automatizadas/aceptación para un proyecto, pero no tengo mucha experiencia escribiendo este tipo de pruebas, así que quería conseguir algo entrada en la estructuración adecuada de ellos. Específicamente, estoy trabajando con la extensión Graphene de Arquillian.estructura funcional apropiado de/Pruebas de aceptación
Por ejemplo, decir que tengo 3 pruebas, A, B, y C.
Testa: Pruebas de Inicio de sesión en una cuenta en la aplicación. Por lo tanto, si la prueba es exitosa, el navegador debe estar en la página de inicio/información de la cuenta.
TestB: Pruebas que modifican la contraseña de una cuenta. Esto requeriría iniciar sesión en la cuenta y luego probar la funcionalidad de cambio de contraseña.
TestC: Pruebas que modifican el correo electrónico de una cuenta. Esto nuevamente requeriría iniciar sesión en la cuenta y luego probar la funcionalidad de cambio de correo electrónico.
Si Testa falla debido a un problema con el código de inicio de sesión, obviamente TestB y TestC deben fallar, así, ya que requieren estando conectado a una cuenta.
Pregunta: ¿Las pruebas funcionales/de aceptación automatizadas deben duplicar cada uno de los procesos necesarios para completar lo que la prueba está verificando? En este caso, TestB y TestC necesitan iniciar sesión en la cuenta antes de hacer cualquier otra cosa. En caso de que cada prueba llamar explícitamente a algo como:
/* ...initial test setup code here */
LoginPage.login(username, password);
assertTrue(onCorrectAccountPage);
AccountModification.changePassword(newPassword);
O debería usar alguna forma de burlarse de una cuenta en la sesión que puede ser utilizado por pruebas B y C para que no fallan, incluso si Testa (el actual prueba de inicio de sesión) ¿no?
Dado que estas son pruebas de aceptación del usuario, pensé que deberían hacer exactamente lo que el usuario haría e iniciar sesión siempre que fuera necesario, pero no estoy seguro si esto es una duplicación innecesaria que debe manejarse de manera diferente (es decir, tratados como unidades de funcionalidad, similar a una prueba de unidad estándar) y quería recibir retroalimentación de alguien con más experiencia en esta área.
Gracias de antemano. Espero que mi pregunta no sea demasiado complicada. :)
Bien explicado. Estaba pensando en la misma línea, pero la idea de "no duplicar" está tan grabada en mi proceso de pensamiento que no estaba seguro en esta circunstancia. Gracias por tu respuesta. – whitlaaa