随着互联网行业的高速发展,快速高质量的产品版本迭代成为企业始终立于不败之地的迫切需求,而在短期迭代的快节奏中,传统测试工作面对更大压力,无法持续提供高效率高质量的人力支撑,所以越来越多的企业需要技术更为全面的测试开发工程师。
测试开发本质上属于测试,区别在于需要依靠更多的技术手段作为辅助,在提高测试工作效率的同时保证产品质量。与测试相比,测试开发会将测试任务提前,不用非等到开发全部结束之后再测试,极大提高了测试速度和质量,另外测试开发还需要完成将测试自动化的任务,通过开发维护测试工具、搭建自动化测试平台等手段,提高测试效率,减少人力成本。
笔者将结合自己的求职经验,从下面几个方面介绍测试开发岗位,希望对大家面试测试开发岗有所帮助。
测试开发岗招聘分析
测试分为:客户端测试,服务器端测试,安全测试,性能测试,功能测试,自动化测试,测试开发等。
1.1 不同测试岗工作内容
客户端测试 是指对用户可以看到的内容进行测试,比如包含界面的网页端、pc 端、移动端等,一般是在用户的机器上去做。
测试内容包括:安装测试、卸载测试、用户界面测试、功能测试、字符输入测试、提示信息测试、超链接测试、操作按钮测试、菜单测试、视频音频测试、程序运行权限测试等。
服务端测试 有两种:一种是直接对 WEB 或者 APP 的服务端进行测试;另一种是对更后端的数据库、缓存系统、中间件、文件系统等进行测试。
测试内容包括:代码检查、接口测试、结合业务的模块测试和场景测试、压力测试、服务端最优配置测试等。
安全测试 是指有关验证应用程序的安全等级和识别潜在安全性缺陷的过程,主要查找软件自身程序设计中的安全隐患。
测试内容包括:缓冲区溢出、SQL 注入、跨站脚本攻击、跨站请求伪造、SSL 协议攻击等。
性能测试 是为了保证产品发布后其性能能够满足用户的需求,对指定的软件产品进行功能性的检测和验证,确保这些功能都得以实现并能正常运行。
测试内容包括:基准测试、日常压力测试、峰值压力测试、容量测试、稳定性测试等。
功能测试 主要采用黑盒测试方法,结合测试内容对功能进行测试,同时在测试过程中对用户需求、设计文档和使用手册进行检查。
测试方法主要根据测试对象的不同灵活进行选择。功能测试是对应聘人员要求最低的一种,一般只需点点点找出产品的 bug,不需要很高的技术含量,这同时也导致测试人员的可替代性很高,发展空间已经接近天花板,所以需要掌握其他方向的测试内容。
自动化测试 是借助于测试工具、测试规范,从而局部或全部代替人工进行测试及提高测试效率的过程。它的主要进步之处在于自动测试工具的引入,包括对各种测试内容的管理和实施、测试脚本的开发与执行等,对于编程能力的要求更高一些。
下表中是各大厂对测试开发工作内容的说明,可以看出,测试开发 应该具备自动化测试技术,但不局限于此,也应该具备平台和工具的开发能力,整体要求较高。工作内容主要包括:
一是测试工具、测试平台的开发,服务于测试相关的业务,与开发公司其他产品业务很类似;
二是自动化测试开发,主要开发自动化测试脚本,比如 UI 自动化测试、接口自动化测试、单元测试等等;
三是一般性测试脚本的开发,避免单一冗余的工作,提高效率,比如生成测试数据、抓取页面数据进行对比等等。
1.2 市场需求及薪资待遇
某招聘官网上搜索测试开发的市场需求量,仅仅北京就有 1.8w 以上,性能测试和自动化测试次之,为6k左右;根据某招聘网站的统计,北京测试开发的平均月薪达到18k以上,远远高于其他测试岗位,且有一半以上年薪大于 20w。
不仅需求量大,薪资高,而且很多名企也争相招聘。
1.3 招聘要求
各厂对校招测试开发岗位的招聘要求比较一致,笔者将用腾讯、阿里和网易的招聘要求来举例说明,并总结出通用要求。
(1) 学历和经验要求
测试开发岗对学历的要求一般在本科及以上,与其他技术职位相比,入行门槛并不高。
(2) 一至两种编程语言
测试开发岗对编程能力要求较高,市场上很多测开工程师都具备优秀的开发能力,代码基础特别扎实,甚至有些做过一两年开发,所以建议熟练掌握一到两种编程语言。
刚入门的小伙伴也许会觉得掌握几种编程语言很难,但只要培养起自己的编程思维,再学会其他语言就水到渠成,因为编程语言都是用来表达编程思维的工具,就像写作之前列提纲打草稿一样,编程思维顺畅之后,对编程语言的掌握会在不断地练习中越来越好。
(3) 计算机基础知识
测试岗的笔试面试中会出现对数据结构与算法、数据库、计算机网络、操作系统等基础知识的考察。想要在工作中快速上手,并且有更好的职业发展的话,必须牢牢掌握这些基础知识。如果能在面试中和面试官对答如流,将极大增强面试通过的概率。
(4) 软件测试理论与方法
软件测试理论与方法是所有测试岗的必备,主要包括:软件生命周期,测试用例编写方法,软件测试原则;软件测试管理相关技术,软件各个阶段评审,软件测试计划编写,软件测试过程管理,软件验收,软件测试整个过程一些文档规范等。这部分内容与上文提到的计算机基础知识相比难度小很多,学习起来也会很快。
作为一个过来人,对学习过程中的困难深有体会。所以我热衷于收集整理资源,记录踩坑到爬坑的过程。希望能把自己所学,实际工作中使用的技术、自学方法、心得及踩过的一些坑,记录下来。
更希望想自学的你一样,通过我的分享可以少走一些弯路,可以形成一条自己的体系,并应用到实际中。当然,也真心的希望你们升职加薪,或许这才是最实际的吧。