从测试左移到精准测试浅析

时间:2019-10-05 13:00:01 来源:微商营销 当前位置:教育新助手 > ag8app官方下载|注册 > 手机阅读

背景

最近团队在和业务线一起共建精准测试,以提效和能力升级为目标,把回归测效率提升上去,借着这个机会机梳理了对精准测试的认识。


测试左移

在讨论测试未来发展的过程中,?经常被提到的一个点就是测试左移。

?

那么什么是测试左移,?左移什么,?本文从工程效率的角度,借着《不测的秘密:精准测试之路》这本书的引发的思考,浅析一下测试左移,以及精准回归。


在说测试左移之前, 先说一下现实的质量要求和测试成本之间的矛盾, 现实情况中,经常会遇到的一个场景, 测试需求变更频繁, 交付问题多,测试被催促。 这样的背景下, 大家慢慢已经对需求变更习以为常,延迟开发计划,压缩测试时间,测试效率还能提高吗?


提效的衡量拆解

对于测试效率的提高, 一般会提到狭义的自动化测试,传动的自动化ROI分析,主要是基于把自动化测试定位在回归测试执行者的角度,并且有一个很大的前提,也是传统自动化理论“赖以生存”的基础,这个前提是“测试做的越多越好”。在迭代和增量版本,是不是测试覆盖率越多越好,在回归测试中很多测试是因为“不放心”,因为不放心测试,测试会变得冗余,测试越来越多,自动化测试似乎就成为了唯一的“救命稻草”。但是在端上的测试很难做到稳定且全面的自动化,人工还是占了很大的比例。


那么测试效率提升如何衡量,咱们先说一个测试独占时长的简化方式,进而引出对测试提效和能力提升的思考。

测试独占时长 = 单人黑盒测试时长 / 黑盒测试总人数 = (测试数量 * 测试轮次 * 单个case执行时常 + 期间发现bug数 * bug验证时长) / 人数


通过临时补人, 增大测试自动化以减少单个case执行成本,已经是比较常见的常规手段;常常被忽略的也是在舒适区外的是能不能通过较少case量和较少bug回归成本来提高效率?


精准测试&测试分析

精准测试是选择之一,? 精准回归和测试分析的目的之一是要建立变更和测试的对应关系,更有效的验证变更代码,少做无用功, 打破全局回归,使得测试可追溯,测试结果更有技术公信力。

测试分析

测试分析师在测试过程中, 根据需求和代码进行分析, 最后得到一个包含需求背景、开发实现分析、测试维度等信息的分析报告, 用来指导测试范围, 将测试封建降到最低。

  1. ag8app官方下载|注册建立需求与代码的关系,建立基础的代码提交规范, 从规范上进行约束, 从commit信息来看(从hook可以拿到), 其中可以拿到的信息,有commit message, author, 版本信息, 父节点信, 日期, 分支等, 从拿到的信息来看, 能够做文章的一个就是commit message, 那么如何关联需求; 阿里的开发需求一般都放在aone上,需求有链接, ID, 直观的想法是commit 信息中包含aone的需求, 后面可能还有bug, task, 这些ID有可能重复,需要建立pattern如 #req:ID 等在message里进行关联, 当然,如果想做的跟通用,可以遵循业界的一些ALM的规范, 如OSLC等(后面会介绍分布式系统的服务治理还会说到一些相关规范)。为了关联的有效性可以提供IDE等插件来做辅助映射和关联。现在Aone也提供了Idea的插件, 未来也有可能有类似的功能。

  2. 关系的建立, 在时间中由于开始基于一部分java应用, 使用incepter来标记变更方法和用例的关系成本比较低, 但是也会来来潜在的问题, 方法分支比较多的情况下,也会造成用例比较多又难于去重的情况, 未来结合业界经验,进行方法+分支,与case进行验证是需要尝试的一个角度。

  3. case的去重,用例是针对函数编写的,用例与函数的分支内容息息相关,回归测试的时候,需要覆盖当前分支,但并不需要将该分支的重复用例都覆盖到,在验证中如何基于圈复杂度, 进行最小集的用例关联,需要去重单个分支下的重复用例, 当然在设计用例的时候, 需求区分分支的用例, 控制用例的粒度,这个和传统的测试手段类似, 等价类等, 本文不再赘述。?

  4. 总体参考


技术治理

在过程中可能遇到的关键卡点,在精准回归过程中可能比较参与到的问题是用例的过度推荐。过度的原因可能有多种, 一种可能需要区分路径和测试去重, 另外一种可能就是每次推荐的用例关联耦合过多, 造成需要执行的用例人比较多。耦合的问题, 参考后文脑图, 本文不详细展开了。


核心:度量及分析闭环

  • 双向追溯

  • 覆盖率

有了精准测试, 覆盖率统计不再是白盒测试的技术专利,实现分支覆盖,全复杂度, 等指标, 并且结合圈复杂度对测试用例精简进行指导。


  • 问题bug的快速定位

由于建立了测试和变更方法分支的关系, 在出现case失败等问题,可以快速的定位问题代码。


其他

在推行自动化的过程中, 往往会统一测试框架, 但是在多语言的架构中,如高德,有C++, python, java等, 统一测试的技术栈,如java测试框架,往往会造成测试与研发的技术栈不统一, 变成了一把双刃剑, 可能会影响未来灰盒白盒测试的能力建设。


精准测试其中隐含的另一重要的作用是技术提升和组织升级,精准测试对于测试人员的代码开发、测试设计、需求理解、架构理解、自动化测试均有较高的要求, 从这个角度,需要系统具备易于测试的接架构,精准测试有对自己能力上的提升和挑战。从成熟度来讲, 业务、质量把控、效率把控的维度中, 质量把控需要有需求的技术评审能力,和基于变更代码的风险控制和识别能力,从某种程度上讲,左移需要测试和研发在代码实现,架构设计上衔接的更加紧密。



下面是基于参考文献,对精准测试的分析和总结

公众号图片大小限制,脑图参考链接?https://dwz.cn/UG5z8QVD

https://dwz.cn/UG5z8QVD

相关文章:

英语本月排行

英语精选