这两者的不同目的是什么?我的意思是,在哪种情况下我应该做每一件事?
以示例情况为例,如果你有后端服务器和几个前端网页,你会做哪一个?首先是对后端服务器进行单元测试还是首先在 Web UI 上进行 UI 测试?鉴于条件已经存在服务器和前端网页,因此这不是与 TDD(测试驱动开发)一起构建的迭代设计...
这两者的不同目的是什么?我的意思是,在哪种情况下我应该做每一件事?
以示例情况为例,如果你有后端服务器和几个前端网页,你会做哪一个?首先是对后端服务器进行单元测试还是首先在 Web UI 上进行 UI 测试?鉴于条件已经存在服务器和前端网页,因此这不是与 TDD(测试驱动开发)一起构建的迭代设计...
单元测试旨在隔离测试代码的小部分(单个类/方法),使其与世界其他部分分离。
UI测试可能是系统/功能/验收测试的不同名称,其中您测试整个系统以确保它在实际情况下执行所需的操作。 (除非您的UI测试意味着可用性/外观等测试,这通常限于UI上的细节。)
在大多数项目中,您需要这两种测试,但时间不同:开发期间进行单元测试(理想情况下从一开始就使用TDD风格),稍后进行UI测试,一旦您实际上有一些完整的端到端功能要进行测试。
如果您已经运行了系统,但没有测试,则实际上您拥有遗留代码。首先努力获得最少努力可达到的最佳测试覆盖率,这意味着高级功能测试。添加单元测试也是必要的,但需要更多的努力,并在以后开始回报。
推荐阅读:与遗留代码有效地工作。
测试金字塔[1]是这里的重要概念,由Martin Fawler很好地描述了出来。 简而言之,通过UI运行的端到端测试是:脆弱且编写成本高昂的。您可以考虑使用测试记录工具[2]来加速录制和重新录制。声明 - 我是这样的工具的开发者。
[1] https://martinfowler.com/articles/practical-test-pyramid.html
单元测试应该始终进行。单元测试的目的是提供证明,即您技术解决方案的每个单元(即对象)都能够提供预期结果。简单地说,用户测试旨在验证您的系统是否满足用户的需求和要求。