更好的测试设计是什么:直接导航到URL,或者在selenium测试中通过单击正常导航(就像真正的用户一样)

更好的测试设计是什么:直接导航到URL,或者在selenium测试中通过单击正常导航(就像真正的用户一样),selenium,testing,Selenium,Testing,假设我的测试想看看用户是否能在XYZ页面上看到图像。假设在正常使用中,用户只能通过单击ABC页面(可能是主页)上的链接进入XYZ页面。 现在假设XYZ页面的URL不是静态的,但可能取决于图像,并且可以简单地在代码中生成,我有两种编写测试的方法: 在测试中生成URL并直接导航到XYZ,然后检查图像是否存在 像普通用户一样转到ABC,单击指向XYZ的链接,然后检查图像 对于选项1,我感觉我得到了更多的测试隔离。如果ABC页面上的链接没有正确生成,或者由于其他原因被破坏,那么这个特定的测试应该不会失败

假设我的测试想看看用户是否能在XYZ页面上看到图像。假设在正常使用中,用户只能通过单击ABC页面(可能是主页)上的链接进入XYZ页面。 现在假设XYZ页面的URL不是静态的,但可能取决于图像,并且可以简单地在代码中生成,我有两种编写测试的方法:

  • 在测试中生成URL并直接导航到XYZ,然后检查图像是否存在
  • 像普通用户一样转到ABC,单击指向XYZ的链接,然后检查图像
  • 对于选项1,我感觉我得到了更多的测试隔离。如果ABC页面上的链接没有正确生成,或者由于其他原因被破坏,那么这个特定的测试应该不会失败,对吗?这应该是其他测试的责任吗

    但对于选项2,真正的用户会这样做。他几乎从不尝试猜测URL的模式,然后直接导航到它。我不能对每一个环节都做一个巨大的测试,看看它是否被破坏,这太复杂了。因此,需要在测试隔离中做出如此大的牺牲


    我应该如何在这两个选项之间做出决定?有正确的方法吗?希望这个问题对于stackoverflow来说不是太主观。

    这取决于你想测试什么。如果您想测试按钮或链接本身(即:您正在测试整个用户工作流),请像用户一样单击它们


    另一方面,如果单击这些链接只是达到目的的一种手段,并且测试用例的真正目标是深入应用程序,那么我认为直接跳到您实际测试的应用程序部分是非常好的

    作为最终用户,最好的方法是选项2,它也扩大了测试的覆盖范围,因此您可以检查: 1.链接/按钮是否可单击且不引发异常。 2.点击上面是导航到正确的页面

    选项1可用于测试场景,用户不必担心如何访问页面,而只关注打开的页面内容。
    选择这些选项中的任何一个都取决于您的测试覆盖率方法及其范围。

    所以在这种情况下,我应该有两个重叠的测试?一个直接进入并测试XYZ页面,另一个测试整个流程ABC->XYZ->image?@AzureMinotaur:这就是我要做的。我希望避免重叠,并在测试中遵循DRY的方式,但可能在这里不可能?现在,如果图像在XYZ页上有问题,这两个测试都将失败。一个测试包含另一个测试。但谢谢你的意见,至少现在我知道这样做还不错。@AzureMinotaur:当你在测试两个不同的东西时,它不会重叠。测试A:验证单击链接“X”会将您带到“Y”。测试B:验证第B页上的。。。这是要测试的两个独立的功能。一旦您测试了,单击一次链接,您就不需要再次测试它(通常)。其余的测试可以直接导航到该页面。这两个方面我都有要求。选项1作为我们的页面,当添加书签时应该在哪里工作,选项2作为导航也需要验证。谢谢Ashish,有意义:)