先说一下自己的个人情况,计算机专业,16年普通二本学校毕业,经历过一些失败的工作经历后,经推荐就进入了华为的测试岗,进去才知道是接了个外包项目,不太稳定的样子,可是刚毕业谁知道什么外包不外包的。
更悲催的是:刚入职因为家里的一些原因,没有精力和金钱去承担待业的成本,也就意味着不能失业,只能默默的扛起担子,累点苦点也无所谓了,结果一待就待了差不多2年的时间。 工资也能基本维持生活,但是很少会有多余的钱,可惜的是(或许是庆幸)因为去年受到了疫情的影响,公司开始大裁员,存活已经岌岌可危了。果然,不久就加入了失业大军。
早就知道待在外包不是长久之计,这两年天天就是项目需要什么就做什么,做一些重复搬砖的工作,没有好好的扩展自己的技术栈,两年内无时无刻想跳槽。
在20年11月份的时候就瞄准了年后的“金三银四”;但是人算不如天算,我金三银四失手了,面了几家我想去的公司,不是挂在二面就是三面,还有些挂在了电话面试,其实说到底是我的技术太垃圾,在这之后我成为了无业游民,但是我不能让自己这样子堕落下去,我觉得好好提升一下自己,再拼一把,这一次,我一定要竭尽全力!
网上冲浪时看见了好多人都是报名培训机构,然后获得成功,我也抱着试一试的心态,在培训机构报名了该课程。
从第一天报名到后续5个月左右的时间,我几乎每天都会按照学习计划学习到凌晨 12 点半甚至更晚,也记下了一本接一本的学习笔记。后来尝试着接触一些代码和一些框架,把自己所学的知识融入到你自己的项目中去。把自己的项目整理出一个测试框架去学selenium,网站的架构,代码知识,知识,网络瓶颈,系统优化,优化脚本,去设计场景,去获取目标用户量,去执行,去分析压力结果。
现在回头看,那种学习热情自己都觉得有些不可思议。可能是内心深处总有一股不服气,不为别的,就是想证明自己。果然,抱着这份自信顺利拿到腾讯测试岗offer。
做为一名测试人,我想分享一下这些年来,我对于技术一些归纳和总结,和自己对作为一名高级自动化测试需要掌握那些技能的笔记分享,希望能帮助到有心在技术这条道路上一路走到底的朋友!
1、软件测试功底技术——Linux系统
linux系统是主要的服务端操作系统,也是从事IT岗位的大部分人员必须具备的基本技术之一。作为软件测试工程师,我们常常需要在服务器端查看日志,从而定位问题的源头。
- linux系统基本知识:多用户,多任务,发行版本等
- 常见 linux操作命令:日志查看,文件压缩、解压,用户管理,文件权限等
- 会部署和配置基本的应用jdk、 mysql、 tomcat
- docker安装使用
- 编写基本的 shell RAD本
- 远程终端工具使用: shell, xftps等
2、软件测试功底技术——Sql数据库
数据库作为软件系统必备的应用系统,在诸如接口测试、性能测试等等过程中往往需要操作数据库,验证数据正确性完整性,都离不开数据库的增删改查操作,在项目部署阶段数据库还需要配合项目部署。在性能测试、接口自动化测试中都需要数据库的支撑。
- 数据库基本概念
- 关系型数据库
- MYSQL基本的增改查语句,存储过程
- MYSQL复杂查询、多表查询
- MYSQL索引及事务相关概念
- 数据库客户端工具使用:如 Navicat
3、软件测试功底技术——编程语言
推荐没有编程基础的朋友可以学习Python语言
Python语言的学习内容包含以下知识点:
Python基础:Python语言特点、运行环境、基本语法、代码风格、示例程序
数据结构:
- 基本数据结构:数字、字符串、类型判断、类型转换、切片、字符串格式化、数值运算、位置参数和关键字参数;
- 组合数据结构:列表、元组、范围、字典、集合、不可hash对象、解包、内存地数据结构址、不可变数据
- 程序控制:顺序结构、循环结构、判断结构、异常处理、逻辑运算符
- 函数:定义函数、函数的参数、返回值、变量作用域、匿名函数、常用内置函数
- 模块和库:模块和包、import关键字、常用标准库、常用第三方库、包管理工具pip
- 面向对象:面向对象起源和优势、面向对象的特性类和对象的联系、对象的特殊方法
- 日志记录:baseConfig、文件日志、邮件日志、定制格式、内置占位符、等级过滤、分级传播、配置文件
- 测试框架:unitest、pytest等
- 并发编程:多进程、多线程、协程、线程池、同步控制、线程通信、分布式、猴子补丁、 async语法、生成器
- 网络编程:socket编程基础、TCP服务端和客户端、并行请求处理、HTTP服务端和客户端
4、软件测试自动化进阶——接口测试
接口测试本质也是功能测试的一种,通过脚本或者工具,模拟客户端对服务端接口进行调用。因为是从接口层测试,所以能更早的发现问题,从而提高测试效率,降低修复成本。
- http/httpst协议学习
- 常见请求方法学习:GET、POST
- cookie和 session学习
- 接口的基本概念
- 接口文档认识
- 接口测试用例编写
- 接口测试工具使用:postman、Jmeter、SoapUl
5、软件测试自动化进阶——性能测试
性能测试的技术要求很高,不仅仅要对性能测试的指标、测试分类、测试设计有很深刻的理解。还要学习系统业务和架构相关知识,这样才能更好的设计性能场景,分析出系统的性能瓶颈。性能测试常用的工具有jmeter和loadrunner,大家可以根据需要进行学习。
- 性能基本概念:性能测试意义、常见性能指标理解、性能测试的分类
- 性能测试流程:性能需求分析、性能场景设计、测试脚本编写、测试执行资源监控、性能调优、回归测试
- Jmeter及 roadrunner使用
- 性能测试报告输出
6、软件测试自动化进阶——app自动化
越来越多的项目和系统通过移动端来提供服务,移动端的软件质量越来越重要,App自动化测试已经成为自动化测试的重要内容。借助Appium,使得App自动化测试和Web自动化测试有很多相通之处,不过作为测试工程师,依然需要掌握移动端应用的工具和特性。
- Appium移动测试环境搭建:Appium ServerAppium和 Desktop、 Android运行环境搭建、模拟器安装和连接、真机设备调试模式、adb、 weditor、 UiAutomator22、 Monkey
- Appium元素定位:原生应用元素定位、纯web应用元素定位、混合应用元素定位
- Appium元素交互:等待元素加载,元素的基本属性和方法、滑动、拖动、缩放操作、下拉选择操作、 toast消息处理、常见控件分析、常见布局分析
- 封装测试框架:集成Appium、adb等工具、预定义异常处理、记录Appium日志、屏幕截图、打造多用途测试框架
7、软件测试自动化进阶——持续集成和持续测试
持续集成和持续测试是一个在迭代中构建、测试产品并修复Bug的过程。它有助于团队在开发阶段的初期发现缺陷,这时的缺陷通常相对不那么复杂,并且更容易被解决。通过持续集成和持续测试,可以尽早地将错误风险降至最低,并加快交付更好质量的软件。
- 版本控制Git:背景介绍、环境部署、工作区、暂存区和提交区、分支创建与合并、解决冲突、标签、 config与别名、本地仓与远程仓、 GitHub与码云
- 持续集成 Jenkins:背景介绍、环境部署、文件结构、远程仓库与私服、ja包依赖、插件管理
- 容器Docker:了解 Dockers的镜像、仓库、容器、 Docker Engine和架构图、网络设置、数据持久化
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取