【问题标题】:When writing UI tests, how does one test one thing that lies at the end of a long sequence?在编写 UI 测试时,如何测试位于长序列末尾的一件事?
【发布时间】:2011-02-11 21:16:04
【问题描述】:

我刚刚开始使用 WatiN 对我的 ASP.NET MVC 应用程序运行 UI 测试。这是一个很棒的工具,而且非常直观,但我发现自己想知道什么属于个人测试。

我发现许多人建议将这些测试视为单元测试,因此不应期望顺序或副作用。

当用户故事假设用户在完成我要测试的活动之前完成了一系列步骤时,我遇到了问题。

一些例子...

  1. 用户必须注册、注销、输入错误密码3次,以验证系统不会让他们再次使用正确的密码登录

  2. 用户必须注册,添加一些 foo,添加一些 bar,提交一个允许他们在 foo 和 bar 中进行选择的表单,然后在另一个页面上查看他们的提交

通过单元测试,我可以使用模拟来处理先决任务。

有哪些处理这种情况的好方法,这样我就可以避免编写经过相同先决条件步骤但每次测试都能可靠完成的单独测试?

【问题讨论】:

    标签: automated-tests integration-testing watin


    【解决方案1】:

    嘿。
    我会将集成测试和故事验收测试分开。

    检查PageObjects pattern - 您使用正确的方法创建 LoginPage 类,例如 loginAs(String username, String password), loginAsExpectingError(String username, String password)。您编写其他类似的类 - 它为您的应用程序提供自动化框架。您可以通过以下方式使用它:

    在集成级别,如果您提供正确的凭据 (loginAs) 以及当您提供错误的凭据 (loginAsExpectingError) 时,您正在检查应用程序组件是否正常工作。

    在验收级别,您使用 LoginPage.loginAs() 进行验收测试的第一步。第二个可能类似于 MainPage.addSomeFoos()。然后是 MainPage.addSomeBars()。然后是 MainPage.logOut()。

    如果您的单元测试通过,则运行集成测试,如果它们通过了运行验收测试。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-07
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 2022-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多