本文将从岗位要求看软件测试、软件测试技术的认识和理解、质量保障与软件测试的关系、构建质量保障系统的要点这四个方面简单聊一聊作者的理解,带你换个角度来认识软件测试。
从岗位要求看软件测试
首先,我想请大家和我一起思考一个问题:我们要以什么标准来区分初级、中级、高级软件测试工程师、测试专家这几个岗位。
也就是这4个职位怎么去界定,我们自己属于哪个级别呢?(为什么选这4个呢?因为现在整个行业基本都是这么去划分软件测试工程师岗位级别的。)
从众多的招聘信息上看到,似乎是可以用工作年限来界定的:
1年以下是初级、1-3年是中级、3-5年是高级、5年以上是专家。
那有的人就会想了,我已经工作5年了,是不是我可以去应聘测试专家了呢?答案是不一定。
为什么呢?因为先不说以工作年限作为判断的标准是对还是不对,仅仅简单地依据年限来判断这个方法就是会有偏差的。
不是有个段子嘛,说是10年工作经验,其实是用1年的经验工作了10年。
继续从众多的招聘信息上看到,似乎是可以用工作技能来界定,功能测试是初级、会用工具是中级、能开发自动化脚本是高级、能开发自动化框架是专家。
那又有人会想了,现在这么多培训,线上线下都有,各种方面的,比如python编程,自动化测试培训等等。
那是不是我参加这些培训班,学会了python、学会了自动化测试框架的使用,那我至少可以应聘高级软件测试工程师了吧?
答案还是不一定,为什么这么说?我们先把这个问题记下,继续往下,看完我后面的认知理解,我们再回来看这个问题应该就能有答案了。
软件测试技术的认识和理解
现在我们稍微转换个话题,讨论一下什么是软件测试,什么是软件测试技术。
很多时候,很多从业者一提到软件测试技术,想到的就是自动化测试、测试开发这样的字眼,比如接口自动化、UI自动化、性能测试;
什么postman、Jmeter、selenium、appium、RobotFramework、Cucumber等等,似乎简历里不带有这些字眼就体现不出技术能力。
不过呢,如果把这些信息从简历里拿掉后,我们又会发现绝大部分简历似乎都一样了。难道说软件测试技术真的就是通过上面所说的测试类别或内容、测试工具或框架来体现的?
我个人认为这个理解没有错,但是呢不全面。
这个理解是站在狭义的技术上去看,让我们换个角度,从广义的技术上来看软件测试应该是什么样。
我理解的软件测试技术包括四个方面:工艺、工序、方法、手段。这四个方面环环相扣、是个有机的整体。其中工艺、工序是一对,理解起来略显抽象;方法和手段是一对,这一对是我们经常谈到的。
这里先举个例子做下说明,便于大家对我接下来要说的内容能更好地理解。
我们大家都有过体检的经历,体检就是对人体这个复杂的系统进行一项项的检验,来确认健康或者是有什么问题。
体检的时候我们要验血、验尿等,化验的有很多细分项,比如血小板、红细胞、白细胞、血红蛋白、(尿糖、尿蛋白)等,每项都有个正常的指标范围;
然后查心脏会拍心电图、查肝脾肾会做B超、查肺会拍X光等等,影像或者片子出来后,医生会以他脑子里记忆的正常标准的影像图来进行比对,从而确定是否健康。
讲到这儿,思维比较活跃的人是不是已经感觉到体检和咱们测试很像了?只不过体检测的是人体系统;而咱们测试呢,测的是软件系统,被测物不一样、指标不一样、方法手段不一样而已,但道理是一样的。
好了,我们回来接着聊广义的软件测试技术。
首先来说工艺,它是指测试的指标体系,也就是标准。构建指标体系,就是针对测试对象,从多个方面,不同维度,构建一个测试指标项的集合。
测试的指标项简单地来看,就是我们常说的测试点或检查点或checklist再加上针对这些点的指标要求,它是工艺的核心,更是软件测试技术的根本。
就好比我们体检时要做哪些检查项,每项检查中细分哪些指标的检测。体检结果准不准,主要就看检查的指标全不全、细不细。同理,我们的测试做得好不好,就要看我们的指标体系构建的合理不合理、完整不完整了。
接着来说工序,它是指测试的工作项的顺序,也就是流程。
就像我们体检的时候要先查什么、后查什么,哪些项可以没有顺序,哪些项又必须串行,查某项的时候有什么前提,比如空腹、憋尿等等。
我们有不少从业者一说起测试流程就是参加需求评审、评估测试周期、设计测试用例,有的流程严谨些的会有测试用例评审,有的可能没有,然后是执行测试,记录、跟踪并验证bug,测试总结报告,就完了。
太粗犷!不妨借鉴某些食品或者饮品广告里说的“经过21道工序加工而成”来仔细琢磨一下,我们还做了什么必不可少的环节?
比方说功能需求or软件需求到测试需求的转换、梳理上下游系统的关联和交互、根据调用链or数据流圈定回归测试范围、结合业务设计全流程覆盖的测试场景并造数据等等。
当你把工序细化到每一项有明确产出物的工作项时,你就会清楚哪做得到位,哪做得还不够;同时,对应这些工序要做到什么程度也就有了目标了。
在工艺和工序上深入思考,就能基本上搞清楚“测什么”这个问题。下面我们再继续来谈谈怎么测。
先说方法,它是指测试的方法和策略,也就是思路。这个是大家经常讨论,有很多借鉴和参考,并且已经有很多方法论可供学习的。
核心也基本上都是从软件产品质量六性出发,划分出测试类别,然后针对测试类别思考采用什么测试方法。
需要注意的是对于测试方法的灵活运用,以及考虑投入和产出的平衡。这部分内容在网络上或者测试专业书籍都有大量的、详细的介绍,大家有兴趣可以自行搜索阅读。
再说手段,它是指我们测试方法的具体落实,也就是实操。大多数情况下工具就代表了手段,毕竟咱们人类使用工具基本上已经成了一种本能。
做什么事之前都会想想有什么可用的工具没有,这正是工欲善其事,必先利其器。它和测试方法经常被一起提及,我相信大家说起来也是如数家珍。
手段这方面是目前大多数软件测试职业培训主打的一点,也是大多数想入行或者入行后想迅速提升的同学们可以选择的路径。但是请大家注意,手段只是软件测试技术中的一个方面,应该重视,但不能过于重视。
也不能因为会用工具、会些自动化测试就鄙视手工测试,因为两者没有优劣之分。