我目前正在为一个项目构建一个自动化的功能/验收测试套件,但是我没有很多编写这些类型测试的经验,所以我想获得一些关于正确构建它们的输入。具体来说,我正在使用 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(实际登录测试)失败,它们也不会失败?
由于这些是用户接受测试,我的想法是他们应该做用户会做的事情并在必要时登录,但我不确定这是否是不必要的重复,应该以不同的方式处理(即,像对待功能,类似于标准单元测试),我想从在这方面有更多经验的人那里获得反馈。
提前致谢。希望我的问题不会太复杂。:)