资深测开大佬亲传《测试武功论》带你了解软件测试中的内功&外功!

Posted 测试萌萌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了资深测开大佬亲传《测试武功论》带你了解软件测试中的内功&外功!相关的知识,希望对你有一定的参考价值。

在这里插入图片描述

在这里插入图片描述

01、从岗位要求看软件测试

首先,叨叨想请大家和我一起思考一个问题:我们要以什么标准来区分初级、中级、高级软件测试工程师、测试专家这几个岗位职称?

也就是这4个职位怎么去界定,我们自己属于哪个级别呢?(为什么选这4个呢?因为现在整个行业基本都是这么去划分软件测试工程师岗位级别的。)

从众多的招聘信息上看到,似乎是可以用工作年限来界定的:

1年以下是初级、1-3年是中级、3-5年是高级、5年以上是专家。

在这里插入图片描述

那有的人就会想了,我已经工作5年了,是不是我可以去应聘测试专家了呢?答案是不一定。

为什么呢?因为先不说以工作年限作为判断的标准是对还是不对,仅仅简单地依据年限来判断这个方法就是会有偏差的。

不是有个段子嘛,说是10年工作经验,其实就是用1年的经验工作了10年。

继续从众多的招聘信息上看到,似乎是可以用工作技能来界定,功能测试是初级、会用工具是中级、能开发自动化脚本是高级、能开发自动化框架是专家。

那又有人会想了,现在这么多培训,线上线下都有,各种方面的,比如python编程,自动化测试培训等等。

那是不是我参加这些培训班,学会了python、学会了自动化测试框架的使用,那我至少可以应聘高级软件测试工程师了吧?

答案还是不一定,为什么这么说?我们先把这个问题记下,继续往下,看完我后面的认知理解,我们再回来看这个问题应该就能有答案了。

02软件测试技术的认识和理解

现在我们稍微转换个话题,讨论一下什么是软件测试,什么是软件测试技术。

很多时候,很多从业者一提到软件测试技术,想到的就是自动化测试、测试开发这样的字眼,比如接口自动化、UI自动化、性能测试;什么postman、Jmeter、selenium、appium、RobotFramework、Cucumber等等,似乎简历里不带有这些字眼就体现不出技术能力。

不过呢,如果把这些信息从简历里拿掉后,我们又会发现绝大部分简历似乎都一样了。难道说软件测试技术真的就是通过上面所说的测试类别或内容、测试工具或框架来体现的?

叨叨个人认为这个理解没有错,但是不够全面。

这个理解是站在狭义的技术上去看,让我们换个角度,从广义的技术上来看软件测试应该是什么样。

在这里插入图片描述

叨叨理解的软件测试技术包括四个方面:工艺、工序、方法、手段。这四个方面环环相扣、是个有机的整体。其中工艺、工序是一对,理解起来略显抽象;方法和手段是一对,这一对是我们经常谈到的。

这里先举个例子做下说明,便于大家对我接下来要说的内容能更好地理解。

我们大家都有过体检的经历,体检就是对人体这个复杂的系统进行一项项的检验,来确认健康或者是有什么问题。

体检的时候我们要验血、验尿等,化验的有很多细分项,比如血小板、红细胞、白细胞、血红蛋白、(尿糖、尿蛋白)等,每项都有个正常的指标范围;然后查心脏会拍心电图、查肝脾肾会做B超、查肺会拍X光等等,影像或者片子出来后,医生会以他脑子里记忆的正常标准的影像图来进行比对,从而确定是否健康。

讲到这儿,思维比较活跃的人是不是已经感觉到体检和咱们测试很像了?只不过体检测的是人体系统;而咱们测试呢,测的是软件系统,被测物不一样、指标不一样、方法手段不一样而已,但道理是一样的。

在这里插入图片描述

okey~我们回来接着聊广义的软件测试技术。

首先来说工艺,它是指测试的指标体系,也就是标准;

构建指标体系,就是针对测试对象,从多个方面,不同维度,构建一个测试指标项的集合。

测试的指标项简单地来看,就是我们常说的测试点或检查点或checklist再加上针对这些点的指标要求,它是工艺的核心,更是软件测试技术的根本。

就好比我们体检时要做哪些检查项,每项检查中细分哪些指标的检测。体检结果准不准,主要就看检查的指标全不全、细不细。同理,我们的测试做得好不好,就要看我们的指标体系构建的合理不合理、完整不完整了。

接着来说工序,它是指测试的工作项的顺序,也就是流程;

就像我们体检的时候要先查什么、后查什么,哪些项可以没有顺序,哪些项又必须串行,查某项的时候有什么前提,比如空腹、憋尿等等。

我们有不少从业者一说起测试流程就是参加需求评审、评估测试周期、设计测试用例,有的流程严谨些的会有测试用例评审,有的可能没有,然后是执行测试,记录、跟踪并验证bug,测试总结报告,就完了。

太粗犷!不妨借鉴某些食品或者饮品广告里说的“经过21道工序加工而成”来仔细琢磨一下,我们还做了什么必不可少的环节?

比方说功能需求or软件需求到测试需求的转换、梳理上下游系统的关联和交互、根据调用链or数据流圈定回归测试范围、结合业务设计全流程覆盖的测试场景并造数据等等。

当你把工序细化到每一项有明确产出物的工作项时,你就会清楚哪做得到位,哪做得还不够;同时,对应这些工序要做到什么程度也就有了目标了。

在工艺和工序上深入思考,就能基本上搞清楚“测什么”这个问题。下面我们再继续来谈谈怎么测。

先说方法,它是指测试的方法和策略,也就是思路;

这个是大家经常讨论,有很多借鉴和参考,并且已经有很多方法论可供学习的。

核心也基本上都是从软件产品质量六性出发,划分出测试类别,然后针对测试类别思考采用什么测试方法。

需要注意的是对于测试方法的灵活运用,以及考虑投入和产出的平衡。这部分内容在网络上或者测试专业书籍都有大量的、详细的介绍,大家有兴趣可以自行搜索阅读。

再说手段,它是指我们测试方法的具体落实,也就是实操;

大多数情况下工具就代表了手段,毕竟咱们人类使用工具基本上已经成了一种本能。

做什么事之前都会想想有什么可用的工具没有,这正是工欲善其事,必先利其器。它和测试方法经常被一起提及,我相信大家说起来也是如数家珍。

手段这方面是目前大多数软件测试职业培训主打的一点,也是大多数想入行或者入行后想迅速提升的同学们可以选择的路径。但是请大家注意,手段只是软件测试技术中的一个方面,应该重视,但不能过于重视。

也不能因为会用工具、会些自动化测试就鄙视手工测试,因为两者没有优劣之分。

在这里插入图片描述

让我们一起看下《测试武功论》就会明白了。

(测试武功论这个说法是很多测试圈内人人士常用得一种说话,因为武侠小说中分内功&外功,所以拿武功来类比了一下软件测试,感觉更简单易懂一些,毕竟叨叨那么喜欢看武侠小说~嘿嘿)

软件测试的武功分内功和招式,像功能测试、性能测试、安全性测试、兼容性测试等等,是一种思想理念的体现,一种方法论,所以是内功心法。

其中功能测试又是一门基本功法,是一切的基础。像前面提到的LR、Jmeter、postman、selenium、appium、Robtframework、Cucumber等等都是刀枪剑戟等兵器以及配套的招式,属于外功功法了。

有人会问,那手工测试算什么?我的回答是,手工测试是拳脚招式,兵器好选、招式好练,但是内功积累就不容易了。

仅仅会招式,有兵器不行,这是花架子,遇到懂行的一碰就倒。这也是为什么学会python编程,经过测试工具或者测试开发培训也不可能轻易从0基础达到高水平的原因。

但仅仅是内功深厚也是不够的,因为你与人比武时,总不能遇到谁都不过招,上来就比拼内力吧?

这就从侧面回答了为什么内功也就是功能测试达到登峰造极,也要最好能用一些工具或者能懂自动化、有编程能力;为什么没有内功,即便有神兵利器也发挥不出威力,也就是自动化测试需要先做好测试再来谈自动化,测试开发也一样。

综上,如果想要达到武功天下:

第一,成为一代宗师,最好内外兼修,不仅内力深厚,而且招式精妙、兵器趁手。

有了上面软件测试技术和测试武功论的理解,我们再回过头看之前遗留的那个问题。

帮大家回忆一下啊,问题是“学会了python、学会了自动化测试框架的使用,是不是就可以应聘高级软件测试工程师了?”小编的回答是不一定,为什么就不用再多说了吧。我们再看最初始的问题,怎么界定初、中、高和专家级软件测试工程师呢?难道招聘要求有误吗?并不是的,因为招聘方是通过设定的年限标准,测试工具、编程能力的技能标准来筛选简历。难道招聘要求有误吗?并不是的,因为招聘方是通过设定的年限标准,测试工具、编程能力的技能标准来筛选简历。其实也好理解,年限界定是为了衡量这个人内功的深厚程度,毕竟如果正常发展(修炼),内力是随着时间的增长而增长的;技能的界定是为了衡量这个人招式熟练程度以及会使用的兵器,毕竟在招聘方的角度来看,招式越娴熟,兵器会得越多当然越好。之所以有时候觉得经验、能力和工作年限不匹配,主要原因还是我们自己把功能测试做成了功能点的测试,把软件系统的测试做成了软件的测试。

举个例子,接口自动化测试的应聘者在面试的时候被问到:“接口测试脚本中要做哪些校验?”一般的回答:根据入参得到的回参来判断接口是否符合预期。稍微全面些的回答:不仅要校验回参是否符合预期,还要校验数据库中落库的数据是否符合预期。但是这样就够了吗?

还不够,因为曾经就看到过这样的事故案例:

接口测试只做了回参和落库的校验,漏掉了对于调用链上关联系统MQ消息的幂等校验,结果因为订单退款流程涉及的一系列系统幂等没有做好,一个订单能够多次退款,也就是每单退款公司都多给客户返还了好几笔钱,造成了相当严重的资损。

虽然责任不全在测试,但是实际上如果测试人员多思考系统结构、上下游系统关联关系,多思考接口调用链路、数据链路,是完全有可能在线下测试的时候就发现这个bug的。

所以仅仅是掌握了一些测试工具的使用、仅仅会做些自动化脚本的开发、仅仅会做软件的测试而不懂软件系统的测试是完全不够的。

如果你对此文有任何疑问,如果你觉得此文对你有帮助,如果你对软件测试、接口测试、自动化测试、面试经验交流感兴趣欢迎加入软件测试技术群:902061117, 群里发放的免费资料都是笔者十多年测试生涯的精华。还有同行大神一起交流技术哦。

【可能给予你涨薪的路线以及教程】

在这里插入图片描述


在这里插入图片描述

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

关注我的微信公众号【伤心的辣条】免费获取~

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

好文推荐:

阿里小黑叹息:越来越多的年轻人从职场撤退了?

Python简单?先来40道基础面试题测试下

App公共测试用例梳理

从一名开发人员转做测试的一些感悟

以上是关于资深测开大佬亲传《测试武功论》带你了解软件测试中的内功&外功!的主要内容,如果未能解决你的问题,请参考以下文章

资深测试大佬亲述:从另一个角度看软件测试

阿里10年测试大佬带你搞懂测试左移和右移

测试工程师必学:测试人员如何深入了解项目

Python带你入门安全测试

做好性能测试必须要会的jvm—Testfan打卡学测开1120

测开必备—Flask网站制作