精准测试我的理解是针对应用代码的变更,更有针对性的测试变更的地方,那么好处提升测试效率,节省测试资源,测试目的更加明确,减少漏测
在说思路之前简单说一下大概用到的东西
被测系统开发语言:java
容器:tomcat
代码管理工具:git
监控工具:jacoco
一、我们的测试流程是测试人员根据提测任务接收测试任务的
我们有一个质量管理系统,下面是一个简单的测试流程:
- 1.首先开发人员在提测系统上进行构建打包
- 2.构建成功之后,会有一个提测按钮在当前的构建包上,提测版本 A的测试
- 3.开发点击提测之后的会弹出来关联需求,关联本次变更的需求
- 4.测试人员接收到提测任务(接收任务的同时本次变更的代码也也获取到存放在我们的服务器上,接收任务采用 JMQ 异步接收,并且邮件推送给测试人员),并且这次任务是带着测试的应用包和关联的业务需求
- 5.测试人员关联已经写好的测试用例,创建测试用例执行任务与本次提测任务关联上,并且执行
- 6.在质量管理系统部署当前的应用包到测试环境
- 7.测试执行完成,查看覆盖率
- 8.测试通过 Or 重新提测
二、查看覆盖率与监控过程
- 1.在测试人员接收测试任务的同时,会获取当前的变更代码
- 2.在部署应用的过程中,针对应用加入 jacoco 监听器,启动 tomcat 时默认加入 jacoco,并且设置监听端口
- 3.测试人员测试用例执行之后,开始收集 jvm 内存中的代码执行轨迹
- 4.因为已经获取了变更的代码,那么用变更代码与 jvm 代码轨迹进行匹配,我们不需要多余的执行轨迹,只关注本次变更的代码是否覆盖全
- 5.推送测试覆盖率给测试人员
- 6.质量管理系统给已经执行的用例打标记和变更代码关联 (这里测试人员不可见的)
以上几个部分用户是无感知的
三、用例推送,实现执行精准的测试用例
因为上面的提测是第一个版本所以暂时无法做到精确定位,那么现在开发又提测版本 B,到质量管理系统,首先我们会根据变更的代码去查找时候有匹配过的测试用例,如果有匹配上的用例,这个时候主动推送给测试人员,告知他这些变更的代码之前执行过测试用例,可以推荐他是否要对这些用例执行回归
四、大概的图
具体的实现代码没有放上来,有些东西也是公司内部正在用的,主要是给大家提供一种思路,欢迎大家一起讨论
↙↙↙阅读原文可查看相关链接,并与作者交流