随着互联网行业高速发展,快速高质量的产品版本迭代成为企业始终立于不败之地的迫切需求而在短迭代的快节奏中,传统测试工作面对更大压力,无法持续提供高效率高质量的人力支撑,所以越来越多的企业需要技术更为全面的测试开发工程师
测试开发本质上属于测试,区别在于需要依靠更多的技术手段作为辅助,在提高测试工作效率的同时保证产品质量。与测试相比,测试开发会将测试任务提前,不用非等到开发全部结束之后再测试,极大提高了测试速度和质量,另外测试开发还需要完成将测试自动化的任务,通过开发维护测试工具、搭建自动化测试平台等手段,提高测试效率,减少人力成本。
笔者将结合自己的求职经验,从下面几个方面介绍测试开发岗位,希望对大家面试测试开发岗有所帮助。

测试开发岗招聘分析
测试分为:客户端测试,服务器端测试,安全测试,性能测试,功能测试,自动化测试,测试开发等。
1.1  不同测试岗工作内容
客户端测试 是指对用户可以看到的内容进行测试,比如包含界面的网页端、pc 端、移动端等,一般是在用户的机器上去做。
测试内容包括:安装测试、卸载测试、用户界面测试、功能测试、字符输入测试、提示信息测试、超链接测试、操作按钮测试、菜单测试、视频音频测试、程序运行权限测试等。
服务端测试 有两种:一种是直接对 WEB 或者 APP 的服务端进行测试;另一种是对更后端的数据库、缓存系统、中间件、文件系统等进行测试。
测试内容包括:代码检查、接口测试、结合业务的模块测试和场景测试、压力测试、服务端最优配置测试等。
安全测试 是指有关验证应用程序的安全等级和识别潜在安全性缺陷的过程,主要查找软件自身程序设计中的安全隐患。
测试内容包括:缓冲区溢出、SQL 注入、跨站脚本攻击、跨站请求伪造、SSL 协议攻击等。
性能测试 是为了保证产品发布后其性能能够满足用户的需求,对指定的软件产品进行功能性的检测和验证,确保这些功能都得以实现并能正常运行。
测试内容包括:基准测试、日常压力测试、峰值压力测试、容量测试、稳定性测试等。
功能测试 主要采用黑盒测试方法,结合测试内容对功能进行测试,同时在测试过程中对用户需求、设计文档和使用手册进行检查。
测试方法主要根据测试对象的不同灵活进行选择。功能测试是对应聘人员要求最低的一种,一般只需点点点找出产品的 bug,不需要很高的技术含量,这同时也导致测试人员的可替代性很高,发展空间已经接近天花板,所以需要掌握其他方向的测试内容。
自动化测试 是借助于测试工具、测试规范,从而局部或全部代替人工进行测试及提高测试效率的过程。它的主要进步之处在于自动测试工具的引入,包括对各种测试内容的管理和实施、测试脚本的开发与执行等,对于编程能力的要求更高一些。
下表中是各大厂对测试开发工作内容的说明,可以看出,测试开发 应该具备自动化测试技术,但不局限于此,也应该具备平台和工具的开发能力,整体要求较高。工作内容主要包括:
一是测试工具、测试平台的开发,服务于测试相关的业务,与开发公司其他产品业务很类似;
二是自动化测试开发,主要开发自动化测试脚本,比如 UI 自动化测试、接口自动化测试、单元测试等等;
三是一般性测试脚本的开发,避免单一冗余的工作,提高效率,比如生成测试数据、抓取页面数据进行对比等等。
1.2  市场需求及薪资待遇
某招聘官网上搜索测试开发的市场需求量,仅仅北京就有 1.8w 以上,性能测试和自动化测试次之,为6k左右;根据某招聘网站的统计,北京测试开发的平均月薪达到18k以上,远远高于其他测试岗位,且有一半以上年薪大于 20w。
不仅需求量大,薪资高,而且很多名企也争相招聘。
1.3  招聘要求
各厂对校招测试开发岗位的招聘要求比较一致,笔者将用腾讯、阿里和网易的招聘要求来举例说明,并总结出通用要求。
(1) 学历和经验要求
测试开发岗对学历的要求一般在本科及以上,与其他技术职位相比,入行门槛并不高。
(2) 一至两种编程语言
测试开发岗对编程能力要求较高,市场上很多测开工程师都具备优秀的开发能力,代码基础特别扎实,甚至有些做过一两年开发,所以建议熟练掌握一到两种编程语言。
刚入门的小伙伴也许会觉得掌握几种编程语言很难,但只要培养起自己的编程思维,再学会其他语言就水到渠成,因为编程语言都是用来表达编程思维的工具,就像写作之前列提纲打草稿一样,编程思维顺畅之后,对编程语言的掌握会在不断地练习中越来越好。
(3) 计算机基础知识
测试岗的笔试面试中会出现对数据结构与算法、数据库、计算机网络、操作系统等基础知识的考察。想要在工作中快速上手,并且有更好的职业发展的话,必须牢牢掌握这些基础知识。如果能在面试中和面试官对答如流,将极大增强面试通过的概率。
(4) 软件测试理论与方法
软件测试理论与方法是所有测试岗的必备,主要包括:软件生命周期,测试用例编写方法,软件测试原则;软件测试管理相关技术,软件各个阶段评审,软件测试计划编写,软件测试过程管理,软件验收,软件测试整个过程一些文档规范等。这部分内容与上文提到的计算机基础知识相比难度小很多,学习起来也会很快。
 测试开发岗求职准备
2.1  技能学习路线
(1) 编程语言学习
目前热度很高的编程语言有 Java,C/C++,PHP,Python,Go 等,虽然看起来眼花缭乱无从下手,但是要记住编程语言只是一种工具,不管什么语言只要能熟练掌握,快速高效地解决问题就可以了。
(2) 计算机基础知识
数据结构与算法
书籍推荐
适合入门:《大话数据结构》《算法图解》;
算法进阶:《算法》(第四版)、《算法导论》,理论性更强。
刷算法题
除了理论的学习,更重要的是一定要多在力扣刷题,太久不刷题的话会手生,非常影响笔试面试的发挥。
力扣题库 页目前已全新改版,题型、知识点、分类标签都进行了优化调整;
企业真题题库 帮助大家全面掌握技术面试考点;
刷题新手建议从「剑指Offer」模块起步,题目比较基础,面试中出现频率也很高,时间充裕的话建议刷两到三遍。
数据库
数据库的学习笔者推荐《MySQL 必知必会》《深入浅出 MySQL》两本书。常用的增删改查操作、索引、索引背后实现原理、查询如何加速、事务隔离级别、内连接外连接等等,都是常见的面试题。
力扣上也有 数据库 模块的题,题目难度和真实笔试面试中写 SQL 的难度相一致,笔者当时刷了一半,求职过程中拿下了所有的数据库题目,强烈推荐!
计算机网络
推荐谢希仁的《计算机网络》,是很多大学推荐的教材
《计算机网络:自顶向下》,很适合入门级使用
视频可以看韩立刚老师的讲解,通俗易懂,好评很多。
操作系统
偏向于概念和理论讲解推荐:《现代操作系统》、《操作系统概念》;
具体实现推荐:《30 天自制操作系统》,帮助更好地理解理论知识。
(3) 软件测试理论
经典入门书籍推荐:《计算机软件测试》,全面系统地介绍了软件测试理论及相关技术。
《软件测试的艺术》:涵盖了很多软件测试的领域,列举很多模型、方法和工具,实用性很强。
(4) 测试项目或实习
了解测试岗的工作内容最有效的办法就是直接去公司实习,但如果没有时间实习的话,小伙伴们可以找一些测试项目练习:
比如结合 Selenium 学习 Web 自动化测试。通过脚本编写,有助于提高语言基础知识的理解和运用,并进行大量练习。如果用 Selenium 自动化脚本开发,起码要完成 100 个自动化测试用例,对 seleinum 达到熟练使用的地步,才能快速写出自动化测试用例。接下来可以结合 Java 中 Junit 或者 testNG, Python 中 unittest,继续深入研究 Selenium 和一些自动化测试框架的知识。
然后还可以设计自己的测试框架,比如 Python+Selenium 设计自动化测试框架。网上的这类开源项目资源很多。重点是一定要把项目的细节全部搞清楚,尽量往深钻研,理清楚自己的想法。
2.2 时间规划建议
(1) 编程语言学习、数据结构和算法:2 个月理论学习 + 经常刷题
这部分内容要具有连贯性的学习,编程语言基础学差不多了要学习数据结构和算法的理论知识,并且理论一定要结合刷题来巩固,才能更快上手、熟能生巧。刷题的话刚入门可能比较慢,就算一天一两道题也没关系,一定要坚持下来,慢慢就能看到成果。想去大厂的话就使劲刷,一般三四百道起步。
(2) 数据库、数据库刷题:15 天理论学习 + 经常刷题
数据库知识相比难度不高,入门书籍很快就可以看完,同样需要经常刷题,巩固知识点提高速度。
(3) 计算机网络、操作系统、软件测试理论:2 个月
这部分可能比较枯燥,可以在看书时结合课后题或者笔试题面试题来随时检验复习。力扣网站上也有很多相关 LeetBook,可以搭配学习~
(4) 项目或实习:3 个月
做项目可以不用强求难度,但一定要确保自己学懂了每个细节,项目中遇到了什么问题,该怎样解决,效果怎么样,有没有其他方案,不同方案的区别在哪,这些常见的项目问题要在面试前提前准备好。
2.3 常见面试题举例
:界面搜索框测试用例
:可以从功能测试、界面测试、安全性测试、兼容性测试、性能测试、易用性测试等角度进行回答。如:
(1)功能测试
1.搜索内容为空如何处理
2.在允许的字符串长度内外如何处理
3.合法的字符串长度后,加空格验证结果
4.验证每种合法的输入,结果是否正确
5.是否支持检索内容的复制、粘贴、编辑等操作
6.是否支持回车键搜索
7.多次输入相同的内容,查看系统的检索结果是否一致
8.搜索的历史纪录是否显示在下面
9.点击搜索,显示搜索界面
(2)界面测试
1.查看 UI 是否显示正确,布局是否合理
2.是否有错别字
3.搜索结果显示的布局是否美观
(3)安全性测试
1.脚本的禁用
2.SQL 的注入,检索 SQL SELECT 语句等
3.敏感内容的检索是禁止的
(4)兼容性测试
1.多平台 Windows,mac
2.移动平台 android,ios
3.多浏览器火狐、chrome、IE 等
4. 分辨率,操作系统版本兼容等等
(5)性能测试
1.搜索页面的链接打开速度的时间
2.搜索出结果消耗时间
3.弱网时搜索的响应时间
4.不同网速下搜索时的响应时间 3g,4g,WIFI
(6)易用性
1.有联想功能
2.搜索内容与搜索结果的匹配程度
3.支持拍照搜索,语音搜索
另外还有其他场景,比如发红包测试用例、用户登录测试用例、输入法测试用例、支付功能测试用例等等,都可以按照以上角度来回答。回答的时候要注意逻辑,越细致越好。

测试开发岗发展前景
测试开发的发展方向可以分为以下几个大方向:
一是技术专家的道路。这条路比较坎坷,但也比较踏实。如果不太善于人际关系交往,不擅长管理,或者对技术有浓厚兴趣,建议在技术道路上多做耕耘。测试开发这条路根据从业者学识、经验的积累,会一路从初级上升到中级,再到高级,再到测试开发专家。
二是管理方向。这条路并不会比技术方向轻松,因为要做好各方面的协调、统筹和管理工作,同时还要提升自己的技术,来锻炼自己落地一些团队方案的能力,也更能服众。虽然说管理的「生命周期」比纯技术会长一些,但是一定不能放弃技术。
三是转岗到其他方向。比如研发、运维、产品经理等。这些都属于新出路,建议不要因为头脑发热选择转岗,因为面临新行业新环境依然需要从头学起,没有恒心和耐心很容易受挫,并且容易浪费时间。如果自身有了一些积淀,比如主流的技术栈或者业务知识很熟练,那么尝试新事物也未尝不可。
本文对测试开发岗位的招聘分析、求职准备、发展前景做了系统介绍,希望对想要求职测试开发岗位的同学有所帮助。
BY / 
本文作者:力扣
编辑&版式:霍霍
声明:本文归 “力扣” 版权所有,未经允许禁止转载。
点个在看,少个 bug👇
继续阅读
阅读原文