UI测试与单元测试的区别

18

这两者的不同目的是什么?我的意思是,在哪种情况下我应该做每一件事?

以示例情况为例,如果你有后端服务器和几个前端网页,你会做哪一个?首先是对后端服务器进行单元测试还是首先在 Web UI 上进行 UI 测试?鉴于条件已经存在服务器和前端网页,因此这不是与 TDD(测试驱动开发)一起构建的迭代设计...

4个回答

38

单元测试旨在隔离测试代码的小部分(单个类/方法),使其与世界其他部分分离。

UI测试可能是系统/功能/验收测试的不同名称,其中您测试整个系统以确保它在实际情况下执行所需的操作。 (除非您的UI测试意味着可用性/外观等测试,这通常限于UI上的细节。)

在大多数项目中,您需要这两种测试,但时间不同:开发期间进行单元测试(理想情况下从一开始就使用TDD风格),稍后进行UI测试,一旦您实际上有一些完整的端到端功能要进行测试。

如果您已经运行了系统,但没有测试,则实际上您拥有遗留代码。首先努力获得最少努力可达到的最佳测试覆盖率,这意味着高级功能测试。添加单元测试也是必要的,但需要更多的努力,并在以后开始回报。

推荐阅读:与遗留代码有效地工作


为引用《遗留代码有效工作》给予一个大大的加分。 - Steven
3
您所说的“高级功能测试”是什么意思?您只是指UI测试吗? - Minimi

1

1
除了被接受的答案,今天我想问为什么不直接以编程方式触发布局函数,然后在其周围进行单元测试逻辑呢?
一位高级开发者给我的答案是:通过编程方式触发布局函数将无法绝对复制真实用户体验。在现实世界中,系统会触发许多回调,例如当应用程序用户转到后台或前台时。显然,您可以手动触发此类事件并再次进行测试,但您能确定您正确地获得了所有事件和所有序列吗?!
真正的用户体验是用户进行实际网络调用、点击屏幕、在彼此之上加载多个屏幕,有时您可能会收到系统回调。您忘记模拟的回调,您没有正确模拟的回调。在单元测试中,您主要是在孤立的情况下进行测试。在UI测试中,您设置应用程序,可能需要登录等等。您构建的堆栈比单元测试复杂得多。因此最好不要混合单元测试和UI测试。

1

单元测试应该始终进行。单元测试的目的是提供证明,即您技术解决方案的每个单元(即对象)都能够提供预期结果。简单地说,用户测试旨在验证您的系统是否满足用户的需求和要求。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接