单元测试与自测方案
测试驱动开发(Test Driven Development)
TDD概念
TDD 是敏捷开发中的一项核心实践和技术,也是一种设计方法论。TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码。
TDD 的基本流程
红,绿,重构
生命周期
- 编写测试
- 运行测试
- 修改代码保持正确,重构( Refactor)
- 重复上面的过程
步骤
- 添加测试
- 运行所有测试并查看是否有新的测试失败
- 写一些代码
- 运行测试并重构代码
- 重复
TDD 两种类型
Acceptance TDD (ATDD)
验收测试驱动开发,用ATDD编写一个验收测试。该测试满足了规范的要求,或者满足了系统的行为。之后,编写足够的生产/功能代码来完成验收测试。验收测试侧重于系统的总体行为。ATDD也被称为行为驱动开(BDD)。
Developer TDD (DTDD)
开发人员测试驱动开发,开发人员TDD,您可以编写单个开发人员测试,即单元测试,然后只需编写足够的生产代码来完成该测试。单元测试侧重于系统的每一个小功能。开发者TDD被简单地称为TDD。
ATDD和TDD的主要目标是在及时(JIT)的基础上为解决方案指定详细的、可执行的需求。JIT意味着只考虑系统中需要的那些需求。所以提高效率。
TDD的优点
降低开发者负担
通过明确的流程,让我们一次只关注一个点,思维负担更小。
保护网
TDD 的好处是覆盖完全的单元测试,对产品代码提供了一个保护网,让我们可以轻松地迎接需求变化或改善代码的设计。
所以如果你的项目需求稳定,一次性做完,后续没有任何改动的话,能享受到 TDD 的好处就比较少了。
提前澄清需求
先写测试可以帮助我们去思考需求,并提前澄清需求细节,而不是代码写到一半才发现不明确的需求。
快速反馈
有很多人说 TDD 时,我的代码量增加了,所以开发效率降低了。但是,如果没有单元测试,你就要手工测试,你要花很多时间去准备数据,启动应用,跳转界面等,反馈是很慢的。准确说,快速反馈是单元测试的好处。
TDD的缺点
增加代码量。测试代码是系统代码的两倍或更多,但是同时节省了调试程序及挑错时间
总结
TDD 是一个调整Code的过程,目的是执行通过事先编写的Test
TDD 更加强调创建生产代码而不是测试设计
TDD 被称之为 测试先行(Test First Development)
TDD 包括重构代码(Refactoring Code)
当使用TDD时,Code变得简单易懂
TDD的相关文章:
https://blog.csdn.net/seagal890/article/details/84948202
https://blog.csdn.net/zanfeng/article/details/119480625
单元测试规范
为了提高代码质量,杜绝只开发不自测的情况,降低质量检测成本,所以进行单元测试
单元测试原则
- 使用Mock框架进行单元测试
- 每个交互接口对应一个单元测试,接口单元测试覆盖率为70%
- 测试场景为交互接口在产品要求的标准业务逻辑下进行的测试
- 通过标准为测试接口请求成功
- 单元测试通过率为90%
单元测试覆盖率配置
引入jacoco插件包
<dependency><groupId>org.jacoco</groupId><artifactId>jacoco-maven-plugin</artifactId><version>0.8.7</version></dependency>
jacoco插件配置
<!-- jacoco插件配置 --><plugin><groupId>org.jacoco</groupId><artifactId>jacoco-maven-plugin</artifactId><version>0.8.7</version><configuration><destFile>${project.basedir}/target/coverage-reports/jacoco-unit.exec</destFile><dataFile>${project.basedir}/target/coverage-reports/jacoco-unit.exec</dataFile><!--这里指定单元测试覆盖率排除的包--><excludes><exclude>**/security/**</exclude><exclude>**/log/**</exclude><exclude>**/sys/**</exclude></excludes><!--这里指定单元测试覆盖率包--><includes><include>**/controller/**</include></includes></configuration><executions><execution><id>jacoco-initialize</id><goals><goal>prepare-agent</goal></goals></execution><execution><id>jacoco-site</id><phase>package</phase><goals><goal>report</goal></goals></execution></executions></plugin>
单元测试报告
生成报告步骤:
1.maven 执行test
2.执行插件 jacoco:report
生成的报告目录:\target\site\jacoco\index.html
报告效果
jenkins集成单元测试
设置项目为专门的单元测试,构建成功后生成单元测试报告,以便检查是否存在遗漏的单元测试
检测单元测试报告
产品功能自测
单元测试通过后,进行功能自测,测试事先需要提供门槛用例,然后由产品经理牵头会同前端和后端共同进行自测。
自测重点:
- 测试提供门槛用例
- 产品核对产品功能
- 前后端进行按照门槛用例进行自测
- 自测通过了,以邮件的形式转测试,并且在邮件中附带单元测试通过报告,门槛用例通过报告
版权归原作者 懒斯落特 所有, 如有侵权,请联系我们删除。