[Springboot 测试学习笔记] - 测试的种类及基本定义

对于一个高质量的代码,在发布新的代码的同时开发者也绑定大量的测试用例来确保代码的code coverage以及功能可用性。对于开发方法以及模块最基础的两部分就是Unit Test(单元测试), Integration Test(集成测试) 以及 Functional Test(功能性测试)。但这些测试具体需要做什么以及有什么不同呢?

测试金字塔 - https://www.testim.io/blog/unit-test-vs-integration-test/

  

下面是维基百科对于这些测试的定义:

  • 单元测试Unit Test: 也可称为模块测试,是一种白盒测试。针对程序模块正确性的检测工作,单元测试是一个程序之中最小的可测试部件。对于Java这种面向对象语言,单元测试也就是方法测试(Class Method)。
    • 简而言之,就是在不考虑外界依赖的情况下只针对函数方法内部逻辑测试。一切外界依赖(调用某个方法,API,第三方模型等) 我们应该假设都会成功执行。
  • 集成测试 Integration Test: 也可称为组装测试。当单元测试完成后,将程序模块组装起来,对系统的接口进行正确性检验。这是测试会包含所有真实外部依赖进行测试
  • 功能测试 Functional Test: 是一种黑盒测试,通过输入功能并检查输出功能,这时测试不再考虑内部程序结构,而是来评估程序功能是否满足要求。(输出结果正确性,响应时间,等等)
  • 端到端测试 E2E Test: 是来测试整个产品从开始到结束整套工作流。
    • 举例:一个电商支付E2E Test就可以理解为从用户点击“支付” 到最后银行数据库账户更新这工作流全部过程的测试。
    • 测试逻辑:Unit Test < Integration Test < Functional Test < E2E Test

那么对于单元测试和集成测试,定义上都是对于模块的测试,那么他们具体有什么区别呢?下面是摘自Michael Feathers大佬,如果一个测试满足下面任何一项那都不是Unit-Test

  1. 需要与数据库连接
  2. 需要通过网络调用某些API
  3. 需要使用文件系统
  4. 不能与其他Unit Tests同步执行
  5. 需要定义或者编辑项目环境来运行

Reference

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值