我们刚刚开始使用 specflow 和 watin 编写验收测试。我们正在努力消除一些常见的做法。
检查用户是否在特定页面上的好方法是什么?例如 - 用户 x 执行操作 y,他们应该被重定向到页面 z。在第 z 页上测试它们的首选方法是什么?我们已经尝试过检查 URL、页面标题、页面标题等...
他们都工作,但什么是最可靠的?
我会在这里看到两个案例。
首先是一些动作被触发,你想确保它重定向到正确的页面。在这种情况下,我认为 Url 是最好的检查,因为它是唯一的并且可以合理地更改。
其次是您导航(GoTo'd)页面并想要检查您在那里的位置。同样,Url 很好,但您可能想检查一些已知文本,以便知道页面也已成功加载(甚至检查它不包含“错误”)。我通常会将文本值存储在资源文件中并为其命名,例如 HomePageLoadedText = "Welcome back Bob"。恕我直言,它使它们更加明确,如果它们失败,它更具可读性。
我过去做过的最技术上正确的方法是我们在每个页面中都有一个唯一的页面标识符。对于我们的系统,它用于内部应用程序的支持目的“你能看看左下角并告诉我你在哪个页面上吗”。如果您的开发人员要实现类似的东西,可以在测试中进行调整,那将是最好的方法。
如果这是不可能的(而且在很多情况下可能不会),您需要找到一种方法来唯一地标识您所在的页面。URL 应该是全局唯一的,所以这可能是一个好方法,除了不能确认给定 URL 显示的页面正确。
通常,如果您正在与导航到的页面上的组件进行交互,则这种类型的测试实际上并不是必需的,就好像您不在正确的页面上一样,那么当您尝试做某事时,您的测试将失败。