开发者测试的定义:
开发者测试(DT),是指开发者所做的测试,有别于专职测试人员进行的测试活动。 DT目标是在软件交付转验收测试前,发现和解决绝大多数代码缺陷,而其理论依据是业界 研究反复揭示的“前端发现问题的代价远小于后端”。
本文先不讨论开发者测试的优势(作用),也不展开讨论开发者测试有哪些技术,重点讨论开发者测试开展前需要考虑清楚的10个问题。众所周知,开发者测试最终需要在业务团队落地并产生正向收益,因此,除了需要考虑业务团队的诉求、业务团队开展开发者测试的驱动力之外,更重要的是考虑开发者测试本身需要面对的问题,因此,本文总结了开发者测试开展前需重点考虑清楚的10个问题。
开展开发者测试需要考虑的10个问题
1、 开发者测试开展的范围
当前业务团队内质量看护有多种手段,如:手工验证、集成验证、冒烟测试、性能测试、压力测试等,既然有这么多质量验证手段来看护质量,那么根据测试分层的原则,开发者测试看护的范围必需要明确下来
测试分层(明确开发者测试的看护范围)
开发者测试以开发为主导,有着与其他质量防护体系鲜明不同的测试对象,它以白盒测试为主,兼顾系统测试/整体测试,处理测试的最下层。那么在业务团队内,各个模块测试占比存在差异,则需要根据其具体的业务诉求,制定相应的测试策略,千万不能一刀切,所有业务团队采用同一种测试策略。基于已制定好的测试策略,则开发者测试的看护范围也就明确下来了,毕竟开发者测试不能解决所有的质量问题。比如说:模块的基本功能类问题、典型场景类问题,接口层内部逻辑问题,模块间接口交互类问题等等,这些都是属于开发者测试看护范围。
应用举例:
UT(单元测试):可看护的范围包括边界值问题、空指针或赋值错误,内部业务逻辑问题等等。
MST(模块集成测试):可看护的范围包括模块内业务功能问题,单流程异常问题,内存相关问题等等。
ST(集成测试):可看护范围包括模块间接口应用问题,典型场景类问题,特别是基本功能类问题,通过开发者测试的集成验证,确保不流入测试验证环节,更不能产生阻塞测试验收的问题。
除了这些正向制定的范围以外,还一种措施可以采用,那就是逆向分析已流出的问题,总结哪些是开发者测试环节应该看护的问题,纳入开发者测试的看护范围。
2、 开发者测试的理念与文化
在开发者测试开展前,需要让待开展的业务有足够的认识,需要他们认同开发者测试的价值,能够积极参与,而不是消极应对。如果团队不理解开发者测试的价值或方法(如:测试是测试人员的职责),一定会认为开发者测试会给团队带开额外的工作量,甚至认为是加重负担,浪费人力)。
可想而知,有些团队一定会将开发者测试的代码当前是非交付代码,尤其是在团体类交付类代码非常占用人力的背景下,开发者测试的交付一定会被当成是政治任务(应对代码覆盖率),反正测试团队也不会直接验收开发者测试的质量。这说明开发者测试还团队内还没有达成共识,没有形成开发者测试文化,团队内的代码质量看护依赖测试团队的验证或自动化流水线,在这种文化背景下,业界问题发现占比(转测试前:转测试后=7:3)是遥不可有的愿景。
3、 开发者测试的技术成熟度
当前开发者测试在业界已有比较成熟的经验,如:对于C/C++类的代码,测试框架有Gtest/Gmock/mockcpp等开源框架,对于内核代码,也有Kunit等轻量级内核自集成的框架,对于Java类的代码,也有Junit等开源框架,对于python等其他语言类的也有相应的测试基础框架。按理来说,开发人员应该可以很简单的根据自身业务选择对应的测试框架开展开发者测试。但实际上,我们事先评估下目标团队开展开发者测试,这些框架的应用成熟度是否满足了,如果还不够,需要开展赋能,增强业务团队的技术成熟度,否则,强行推行开发者测试在业务团队落地,可能会出现输出测试用例质量不高的情况。
除了框架应用的技术,还有一个重点就是业务代码的可测试性,如果业务团队的依赖不合理,代码架构不合理,甚至无法构造输入,无法检测输出等等,都会导致开发者测试无法开展下去,即使在开展,也是事倍功半。
4、 工具平台的成熟度
这些所说的工具平台不是指前面提到的基础测试工具,则是指业务团队内需要使用的工具,主要分为两类:其一是业务场景测试下需要应用的工具;其二是用例执行与集成用例的工具。前一类可以是基于基础测试工具(如:gtest),开发团队可以对其进行二次封装/适配,输出一套自己业务适合的测试工具,这样测试时才会事半功倍。如果能够自行开发测试工具或复用其他团队的测试工具,也是一种不错的选择,比如说:在存储产品领域,开发一个模拟IO下发的工具,或者是DT Fuzz工具等。如果只是一味的想着拿来主义,也许其他人的工具并不适配自身团队。后一类工具,决定着用例的执行效率,如果没有好的用例集成与执行工具,开发者测试效率会迟迟提不上来。
当然,一定会有人提出异议,在没开展开发者测试之前,怎么先开发工具了?其实,磨刀不误砍柴功,在开展开发者测试前,把这些前提条件准备好,开发者测试才会顺利开展,获得正向收益。至少需要在开展开发者测试过程中,需要准备好上述工具,提升开发者测试工具平台的成熟度。
5、 开发者测试的组织
开发者测试需要长期演进,除了各业务团队输出开发者测试用例外,在落地过程中,还会涉及很多关键性的基础工作,包括但不限于:开发者测试环境部署,测试框架的搭建、维护及优化、开发者测试用例的编译、调试及运行效率的提升等等,还有一系列工程化的部署与开发者测试规范的制定等。这些都是需要组织来支撑的。
待补充
标签:10,看护,业务,---,开发者,测试,开展,团队 From: https://www.cnblogs.com/zhaozg/p/17675859.html