窗外,西安的冬天阳光明媚,坐在电脑前心情十分平静。想在这个难得的闲暇里,想起记录一下自己这些年的经历,也是给自己留一点以后可以回忆的故事。
个人2018年入学,武汉某大学计科相关专业,学科评估200名开外。
大一上学期一门专业课差点挂科,直接奠定了无法保研的局面,开始浑浑噩噩混了两年。除了高数上下,其他能逃的课基本都用来打英雄联盟了。
20年升大三的暑假,一个偶然的机会看到隔壁院的师兄发在群里的一条实习招聘,是武汉富士康招聘软件测试实习生。
暑期岗位,能签实习证明,有班车来学校接送,一天还有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
俗话说得好,好记性不如烂笔头,大家不管是看视频,还是自己看书,我觉得,做个笔记太有必要了,你可能会说我是天才来的,过目不忘,我不信!
千万不要太相信自己的记忆力。
很多时候甚至我们转眼就会忘记很多事情,那还指望脑袋能记多少?
所以我身边自己的包里,就有两个笔记本,一大一小,一个是平时随手记琐事的,怕自己忘记的,一个就是打草稿,或者随时涂涂写写的笔记本。
小伙伴说我都是电脑或者Pad上看视频,看书啥的,我也不想写字。
那就用笔记工具咯,印象笔记、有道云笔记等都是不错的选择,个人用的印象笔记,从大学到现在用了很多年了,还是很不错的,也承载了我的很多记忆,基本上有我学软件,到学测试开发这一路的笔记了,也有一些婆娑的话语,我是话痨来的嘛。
我主要就是记录知识点和偶尔的一些面经收获啥的
同样给大家安利下这两个笔记软件吧,还是那句话,不要太相信自己的记忆力。
印象笔记、有道云笔记
说到这里先给大家推荐几本书,书本不在于多,要精,给大家推荐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,里面的算法题可以说是很完善了,也有各种大神给自己的解题思路,还是很不错的。
作为一个技术人,把逛博客,养成一个跟大家刷朋友圈一样的习惯,我觉得很有必要,因为博主很多大牛,比如阿里,多多,字节,腾讯等等公司的大佬,很多都有写作的习惯。
我自己认识的阿里朋友,超过1/3都有自己的技术博客,在博客里面,没事逛一下,我觉得也是不错的,总能学到东西的嘛,而且还有类似敖丙那种又能跟你聊生活,又能跟你一起交流知识的博主,真香啊。
博客我也总结了一些平台的特性,大家可以对症下药,看自己想看什么类型的都可以找我聊聊
任何技能的学习都是建立在实践上面的,IT行业就特别强调项目经验。不练习,就像是花了半天时间去学习开枪的理论,结果根本没有机会摸枪,你觉得你打得准吗?想要学好软件测试,对技术有更深的理解,就一定要多去实操,没有熟练度的加成,你学的再多也只是纸上谈兵,一旦面对了真正的问题,你就会无从下手。
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取