共计 3136 个字符,预计需要花费 8 分钟才能阅读完成。
最近始终在思考对于测试的三个关键问题应该是什么,目前有了初步的假如和解决思路,权且先写下来,以抛砖引玉,寻求更多反馈和探讨。
问题 1:测试是否真实有效?——测试有效性
第一个关键问题,我想晓得我的测试是否都真实有效。乍看上去像个伪问题,其实不然。能够扪心自问一下:我能保障软件所有的测试都是无效的测试吗?不见得吧……对这个问题心里有底的测试人员值得好好褒扬一下。基于实在教训和数据不难得出结论,无效测试的比例并不高,甚至在某些场景下,测试人员都没有思考过“大量执行的测试是否真的无效”这个问题。
如何评估测试有效性呢?能够从测试策略、测试反馈、可测性等角度来逐个盘点。
1.1 测试策略
(测试金字塔)
首先评估测试策略的有效性,可依照测试分层模型“测试金字塔”来逐层盘点:
- 总共分几层:采取哪些测试
- 各层占多大比例:测试重点
- 各层测试指标:不同的测试服务于不同的测试指标
- 各层笼罩要求:不同测试应笼罩哪些问题,覆盖率的要求
而后评估测试用例和用例集的有效性:
- 不论是手工测试用例还是自动化测试用例,每个测试都须要是无效的测试
- 不同的测试用例集能实在的服务于不同的测试指标
- 打消反复的测试或各层之间反复笼罩的测试点,避免浪费
- 测试笼罩绝对齐备:不片面追求覆盖率数值,而强调对业务场景的笼罩水平
- 建设测试下沉机制:在金字塔下层发现缺点,评估是否从上层逃逸,如是应在上层补测试
1.2 测试反馈
为了使测试能无效的反馈代码品质,适量的测试应在适合的机会进行,且能无效反馈代码品质,并能起到门禁作用,防止低质代码流入上游。解释一下这句话中的要害信息:
- 适量的测试:不同测试应有不同量级的用例被执行,保障笼罩的状况下越少越好
- 适合的机会:不同的测试可按需周期测、随时测,或放到流水线上时时跑着
- 无效反馈:正当预期,正确断言,确保能实在反馈软件体现
- 门禁作用:当测试不通过时应及时截断,防止低质代码持续流转
1.3 可测性
软件可测性指被测软件在给定测试环境下,可反对测试的水平。软件可测性有较多参考因素,如:可管制、可观测、隔离性、可读性、自动化水平等。软件可测性是确保测试有效性的必要条件,当可测性较高时,测试有效性才有可能维持较高的程度。
个别当聊到可测性时,可能会依据测试类型的不同做以下辨别:
- 前端可测性:指软件对前端测试的反对水平,如 UI 标准、前端代码标准等
- 后端可测性:指软件对后端测试的反对水平,如高内聚低耦合,提供测试接口、执行步骤可控可观测等
- 欠缺的日志零碎:提供可观测、可追踪的日志零碎,便于疾速定位问题
(便于观测的日志零碎)
问题 2:测试是否高效执行?——测试效率
当确保了测试有效性,就须要关注测试执行的效率如何了。毕竟是测试基于无限工夫窗的流动,所以咱们不光要谋求测试都是无效的,还谋求能高效的执行这些测试。而这又依赖于环境和设施的底层反对,以及继续的关注和改良测试执行效率的具体口头。
2.1 测试环境反对
咱们对测试环境的应用过程可大抵分为以下步骤:
筹备测试资源 → 测试环境部署 → 测试服务部署 → 环境验证 → 环境应用 → 环境销毁
理论工作场景中,测试环境往往是妨碍测试效率的一大难题。为了达成不同的测试指标,测试所须要的环境、数据、集成状况可能都不一样,咱们冀望测试环境能“专款专用”,无效隔离,防止不同测试品种、不同测试人员、不同实际流动、不同测试数据之间互相掣肘。
(吐槽测试环境)
现实饱满,事实骨感。当测试人员在申请环境资源时,常常遇到各种妨碍,如环境资源的高老本,或者环境申请的长链简单流程。测试人员期待的环境反对应满足以下几个条件:部署和保护成本低、按需扩大、即用即抛,不同测试间的环境和数据隔离,让测试人员可能从各种繁冗的排查环境问题中真正解脱进去,聚焦业务测试。
(想要新环境?不存在的)
2.2 测试基础设施
想要取得较高的测试效率,必不可少的关键因素是继续集成。测试效率要想进步,须要绝对现实的测试策略:大量的手动摸索式测试 + 大量的自动化回归测试 + 基于需要的专项测试,这其中大量的自动化回归测试就须要无效集成到继续集成流水线中去。可依照以下检查点来评估:
- 有大量无效的自动化测试
- 自动化测试增加到继续集成流水线
- 基于每次代码提交的测试,如外围模块的单元测试,或外围业务流程的回归测试,应加到对应服务的 pipeline 中作为独立 step,无效反馈提交代码的品质
- 其余业务回归类的自动化测试,也须要定期频繁执行,要害工夫节点必执行
- 有测试执行的可视化报表或监控机制,确保问题及时被解决
除了继续集成,无效的测试也依赖于测试套件的疾速筹备,服务于不同测试指标的数据生成,以及测试工具或平台级的反对。
2.3 测试执行效率
不管测试的环境和设施反对是否齐备(毕竟这不只是测试的决策),测试人员都须要继续的继续的关注和改良测试效率:
- 手工摸索:是否有助于在无限工夫内发现缺点,摸索执行的测试是否须要加到惯例用例中
- 自动化测试:执行周期正当,执行时长绝对稳固,通过率维持肯定程度
问题 3:测试价值体现在何处?——测试价值
3.1 内建品质
如果说以前测试的职责是发现软件的缺点,那么当初咱们聊的品质内建,其实是发现和纠正流程的缺点。任何可能升高软件品质的工作形式,也能够是咱们关注和改良的对象。而在品质内建的过程中,测试人员奉献的最大价值就是帮忙全团队建设品质意识,由“测试和品质是 QA 的事儿”转变为“测试和品质是大家的事儿”。思维的转变是最难的,但也是一旦转变产生了,就会在各个工作点滴中迅速会集成果的基本。
(全程品质内建)
3.2 裸露危险
测试的另一个重要职责是充沛裸露危险。这里的危险有三类:品质危险、交付危险和生产环境危险。
通过缺点建模、缺点数据分析、根因剖析和缺点预防等实际,测试人员能够充沛理解品质危险,从而对行将投产的软件进行品质危险上的预测。这种基于历史教训的预判有助于降低生产环境的品质危险。
在以往和测试人员交换的过程中,大家示意对危险的干涉水平可能较低。但其实这里测试人员的价值在于充沛的裸露危险:须要把危险点是什么、测试人员给出的预判、潜在危险可能产生的损失、危险干涉的伎俩和因而产生的老本等等这些信息,全副同步给团队,并在团队进行危险干涉时进行肯定的输出和疏导。
(测试人员的职责:辨认和裸露危险)
3.3 保卫门禁
测试人员的话语权体现在对品质门禁的保卫上。人当有所为,有所不为,团队也一样。测试人员肯定要保卫品质门禁,不通过就是不通过,须要明确给出测试论断,尽量避免任何不置可否的品质论断。
一些明确的品质论断示例:
- “某性能通过充沛的测试和相干回归,测试通过,能够上线。上线后需观测……”
- “工夫过紧,某性能只通过验收规范的测试,尚未充沛的回归和摸索,不倡议在以后热更上线。能够安顿在下次热更上线,咱们就有充沛的工夫实现测试。”
- “如不可抗力必须上线,可能面临的品质危险有……倡议采取以下几种措施进行干涉和疾速复原,上线后倡议相干角色继续观测……,确保第一工夫捕获线上问题。”
品质门禁须要保卫,如果有起因导致门禁生效,那也是团队独特决策的后果,团队整体需独特承当品质危险,并尽所有人的致力把损失降到最低。
写在最初
对于本文内容,我还在继续地思考和迭代。我想晓得何以测试人员广泛不足价值感,可能大部分源于所做的事件并没有意义。怎么给测试这件事件赋予意义呢?冀望实现这个思考过程能帮忙我找到答案。
起源:圆小豆的美梦工场
作者:于晓南
申明:文章取得作者受权在 IDCF 社区公众号(devopshub)转发。优质内容共享给思否平台的技术伙伴,如原作者有其余思考请分割小编删除,致谢。
玩乐高,学麻利,规模化麻利联合作战沙盘之「乌托邦打算」,12 月 25-26 日登陆深圳,将“多团队麻利协同”基因内化在研发流程中,为规模化晋升研发效力保驾护航!!🏰⛴公众号回复“乌托邦”可加入