download:体系课 - 全能软件测试工程师无密完结
一、软件测试概述
说起软件测试,很多人的印象,大略是有手就能做,「点点点」就行了。的确,大多数根底测试工程师做的都是「点点点」的工作,然而这个点呢,考究逻辑,通过什么形式来「点点点」,能尽早裸露问题,用更少的操作笼罩更多的测试场景,从而保障产品质量,这就波及到技巧性了。
除了「点点点」,测试同学还有很多其余的工作能够做,那么理论的测试工作是怎么的呢?馨馨紫联合 6 年的测试教训,给大家分享一波。
测试同学的职责无非就是两个,保障软件测试品质和进步测试效率。
为了达到这两个指标,测试同学的日常就包含:惯例需要的功能测试,自动化测试,性能测试,跟踪线上反馈问题,搭建测试环境,把控我的项目进度和品质,开发测试平台或脚本,进行部门的管理工作等等。
1、惯例需要的功能测试
包含参加需要评审会议,制订测试计划,编写测试用例,评审测试用例,执行测试用例,提交 Bug,回归验证 Bug,发送测试报告,进行线上验证等一系列流动。
2、进行性能测试
依据我的项目需要,对重要接口制订压测计划,利用 Jmeter 等测试工具进行压力测试,配合开发同学找到零碎瓶颈,并产出压测报告。
3、进行自动化测试
利用自动化测试工具例如 Robot Framework,Python+unitest/pytest,Selenium 等实现页面 UI 自动化或接口自动化,晋升测试效率,尽早裸露问题。
4、跟踪线上反馈问题
在日常测试中,线上问题不可避免,反馈过去的线上问题,须要测试同学过滤和重现,再同步给开发同学,并帮助开发同学定位问题,待开发同学解决后,测试同学验证实现后上线。
5、搭建测试环境
有的测试环境由运维同学来搭建,而有些则须要测试同学来搭建,视不同的公司而定,搭建测试环境会有文档,依据文档,即可实现,个别的测试环境有 Linux,Windows,而 Linux 偏多,因而会用到较多的 Linux 命令,平时学会一些根底的 Linux 命令是很有必要的。
6、把控我的项目进度和品质
对于我的项目中呈现的 Bug 和不确认点,须要测试同学踊跃推动,及时与产品和开发同学沟通,尽快解决问题,推动我的项目的停顿。
对于产品的品质,测试同学会对定期进行 Bug 统计,剖析 Bug 起因,如果品质始终很差,就会采取一些措施来踊跃改良和晋升。
7、造就测试新人
新人在试用期间,会调配一位导师,对其工作内容和转正考核负责,个别由测试组长承当该角色。
8、开发测试平台或脚本
有些公司有专门的测试平台,来实现 Bug 统计与品质剖析,接口自动化统计等等性能,这部分开发工作会由测试开发工程师来承当。
9、进行部门的管理工作
管理工作由领导承当,包含各项目标人员安顿,我的项目测试工夫的评估,我的项目测试进度跟进,部门成员绩效考核,人员招聘,团队建设等等。
二、所需能力模型
想要做好软件测试,须要具备两方面的能力,即硬实力和软实力。
一)硬实力
硬实力,也就是测试同学须要的专业知识,具体的常识体系如下:
1、软件测试基础知识
馨馨紫在大学期间,有幸上了软件测试这门专业课,算是入了门,为后续的职业倒退也打下了根底。
入门测试基础知识,次要从软件缺陷,软件开发周期模式,软件测试分类,软件测试用例设计办法等方面动手。
2、软件测试流程
业界比拟标准的软件测试流程是:需要评审,制订软件测试打算,编写测试用例,进行用例评审,执行测试用例,提交 Bug,验证 Bug,发送测试报告,进行线上验证。
然而在理论工作中,往往不会有这么标准的流程,馨馨紫只在一家公司经验过这么标准的流程,过后刚好公司进行流程标准,请了何勉大佬,来公司专门做领导。
该大佬,是一名资深精益产品开发参谋,专一于精益产品交付、精益守业、翻新及精益产品设计等畛域,曾为华为、安全科技、招行以及多家胜利的守业公司建设或引入精益产品开发和翻新办法,举荐大家看看他的书籍《精益产品开发:准则、办法与施行》。
大多数不标准的流程次要分为以下几种:
1)没有需要评审,开发完间接提测
需要由开发同学口述或者在邮件中进行简略的阐明,测试同学就开始染指测试。
在需要不明确的状况下进行测试,测试同学往往在沟通需要的过程中破费很多工夫,而且最初可能会背锅。
这种状况下,测试同学则须要记录好曾经测试的点,并与开发和产品同学确认分明范畴,只能保障以后曾经测试性能的正确性,其余未测性能危险未知,并在测试报告上做明确阐明,万一当前线上有 Bug,能够拿测试报告谈话。
2)没有用例评审环节
用例评审,即测试,开发,产品三方一起,确认测试点,旨在防止脱漏测试点,在比较复杂的零碎中会有该环节,对于逻辑很简略的零碎,就没有必要了。
做好用例评审,要把握好评审的粒度,如果粒度太细了,与会的同学会比拟疲,参与感会越来越弱,所以把握好粒度很重要,列出测试点即可,不必特地具体。
3)没有 Bug 管理工具
在 Bug 管理系统上记录,有利于品质剖析,同时 Bug 库也是一个很好的测试用例库,很多 Bug 具备普适性,在不同的我的项目中能够互相借鉴。
有的公司没有 Bug 管理系统,间接用文档记录,或者发在群里,Bug 比拟少还好治理,然而 Bug 一旦多起来,就容易凌乱,前后端的 Bug 须要不同的人员认领,修复了没有中央去更新状态,最初也不利于品质剖析。
有的公司则是有 Bug 管理系统,然而因为开发人员的 KPI 与 Bug 数量无关,外部默认不记录 Bug,间接用 IM 沟通,手动记录。
实践上来说,Bug 管理系统是很有必要的,不仅能节俭沟通老本,还有助于品质剖析,大家如果正当利用,能带来很大的价值。
3、罕用的测试工具
1)测试用例工具
编写测试用例的工具有很多,常见的有 Xmind,Excel,TAPD,Testlink,Zentao 等,在理论工作中,因为 Xmind 的简略和便捷性,用到的是最多的。
2)项目管理工具
罕用的项目管理工具,有 Zentao,TAPD,Teambition,Coding,Jira,企业自研工具。
在理论工作中,接触的到次要有 Jira 和企业自研工具,在何勉老师精益领导的过程中,用到的就是 Jira,对于每一个需要,开发和测试同学,都会认领一个 task,task 的周期从开始到完结,每天站会沟通后,及时更新 task 的状态,在每个季度末,统计每个需要所破费的工夫,做项目管理剖析。
3)Bug 管理工具
常见的 Bug 管理工具,有 Jira,TAPD,Zentao 等。
Bug 是一个很有价值的零碎,定期进行整顿和剖析,不仅能挖掘很多测试点,还能评估我的项目的提测品质。
4)自动化测试工具
常见的自动化测试工具,有 Jmeter,Appium,Postman,Selenium,Robot Framework,Python+unitest/pytest。
Jmeter,大多数时候用来做压力测试,偶然也用来做接口自动化测试。
Appium,用来做挪动端的自动化。
Postman,用于接口测试。
Selenium,用于 Web 利用的自动化。
Robot Framework,用于 UI 或接口自动化。
Python+unitest/pytest,用于接口自动化。
自动化,分为接口自动化和 UI 自动化,性价比绝对较高的是接口自动化,接口的变动比拟小,绝对好保护一些,而 UI 自动化,页面变动快,保护老本高,所以很多我的项目都不思考做 UI 自动化。
对于理论的我的项目教训,馨馨紫最相熟的还是 Jmeter 和 Robot Framework,已经利用 Robot Framework 实现了我的项目从 0 到 1 的 UI 自动化和接口自动化,接口自动化覆盖率达到 90%,并集成至 CI 上,每天主动跑,有问题及时发送邮件,大大晋升了冒烟测试效率。
5)抓包工具
常见的抓包工具备 Fiddler,Charles,Wireshark,这三种都比拟罕用。
抓包,也是为了更好的帮助开发同学排查问题,呈现了 Bug,通过抓包,能够更清晰地排查是前端问题还是后端问题,比方未发送申请,或者传参谬误,字段取值谬误等都是前端问题,接口返回报错或者返回字段值谬误等则是后端问题。
6)辅助工具
罕用的辅助工具有 Navicat,Xshell,Wiki,F12 等等。
Navicat 次要用来连贯数据库,可查看数据库的字段,或通过 SQL 进行数据报表的测试等等。
Xshell 次要用来近程连贯 Linux 服务器,对服务器做一些根本的操作,在目录查看文件,启动服务,装置软件等等。
Wiki,次要用于公司外部的文档积淀,例如编写接口文档,测试文档等等。
F12,抓取接口信息,查看接口申请和返回,辨别前后端 Bug。
4、根本的 SQL 语句
在理论测试过程中,例如一些列表或数据报表的展现,须要用到根本 SQL 语句的增删改查,所以把握一些根底的 SQL 语句是很有必要的。
5、根底的 Linux 命令
在部署 Linux 环境,做压测等会用到 Linux 命令,相熟一些文件治理,压缩与解压,性能监控,系统管理,用户治理,软件装置等命令就满足日常工作的须要了。
6、架构相干常识
架构常识须要结合实际的我的项目,在日常测试中,能够与开发同学多多沟通,理解下架构相干的常识,次要从语言,框架,部署等方面动手。
一个好的架构具备高可用,高性能,可伸缩,可拓展等个性。
二)软实力
大家不要疏忽软实力,软实力有时候甚至比硬实力更重要。
软实力包含沟通协调能力,自主学习能力,文档输入能力,团队治理能力等等。
1、自主学习能力
在测试日常中,与产品,研发同学沟通必不可少,要是沟通能力不行,比方须要确认的需要点说不清楚导致线上问题,与开发同学的测试范畴确认不分明而导致漏测,这有形会给日常的测试工作减少难度。
自主学习能力,这点很重要,咱们生在互联网行业,大家晓得,技术更新是突飞猛进的,时常关注行业新框架,新技术和新动静是很有必要的。
2、文档输入能力
文档输入能力,编写测试报告,编写邮件等等都波及到文档输入能力,这些报告和邮件是平时测试的成绩,在业绩考核中也占有肯定的比重,如果只会埋头干活,不会表白成绩,升职加薪也是有难度的。
3、团队治理能力
团队治理能力,有句话说的好,学而优则仕。确实,大家不可能永远待在基层岗位,大多数人都会缓缓往治理岗凑近,团队治理能力的重要性显而易见。
三、职业倒退方向
软件测试工程师的职业倒退,能够分为四个方向:
一)业务测试工程师
业务测试工程师,在测试群体中这个比例是十分大的,这是最靠近用户的一个群体,这部分的测试工程师次要负责惯例需要的功能测试,接口测试,自动化测试,性能测试等。
波及的业务次要有电商,金融,在线教育等等,不限于 Web,客户端,挪动端的测试。
馨馨紫待过测开比 1:10 的团队,也待过 1:1 的团队,具体的比例取决于业务状态和公司的资源,有的我的项目逻辑简略,开发周期短,出事变的概率低,造成的损失低,测试人员就会配置的少一些,而我的项目逻辑简单,盈利多,开发周期长,测试人力就会配置的短缺些。
在微软,测开比个别为 1:1,在谷歌,测开比则为 1:10,还是那句话,现状决定流程。
二)测试开发工程师
测试开发工程师,次要开发公司外部的测试平台 / 测试工具,也为业务测试工程师解决一些技术问题,例如搭建自动化测试框架,编写一些晋升效率的自动化测试脚本。
测试开发的要求比业务测试工程师高一些,须要写得了代码,测得了需要,也就是即会开发,又会测试的同学。
一些小公司是没有测试开发工程师这个岗位的,一是没有自研的测试平台,而是由业务测试的同学偶然做做补充,业务测试的同学也能够写点小脚本和小工具,所以就没有设置专门的岗位了。
测试开发的人员比例,馨馨紫经验过的公司大略是 1:10,2 个测试开发工程师,服务于 20 个业务测试工程师,具体比例取决于目前公司的现状。
三)治理岗
次要是进行部门的管理工作,包含各项目标人员安顿,我的项目测试工夫的评估,我的项目测试进度跟进,部门成员绩效考核,人员招聘,团队建设等。
1、入门级
很多同学是校招或者社招转行进入软件测试,初入软件测试的前两年,职位个别是高级测试工程师,大家都做着最根本的测试工作,次要是进行功能测试,熟悉业务,能保障上线的产品不出大问题即可。
2、3 年左右
业务组长,作为我的项目的主测人员,重点在测试计划的制订和执行,测试工作的安顿以及估期,保障我的项目能按期交付,线上不呈现重大的事变,治理人数大概在 3~5 人。
3、5 年左右
测试主管 / 测试经理,该阶段的工作次要蕴含测试计划的制订,更多的是关注重难点我的项目,且须要把握更多项目管理的常识,深刻了解我的项目的价值,做好项目管理,老本治理,风险管理和人力治理,同时也会参加一些招聘,员工绩效,品质治理,风险管理的工作。
4、8 年或以上
测试总监,该阶段须要了解产品的商业指标,间接对产品胜利负责。该阶段的次要工作蕴含治理测试团队,进行人员招聘,带好整个团队的节奏,优胜劣汰,留住外围人员,淘汰达标的人员,晋升团队战斗力。
同时须要负责资源的打算和调配,继续改良测试能力,晋升测试效率,保障产品质量,从测试的角度对交付的产品和品质负责。
四)转型
如果对测试没有很大的趣味,感觉本人的沟通能力还不错,更喜爱与人打交道,能够转型到产品岗。
在业界,有很多从测试胜利转型为产品的同学,他们后续倒退的十分好,因为测试对于产品性能是十分相熟的,产品须要的能力与测试有较多的重合,所以相对来说,转型的难度不高。
如果热衷于技术,谋求技术带来的成就感,能够转到开发岗,在理论职场中,测试转开发的比率是很小的,测试同学要求的知识面是广而浅,开发同学要求的是精而深,个人兴趣和技术难度可能是转型少的一个起因。
其实还有好多抉择,能够转型做测试征询,守业,滴滴司机,或者外卖小哥等等都能够的,遵循本人的心田,抉择想要的岗位。
四、六年软件测试心得
一)面试篇
1、多面试
不论有没有换工作的想法,倡议每年都进来试一试,一方面能够多看看机会,另一方面能够联合里面的要求,查找本人的有余,让本人始终保持竞争力,不至于在公司忽然裁员的时候,大刀阔斧。
介绍几个面试的小技巧:
1)突出展现善于项
有的同学善于接口自动化测试,能够在面试前深度梳理,在面试中着重体现,例如相熟 Robot Framework 测试框架,实现了我的项目从 0 到 1 的自动化测试,从环境搭建,用例编写,到 CI 集成,邮件发送测试报告等等,尝试疏导面试官不断深入本人会的知识点。
有的同学善于脚本的编写或测试平台的开发,我的项目教训能够着重形容开发的测试平台蕴含的性能,解决的问题,使用的技术,晋升的效率等等。
有的同学善于业务测试,对各种业务烂熟于心,我的项目教训则能够着重形容接触过的业务,使用的测试方法,上线品质等等。
2)用数据谈话
数据,用来展现测试成绩,是很有说服力的。
有的同学会自动化测试,展现成绩的时候,能够形容本人实现了多少模块的自动化测试,共计多少条用例,测试覆盖率达到多少,效率晋升了多少。
有的同学长于项目管理,改善我的项目流程,晋升整个我的项目团队的交付能力,能够形容本人帮忙多少个团队,标准了我的项目流程,我的项目交付能力晋升了多少。
3)我的项目教训或技术能力与面试公司尽量匹配
在招聘过程中,大多数公司偏差于招与以后岗位匹配度高的人,因为来了能够疾速上手,节俭学习老本。
在理论工作过程中,咱们接触的我的项目可能很多,然而在面试过程中,尽量说与以后岗位匹配度高的我的项目。如果我的项目业务不匹配,技术能力栈匹配的也能够,能减少面试的通过率。
总之,就是尽量往 JD 上的要求靠。
2、看面经
如果想进大厂,能够先看看大厂的 JD,再去网上找对应的面经,有些面经写的很认真,值得参考。
常见的渠道有:牛客网,知乎,公众号,简书,CSDN,测试论坛,常识星球等等。
3、投简历
投简历,倡议不要海投,能内推最好了,内推拿到面试的机会是很高的,能够找本人身边的敌人,同学,师哥师姐,球友等等内推。
4、慎抉择
有的人对于大厂有一种情怀,然而不是大厂的每一个部门都是很好的。进大厂,最好抉择大厂的外围业务部门或项目组,不要去边缘化的小组,否则现实和事实的差异很大。
在进厂之前,倡议提前找外部的人员理解,或者在面试的时候,被动询问,充沛衡量好之后,再做抉择。