我的读者里有很多 软测 新人,新人是指正在学 测试 的、以及工作时间不长的年轻人,他们经常问我一个问题:
自学到什么程度才能找到一份还不错的测试工作?
今天我就从我自己面试新人的角度来回答一下,我会把面试的知识点进行拆解,希望大家看完文章之后,能从中找到学习 软件测试 的重点。
学习是为了找到工作、拿到 offer,这就有一个公式:
offer = 工作需要的技术栈 + 计算机基础知识 + 项目实践 + 如何找到工作
让我们分别看看公式右边的这些方面具体是什么。
一、工作需要的技术栈
初级测试工程师(薪资6k-9k)↓
1)了解计算机以及软件测试相关的基础知识
a.计算机基础知识
计算机组成部分,操作系统分类,常见的系统架构(B/S和C/S),常用的DOS命令
b.软件测试基础理论知识
软件测试的目的、定义、原则,产品质量模型,软件测试的基本流程
2)常用的Linux命令
在软件测试中,有时候需要我们自己去搭建测试环境,或者是在服务器部署自动化项目。而服务器基本都是使用Linux系统的,所有我们需要掌握一些基础的Linux命令
3)SQL语句
在软件测试中,测试结果的校验或者自动化中的测试数据准备,都会操作数据库来完成。所以对于数据库的最基本的增、删、改、查的SQL语句,需要能够独立完成编写
4) 手工测试用例的编写(最重要)
作为一个软件测试工程师,最基本的要求就是用例编写的能力。如何编写出一份高覆盖率,低重复率的测试用例,是初入软件测试行业应该去不断追求的能力。
5 ) 缺陷的管理
了解在团队中,如何管理测试人员提出的BUG,从而保证项目的BUG能够及时被修复
以上就是初学者大概学习的内容,我是尽量站在初学者的角度来说的,没有写得特别复杂,怕初学者看不懂,没有实质性的帮助。所以我尽量用白话把话说的简单一些,给大家罗列出主要学习的知识点。而是否会自动化测试是初级与中级软件测试工程师的分界线。
中级测试工程师(薪资15k-25k)↓
- 接口测试相关专业技能
无论是自动化测试还是性能测试,甚至之后往测试开发方向发展,最基础的就是针对接口进行测试。所以要想做好中级软件测试工程师,第一步就是能够完成接口测试
1)接口以及接口测试相关的理论基础知识
包括接口及接口测试的概念,接口测试的原理,接口测试的流程,http协议,Restful接口风格。这些内容都需要有所了解
2)接口工具的使用:Postman和Jmeter
接口测试,可以使用代码,也可以使用工具。通常情况下,接口测试最多还是使用工具来完成.原因无他,"高效"。
3)抓包工具:Fiddler和Charles
在测试过程中,我们为了定位前后端的问题,就会使用抓包工具,查看接口返回的结果。从而定位问题是前端的,还是后端的。这两个工具,我们一般二选一去学习就可以了,因为他们的作用都是一样的。
- 自动化测试
软件测试中的自动化测试,分为Web UI自动化和移动自动化。自动化测试的目的,主要还是为了降低回归测试的时间。
自动化测试的实现方式,主要还是依赖代码来完成的。所以要能进行自动化测试,首先需要掌握一门编程语言。目前行业主流的自动化测试的编程语言为python和java。我推荐从Python入门,因为对于代码基础为零或者很差的同学,Python的入门相比较Java,要友好很多。我个人就是Python和Java都是自学的,如果可以全天学习,Python也就差不多10天就能入门,然后就可以开始自动化测试方面的学习。
a.Web UI自动化
web自动化测试主要通过代码实现。比如常见的应用有:Python/Java+selenium。
需要学习web测试的流程步骤,因为是基于页面默认人工操作,故而需要对于页面构成需要有一定的基础,比如:HTML+JavaScript+CSS,懂得页面元素的定位,以及常见的定位方式的使用等。如果有接口自动化的基础,那么学习web自动化相对会容易一些。
通过一些相对完整的项目去实战训练,才能够较好的学习并把握web自动化的技能,通过反复的项目训练才能逐步的达到理想的效果。
b.移动自动化
移动自动化测试主要也是通过工具和代码的方式实现。比如常见的有:Python/Java+appium。
移动自动化除了掌握一门编程语言外,还需要学习移动测试的流程步骤,移动基本功能的和web端的基本类型。但是更多的需要测试一些非功能层面的应用,需要学习并使用一些手机模拟器(如:mumu)、第三方工具(如:GT工具)、adb命令、monkey等的使用,学习使用的工具较多,并且需要结合代码一起使用,这就要求学习的知识范围更加广泛,先从工具使用入手。
另外:移动端的应用还需要进行异常测试,对于使用过程中出现网络、信息中断等异常场景的设计,对于手机本身使用过程中的场景结合实际项目训练学习。
高级测试开发工程师(薪资30k-40k)↓
为了提高测试效率,降低测试成本,使测试价值最大化,在具备测试经验、熟练使用测试工具并有一定开发能力的前提下,就可自主开发平台,或对现有开源工具进行二次开发了,这也是测试开发工程师不断进阶的必经之路。下面介绍一下企业金融测试部自主研发的其中几个自动化工具平台,希望对大家在开发测试平台时有一定的启发:
1)源代码监控分析平台。在开源平台sonarqube上定制符合部门需求的规则,通过jenkins集成定时对项目代码质量进行扫描,对单元测试和代码覆盖率进行统计、定制化邮件发送,让开发和测试同学可以发现项目源码的问题。
2)接口自动化平台。在测试工具基础上结合HttpClient、testng等,生成美观的可视化报告,并邮件发送给指定人员,实现接口自动化平台。现已稳定运行数月,并实现接口入参、加密传参及数据库检查点,以及多接口间的出入参依赖,可实现多接口,多场景的组合测试,完美覆盖http、jsf接口的测试,提高了使用者在接口方面的测试效率。
3)UI自动化平台。在测试工具的基础上引入selenium、Jenkins、testng,实现ui自动化平台。现在很多公司都在做ui自动化,通常是用java(或python)加上selenium,跑自动化程序,但这对小白测试人员有一定难度。但在我们平台,测试人员只需要在页面维护相关元素,不用写代码,就可实现ui自动化,并且可以多场景组合测试,方便测试环境更新版本和线上的回归测试,对于元素维护简单方便易上手。
4)测试工具平台。我们在测试工具基础上结合企业金融业务开发了测试工具平台,它是基于springMVC框架的前后端系统。目前总访问次数近三万次,覆盖约十几个业务线系统,单功能访问次数达几百次,在面对复杂业务场景、重复营造和查询数据、频繁业务联调时,可直接让对方访问此平台,一键生成和查询想要的数据,一键实现复杂的业务流程,极大的解脱了研发人员的时间,也避免了不必要的等待时间。
5)BUG监控分析平台。在测试工具的基础上对redmine进行数据提取、处理,通过web页面图表直观展示,可简洁明了的查看bug数据及项目质量情况。
我认为新手在学习的过程中常见的误区:
根据我几年的工作经验来看,零基础的人学好测试基础尤为重要,既然想要进入这行,从开始就给自己搭建一个软件测试工程师发展方向知识架构体系图,让你对于整体的技术栈有明确的全局观,了解自己目前处于哪个阶段,不过对于小白来说,这可能有一点难,所以我首先给大家准备了一套完整的软件测试技术体系图想要获取的同学
希望大家能照着这个体系,完成这样一个体系的构建。可以说,这个过程会让你痛不欲生,但只要你熬过去了。以后的生活就轻松很多。正所谓万事开头难,只要迈出了第一步,你就已经成功了一半,古人说的好“不积跬步,无以至千里。”等到完成之后再回顾这一段路程的时候,你肯定会感慨良多。
针对如何自我学习,我给大家提供几个我曾经的小技巧:
①了解如今的市场,都需要掌握哪些主要技术就可以快速就业,目前的企业都需要什么人才,这是你学习的方向和目标。
②系统的学习规划:有一个整体学习大纲,要知道自己每天学习什么,做什么练习进行知识巩固,一个阶段学完后应该完成什么项目实战,进行循序渐进的学习,不可以盲目的瞎学。
③一个大佬的指导:作为一个初学者一定要记得找大佬指导你,即使是花点钱也没关系,只要你能把技术学好就行。自己摸索基本都是弯路,很多人为什么学了一两个月就放弃了,因为他不知道路在哪里,整个人都是迷茫的,自然容易放弃。但如果你有了一个大佬带你,他就会给你做详细的学习计划,给你安排好一切,在整个学习过程中给你解答疑问,你学习起来就会思路清晰,简单效率。或者加一些学习氛围不错的软件测试交流学习群,跟有经验的人交流可以学到很多好的学习方法和技巧,提高我们的学习效率。
④切记不要开始就只看书,这样比较容易放弃:书上的内容过于生硬,对于零基础的新手非常不友好,看书学习容易放弃。最好的办法还是看视频,动手用键盘敲出来,积累一定理解以后,再回头精读这些大部头书,获得内功提升。总之,原则就是循序渐进,知行合一
另外还有三个网站三个神器,对于初学者来说非常重要。
- 第一个Google,碰到啥知识问题和错误我都会查这个,找到的回答比某度质量高。但无法访问的问题,对于程序员应该是小case,主要英语需要点底子,方便查文案资料
- 第二个CSDN,老牌技术网站了,我会白天有些知识没理解的,会去搜别人的技术理解博文,一般都会讲的通俗易懂
- 第三个TesterHome(测试之家)由众多测试大佬组织和维护的技术社区,致力于帮助新人成长,提高测试地位,推进自身发展。5年前,作为测试新人注册了testerhome账号,在里面学习测试相关的知识,慢慢的对移动互联网测试有了一个整体的认识,后来也将自己工作中学到的东西分享到社区,每一次看到有人从我的帖子中得到解决问题的方法,自己也觉得很高兴,这就是技术分享吧。
学习网站太多了,每个人见解不一样,大家有好的建议可以留言给正在学习的人看到,爱分享爱学习。
⑤找一套完整系统的教程:学习的内容不能过于陈旧,有人学习还在看五年前的视频学习软件测试技术,都是一些已经被企业淘汰的方法,无法满足企业招聘的标准,在面试中很难回答上面试官的问题,最终找不到工作。要找一套最新且系统的学习教程去学习。
软件测试学习资料获取关注公众号:程序员雷叔