测试行业每年会冒出来一些新鲜词:混沌工程、精准测试、AI测试…… 这些新概念、新技术让我们感到很焦虑,逼着自己去学习和了解这些新玩意,担心哪一天被淘汰掉。
以至于给我这样的错觉,当「回归测试」、「精准测试」这两个词摆在一起,「回归测试」立刻就显得有些低级。我们愿意花时间去学习更新鲜的东西,也不愿意花费更多时间去研究如何做好「回归测试」这类老生常谈的工作。
所以,每隔一段时间我都会试着问问自己:「这项新技术的本质是什么?」、「和传统测试技术的关系是什么?」、「我为什么要学习它?」、「只是一个空洞的概念?还是有落地的实际方案?」、「公司内有适合推广的土壤吗?」……
弄清楚了这些问题后,我发现自己甄别出了:哪些技术我要学习,哪些技术我完全不需要学习。
最后,我也就不焦虑了。
精准测试是什么?
精准测试 是一套计算机测试辅助分析系统。精准测试所涉及的核心范围包含:软件测试用例和代码的双向追溯、智能回归测试用例选取、覆盖率分析、缺陷定位、测试用例聚类分析,这些功能完整的构成了精准测试技术体系。
用大家能听懂的话来说,我们在做软件测试时,往往面临2大难题:时间和复杂度。
时间:
测试的时间不足、人手不足。
在有限的时间内,怎样提高资源利用率、减少浪费,避免漫无目的测试。
复杂度:
排除不稳定因素、不确定因素。
例如,
你问测试工程师小张:小张,昨天的A项目上线了,你作为测试方,你觉得上线的质量怎么样?
小张:还行吧,我觉得应该没问题。
你:还行?觉得?应该?小张为什么用这么多不确定的词来回答呢?
因为他确实不知道呀。他不知道:他在测试的过程中,测试环境有没有人不小心碰到,测试数据有没有和同事合用,测试场景有没有遗漏,系统代码有哪些没有测到?
这么多不知道,他当然不知道了。
这时,精准测试可以作为一个系统的测试工程加以实践。
以服务端精准测试为例,行业里最普遍的做法是引入Jacoco开源插件,无论是以工程打包插桩的方式、还是以无侵入的方式,将被测系统部署在测试环境中,接下来执行「手工测试或自动化测试」,最终,生成一份「精准测试染色报告」。
通过查看染色报告中的细节,你可以看出来,「红色区域」是你测试遗漏的地方,接下来,对比测试用例,弄清楚这些「测试遗漏」是不是因为自己设计的测试用例存在不足。
精准测试其中一个最好的用法,就是用在做好「回归测试」上。
例如:
1、我能发现这次回归测试,哪些功能代码根本没测试到。
2、我能发现自己的测试用例原来存在这么多设计上的遗漏场景。
3、我能发现代码中有些逻辑代码属于是无效代码。
……
引入了精准测试概念的回归测试行为,你会发现,我们的重点不在于回归测试了,而在于「我这次回归还有遗漏吗?」
精准测试,可以更进一步拉近「你」与「回归测试」之间的距离。
如何用精准测试来搞垮团队呢?
与其说是尝试用「精准测试」来搞垮团队,倒不如说是「新技术」来搞垮团队。
下面6个点,既可以用在「精准测试」身上,也可以套用在「任何新技术」上来搞垮一个团队。
1、仅关注指标
往往纯管理类型的测试经理,会在工作中尝试寻找「管理抓手」。
拿精准测试来说,既然我不懂精准测试,但我又想知道精准测试的效果如何,简单,找指标呗。
张三,你这个系统必须达到75%的行覆盖率。
李四,你那个系统必须满足80%的分支覆盖率。
王五,你能力那么强,那你的指标肯定不能低于张三和李四,对吧。
整个过程就像旧社会,地主向长工催交租子一样,而长工们也会穷尽一切办法上交。
啥?质量?这里面哪有质量的事啊?只看指标就行了。
2、技术能力弱
俗话说,没有精钢钻就别揽瓷器活。
如果测试团队技术能力弱,但又想试着去做「新技术」的研究,多数情况下,无异于羊入虎口。
我亲眼见过很多传统小厂里,测试团队中有一半以上的人不会用Python写接口自动化脚本,有80%的人不懂任何编程语言,而准备一边投身功能测试,一边投身去做精准测试的。
最终的结局,往往是两边都做不好,搞不下去。
说到底,失败只是一个结果,逐渐做不下去是过程中的表现,选择导致了方向错误,技术能力弱则是团队的原罪。
3、理解认知问题
对于新技术,很多朋友往往存在着片面的认知,例如:精准测试就是Jacoco、接口自动化就是Pytest、UI自动化就是Seleium、性能测试就是JMeter、功能测试就是点点点。
在他眼里,所有的技术都可以用一个工具代替所有,而拥有这种思路的测试工程师,在实际工作中还带着好几个「亲传弟子」,手把手教他学测试……
每时每刻,行业中都有很多惨剧在发生着。
4、仅仅懂测试相关的知识
当你选择了研究「精准测试」时,你会发现,测试相关知识仅仅是其中之一,仅仅掌握测试是做不好的。
如果你想做好还需要熟悉:构建发布CICD、工具开发、编程语言、网络传输、甚至Docker虚拟化……等其他知识。
其实,这里面不但变相考察了大学里面所学的「计算机基础知识」、「数据结构」等基础知识,还跨了岗位,涉及到开发工程师、运维工程师、测试架构师岗位的知识。
5、心态不开放,不愿接受失败
有尝试就有失败,有失败就能总结经验,有经验、有信心就有可能做成事。
心态的不开放,往往会存在两种情况:
case 1 - 拿来主义、投机主义: