窗外,西安的冬天阳光明媚,坐在电脑前心情十分平静。想在这个难得的闲暇里,想起记录一下自己这些年的经历,也是给自己留一点以后可以回忆的故事。
个人 2015 年入学,武汉某大学计科相关专业,学科评估 200 名开外。
大一上学期一门专业课差点挂科,直接奠定了无法保研的局面,开始浑浑噩噩混了两年。除了高数上下,其他能逃的课基本都用来打英雄联盟了。
17 年升大三的暑假,一个偶然的机会看到隔壁院的师兄发在群里的一条实习招聘,是武汉富士康招聘软件测试实习生。
暑期岗位,能签实习证明,有班车来学校接送,一天还有 220 工资。我觉得这是个很好的机会,起码富士康这个厂也算有些名气,能赚个实习经历还有点工资。
我向师兄报了名,简历里面特别注明了大学 C 语言 92 分,班级第二。简历通过的还算顺利,也没有面试,直接就让去了。进入第一家实习公司,在这里开始了工作的起点。
当时负责的任务主要是 Windows 10 SP1 的多国版本测试任务,跟我以为的进去的写代码相差甚远,就是个黑盒测试吧,或者再说直白些,就是点点点的无脑操作没什么技术含量。
不过由于是对接外企,所以任务都是英文下达的,有时候翻译还是得花点功夫,英文能力倒是得到些许锻炼。测试需要自己组装机器,选择各型号的 cpu 和显卡等配件。
因为是第一份实习,我学习的非常认真,直到现在我仍然能够闭上眼睛,清晰完整的回忆出一台整机的拼装全过程。
CPU 的引脚,内存条的金手指和各式各样的 SATA 线束是那段时间接触最多的东西。
机器点亮后就开始做 DASH(从服务器上下载测试版本的系统并安装),然后是激活系统开始对照着测试用例展开测试。
差不多两个星期之后,常规的操作已经比较熟练了,任务也显得逐渐无聊了起来。由于 DASH 的过程很漫长,我经常会在三楼到四楼的楼梯口望着窗外的太阳,不知道是哪个有趣的同事在窗台用矿泉水瓶养了一个小叶子,我看着这抹绿色总是很舒服。
富士康的生活很规律,八点半到工位,五点半出公司,日复一日的装配着各种方案让我在想,以后我要从事这种枯燥但是轻松的工作吗? 想了想还是写代码做需求比较有意思。
直到这一天(项目交付完成),我又做了一个决定:辞职,认准方向,确定要学什么,给自己定好半年内学习目标,先把自己的内功练好。
列出计划
在学习之前一定要做好详细的计划,尽量去细化,不管是学任何东西,个人认为,列出一个学习计划,这个绝对对你有很大的帮助,不然你漫无目的的去复习,最后发现,都学了啥呀,就很懵逼。
那一个计划应该怎么列,以及需要列一些什么东西呢?
我就从我个人的习惯角度去给大家说下,我在列计划的时候是怎么做的,以及我从什么角度去做这个计划的。
时间规划
我觉得计划里面,对于自己时间的规划是很重要的,比如你现在想学习自动化相关的知识点,那我觉得你至少得给自己一个大概的时间规划,比如你要用一个月的时间去学完自动化所有的基础知识,再一个月的时间去学习自动化的进阶知识这样的。
为什么要进行时间规划?
不进行时间规划,我想大家很容易就被各种琐事打断,比如看着看着你就去刷抖音,刷 B 站了,对不对?我想我应该没有说错吧?
那如果你规划了时间,你一个月要看完基础知识,你细化一下你的时间,你看的时候就发现,今天的任务我还没完成,那我先完成了再刷手机吧,相当于给自己一个指标了,没完成就别玩。
我自己某段时间的大事件规划,可能没那么细是天维度的:
我们再看一下学霸的计划表,精确到分钟的那种:
这个的计划我想你严格执行了,坚持下去,量变会引起质变的。
列出要学习的知识点
大家在开始的时候都是很懵逼的?你知道你要学这个技术栈,但是你要学习这个技术栈的哪些点呢?
是不是很疑惑,那如果你把知识点列出来,我想结果就是另外的一个样子了,你现在要学习 python,那你就从基础开始嘛,那就列个清单写上基础,到时候你要去看基础的时候,你就会从他的基础知识,还有他的几种基础类型看起来了。
第一阶段:软件测试基础入门
基础知识学习,应该要掌握的是计算机及测试理论的相关概念,掌握 HTML,CSS 及 JS 基础语法以及应用。
学习重点
1、计算机基础:计算机组成部分、操作系统分类、B/S 和 C/S 架构、常用 DOS 命令、服务器域名。
2、测试理论:软件测试的目的、软件测试定义、软件测试原则、产品质量模型、测试基本流程
3、HTML 基础:HTML 基础语法、标签属性、图片标签、超链接、锚点、表单
4、CSS 基础:CSS 基础语法、CSS 四类选择器、常用文字属性、行高属性、边框、盒子模型、内外边距
5、JS 基础:JS 基础语法、JS 引入方式
第二阶段:软件测试通用技能
掌握 linux 的常用操作命令以及数据库的增删改查,熟悉数据库高级工程,熟悉非常关系数据库 redis。
学习重点
1、Linux 基础:操作系统介绍、操作系统发展历史、CentOS 图形界面
2、Linux 使用:Linux 目录管理,用户和用户组管理、备份压缩、Vim 操作等
3、数据库介绍:数据库基本概念、关系型数据库介绍、MySQL 安装与使用、Navicat 使用
4、SQL 语言:数据表操作、数据操作-增删改查、条件查询、排序、聚合函数、分组、分页、连接查询、自关联、子查询、子查询演练
5、数据库高级功能:数据库设计、命令行操作数据库、函数、存储过程、视图、事务、索引、外键、用户密码
6、Redis 数据库:Redis 安装和配置、数据类型与操作
第三阶段:软件测试手工测试
本阶段学习目的是,熟练掌握测试用例的设计方法以及缺陷的编写方法,熟练掌握缺陷管理工具禅道或者 jira;
学习重点
1、测试理论:软件测试的分类,软件开发模型和测试模型,软件的质量模型,测试用例的定义和要素 2、测试用例设计:等价类方法、边界值方法、因果图、判定表、状态迁移法、正交、场景
3、缺陷管理:缺陷定义、缺陷的判定标准、缺陷报告、缺陷跟踪流程
4、Web 项目实战:搭建项目的测试环境,如何快速熟悉项目,项目的测试流程,测试计划和方案,功能测试分析,状态迁移法的使用, 流程测试分析,非功能测试分析,测试报告编写,Fiddler 抓包 5、测试管理工具:禅道的使用,JIRA 的使用
第四阶段:编程+数据结构
本阶段学习目的是,我们能够熟练掌握 python 的编程基础,不用像开发那样,学的那么深入。 比如 Java,只需要学完 JavaSE 的部分就够你用了。 python 的话也是一样的,把基础的部分学完就行了。 总之前期你两者二选一的学习就 OK 了。 啥?你问我学的啥。 我当然是两种都会啊。
学习重点
1、Python 开发环境:Python 开发环境的搭建、Pycharm 使用
2、Python 基础:基本的会就行
3、面向对象:面向对象介绍、类和对象的概念、魔术方法的意义及作用、对象成员的访问控制权限、继承的概念及意义、继承、多层 继承和多继承、多态的概念以及应用、类属性和实例属性、实例方法、类方法、静态方法、设计模式:单例模式
4、异常处理:理解异常的作用、捕获异常、异常的传递规则、自定义异常
5、模块和包:模块和包的概念、__all__的用法、import 语句用法、from…import…用法、from…import*用法
6、数据结构:算法、时间复杂度和空间复杂度、python 列表类型性能测试、列表字典内置操作的时间复杂度、顺序表、单向链接、双向链表、栈和队列、二叉树
7、排序算法:冒泡排序、选择排序、插入排序、希尔排序、快速排序、归并排序
第五阶段:WEB 自动化测试
在 web 自动化的阶段,需要我们熟练掌握 selenium 元素定位方法和常见元素操作,还有 HTML 特殊元素的处理,js 定位和 unittest 框架;
学习重点
1、Web 自动化入门:自动化测试的理论知识、主流的 Web 自动化测试框架介绍、Selenium 的发展历史及工作原理、 元素查看工具使用、环境搭建
2、Web 自动化基础:元素基础定位方法、Xpath 和 CSS 元素定位方法、元素常见操作、浏览器操作方法、鼠标键盘操作、 显示等待和隐式等待、HTML 特殊元素处理、窗口截图、验证码处理
3、Web 自动化中级:UnitTest 框架、Fixture、UnitTest 断言、参数化、测试报告
4、Web 自动化高级:PO 模式、数据驱动、日志处理 5、项目实战:自动化测试流程、项目自动化框架设计、自动化代码实现
第六阶段:APP 自动化测试
掌握移动端产品测试的特点,掌握 adb 以及 monkey 的使用 ,掌握元素定位和常见操作,还有 pytest 以及 PO 模式,数据驱动,jekins 持续继承,熟悉关键字驱动框架设计;
学习重点
1、移动端测试特性:APP 应用系统架构、测试环境及发布平台、APP 敏捷开发模式、APP 应用测试要点、业务功能测试、兼容性测试、 安装卸载升级测试、交叉事件测试、Push 消息测试、性能测试、用户体验测试、稳定性测试
2、移动自动化基础:移动端测试分类及特点、ADB 命令及 Monkey 使用、appium 环境搭建、appium 工作原理
3、移动自动化中级:APP 和手机系统操作、元素定位、元素操作、高级手势操作、混合 APP 测试、PyTest 测试框架、定制测试报告、 YAML 数据读写
4、移动自动化高级:PO 模式、数据驱动、Git、Jenkins 持续集成
5、项目实战:APP 项目实战
第七阶段:接口测试
这里是掌握接口测试用例设方法掌握 jmeter 工具的使用,熟悉接口框架的设计和开发;
学习重点
1、接口测试基础:接口及接口测试概念、HTTP 协议、接口规范、项目环境说明、接口测试流程
2、Postman 实现接口测试:Postman 介绍和安装、Postman 基本用法、Postman 高级用法、Postman 测试报告、项目实战
3、数据库操作:数据库介绍、数据库基本操作、数据库事务操作
4、代码实现接口测试:Requests 库、集成 UnitTest、接口测试框架开发、项目实战
5、持续集成:持续集成介绍、Git、Jenkins、持续集成之 Postman、持续集成之代码
6、接口测试扩展:Mock 测试、接口测试总结
第八阶段:性能测试
掌握性能测试的概念,分类及测试流程,掌握 LoadRunner 的使用方法,熟悉性能测试调优方法;
学习重点
1、性能测试基础:性能测试理论、性能测试分类、性能测试常用指标、性能测试流程
2、性能测试工具:常用性能测试工具、Jmeter 环境搭建、Jmeter 功能概要、元件作用及执行顺序、线程组、参数化、断言、关联、 连接数据库、逻辑控制器、定时器、分布式、测试报告
3、项目-接口性能测试:项目 API 文档分析、接口清单梳理、接口脚本设计、并发数据计算、逻辑控制器项目应用、单一场景搭建、 常用响应图表插件及应用
4、项目-web 性能测试:脚本录制、正则过滤、cookie 管理器、事务控制器、思考时间、混合场景搭建、web 性能脚本执行与分析
5、性能测试调优:windows 服务器性能监控、linux 服务器性能监控、性能测试报告
画脑图
这个是我工作以来,一直都很依赖的工作和学习的方式,就是做脑图,工作中大家也会发现身边的仔,基本上也都会或多或少的做一些脑图,去辅助自己学习一些知识点什么的。
他可以做详细设计,做概要设计,当然也可以做我上面提到的时间规划,以及知识点清单啥的。
做脑图的软件,我这里给大家推荐两个,这两个我都有在用,说不上好坏,一个在线方便,一个功能齐全,样式更多样。
工具:Xmind/ProcessOn
Xmind 官网地址:https://www.xmind.cn
ProcessOn 在线作图地址:https://www.processon.com
做笔记
俗话说得好,好记性不如烂笔头,大家不管是看视频,还是自己看书,我觉得,做个笔记太有必要了,你可能会说我是天才来的,过目不忘,我不信!
千万不要太相信自己的记忆力。
很多时候甚至我们转眼就会忘记很多事情,那还指望脑袋能记多少?
所以我身边自己的包里,就有两个笔记本,一大一小,一个是平时随手记琐事的,怕自己忘记的,一个就是打草稿,或者随时涂涂写写的笔记本。
小伙伴说我都是电脑或者 Pad 上看视频,看书啥的,我也不想写字。
那就用笔记工具咯,印象笔记、有道云笔记等都是不错的选择,个人用的印象笔记,从大学到现在用了很多年了,还是很不错的,也承载了我的很多记忆,基本上有我学软件,到学测试开发这一路的笔记了,也有一些婆娑的话语,我是话痨来的嘛。
我主要就是记录知识点和偶尔的一些面经收获啥的
同样给大家安利下这两个笔记软件吧,还是那句话,不要太相信自己的记忆力。
印象笔记、有道云笔记
印象笔记官网地址:https://www.yinxiang.com
有道云笔记地址:http://note.youdao.com
看书(不想看书,想直接看视频,请直接跳过这步)
说到这里先给大家推荐几本书,书本不在于多,要精,给大家推荐 6 本必看的书籍,看完一定受益匪浅,找到软件测试工作没有问题。
1、软件测试(第 2 版)
测试入门的好书,较全面地介绍了各种测试领域和方法,为测试新手提供了正确的观念和宽泛的基础。
2、软件测试技术大全:测试基础、流行工具、项目实战
内容涉及测试理念、测试技术、测试开发、测试自动化、测试管理和常见的测试工具,不愧“测试大全”的书名。有些内容失之于粗糙,一些论述也不够严谨,缺乏参考文献更是此书的硬伤。瑕不掩瑜,此书理论和实践结合紧密,仍值得测试工作者学习和思考
3、软件测试的艺术(第 2 版)
一本“久经考验”的测试经典:1979 年,第一版面试;25 年后,第二版登场。平心而论,有些观点已经不能直接应用在测试实践中,但是仔细品味仍有所收获。毕竟,这是一本需要思考的书,而不是操作手册。
4、Selenium 自动化测试
使用 Python 和 Selenium 进行 Web 自动化测试的实战指南,掌握用 Python 语言通过调用 Selenium 接口,搭建 Web 应用自动化测试框架 使用 Selenium、Appium 实现在 iOS、Android 端在内的移动设备上的自动化测试。 Python unittest 模块创建 WebDriver 测试用例,WebDriver 跨浏览器测试,隐式和显式建立可靠和健壮的测试。 在移动平台,如 iOS 和 Android 使用 Appium 测试 Web 应用程序,捕获测试执行的截图和视频
5、软件自动化测试开发
适读人群:软件测试从业人员、软件开发从业人员、学校软件测试专业学生、软件项目管理人员等。 快速学习能力已成为当前职场必备技能,而自动化测试开发也逐渐成为软件测试行业中一门必备技能或职业。本书为软件测试行业的快速学习提供了一种可能。对初学者而言,可以照葫芦画瓢,在实践中激发兴趣和信心;对有基础的读者而言,可以更加深入地了解自动化测试,并直接应用到工作当中,本书的内容将起到一个实用指南的作用。
6、软件测试工程师面试指导
面向初学者,介绍了软件测试行业、测试工程师素质要求、基本测试技术、求职策略、面试技巧、典型试题,对于测试新手或迈向测试行业的朋友有较高的参考价值。此书还收录了一些对读者来信的回复,内容涉及职业规划、大学生就业、测试学习、测试实践等,针对当前常见的困惑,做出了谨慎且深思熟虑的回答。
视频
主要是在哔哩哔哩上看培训视频。看视频学习的最大好处就是入门很快,看一遍,再跟着敲一遍,但是缺点就是时间会花费长一些。我入门阶段基本上都是看视频学习,建议是找最新的视频学习,因为培训机构也会根据公司每年面试的侧重点调整自己的教学方案。如果找不到资源,可以和作者私❤️说下,还是收藏了一些。
刷题
这里只针对要去面试的仔,不管是校招,还是社招的,社招其实正常的面试也不用刷,大家打好根基就好了,但是因为校招大家没啥实际经验,都会有笔试题环节的,社招去字节,这样很考算法的公司,我觉得刷题还是很有必要的。
这里的刷题针对两个人群我推荐不同的网站吧。
校招仔:因为校招的题涉及计算机基础,编程语言基础等各种知识点,我觉得牛客网不错,我自己虽然没经历过校招这个环节,但是牛客网我是刷过的,当时我把所有题目都做了,收获还是有的。
其实有点应试考试这样的嫌疑,但是为了 Offer 应试就应试呗,我们进公司了学技能不就得了对吧,这种忍辱负重我觉得还是有必要的。
社招仔:因为字节、多多这样的公司,经常会用算法这样的方式去做筛选,因为这样筛人真的很快,所以我们也不能打没把握的仗,那算法的话我就推荐力扣(leetcode)和 lintcode,里面的算法题可以说是很完善了,也有各种大神给自己的解题思路,还是很不错的。
牛客网:https://www.nowcoder.com
力扣:https://leetcode-cn.com
lintcode:https://www.lintcode.com
刷题小程序(需要激活码,可以私信作者询问操作)
逛博客
作为一个技术人,把逛博客,养成一个跟大家刷朋友圈一样的习惯,我觉得很有必要,因为博主很多大牛,比如阿里,多多,字节,腾讯等等公司的大佬,很多都有写作的习惯。
我自己认识的阿里朋友,超过 1/3 都有自己的技术博客,在博客里面,没事逛一下,我觉得也是不错的,总能学到东西的嘛,而且还有类似敖丙那种又能跟你聊生活,又能跟你一起交流知识的博主,真香啊。
博客我也总结了一些平台的特性,大家可以对症下药,看自己想看什么类型的都可以找我聊聊
实践
任何技能的学习都是建立在实践上面的,IT 行业就特别强调项目经验。不练习,就像是花了半天时间去学习开枪的理论,结果根本没有机会摸枪,你觉得你打得准吗?想要学好软件测试,对技术有更深的理解,就一定要多去实操,没有熟练度的加成,你学的再多也只是纸上谈兵,一旦面对了真正的问题,你就会无从下手。
坚持
在整个学习过程中,能坚持下来的人并不多,大部分的人都会中途放弃,都是因为自己的意志不够坚定,还有就是在学习中遇到的困难太多,导致自己学习效率低,一件事情一旦困难太多,人的意志就容易松动,最后导致放弃。所以我还是建议找人跟你一起学,这样可以相互监督一下,群众效应的效果是非常强大的,大家一起学习,一起打卡,会更有学习动力,也更能坚持下去。
如果本文对你有帮助,别忘记给我个3连 ,点赞,转发,评论,
咱们下期见!答案获取方式:已赞 已评 已关~?
学习更多JAVA知识与技巧,关注博主查看个人资料 或评论留言
作者【六十七点五】
原文链接:【应届生学的java,转自动化测试拿到15k薪资,送给大家的经验积分_Java_六十七点五_InfoQ写作社区】