【问题标题】:UI testing vs unit testingUI 测试与单元测试
【发布时间】:2011-07-07 04:17:53
【问题描述】:

两者的不同目的是什么?我的意思是,我应该在什么条件下做每一个?

至于示例条件。如果你有后端服务器和几个前端 Web,你会做哪一个?先对后端服务器进行单元测试,还是先在 Web UI 中进行 UI 测试? 鉴于条件,服务器和前端 web 已经存在,因此它不是与 (TDD) 一起构建的迭代设计...

【问题讨论】:

    标签: unit-testing ui-testing


    【解决方案1】:

    单元测试旨在独立于世界其他地方测试您的一小部分代码(单个类/方法)。

    UI 测试可能是系统/功能/验收测试的不同名称,您可以在其中一起测试整个系统,以确保它在现实生活环境中完成它应该做的事情。 (除非 UI 测试是指可用性/外观和感觉等测试,这通常仅限于 UI 上的细节。)

    在大多数项目中你都需要这两种方法,但在不同的时间:开发期间的单元测试(最好从一开始,TDD 风格),以及稍后的 UI 测试,一旦你真正有一些完整的端到端- 结束要测试的功能。

    如果您已经让系统运行,但没有进行测试,那么实际上您有遗留代码。首先努力以最少的努力获得最好的测试覆盖率,这意味着高级功能测试。添加单元测试也是必要的,但需要付出更多的努力,并且会在以后开始回报。

    推荐阅读:Working Effectively with Legacy Code

    【讨论】:

    • 还有一个胖 +1 用于引用有效地使用旧代码。
    • “高级功能测试”是什么意思?你是指 UI 测试吗?
    【解决方案2】:

    应始终进行单元测试。单元测试可以证明您的技术解决方案的每个单元(阅读:对象)都能提供预期的结果。说得非常(也许太)简单,用户测试是为了验证您的系统是否满足用户的需要和要求。

    【讨论】:

      【解决方案3】:

      测试金字塔 [1] 是这里的重要概念,Martin Fawler 对此进行了很好的描述。 简而言之,通过 UI 端到端运行的测试是:编写起来脆弱且昂贵。您可以考虑测试录音工具 [2] 来加快录音和重新录音的速度。免责声明 - 我是此类工具的开发者。

      [1]https://martinfowler.com/articles/practical-test-pyramid.html

      [2]https://anwendo.com

      【讨论】:

        【解决方案4】:

        除了公认的答案之外,今天我刚刚提出这个问题,为什么不只是以编程方式触发布局函数,然后围绕它对你的逻辑进行单元测试?

        我从一位资深开发人员那里得到的答案是:以编程方式触发布局功能不会是真实用户体验的绝对副本。在现实世界中,系统会触发许多回调,例如当应用程序的用户将应用程序置于后台或前台时。显然您可以手动触发此类事件并再次测试,但您确定您得到了所有序列中的所有事件吗?!

        真正的用户体验是用户进行实际的网络调用、点击屏幕、加载多个屏幕、有时您可能会收到系统回调的体验。你忘记模拟你没有正确模拟的回调。在单元测试中,您主要是孤立地进行测试。在 UI 测试中,您设置应用程序,可能必须登录等。您构建的堆栈与单元测试相比要复杂得多。因此,最好不要将单元测试与 UI 测试混为一谈。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-05-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多