对测试开发工程师的理解

随着测试在软件开发周期中越来越受到重视,国内测试的缺口一直比较大,各种软件和互联网公司都大肆招收测试工程师,有些走在前面的公司甚至从今年开始取消了测试工程师职位,全部变成了测试开发职位,比如百度。一方面测试开发表明了对工程师有更高的要求,需要在具有测试能力的基础上兼备开发能力;另一方面自动化测试成为趋势,利用开发的技巧解决测试中的问题以提高测试效率,降低QA与RD的人力比。

  1、技术含量

  面试过许多的应届毕业生,问及为什么选择测试开发这个职位时,经常听到以下的回答:

  “我觉得自己开发能力比较弱,但我比较细心,觉得测试职位比较适合。”

  “我在实验室和实习公司呆过,做过功能测试和性能测试,我比较喜欢测试.”

  “开发只能了解到项目的局部,但测试需要了解更多,我期望有更好的大局观”

  无论人们内心真实的想法是什么,但潜意识里面测试的技术含量没有开发高。在校园招聘的时候,我们会将部分倒在开发职位终面的人重新拿到测试开发面试。客观地说,在软件编码方面测试开发的技术含量确实不如纯正的开发职位,更不用说测试职位了。但是,我想说的是这个职位本身所要求的技术水平应该是需要超过单纯的开发职位的,真正高水平的QA至少需要多年的开发经验的,否则他无法从软件产品设计、架构和实现方面提出实质性的意见和风险评估,充其量只是点出交付到手软件中的几个bug。所以基于现阶段国内行情,个人建议如果希望在测试的职业生涯上有所发展的人,先参与几年的研发工作,毕竟那才是软件工程中的主体,然后在开发过程中培养测试意识,这也是程序员的职业素养。Google许多工程师都有强烈的质量意识,许多代码自己不经过自己的单元测试和功能测试是没有人review的。对于投测试或者测试开发职位的目的是为了逃避开发,那么职业道路要发展顺利是很难的。

  2、基本素质

  测试开发工程在公司一般有两种,一种是单纯为测试团队开发测试工具或者系统(由于这部分和单纯开发职位本质上区别不大,讨论基于另一种);另一种就是在测试过程中发挥主观能动,利用自动化把重复劳动降至最低,比如开发适用于特定场景的测试工具(当然这种工具具有普遍性也能推广到整个组或者公司)、测试脚本和测试用例。

  测试开发工程师应该具备两方面的知识:测试知识和开发知识。之所以把测试排在前面,因为这里的开发建立在测试实践基础之上。其中测试知识又分为两部分:一是理论知识,软件行业发展至今也就几十年,测试方面的积淀就更少了,所以要掌握这部分对于一般人来说不是难事;另外一方面是经验知识,主要在项目测试过程中积累,很多系统的测试点、风险点都需要有丰富的经验来评估,这也是资深的测试工程师价值所在。开发知识当然和开发工程师差不多了,不再多说。在软素质方面,测试开发工程师应该具有更好的组织沟通协作能力。现在许多公司都在推行全流程保证,QA为了发挥更大的影响力以及保证项目的质量,需要从需求到设计,测试到上线全方面跟踪参与,这就涉及到了许多跨部门跨小组的沟通,即便在小组内沟通也极其频繁,工程师需要很好的表达能力。同时,由于测试在软件生命周期中处于靠后的位置,所以在将许多工作推行到上游的环节中存在较多阻力,这也要求工程师有较好的统筹和协作能力,最终达到目的。

  3、走得更远

  不可否认,现在许多测试理论,无论白盒测试还是黑盒测试,无论单元测试、集成测试还是系统测试,看似属于测试人员研究的专利,实际上大部分的方法论都是开发人员提出来的。再一次证明,不参与软件主体的研发工作是不可能深入理解测试的,所以开发人员需要具备的开发能力和技巧测试人员也是需要具备的。当然由于项目的安排和时间等各方面的原因,测试人员能难有较多的开发机会,但这不妨碍你不断地学习。我们大组内就有一个多年深入研究的python的QA,一直以此为兴趣,许多开发小组用到python开发系统的时候都会叫他过去培训,他不仅是质量部的资深测试工程师,还亲自开发了多款实用的测试自动化工具。另外,测试可以涵盖的方面很多,但人的精力毕竟有限,测试开发工程师也必须拥有自己的核心竞争力,选定一个方向是个不错的做法,致力成为某方面的专家,比如单元测试(不要认为是开发人员做的,很多开发人员没有单测意识和技巧)、性能测试、安全测试。组里面也有一个对性能测试研究了6年的人,从职业开始发展一直比较顺利,并且发展势头不错。最后是测试开发工程师需要培养自己的大局观,这个是在职业过程中有意培养的,公司现阶段的任务是什么?侧重点是什么?在大公司需要顺势而为,QA的本职工作是保证质量,需要借助与流程、工具和其他外部资源,所以在工作的时候尽量与大方向契合。比如公司去年是QA内部水平提高的一年,需要QA具备单元测试、Code Review方面的能力,今年是保证质量的前提下,提高软件发布周期,主推持续集成。

  4、测试的本质

  2V(Validation和Verification)是QA的基本职责,即保证两点:Validation,软件按照既定的需求开发,没有偏离产品方向;Verification,软件在满足需求的基础上保证其正确性,从功能、性能、安全等各个方面验证。传统意义上,第二点是大部分QA的意识,即找bug,认为一个软件找到的bug越多自己的价值越大,实际上QA的最高境界是软件在测试的时候找不到bug,因为在软件的启动阶段你就开始了质量保证工作,从需求、设计、编码这些前期阶段就杜绝了bug产生的可能。当然,以上说的有些理想,但本质是什么?软件背后是人,是PM制定的需求,是RD进行开发的, 那测试背后实际上测的是人而不是软件。人总是可能存在思维漏洞的,人总是可能犯错误的,所以永远会有bug,但有些人心细,有些人负责,自己开发完后会自己进行单测、功能测试,以致后续能发现他的bug已经很少了。明白了这一层就不要单纯从技术角度来思考测试。

  最后想说的是,无论在大公司还是小公司,大家都有压力,都要发展,心态就很重要了,以创业者而不是打工者的心态来工作看待很多问题就截然不同了。

转载自百度文库:http://wapwenku.baidu.com/view/a5f3fd7f31b765ce050814ed?pn=2&vw=all&ssid=&from=&bd_page_type=1&uid=41DE6365424D44D672BA16DA784B7DD0&[email protected],[email protected],[email protected],[email protected],[email protected]_220,[email protected],[email protected],[email protected],[email protected],&st=1&wk=rd&maxpage=3&pos=all

时间: 2024-08-08 22:10:03

对测试开发工程师的理解的相关文章

Java or Python?测试开发工程师如何选择合适的编程语言?

很多测试开发工程师尤其是刚入行的同学对编程语言和技术栈选择问题特别关注,毕竟掌握一门编程语言要花不少时间成本,也直接关系到未来的面试和就业(不同企业/项目对技术栈要求也不一样),根据自身情况做一个相对正确的选择确实要比盲目投入更明智也更高效. 目前最常见的情况是纠结选择 Java 还是 Python?关于这个问题,我搜索了之前的相关博客,也特意请教了几位资深的测试技术专家,在这里做一个汇总整理,集"各家"之言供大家参考.也欢迎各位朋友根据自己的经验回帖补充意见. P.S. 有一点需要强

【转】测试开发工程师必备软硬能力&高级测试开发工程师需要具备什么能力?

对于测试的基本知识,可以查看软件测试相关书籍 对于在公司成为一位优秀的测试开发工程师,我觉得下面这篇文章涉及到的是我们需要的,稍微进行改动https://blog.csdn.net/sinat_21026543/article/details/79909062 测试流程方面:从最开始的分析需求开始,逐步地跟着项目走完整个测试流程,包括纯手工测试,包含了自动化的测试流程,包含了性能测试的测试流程,直至每一个测试报告的最终形成,理解一个科学,正确,严谨,正规化的测试流程. 测试方法方面:注重理论知识

《Google软件测试之道》测试开发工程师

拖延了将近半年的草稿,断断续续的写完了.之前草草翻看完这本书,关注点主要在TE上,而关于SET的部分则只是浏览,最近后知后觉,又翻出了这本书,重新看了一遍,又有新收获. 就说说Google的SET是如何做的,以及个人的一些思考和收获吧,寥有慰藉... Google的测试流程可以简练的概括为:让每个工程师都注重质量.而在工作流程引入过程中也伴随着一些致命的缺陷,下面简述下Google是如何解决以及其测试流程的是如何进化的. ①.测试并不能保证产品质量.需要一直谨记的一点:质量是内建的,而不是外加的

什么是测试开发工程师-google的解释

“ 软件测试开发工程师[SET or Software Engineer in Test],和软件开发工程师一样是开发工程师,主要负责软件的可测试性.他们参与设计评审,近距离地关注代码质量和风险,对代码做重构为了系统有更好的可测试性,同时他们负责写单元测试框架和自动化测试的框架.在代码级别上他们和软件开发工程师是合作伙伴,但如果和增加新功能或提升性能相比较,他们更关心产品的质量和测试覆盖率的提升.”

网易测试开发工程师笔试体会(秋招)

题型1(单选题20*3)(2016年9月12日19:00-21:00) 不太难(涉及软件工程.测试理论.java程序代码.操作系统.计算机网络等内容) 题型2(简答题2*20) 1.一个简单的论坛系统,以数据库储存如下数据: 用户名,email,主页,电话,联系地址,发帖标题,发帖内容,回复标题,回复内容.每天论坛访问量300万左右,更新帖子10万左右. 请给出数据库表结构设计,并结合范式简要说明设计思路. 参考: 一 分割思想: 1   数据库切分:用户库.主题库.回复库 2   数据表水平切

构造原始数列 有道2017测试开发工程师编程题

1 #include <iostream> 2 #include <vector> 3 #include <deque> 4 #include <queue> 5 using namespace std; 6 7 // 2 1 3 8 // 1 3 2,输出1 9 // 3 2 10 // 2 3,输出2 11 // 3 12 // 3,输出3 13 // 逆向过程: 14 // 3 15 // 3 16 // 2 3,把2插到队头 17 // 3 2,把队

洗牌 有道2017测试开发工程师编程题

1 #include <iostream> 2 #include <vector> 3 #include <algorithm> 4 #include <deque> 5 using namespace std; 6 7 void play(vector<int>& card) 8 { 9 const size_t N = card.size(); 10 vector<int> cardO = card; 11 int idx

挑战一下吧!C#测试开发工程师英语面试题

1. Given a rectangular (cuboidal for the puritans) cake with a rectangular piece removed (any size or orientation), how would you cut the remainder of the cake into two equal halves with one straight cut of a knife?2. Given an array of size N in whic

网易游戏(互娱)-游戏测试开发工程师-C++

1.已知一棵二叉树的前序遍历是ABCDEFGH,那么它的中序遍历一定不可能是: A. CBEDAGFHB. BADCFEHGC. DCEBFAHGD. CBDAFEHG 答案:无 考点:二叉树遍历 前序遍历:根左右 中序遍历:左根右 后序遍历:左右根 2. 10000个人背上依次贴着从1到10000的编号,他们从小到大依次报数,偶数出列,一圈后,从剩下的5000人再次从号码小的开始报数,偶数出列,直到没人出列为止.问最后一次出列的人,背上的编号是多少? A. 1B. 2049C. 4097D.