通用技术 精准测试的实现方案

二宝爸爸 · 2019年09月14日 · 最后由 杨大侠 回复于 2022年05月17日 · 5769 次阅读

一:前缀

就像大部分的美剧一样,在聊精准测试实现之前,想先谈下自己脑子里面一些乱七八糟的想法

  • 测试和开发信息的不对等

这里的不对等,并不是指的不公平,而是信息的不对等。测试更加偏重与业务知识,开发更加偏重于实现。这样往往会造成信息不对称,比如开发人员修改了 2 行代码,可能测试人员就需要把整改业务回归一遍,资源在浪费,产品发布迭代的周期在变长。

  • 测试和开发的产物不对等

一个周期完成了,开发提供了可交付物是代码,测试提交了可交付物是用例,业务对应着代码,我们的用例也应该对应着代码。
开发人员的代码完成了,可以由测试证明没有问题。那么测试完成了,我们应该由谁来证明。

二:具体的实现方案

三步走的模式

  • 进行基础模块的建立

开发了用户中心、权限模块、用例模块、任务/计划模块、报告模块、覆盖率能力构建

  • 精准分析

在基础模块实现的基础上,建立专业化的度量指标,用例评测测试过程质量。
实现覆盖率服务化,以及差异化的覆盖率功能。对新代码,可以查看新代码覆盖情况。修改代码,可以看差异化的代码测试情况。

  • 精准推送

利用 java-agent 以及 bytebuddy 进行执行过程代码(类、方法)拦截,采用沙箱和主程序隔离,并且采用 flume-kafka-es,实现代码落地到 es 中。
采用降噪服务,关联用例和拦截到的执行代码,给用户推荐最合适用例/代码绑定关系,并且支持用户进行人工标准。
采用 svn-diff,按时间/构建来获取代码差异(类、方法),根据绑定关系给用户推荐合适用例。从而实现用例的精准推送。


共收到 12 条回复 时间 点赞

采用降噪服务,关联用例和拦截到的执行代码

请问这里如何关联执行代码和手工测试用例,每执行一条案例需要测试人员手工去操作吗?如果这样的话给测试人员带来的额外成本会很高

xinufo 回复

应该是通过 java-agent 吧,人工只需要在执行手工测试用例的时候标记开始结束时间,java-agent 会监控执行了哪些代码行。
TMQ 团队有本书《精准测试之路》里面就是讲这个的,推荐阅读。

arrow 回复

那看来我们和 TMQ 团队 “英雄” 所见略同😀

xinufo 回复

你好,下一篇博文中我会重点讲解下,如何关联执行代码和手工用例。代码的关联对于测试人员来讲,是无感知的。但是依赖前提是用例的执行需要在我们内部 “积沙平台” 上进行执行。在微服务架构下,对于几百个服务的代码关联的降燥算法,我们还需要体谅优化,目前推荐的准确率可以达到 85% 左右,我们主要还是想达到 95%。

很棒,我也想写个类似的文章,可惜墨水不够

arrow 回复

其实我说的就是这种方式,测试人员每次执行手工用例时都需要额外的去标记用例开始和结束,总感觉这种方式不是很好,第一是给测试人员引入了额外的操作可能会影响测试效率,第二是关联依赖于人为操作,可能因为误操作引入错误。😂

simple 回复

有了第一步,就有第二步,加油。大家一起共勉

二宝爸爸 回复

下一篇文章什么时候写?

仅楼主可见

博主,第二篇出来了吗

楼主,降噪算法怎么搞得哦,能细聊一下吗

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册