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、慎抉择
有的人对于大厂有一种情怀,然而不是大厂的每一个部门都是很好的。进大厂,最好抉择大厂的外围业务部门或项目组,不要去边缘化的小组,否则现实和事实的差异很大。
在进厂之前,倡议提前找外部的人员理解,或者在面试的时候,被动询问,充沛衡量好之后,再做抉择。