В настоящее время я работаю над созданием автоматизированного набора функциональных / приемочных тестов для проекта, но у меня нет большого опыта написания этих типов тестов, поэтому я хотел получить некоторый вклад в их правильное структурирование. В частности, я работаю с расширением Arquillian Graphene.
Например, у меня есть 3 теста: A, B и C.
TestA: проверяет вход в учетную запись приложения. Итак, если проверка прошла успешно, браузер должен находиться на домашней / информационной странице учетной записи.
TestB: тестирует изменение пароля учетной записи. Для этого потребуется войти в учетную запись, а затем протестировать функцию изменения пароля.
TestC: тестирует изменение электронной почты аккаунта. Для этого снова потребуется войти в учетную запись, а затем протестировать функцию изменения адреса электронной почты.
Если TestA выйдет из строя из-за проблемы с кодом входа, очевидно, что TestB и TestC также должны выйти из строя, поскольку они требуют входа в учетную запись.
Вопрос. Должны ли автоматические функциональные / приемочные тесты дублировать процесс, необходимый для завершения проверяемого теста? В этом случае TestB и TestC должны войти в учетную запись, прежде чем делать что-либо еще. Должен ли каждый тест явно вызывать что-то вроде:
/* ...initial test setup code here */
LoginPage.login(username, password);
assertTrue(onCorrectAccountPage);
AccountModification.changePassword(newPassword);
Или мне следует использовать какой-то способ имитации учетной записи в сеансе, который может использоваться тестами B и C, чтобы они не сработали, даже если TestA (фактический тест входа в систему) сработает?
Поскольку это тесты на приемлемость пользователя, я подумал, что они должны делать именно то, что сделал бы пользователь, и входить в систему всякий раз, когда это необходимо, но я не уверен, что это ненужное дублирование, которое следует обрабатывать по-другому (то есть обрабатывать как единицы измерения функциональность, аналогичная стандартному модульному тесту), и я хотел получить отзывы от кого-то, у кого больше опыта в этой области.
Заранее спасибо. Надеюсь, мой вопрос не слишком запутан. :)