资讯专栏INFORMATION COLUMN

软件测试需要学什么?50W+的测试工程师需要掌握哪些技能?

wushuiyong / 925人阅读

摘要:协议学习常见请求方法学习和学习接口的基本概念接口文档认识接口测试用例编写接口测试工具使用软件测试自动化进阶性能测试性能测试的技术要求很高,不仅仅要对性能测试的指标测试分类测试设计有很深刻的理解。

从事软件测试这个行业,不论新手小白还是有一点基础的,一定先要有个具体的学习目标,至少心中掌握个大概的学习方向,这样在你后期的学习过程中才能对自身的学习进度、技能曲线等有个全面的掌握。尤其对于软件测试这个岗位,它属于横向发展的职业,从事软件测试要掌握的知识范围比较广,所以我们动手之前,方向就很重要。

为了更好的帮助所有想要学习软测的小伙伴,本篇文章,结合目前国内软件测试的形式,针对【软件测试的从业方向、软件测试的学习路线】两点详细为大家介绍一下。好了,废话不多说,进入正题。

一、软件测试从业方向与建议

1、发展方向
无论APP测试也好、web测试也好,或者想研究自动化,或者想专精性能,都是可以的。没有什么所谓的好不好,重要的是你喜不喜欢,如果你觉得性能做着心累,没有自动化测试有成就感,那就一门心思去研究自动化测试。只要往某个方向专精,一段时间后你就可以成为大神。

2、语言选择
以前我专门写过一篇关于软件测试工程师语言选择的回答,简单来说,就是刚接触的时候,可以选择Python,上手更快,更加灵活,到了高级阶段,应对更大的业务形态,还得学会Java。做技术的,会很多种语言很正常。
3、自动化测试还是性能测试
对于自动化测试,不要被其牵着走,不要过分夸大作用,也不要为了自动化而去自动化。

但性能测试某种程度上会比自动化更难搞定。代码、运维、计算机原理、数据库、业务等等,你都要搞懂。写脚本或者执行都还好,难的是性能分析和调优。当然如果这个阶段你对自己的要求还不是很高,那么掌握性能测试的基本流程和简单的性能分析就可以了。更多的比如搭建压测环境、监控性能指标等等,还是要在实战中去积累经验的。

二、软件测试的学习路线


1、软件测试基础理论知识:
软件测试理论知识是开展测试工作的理论依据和支撑,是测试很重要的阶段必须掌握的技能。测试理论本身的理解掌握往往通过案例反复练习思考理解的过程。理论阶段包含的核心知识内容有如下:

1.软件的质量模型:软件测试过程保障软件的质量,从哪些方面保障可以从质量模型出发思考
2.测试分类:软件测试过程可以按照不同角度进行分类,基础测试到高级测试递进过程
3.开发流程:告诉测试人员一个软件完整的生命周期,软件从无到有到消亡的过程
4.测试流程:掌握并指导测试人员在实际项目中如何开展测试工作。这要求测试人员对常见的主流测试流程有较为透彻的理解。遇到不同的软件项目,知道从何处着实能最有效率的测试软件缺陷
5.测试计划与方案:如何规划在项目中开展测试活动,确保测试活动有序进行
6.设计用例方法:黑盒测试阶段必须掌握的一些测试用例的设计方法。比如黑盒测试用例的设计方法、测试用例元素等等
7.软件缺陷:在测试执行过程中应该确定缺陷并提交缺陷报告
8.缺陷管理:提交缺陷后在实际工作中如何和开发协助处理验证提交的问题。例如:bug的等级优先级分类、bug的描述、bug的生命周期、缺陷管理工具使用,如禅道等。
9.测试报告:测试过程的回顾和结果确认,生成系统性的专业软件测试评估报告。

2、软件测试功底技术——Linux系统
linux系统是主要的服务端操作系统,也是从事IT岗位的大部分人员必须具备的基本技术之一。作为软件测试工程师,我们常常需要在服务器端查看日志,从而定位问题的源头。当然,更多的场景是,我们需要在linux系统上搭建测试环境。这些都需要我们掌握基本的linux系统知识,熟悉常见的命令及工具。

1.linux系统基本知识:多用户,多任务,发行版本等
2.常见 linux操作命令:日志查看,文件压缩、解压,用户管理,文件权限等
3.会部署和配置基本的应用jdk、 mysql、 tomcat
4.docker安装使用
5.编写基本的 shell RAD本
6.远程终端工具使用: shell, xftps等
3、软件测试功底技术——Sql数据库
数据库作为软件系统必备的应用系统,在诸如接口测试、性能测试等等过程中往往需要操作数据库,验证数据正确性完整性,都离不开数据库的增删改查操作,在项目部署阶段数据库还需要配合项目部署。在性能测试、接口自动化测试中都需要数据库的支撑。

1.数据库基本概念
2.关系型数据库
3.MYSQL基本的增改查语句,存储过程
4.MYSQL复杂查询、多表查询
5.MYSQL索引及事务相关概念
6.数据库客户端工具使用:如 Navicat

4、软件测试功底技术——编程语言
高级的自动化测试工程师都会涉入到编程语言的检查环节。懂编程,不代表你要写出一个网站或者一个小程序,如果要求真那么高的话,你都可以去做开发了。所以做测试要学编程只不过是为了让我们能够写自动化脚本,去完成更多复杂的大型项目测试,也是提高自身测试技术上限必备的技术点。

推荐没有编程基础的学员可以学习Python语言,而如果本身有编程基础的同学可以在Python和Java之间综合选择。Python语言的学习内容包含以下知识点:

1.Python基础:Python语言特点、运行环境、基本语法、代码风格、示例程序
数据结构:
2.基本数据结构:数字、字符串、类型判断、类型转换、切片、字符串格式化、数值运算、位置参数和关键字参数;
3.组合数据结构:列表、元组、范围、字典、集合、不可hash对象、解包、内存地数据结构址、不可变数据
4.程序控制:顺序结构、循环结构、判断结构、异常处理、逻辑运算符
函数:定义函数、函数的参数、返回值、变量作用域、匿名函数、常用内置函数
5.模块和库:模块和包、import关键字、常用标准库、常用第三方库、包管理工具pip
6.面向对象:面向对象起源和优势、面向对象的特性类和对象的联系、对象的特殊方法
7.日志记录:baseConfig、文件日志、邮件日志、定制格式、内置占位符、等级过滤、分级传播、配置文件
8.测试框架:unitest、pytest等
9.并发编程:多进程、多线程、协程、线程池、同步控制、线程通信、分布式、猴子补丁、 async语法、生成器
10.网络编程:socket编程基础、TCP服务端和客户端、并行请求处理、HTTP服务端和客户端
【Python编程语言在以下三个自动化测试当中的应用】
自动化测试:会用到selenium 或者robot-framwork ,你至少要会自己写自定义模块
根据你自动化测试要求写模块功能,需要懂面对对象之封装、继承、多态等等
接口测试:会用python单元测试框架之unittest
性能测试:python框架之locust
5、软件测试自动化进阶——接口测试
接口测试本质也是功能测试的一种,通过脚本或者工具,模拟客户端对服务端接口进行调用。因为是从接口层测试,所以能更早的发现问题,从而提高测试效率,降低修复成本。

1.http/httpst协议学习
2.常见请求方法学习:GET、POST
3.cookie和 session学习
4.接口的基本概念
5.接口文档认识
6.接口测试用例编写
7.接口测试工具使用:postman、Jmeter、SoapUl
6、软件测试自动化进阶——性能测试
性能测试的技术要求很高,不仅仅要对性能测试的指标、测试分类、测试设计有很深刻的理解。还要学习系统业务和架构相关知识,这样才能更好的设计性能场景,分析出系统的性能瓶颈。性能测试常用的工具有jmeter和loadrunner,大家可以根据需要进行学习。

1.性能基本概念:性能测试意义、常见性能指标理解、性能测试的分类
2.性能测试流程:性能需求分析、性能场景设计、测试脚本编写、测试执行资源监控、性能调优、回归测试
3.Jmeter及 roadrunner使用
4.性能测试报告输出

7、软件测试自动化进阶——app自动化
越来越多的项目和系统通过移动端来提供服务,移动端的软件质量越来越重要,App自动化测试已经成为自动化测试的重要内容。借助Appium,使得App自动化测试和Web自动化测试有很多相通之处,不过作为测试工程师,依然需要掌握移动端应用的工具和特性。

1.Appium移动测试环境搭建:Appium ServerAppium和 Desktop、 Android运行环境搭建、模拟器安装和连接、真机设备调试模式、adb、 weditor、 UiAutomator22、 Monkey
2.Appium元素定位:原生应用元素定位、纯web应用元素定位、混合应用元素定位
3.Appium元素交互:等待元素加载,元素的基本属性和方法、滑动、拖动、缩放操作、下拉选择操作、 toast消息处理、常见控件分析、常见布局分析
4.封装测试框架:集成Appium、adb等工具、预定义异常处理、记录Appium日志、屏幕截图、打造多用途测试框架

8、软件测试自动化进阶——持续集成和持续测试
持续集成和持续测试是一个在迭代中构建、测试产品并修复Bug的过程。它有助于团队在开发阶段的初期发现缺陷,这时的缺陷通常相对不那么复杂,并且更容易被解决。通过持续集成和持续测试,可以尽早地将错误风险降至最低,并加快交付更好质量的软件。

1.版本控制Git:背景介绍、环境部署、工作区、暂存区和提交区、分支创建与合并、解决冲突、标签、 config与别名、本地仓与远程仓、 GitHub与码云
2.持续集成 Jenkins:背景介绍、环境部署、文件结构、远程仓库与私服、ja包依赖、插件管理
3.容器Docker:了解 Dockers的镜像、仓库、容器、 Docker Engine和架构图、网络设置、数据持久化

三、300G学习资料领取

为大家准备了一份超全的学习大礼包,囊括了:
①、2021.9月最新版软件测试全套完整视频
②、500套软件测试面试题+面试讲解视频
③、10套典藏版 超高价值的软件测试试卷
④、300套软件测试项目简历模板
⑤、80套各类软测用例的设计模板合集
加扣扣裙644956177,直接领取学习资料包:

PS:写到最后:建议刚入行新手快速就业化的"学习侧重方向"!!!

这里写给每位正在学习或想要学习软件测试的同学们一点建议,主要是帮大家梳理以就业为主的学习侧重点,简单来说就是【这些都是重点,圈起来,要考的】。如果你在学习的过程中感觉迷茫了,那就来看看这个侧重点,自己已经掌握了多少,如果掌握足够来了,那么恭喜你,月薪10K起步的好Offer已经在向你招手了。

第一条建议:先学习编程语言,然后再接触自动化工具

语言选择上Java或者Python都是可以的,可以先从Python入手,之后再开始Java。在学习语言的过程中,一定要忘掉你是做测试的,把自己当成开发,系统的去学相关的编程知识,因为语言水平的高低,很大程度上就决定了自动化水平的高低。

第二条建议:打好基础,而不是本末倒置的学习自动化测试工具

不理解http协议,就不会理解loadrunner、fiddler、soapUI这些工具;不理解HTML,就不会理解firebug。所以基础打好了,才会事半功倍。

第三条建议:清晰的认清自己,明确自己的目标

说白了,咱干什么事情之前肯定要先看看自己有几斤几两对吧,先评估一下自己现在的能力水平,然后再看下自己能够投入什么样的资源(精力、时间、资金)去学习,这样才会知道什么样的内容自己能够搞明白,哪个阶段要请教大牛,别整到最后越学越迷茫;其次就是认清自己能力之后,就要给自己定好合理的目标,多长时间达到什么样的水平。

第四条建议:选择好切入点,设计好对自己帮助最大的方案

接口自动化:Python+Unittest+HtmlTestRuner+Jenkins和Java+Httpclient+TestNG+Jenkins

web自动化:Python+Webdrver+HtmlTestRunner+Jenkins,Java+Webdriver+TestNG+Jenkins

APP自动化:

Robotium+Java+TestNG+Jenkins,Appium+Java+TestNG+Jenkins,Appium+Python+HtmlTestRunner

辅助测试脚本:以Shell,Python为主来简化重复的工作,过滤日志等

当然这些都是基本的实现方案,别的先不介绍。如果刚开始接触,我建议是选择语言之后,然后从接口测试入手,然后再学习web和APP自动化。

第五条建议:贪多嚼不烂,学会举一反三

新手上路,容易着急,啥都想学,这样就容易混淆,也不好消化。很多地方都是相通的,代码架构、用例管理、等都可以举一反三,既可以提升你的学习效率,也不会混淆。最重要的是不能纸上谈兵,一定要动手去实践。

第六条建议:不要受限于工具,多用开源

在测试行业,自动化测试工具有很多,但是大公司趋向于用开源的框架和工具,然后定制适合自己的测试方案。学着用一些开源的例如Webdriver, Appium等去搭建自己的自动化测试工程,然后掌握整体的自动化工作原理,为以后能够搭建自己的工具平台做准备,毕竟搞定自动化,可不是会使用几个工具那么简单。

自动化测试的最高境界:开发测试工具、设计自动化框架,让别人用。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/123046.html

相关文章

发表评论

0条评论

最新活动
阅读需要支付1元查看
<