经常会有小伙伴询问:“测试工程师有哪些必须要掌握的技能?”这是一个非常大的课题,因为每个人从事的行业不同、岗位不同,需要掌握的技能自然也不一样。
今天小编就从不同岗位、不同行业两个大方面,来讲讲软件测试工程师需要掌握的技能列表,最后也会列出哪个技能对于现在的你比较重要。快来对着技能树查漏补缺,有的放矢学习技能吧~
这里要提一下:这篇文章里说的测试工程师,是主攻软件领域的测试工程师。
首先我们来看一下不同阶段的测试工程师需要掌握的技能体系:
(来源@测试猿)
根据以上技能体系,小编给大家做了如下细分:
一、通用技能
1业务相关
站在客户角度思考业务;掌握业务需求的知识内容、业务管理流程、行业现状和发展方向;
2管理相关
1)时间管理(四象限法则)
2)目标管理(SMART法则)
3)知识管理
工具:xmind、有道云笔记、印象笔记、Blog、GitHub、CSDN等
4)团队管理
team leader:
认真完成任务分工;及时汇报工作情况;建设员工技术成长体系;关注员工身心健康发展;
team worker:
认清任务职责边界;工作中敢于担当;对自己负责,对团队负责,对公司负责;与同事之间彼此包容、和谐相处;
3思考、沟通和持续学习能力
思考
今天完成了什么内容、明天需要做什么、自己哪些方面做得好,哪些做得不够好,下次需要改进;近期工作计划、学习计划、职业规划、人生规划。
沟通
敢于沟通:主动了解和听取对方的想法,敢于表达自己的观点,表达观点时说话语气很重要,要平和;
勤于沟通:多和别人交流与工作相关的意见和想法;
善于沟通:提升沟通技巧和效率,善于提问;沟通过程对事不对人,以解决问题为根本。
持续学习能力
持续学习精神:测试技术更新快速,测试工程师需要保持持续学习的态度,跟随行业发展,时刻关注测试行业最新技术和趋势,不断提升自己的专业能力,以保持竞争力;
二、功能测试需要的技能
1、客户端功能测试的技能
1)熟练掌握web测试与app测试关注点的不同,比如,界面、兼容性、app安装/卸载/升级、app弱网、app操作方式(横/竖屏、手势)、app交叉事件等测试;
2)熟练掌握几种常见的缺陷管理工具(Jira等)和代码管理工具(SVN等),熟悉缺陷的定义标准和系统化测试计划编写等;
3))至少会一门编程语言:java、python、C#等,可以不精通,但要写过简单的代码;
4)掌握用例设计工具(latin)和web测试工具(xenu等)的使用;
需要掌握的工具:
1)缺陷管理工具
Jira、禅道、bugfree、自研工具等;
2)文档协作管理工具
wiki;
Docs--在线协作;
Xmind;
3)用例编写工具
Latin;
4)用例执行工具
Xenu(web)、adb(app);
5)代码编写工具
Pycharm等
6)弱网测试工具
Charles
7)安全测试工具
AWVS--网站及服务器漏洞扫描软件
sqlmap--检测与利用SQL注入漏洞的免费开源工具
Nmap--网络扫描和嗅探工具
2、服务端功能测试
1)熟练使用postman或jmeter做接口测试;
2)深度了解HTTP/HTTPS协议的原理和作用;
3)掌握Linux命令查看服务器信息;
4)会使用jmeter做简单的性能测试;
5)使用python+requests+unittest/pytest+htmlrunner框架写过简单的接口自动化脚本;
6)熟练操作数据库:增、删、改和多表查询,可以写存储过程,独立完成测试数据的制造;
需要掌握的工具:
1)抓包工具
Fiddler、Charleswireshark;
2)接口测试工具
Postman、HttpRequester、jmeter等;
3)性能工具
Jmeter等;
4)数据工具
Navicat、redisdesktopmanager;
5)车载特有工具
canoe、cantest、Qnet、busmaster、gt
3、共通技能:
1)软件测试知识:对软件测试的基本概念、方法和流程有深入的了解,熟悉各种测试技术和工具;
2)测试方法论:熟悉测试方法论和流程,例如黑盒测试、白盒测试;熟练掌握黑盒测试方法(等价类、边界值等)和白盒测试方法(基本路径等),熟练使用这些方法论制定测试计划和测试策略,设计有效的测试用例;
三、自动化测试需要的技能
1、客户端自动化的技能
1)对于Web应用程序的自动化测试,掌握HTML、CSS和JavaScript很有帮助的。
2)熟练掌握UI自动化测试框架的环境搭建,比如,python+selenium+unittest+htmlrunner;
3)熟练掌握APP移动自动化测试的完整流程和测试方法;
需要掌握的工具:
1)Android自动化测试
UIAutomator
appium(基于webdriver框架)
uiautomator2(仅支持Android)
AirTest
2)iOS自动化测试
WebDriverAgent
appium(基于WebDriverAgent框架)
AirTest
3)Web自动化测试
Selenium
4)微信小程序自动化测试
ChromeDriver
5)客户端自动化测试
Pyautoit
2、服务端自动化的技能
1)熟练搭建工具自动化的搭建:postman/jmeter+newman/ant+jenkins;
2)能够独立完成Python+requests+unittest/pytest+htmlrunner的测试框架的开发;
3)能够独立完成自动化接口脚本的编写和维护;
需要掌握的工具:
Python+requests+unittest/pytest+htmlrunner;
Java+rest-assured;
Robot Framework;
HttpRunner;
Postman+Newman+jenkins;
Jmeter+Ant+jenkins;
Vue+Flask&Django;
3、共通技能
1)编程技能:至少掌握一门编程语言(Python、Java、C++等),没有编程基础的建议选择Python,因为简单易学,对新手比较友好,而且在测试领域的应用极为广泛,以编写自动化测试脚本和工具;
2)测试工具和框架:熟悉常用的自动化测试工具和框架,例如Selenium WebDriver、Appium、unittest/pytest/JUnit、htmlrunner(测试报告工具)等,提高自动化测试的效率和准确性;
3)基础知识:了解软件开发生命周期和软件测试基础知识,包括需求分析、设计、编码、调试和发布等阶段;理解软件开发流程和相关概念更好地与开发团队协作;
4)调试和故障排除:具备良好的问题分析和故障排除能力,能够快速定位测试脚本和自动化测试框架的问题,并提供解决方案;
四、性能测试需要的技能
1、客户端(app)性能测试的技能
1)性能测试工具:熟练掌握性能测试工具,如solopi等,对客户端进行性能测试。
2)客户端技术知识:了解客户端开发的基本原理和技术,熟悉常见的移动应用开发框架(如iOS、Android),了解Web前端技术(如HTML、CSS、JS等);
3)性能测试指标:明确客户端性能测试指标(冷热启动时间、耗电量、流量、CPU、内存、GPU、帧率、页面切换时间和稳定性测试)及预期结果;
需要掌握的工具:
1)PerfDog、solopi
2)adb
3)ffmpeg(音视频)
4)dumpsys batterystatus
5)Battery-Historian
6)Monkey、MonkeyRunner等
2、后端服务器性能测试的技能
1)熟悉性能测试过程,能够独立分析性能需求;
2)深度掌握Jmeter或Loadrunner的拓展用法,能独立完成性能测试;
3)操作系统和网络知识:了解操作系统的原理和常见问题,熟悉网络通信协议和架构,有助于深入理解系统的性能特点和影响因素;
4)脚本开发:熟悉至少一种编程语言(如Python、Js等),能够编写自动化脚本支持性能测试工作,并进行数据处理和结果分析;
5)数据库知识:了解数据库的基本原理和性能优化策略,熟悉常见数据库管理系统(如MySQL等)和性能调优方法;
6)系统架构与设计:能够理解系统各个模块之间的交互关系,为性能测试提供有效的支持和指导;
7)压力测试和容量规划:具备压力测试和容量规划的知识和经验,能够根据系统需求和预期负载,评估系统的容量,并制定相应的扩展和优化方案;
需要掌握的工具:
1)性能测试工具:Jmeter、Gatling、LoadRunner;
2)资源监控工具:性能监视器、nmon等;
3)数据库监控工具:monitor等;
3、共通技能
1)操作系统知识:熟悉操作系统的基本原理和常用命令,了解操作系统对性能的影响。
2)问题解决能力:善于分析和解决技术问题,具备良好的故障排除能力,能够处理性能测试过程中遇到的各种技术难题。
3)性能测试方法与策略:了解性能测试的基本原理和方法,熟悉负载模型和性能指标,能够选择合适的性能测试策略,并设计相应的测试方案。
4)性能问题分析与调优:能够对性能测试结果进行分析和解读,定位系统资源瓶颈和性能问题,并提出有效的优化措施。
五、其它需要掌握的工具
1)H5性能测试
(1)Chrome Devtool
(2)W3C Performance API
2)环境部署工具
(1)Docker--应用容器引擎
(2)K8S--基于容器的集群管理平台
3)辅助开发工具
(1)Vue.js
(2)Nodejs
六、不同行业需要测试工程师的星级
写在最后
这是小编总结的”过度”全面的测试技能合集,你有没有不同意见,把你的不同意见分享出来,大家一起讨论,谢谢!
如果你想学习交流,看下方:
↓↓
可以到我的个人葳:atstudy-js,就可以邀请你进群一起探讨学习交流。