春暖花开,近水楼台先得月,向阳花木易为春。最近很多粉丝私信问我怎么转行软件测试,我今天跟大家聊聊这个话题,可能我说的有点沉重,但还是建议你看下去。
许多人天天喊着想转行,又蹲在那里一徘徊就是好多天,好几个月,好几年,无非就是因为他想找到一个确定的答案,能够保证他肯定可以转行成功,可以很从容地学会,至少像考研一样,有大纲,有真题可以照着复习,然后考够分就能上。
然后这还不够,还要保证自己学会之后一定能找到工作,找到工作之后一定能最终比原来的行业挣得多,而且不能只多一点,因为不值得,而且跟科班出身的人相比,还不能没有优势,最好自己在生化环材领域的背景可以拿来抵消科班出身的人的优势。
这看起来很荒谬,很可笑,甚至许多看客都想撸起袖子跟我一起把有这样想法的人批判一番,可是,我劝大家冷静下来仔细想想,所有徘徊着还没有去行动的人,你们是不是自己心里也是这么想的,你们这么渴望,迫不及待地看任何一个转行成功的人的经验,看了一个两个还不够,还是会迫不及待地看下一个,然后继续该怎么样就怎么样,有下一个经验贴出来后,马上又会过去围观,然后连问的问题都是差不多的。
你们在寻找什么?等待什么?你其实只是不能清楚地表达你内心的想法而已,那是一个模糊的想法,其实拨开迷雾,看清楚之后,并不会比上面那个例子差太远,你也是在等一个对于你来说万无一失的方法,保证我肯定可以行,走了这条路肯定不会比现状更差,那么你到底是不满于现状,还是对别的行业感兴趣呢? 你还在犹豫,只有两种可能,一个是你对目前的现状还心存幻想,觉得未来可能会好,如果这样,就别天天抱怨自己目前的行业专业坑,拿出去干的热情
另一个就是,你要寻找到一个万无一失的方案。大道理谁都懂,我上面提到的也许是多数转行人的内心独白。我也不例外,在我没有下定转行的决心前,我也有同样的忧虑。但庆幸的是,我很快就明白了这样的道理:与其天天这么忧虑折磨自己好几年,不如大胆点,迈出这一步将成败抛之于脑后。大不了从头再来,转行就是要有壮士断腕的勇气。
犹豫就会败北,如果你也想转行;如果你也想转行软件测试;如果你已经在网上看到很多转行软件测试成功的经验贴,相信现在阻碍你迈出第一步的唯一障碍就是缺少那个万无一失的方案。那个方案我已经为你们准备好了,史上最详细的软件测试学习路径和最全的学习资料包全部奉上,按照这个路线学习,大神指日可待!
软件测试工程师的工作要求: 文档评审,用例评审,需求评审; 测试用例设计,自动化测试脚本开发,测试架构设计、写作测试文档(测试计划、测试方案、测试用例等); 执行测试,发现软件缺陷,提交缺陷报告,并确认缺陷最终得到了修正; 通过测试度量软件的质量;回归测试等等,工作内容是非常多的。
软件测试工程师需要掌握的知识: 计算机知识,包括编程语言,掌握至少1门开发语言,比如C、Java、C#等, 1门脚本语言,比如Python、Perl、Ruby、Shell中对于测试工程师未来更广的职业发展非常有帮助。纯功能的话可以不学这个,但是现在市面上这种工作越来越难找了。
数据库知识,对于绝大部分项目或互联网项目,都会有数据库,所以掌握至少1门数据库,比如Oracle、SQl Server, Mysql等。 操作系统,比如Linux、Unix,Windows核心命令也非常重要。对于有些涉及到网络的,网络和通信知识,比如TCP/IP协议也非常重要。 软件测试需求分析与软件测试用例设计核心工程方法。掌握主流的软件测试工具,比如性能测试工具JMeter/LoadRunner,自动化工具典型代表Selenium/UFT/Appium,测试管理工具等,事实上光有这些工具还不够,还需要真正理解其背后的实现原理。
掌握核心的研发流程,比如RUP,测试流程,比如双V模型,或者是现在流行的敏捷测试等,也是同样重要。方法是秘笈、工具是兵器、流程是套路
一、软件测试基础理论知识:
- 软件测试理论知识是开展测试工作的理论依据和支撑,是测试很重要的阶段必须掌握的技能。
- 软件的质量模型:软件测试过程保障软件的质量,从哪些方面保障可以从质量模型出发思考
- 测试分类:软件测试过程可以按照不同角度进行分类,基础测试到高级测试递进过程
- 开发流程:告诉测试人员一个软件完整的生命周期,软件从无到有到消亡的过程
- 测试流程:掌握并指导测试人员在实际项目中如何开展测试工作。这要求测试人员对常见的主流测试流程有较为透彻的理解。遇到不同的软件项目,知道从何处着实能最有效率的测试软件缺陷
- 测试计划与方案:如何规划在项目中开展测试活动,确保测试活动有序进行
- 设计用例方法:黑盒测试阶段必须掌握的一些测试用例的设计方法。比如黑盒测试用例的设计方法、测试用例元素等等
- 软件缺陷:在测试执行过程中应该确定缺陷并提交缺陷报告
- 缺陷管理:提交缺陷后在实际工作中如何和开发协助处理验证提交的问题。例如:bug的等级优先级分类、bug的描述、bug的生命周期、缺陷管理工具使用,如禅道等。
- 测试报告:测试过程的回顾和结果确认,生成系统性的专业软件测试评估报告。
二、软件测试功底技术——Linux系统
linux系统是主要的服务端操作系统,也是从事IT岗位的大部分人员必须具备的基本技术之一。
- linux系统基本知识:多用户,多任务,发行版本等
- 常见 linux操作命令:日志查看,文件压缩、解压,用户管理,文件权限等
- 会部署和配置基本的应用jdk、 mysql、 tomcat
- docker安装使用
- 编写基本的 shell RAD本
- 远程终端工具使用: shell, xftps等
三、软件测试功底技术——Sql数据库
数据库作为软件系统必备的应用系统,在诸如接口测试、性能测试等等过程中往往需要操作数据库,验证数据正确性完整性,都离不开数据库的增删改查操作,在项目部署阶段数据库还需要配合项目部署。在性能测试、接口自动化测试中都需要数据库的支撑。
- 数据库基本概念
- 关系型数据库
- MYSQL基本的增改查语句,存储过程
- MYSQL复杂查询、多表查询
- MYSQL索引及事务相关概念
- 数据库客户端工具使用:如 Navicat
四、软件测试功底技术——编程语言
编程语言推荐大家以Python为首,Java语言为辅学习,查看各大招聘网站,基本上也是以这两种语言为主的。没有编程基础的朋友可以先学习Python语言
Python语言的学习内容包含以下知识点:
- Python基础:Python语言特点、运行环境、基本语法、代码风格、示例程序
- 数据结构:基本数据结构:数字、字符串、类型判断、类型转换、切片、字符串格式化、数值运算、位置参数和关键字参数;组合数据结构:列表、元组、范围、字典、集合、不可hash对象、解包、内存地数据结构址、不可变数据
- 程序控制:顺序结构、循环结构、判断结构、异常处理、逻辑运算符
- 函数:定义函数、函数的参数、返回值、变量作用域、匿名函数、常用内置函数
- 模块和库:模块和包、import关键字、常用标准库、常用第三方库、包管理工具pip
- 面向对象:面向对象起源和优势、面向对象的特性类和对象的联系、对象的特殊方法
- 日志记录:baseConfig、文件日志、邮件日志、定制格式、内置占位符、等级过滤、分级传播、配置文件
- 测试框架:unitest、pytest等
- 并发编程:多进程、多线程、协程、线程池、同步控制、线程通信、分布式、猴子补丁、 async语法、生成器
- 网络编程:socket编程基础、TCP服务端和客户端、并行请求处理、HTTP服务端和客户端
五、软件测试自动化进阶——接口测试
接口测试本质也是功能测试的一种,通过脚本或者工具,模拟客户端对服务端接口进行调用。因为是从接口层测试,所以能更早的发现问题,从而提高测试效率,降低修复成本。
- http/httpst协议学习
- 常见请求方法学习:GET、POST
- cookie和 session学习
- 接口的基本概念
- 接口文档认识
- 接口测试用例编写
- 接口测试工具使用:postman、Jmeter、SoapUl
六、软件测试自动化进阶——性能测试
性能测试的技术要求很高,不仅仅要对性能测试的指标、测试分类、测试设计有很深刻的理解。还要学习系统业务和架构相关知识,这样才能更好的设计性能场景。
- 性能基本概念:性能测试意义、常见性能指标理解、性能测试的分类
- 性能测试流程:性能需求分析、性能场景设计、测试脚本编写、测试执行资源监控、性能调优、回归测试
- Jmeter及 roadrunner使用
- 性能测试报告输出
七、软件测试自动化进阶——web自动化
了解自动化的目的,熟练掌握TestNG&unittest自动化框架,以及断言与日志处理;做测试的同学们都了解,做Web自动化,我们主要用Selenium或者是QTP,这里我们需要掌握Selenium的web自动化环境搭建,正确的浏览器配置。
八、软件测试自动化进阶——app自动化
越来越多的项目和系统通过移动端来提供服务,移动端的软件质量越来越重要,App自动化测试已经成为自动化测试的重要内容。借助Appium,使得App自动化测试和Web自动化测试有很多相通之处,不过作为测试工程师,依然需要掌握移动端应用的工具和特性。
- Appium移动测试环境搭建:Appium ServerAppium和 Desktop、 Android运行环境搭建、模拟器安装和连接、真机设备调试模式、adb、 weditor、 - - UiAutomator22、 Monkey
- Appium元素定位:原生应用元素定位、纯web应用元素定位、混合应用元素定位
- Appium元素交互:等待元素加载,元素的基本属性和方法、滑动、拖动、缩放操作、下拉选择操作、 toast消息处理、常见控件分析、常见布局分析
- 封装测试框架:集成Appium、adb等工具、预定义异常处理、记录Appium日志、屏幕截图、打造多用途测试框架
九、软件测试自动化进阶——持续集成和持续测试
持续集成和持续测试是一个在迭代中构建、测试产品并修复Bug的过程。它有助于团队在开发阶段的初期发现缺陷,这时的缺陷通常相对不那么复杂,并且更容易被解决。通过持续集成和持续测试,可以尽早地将错误风险降至最低,并加快交付更好质量的软件。
- 版本控制Git:背景介绍、环境部署、工作区、暂存区和提交区、分支创建与合并、解决冲突、标签、 config与别名、本地仓与远程仓、 GitHub与码云
- 持续集成 Jenkins:背景介绍、环境部署、文件结构、远程仓库与私服、ja包依赖、插件管理
- 容器Docker:了解 Dockers的镜像、仓库、容器、 Docker Engine和架构图、网络设置、数据持久化
从入门到到进阶的配套资料“资料”自行领!!!
包含了
- 学习资料(接口测试、常用命令、功能测试、Python自动化、数据库、Web自动化)
- 面试题库(简历模板、PPT模板、通用题库、初中高级题库、思维导图)
- 测试工具使用方法
- 测试工具安装包