这是我在某论坛看到的一名网友的吐槽:
软件测试四年,主要是手动测试(部分自动化测试和性能测试,但是用的是公司内部自动化工具,而且我自动化方面是弱项。)现在裸辞两个月了,面试机会少而且面试屡屡受挫。总结就是自动化,性能,还有脚本语言是软肋。可是为啥有的公司本身侧重功能测试也不要我呢?
一、直接回答这个问题
1、功能测试已经饱和,公司根本不缺;
2、找不到工作,说明没有达到公司的用人要求。测试这个行当已经逐步开始出现两极分化,简单的业务测试基本没有门槛,难的质量工程化要求已经比普通的研发要求更高了(业务理解+技术能力综合)。
3、脚本语言,自动化测试,性能测试这些点,出现在简历里边是很亮眼的,会增加面试机会的概率,如果你的简历没有这些,而又写的经历平平,估计HR那关都过不了,面试机会自然就少了。
二、一个合格的软件测试工程师需要哪些能力?
第一阶段:前置基础知识
这个阶段需要有基础知识储备,这样才能打牢基础,有利于下一阶段的提升。这个阶段主要是掌握计算机基础、测试理论、HTML基础、JS基础、CSS基础。
- 计算机基础:计算机组成部分,操作系统分类,B/S分类,C/S架构,常用DOS命令,服务器域名
- 测试理论:软件测试的目的,软件测试定义,软件测试原则,产品质量模型,测试基本流程
- HTML基础:HTML基本语法,标签属性,超链接,描点,表单
- JS基础:JS基础语法,JS引入方式
- CSS基础:CSS基本语法,CSS四类选择器,常用文字属性,行高属性,边框,盒子模型,内外边距
第二阶段:Linux和数据库
这个阶段主要是了解数据库的掌握情况,包含SQL语言、MYSQL关系型数据库等基础的数据库掌握。从操作系统到数据库的基本操作:增删改查,再到数据库的高级功能了解。
- Linux:操作系统介绍,操作系统发展历史,centos图形界面,文件和目录,常用Linux命令,vim文本编辑器的使用
- 数据库介绍:数据库基本概念,关系型数据库介绍,MySQL安装与使用,Navicat使用
- SQL语言(重点):数据表操作,数据操作,增删改查,条件查询,排序,聚合函数,分组,分页,链接查阅,真关联,子查阅,子查阅演练
- 数据库高级功能:数据库设计,命令行操作数据库,函数,存储过程,视图,事务,引索,外剪,用户密码
第三阶段:测试基础
这个阶段正式进入软件测试拉,从软件测试理论、测试方法和分类、黑白盒的测试用例设计、以及掌握一些bug管理工具。
软件测试理论,软件生命周期,测试方法和分类,测试用例设计(黑盒,白盒),缺陷及缺陷管理工具,其他(测试流程,测试计划撰写,测试报告模板,测试报告分析)
第四阶段:语言
目前世界排名靠前的语言Java\Python。都是企业的需求语言,而随着python语言的全名普及化,应用在人工智能、大数据等热门领域,更是让python受到公司青睐。
- Python编程:计算机组成原理,Python开发环境,Python变量,流程控制语句,高级变量类型,函数应用,文件操作,面向对象,异常处理,模块和包
- 数据结构:算法,时间复杂度,空间复杂度,Python列表类型性能测试,列表字典内置操作的时间,复杂度,顺序表,单向链表,双向列表,栈和队列,二叉树
- 排序算法:冒泡排序,选择排序,插入排序,希尔排序,快速排序,归并排序
第五阶段:web自动化测试
这个阶段的学习,大家应该更多的从以下两点去掌握。1.如何从手工测试转为自动化测试工程师;2.如何通过自动化测试技术为企业的测试工作提高效率,降低成本,增强测试的充分性和完整性。
- Web自动化入门:自动化测试分类及自动化适用的项目,自动化测试框架选型,selenium的发展历史及工作原理,seleniumIDE插件使用,firebug插件使用
- Web自动化基础:元素基础定位方法,xpath,CSS元素定位方法,元素常见操作,浏览器的基本操作方法
- Web自动化中级:鼠标键盘操作,元素显示等待和隐式等待,HTML特殊元素处理,窗口截图
- Web自动化高级:自动化测试模型,unittest断言,unittest与htmireport的结合使用,unittest与DDT结合,实现数据驱动,unittest与logger结合使用
第六阶段:APP自动化测试
手机端APP自动化测试,在业务基本稳定时,也是势在必行的一件事情。手机端自动化测试的技术还在不断的发展过程中。这个阶段的学习,是分基础、中级、高级的三个阶段的进行深入浅出的学习。
- 移动自动化基础:移动端测试分类及特点,ADB命令及monkey使用,appium环境搭建,appium工作原理
- 移动自动化中级:APP和手机系统操作,元素定位,元素操作,高级手势操作,混合APP测试,pytest测试框架,定制测试报告,数据读写
- 移动自动化高级:po模型,数据驱动,关键字驱动
第七阶段:接口测试
这个阶段提供了各种不同协议,不同类型的接口项目,大家只有利用学习内容进行接口测试的实战。不光只是完成接口测试,而是要掌握全套的接口测试工作流程:1.接口需求测试分析2.设计接口测试用例;3.使用工具开展接口测试;4.针对复杂接口编写代码进行接口测试;5.接口测试框架设计及实现;6.完成接口测试的持续集成。
- 接口基础:接口相关概念,接口测试实现流程,restful架构风格,json基本语法,浏览器插件安装以及使用,postman及fiddler使用
- Jmeter入门:jmeter安装以及基本使用,jmeter组件之线程组
- Jmeeter组件参数化:CSV data set conflg,用户参数,用户定义的变量,函数
- Jmeter常用组件:直连数据库,关联,断言,集合点,函数详解,逻辑控制器,分布式,QPS,FTP,图形监控器
- 接口框架自动化:requests库使用及脚本封装,unittest框架,mock实现
- 接口框架设计及实现:框架设计,数据库操作,数据依赖解决,接口异常处理,统计报告及邮件发送,持续集成
- 接口测试项目:项目接口清单提取,项目功能测试,性能测试,自动化测试
第八阶段:性能测试
这个阶段的学习,从性能需求分析开始,到脚本设计实现,业务性能场景设计,性能故障定位以及性能优化都有实际的案例和项目进行实际操练
- 性能测试基础:理论,分类,指标,工具,loadrunner安装与注册,性能测试步骤
- Vugen:协议,参数化,集合点,事务,检查点,思考时间,关联
- Controller:场景设计,运行,IP wizard应用,负载生成器,sla,场景监控,服务器硬件检测工具
- Analysis:结果分析,图表分析,吞吐量相关,事务相关
- 性能测试调优:方案,Linux服务器性能监控,JVM配置调优,Tomcat配置调优,性能测试报告
- 数据库调优:慢查询,线程池,索引命中率,行锁
三、如何找到一份软件测试工作
1、自学软件自动化测试可以加入我们(文末小卡片),群内会有不定期的上传免费的资料,这些都是群里各位大佬从各个技术网站搜集、整理出来的(广告勿扰):
2、软件测试面试宝典
3、软件测试工程师面试前该如何做准备工作:
1)准备面试简历:
简历是到公司面试的敲门砖,如果无法通过的第一步简历筛选,就没有后面的事了。
所以简历一定要写好,千万不要出现错别字或者语句不通的地方,特别是别把专业名词写错了。
如果有条件,可以找老师或者同学帮你看看简历,力求第一印象良好。
2)知识点复习
- 软件测试知识点学习笔记
- 软件测试常见面试题整理
- 应聘公司以往面试题针对性复习
- 以往面试经验总结回顾,吸取经验教训
3)调整好心态
过度自信和极度自卑都不会给面试带来好的结果,只有明确自己的目标并积极备战,才能更有可能拿到offer。即使面试失败了也不要气馁,而是要从失败的经历中总结经验,每一次的面试失败都可能是你下一次面试成功的铺垫。
写在最后
且夫水之积也不厚,则其负大舟也无力。4年的累积,必有其可造之处。但也要保持空杯,随时拥抱变化,尽早改变,迎接新的市场。在学习过程中,一个人自学容易懈怠,尝试在网上搜索了一些群聊共同学习,但是也是由于鱼龙混杂,很多测试群沦为聊天群、摸鱼群,自己之后创建一个自学互助群,大家共同进步学习,鼓励大家有资源可以上传共享。