51Testing专访史亮:测试人员在国外

版权声明:51Testing软件测试网原创出品,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明,否则将追究法律责任。

  史亮,东南大学计算机软件与理论专业博士,研究领域为软件分析与测试。2006年加入微软(中国)有限公司,任职软件开发测试工程师,负责微软在线业务与商业智能产品的测试工作。2011年调至微软总部,从事Microsoft Office 2013的测试工作。2012年与淘宝测试工程师高翔合著了《探索式软件测试实践之路》一书。2014年,独自出版了《软件测试实战:微软技术专家经验总结》。目前,史亮正从事下一代Microsoft Office产品的研发工作。

  51Testing:史亮老师,您好,欢迎做客51Testing。听说您目前在国外工作,您是出于什么原因选择去国外工作的?

  史亮:在2011年,我打算更换工作环境,以接触更多的新技术和重要产品。于是,我主动申请工作调动,然后通过内部面试流程,获得了微软总部的工作机会,所在部门是Microsoft Office。

  51Testing:您去国外大概多长时间了?主要的工作内容是什么?

  史亮:从2011年到现在,我已经在微软总部工作了整整三年。最初我加入Microsoft Office部门,主要负责的是Microsoft Office 2013的研发,工作内容是测试Windows版本的Office产品。目前,我正参与研发下一代的Microsoft Office,主要工作是测试产品和开发测试辅助工具。

  51Testing:很多朋友刚出国时会有不适应,您是否也如此?在国外工作了三年,您感觉国外公司和国内公司存在哪些差异?(例如管理、工作环境、薪资、员工福利)让您感受最深的又是什么?

  史亮:没有存在不适应。我认为测试人员的工作环境、工作压力、员工福利等取决与具体的项目、团队和企业,与企业的注册国籍并没有直接的关系。而且,目前国内软件业蓬勃发展,有形形色色的项目和团队,任何外资企业所面临的情况,都可以在中国企业中找到相似的语境。一些中国企业在全球处于领先的地位,他们的企业文化、工作方式和福利报酬都胜过外企,且领先优势还在扩大。对于测试人员而言,应该多接触业内同行,了解他们的工作实践,以"他山之石可以攻玉"的心态,虚心请教。然后,将好的工作实践"因地制宜"地修改为适合当前项目的方法,从而改进项目环境、优化工作成果。

  51Testing:看来现在国内外软件测试行业的差异不是很大,测试人员想要出国发展还是十分可行的。那对于想要有出国发展的测试人员,您作为一个前辈对他们有些什么建议呢?

  史亮:测试专家Cem Kaner和James Bach对于测试人员的职业发展有一条忠告:"不管选择走哪条路,都要积极追求"。测试人员并没有被锁定在测试上,也没有被锁定在任何公司或软件行业上。他完全可以选择改变职业发展方向并追求其他目标。一旦下定决心,就要对自己负责,通过持续地努力来推动职业生涯的发展。

  51Testing:前面聊了很多关于您在国外工作的部分,满足了小编对于测试人员在国外工作状态的好奇。根据小编的了解,现在很多测试新人对软件测试的未来较为迷茫,而您在国内外都工作过很长一段时间,有相当丰富的测试经验,您是怎么看待未来的软件测试人员的发展趋势?

  史亮:为了更好地讨论这个问题,先介绍一个测试技术分类的参考模型。测试专家Lisa Chrispin和Janet Gregory在《敏捷软件测试》中将测试技术划分到如图1所示的四个象限中。

  图1  敏捷测试四象限

  "Q1:面向技术的(technology facing)、支持项目团队的(supporting the team)的自动化测试,例如单元测试、组件测试等。

  "Q2:面向商业的(business facing)、支持项目团队的自动化和手工测试,包括功能测试、样例、用户故事测试、原型、模拟等。

  "Q3:面向商业的、考验产品的(critique product)的手工测试,包括探索式测试,情景测试、可用性测试、用户验收测试、Alpha及Beta测试等。

  "Q4:面向技术的、考验产品的、基于工具的测试,例如性能测试、负载测试、安全性测试、属性测试等。

  利用敏捷测试四象限,测试人员可以快速理解测试技术在软件开发中的位置,并根据当前任务选择合适的测试技术。不过,我并不同意Lisa Chrispin和Janet Gregory将探索式测试(exploratory testing)置于Q3象限。探索式测试是一种并行地实施测试学习、测试设计、测试执行和结果评估的测试风格。作为一种测试思维方法,它可以指导四个象限的任何一种测试技术的使用。

  目前,软件行业高速发展,以前所未有的速度向各个产业渗透。在互联网应用、移动应用、物联网应用等重要领域,市场竞争日趋激烈。为了在竞争中脱颖而出,软件项目团队必须具备高度的机动性,能够快速地尝试新想法,并持续发布具有特色的产品。这要求程序员负责更多的测试活动,通过加速"编码-测试-重构"的循环,来快速交付高质量的代码。也就是说,程序员将承担Q1象限(面向技术、支持项目团队)的测试工作,以及部分其他象限的活动--以Q2象限(面向商业、支持项目团队)的活动较为常见。

  在该趋势下,专职测试人员的活动将向四象限的右侧和上方移动,更偏向面向商业的、考验产品的测试活动。从业务角度,测试人员的角色应该是领域专家和实际用户,能够以超越代码(beyond code)眼光来考察产品的商业价值和用户价值。从技术角度,测试人员的角色可以是黑客和技术专家,能够在安全性、性能、稳定性等领域实施专业的、高强度的测试。

  另一个软件研发的趋势是DevOps,即融合研发团队和运维团队,由一个团队负责整个产品开发、测试、发布、运维和更新。在此类团队中,测试人员需要承担部分开发和运维任务,例如分析服务端的日志、分析客户端提交的遥测(telemetry)数据、分析用户行为、报告服务状态、定位产品问题、修复特定环节的错误、发布产品更新等。这意味着测试人员的工作不仅仅是寻找缺陷,而是通过技术调查(调查对象包括已发布的线上产品)来获得产品信息,以持续提高产品质量。可以说,在一些项目环境中,测试人员的职责发生了变化,需要更多样化的技能。测试人员需要积极面对变化,拓展自己的能力,以适应行业的发展。

51Testing:您已经第二次做客我们51Testing了,上一次专访我们聊得是探索式测试,相信很多朋友都对此印象深刻。作为探索式测试的资深人士,怎样才能进行有效地探索式测试?另外很多优秀的软件测试工程师都能敏锐地嗅到bug,您认为该如何训练这方面能力?

  史亮:首先,"态度决定一切"。成为一个优秀的测试人员,我认为最重要的基础是对项目、对自己负责任的态度。对项目负责,测试人员需要提供高质量的测试服务来帮助项目成功;对自己负责,测试人员应该以专业人员(professionals)自居,坚持专业主义(professionalism),追求精湛的技艺和卓越的成果。这需要通过日复一日的努力工作来落实,无捷径可言。

  第二,Cem Kaner等测试专家指出"困惑是一种测试工具"。有时,软件的表现出乎测试人员预料,但是他并不能确定这是一个缺陷。这说明测试人员对软件的设计还有不了解的地方。他应该将此疑惑视为一个学习的机会,通过阅读文档、咨询同事等方法来获得答案。推而广之,如果测试人员对软件、技术或项目产生疑问,他应该感到警惕。这可能意味着他不了解业务逻辑,不知晓产品设计,不清楚实现细节。这些知识上的漏洞会导致薄弱的测试设计和严重的缺陷遗漏。

  负责人的测试人员不会放过任何一个疑问,在"好奇心"的指引下,他会"打破沙锅问到底"。他会运用多种手段(周密测试、代码分析、软件调试、文档阅读、请教专家等)对问题进行研究。通过积极地测试和学习,测试人员不但可以弥补知识的漏洞,还可以发现隐藏的缺陷。

  第三,测试人员需要"刻意练习"。测试专家已经给出了许多好的建议和方法,这些想法皆来自于实践。软件开发专家Ralph E. Johnson 指出"从实践中来的知识在没有实践之前是无法被真正理解的"(practical knowledge has to be experienced to fully understood),测试专家Cem Kaner等也认为"你不能掌握测试,除非你重新发明它"(You can't master testing unless you reinvent it)。因此,测试人员需要将学到的新技术应用于真实的测试,并认真评估其效果。通过练习、评估和反思,测试人员能够掌握方法的原理和细节,并混入自身经验和其他技术,以演化出新的方法。坚持这样的研究和创新将帮助测试人员走上精通之路。

  51Testing:许多刚从事测试的新人往往会在工作的过程中发现自己的很多不足,想要提高自己,在您看来,测试人员应如何提高自己的测试思维和测试技术?

  史亮:前面两个问题的回答对于本问题有参考价值。在这里,我补充说明一个测试人员容易忽略的要点:提高测试技术的根本目标是为了更有效的测试,在许多情况下,测试效果(测试技术的实施效果)决于测试人员对软件和项目的理解。

  我曾经长期测试一个网络应用。当我离开这个项目时,测试经理安排一个测试员工来接替我。他刚刚入职,对被测软件和业务领域都不了解,在工作中遇到了许多困难,我帮助他解决了一系列问题。作为一个测试工程师,我的工作效率更高,主要原因包括:

  " 我理解产品,知道它的业务目标,了解它通过什么方法去实现目标。因此,我能够快速地制定测试方案。

  " 我理解用户的期望,知道哪些功能绝对不能出错,需要仔细测试。我也知道哪些功能允许一些瑕疵,即便出错,也可以在三个月之后发布的下一个版本中修复。因此,我能够更好地分配测试时间。

  " 我理解产品的架构,阅读过大部分模块源代码,知道哪些模块容易出现哪些缺陷。因此,我可以针对不同的模块采用有针对性的测试策略。

  " 我曾经尝试自动化测试用户界面,但是发现此类自动化测试很不稳定,需要很高的维护代价,却不能发现错误。于是,我只为Web服务编写自动化测试用例,用手工测试来检查用户界面。因此,我回避了浪费时间却没有收益的任务。

  " 我了解产品元素和项目团队。当出现缺陷时,我知道如何阅读系统日志发掘蛛丝马迹;当我遇到困难时,我知道向哪位程序员或测试人员求助。因此,我可以深入挖掘并快速推进。

  " 我在原先的团队工作了很长的时间,与同事们保持了良好的关系。当我提出一些可测试性的建议时,比较容易受到程序员的支持。

  从以上几点不难看出,我能够更有效地测试,其主要原因不是我掌握更多的测试技术,而是我更了解软件产品、业务领域和项目环境。通过逐点分析,可以得到如下启示。

  " 产品是一种解决方案,如果没有解决问题,它就是无用的。测试人员需要了解软件产品和业务领域,才能设计有效的测试。

  " 测试是一种信息服务,要了解服务对象(通常最重要的服务对象是用户和项目经理)的需求。如果用户不能容忍某些错误,测试人员就需要仔细测试相关功能;如果用户对一些瑕疵并不在意,测试人员就不必在此花费更多的时间。只有了解服务对象的优先级,才能更好地设定测试工作的优先级。

  " 不同的模块采用不同的技术,拥有不同的典型错误。只有了解软件实现,才能设计差异化且有针对性的测试用例。

  " 测试设计可能包含错误,测试人员需要从错误中吸取经验和教训。避免一些已知的错误,会提高测试效率。

  " 当测试工作遇到困难时,测试人员需要知道在哪里寻找信息。了解产品能够提供的信息、了解哪位同事知道更多内幕,会节省时间。

  " "人脉"有时候会极大地提高测试人员的工作效率,测试人员需要和程序员和测试同事保持良好的关系。达成协作关系的关键之一是测试人员能够为同事们提供高质量的信息服务。

  " 在职业生涯中,测试人员总是会遇到新的软件、项目和团队。他应该培养一种好的工作风格,以求快速地理解产品和项目。

  实施高效的测试需要很多条件。熟练地掌握测试技术是一个很重要的因素,但很少会是决定性的因素。只有充分地掌握软件产品和项目环境,测试技术才能找到大放光彩的舞台。

 51Testing:想要提高测试技术,书籍是必不可少的朋友,作为探索式测试的忠实实践者,您能给我们的会员推荐几本相关书籍吗?

  史亮:探索式测试是一个内涵丰富的主题,感兴趣的测试人员可以从以下书籍入手。

  " Cem Kaner, James Bach, Bret Pettichord, 《软件测试经验与教训》(Lessons Learned in Software Testing:A Context-Driven Approach)。该书是语境驱动测试的经典著作,充满对软件测试的真知灼见,是探索式测试者案头必备。

  " 史亮,高翔,《探索式测试实践之路》。该书由我与淘宝资深测试工程师高翔合著,系统地总结了现有的探索式测试实践,并纳入了我们的经验和反思。探索式测试大师James Bach对此书予以了肯定:This is the first book on exploratory testing, in any language, that summarizes the published work in the field。

  " 史亮,《软件测试实战》。我本人是探索式测试的忠实实践者,该书可视为"一个探索式测试者的自我总结"。全书虽然没有强调名词"探索式测试",但是探索式测试的核心精神(将测试学习、测试设计、测试执行、测试结果评估作为相互支持的活动来并行实施)贯穿全书。

  " 我和高翔在《探索式测试实践之路》的附录B提供了一批推荐读物,供读者参考。

  51Testing:本次访谈即将接近尾声,再问最后一个问题,您以后会选择继续长期留在国外发展还是回国发展呢?

  史亮:我目前还在持续评估自己的职业发展,尚未做出长远的规划。

  51Testing:由于时间关系,本次访谈正式结束,非常感谢史亮老师抽出宝贵时间参加我们的访谈,祝您在国外工作一切顺利!

  史亮:谢谢,也祝51Testing越办越好!

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-10-31 16:14:17

51Testing专访史亮:测试人员在国外的相关文章

51Testing专访陈晔:畅谈移动互联网测试

51Testing: 陈晔老师,您好,听说您在工作期间创立了"移动测试会"免费公益沙龙,移动测试会,目前又和网易,cstqb,支付宝等都有深入合作,你是如何合理的分配您的时间,同时能完成这么多事情? 陈晔:说到这个我还是很惭愧的,行业中很多朋友都和我说,要多陪陪女儿,要多陪陪家里,这点上面我的确做的不够.不过关注我微信的都知道,我还兼职美食家,每天都在吃不同的东西,我还是有那么一点点追求的.大家可以去看我自己写的一年的行程,我几乎每周双休日都排满,不是去大会演讲就是去学校给学生公益的做

关于测试人员的职业发展

近期由于项目组人手不够,需要招聘一些测试人员.本周及上周陆陆续续面试了十多个应征者,工作年限在2年~9年之间,但无一满意.期间,种种感叹,回想起去年面试六十余人仅有3人满足要求,如有鲠在喉,还是吐槽一下.如有不对请大家也狂喷我. 我的要求高么? 我的要求其实是:有还算不错的沟通能力,熟悉常见软件开发流程,有一定的需求分析.用例设计能力,会基本的linux和sql操作能力.有一些代码能力会加分.这是长期与现实妥协的结果.如果人还算机灵,其实我很愿意花时间来培养他们. 面试结果 令人惋惜的是,一个合

测试人员在公司中的角色定位

正在阅读一本很棒的书,<软件测试经验与教训>.几名国外的软件测试大师,以大量的测试工作实战经验为出发点,总结了深刻而精悍的两百多条经验.作者把这些经验比喻成为波尔多红酒,鼓励读者分散阅读,带入自己的工作实际情境,慢慢细品,深入思考.当然还有,不要独摊波尔多,分享给我的朋友.同事们! <软件测试经验与教训>一书,讨论的第一个话题,就是关于测试人员的角色定位.我对这个话题讨论的个人理解是:清晰认识自己的角色定位,能够帮助测试人员明确对自己工作目标的预期.而清楚的认识测试人员的角色定位,

测试人员必备的软技能

测试人员在软件开发生命周期中,除了独立完成测试任务以外,还需要和项目的不同利益相关者进行合作,包括项目经理.开发人员或者用户等.测试人员需要向项目经理/测试经理反馈测试进度.产品质量等信息,同时还需要从项目经理/测试经理处获得项目的进展和状态,例如:项目内容或进度的变更.在测试过程中,无论是提交缺陷还是文档评审,测试人员都离不开和开发人员的合作和沟通.测试人员还可能需要从客户那里了解用户是如何使用产品的,或者因为产品的质量问题,从用户那里得到反馈甚至抱怨.因此,在复杂的测试工作环境中,测试人员除

测试人员总结应如何提高产品质量

应我们总监要求,让我这个测试来写一篇关于 如何提高运营质量的文章,这不是为难我吗? 第一,我不是运营,该怎么写运营质量呢? 第二,我也不是项目经理,对整个项目产品把关? 问过很多同学,回复百度,或者只是写一下 测试在整个运营中的工作及重要性和影响就行. 无奈小公司,没有几个运营人员,产品上线后,用户有一些问题没有及时处理,我是兼测试和客服了. 附件中是自己写的一个文档,记录在日志中,也算自己的工作收获了. 刚才重新查看了下,上传的附件没有找到,不知道怎么回事,哎. 如何提高产品运营质量 要想提高

TCP/IP体系结构-测试人员必须理解的

如果还想在测试这条路上继续走下去的话,那么下面这些东西就是我们必须去掌握的,至少你还不想止步于简单的黑盒测试--其实,一直想去接触Linux下的应用测试,这样能学到东西会很多,而且会非常的受用.之前听小布老师讲,如果你想在IT技术上长期发展下去,那么你就大胆拥抱Linux吧,因为在这里你能学到东西远胜过于你在Windows平台下学到的东西,而其中最经典的一段话就是:如果你一直跟随微软的技术,那么终究会被拖死,因为微软的技术一直在变化,而你却需要不断的去学习他的东西.而Linux不一样,它更多的是

渗透测试工程师的17个常用工具 还有专家告诉你如何成为渗透测试人员—转载绿盟

渗透测试工程师的17个常用工具 还有专家告诉你如何成为渗透测试人员 发布时间:2017年9月15日 07:51    浏览量:2231   渗透测试 (pen testing) 是由安全专家进行的一项安全性测试,其目的是为了在攻击者攻击之前发现系统中的漏洞.它需要聪明的思考.耐心和一点点运气.此外, 大多数安全专家将需要一些具体的工具来帮助完成这项工作. 最近, 外媒跟一些民间组织和一些安全专家进行了沟通,看看他们最喜欢用哪些工具.下面的工具是那些在简单的评估.复杂的项目中曾经用过的工具,其中的

JMeter远程测试,每个实际测试人员都要学习的

详解JMeter远程测试(1) 如果运行JMeter客户端的机器性能不能满足测试需要,那么测试人员可以通过单个JMeter GUI客户端来控制多个远程JMeter服务器,以便对服务器进行压力测试,模拟足够多的并发用户.通过远程运行JMeter,测试人员可以跨越多台低端计算机复制测试,这样就可以模拟一个比较大的服务器压力.一个JMeter GUI客户端实例,理论上可以控制任意多的远程JMeter实例,并通过它们收集测试数据,如图11-3所示.这样一来,就有了如下特性: 保存测试采样数据到本地机器.

做一名安静的Web渗透测试人员必备的8种素质和技能

无疑,Web安全测试工程师或Web渗透测试工程师的任务就是审计公司的Web应用程序.Web服务.Web服务器的安全性.那么,公司如何才能请到优秀的Web应用安全专家而不是纸上谈兵的"赵括"?下面的这八项素质或技能可以为公司选聘Web渗透测试人员提供参考: 1. Web渗透测试人员拥有一定的开发背景(知道如何编码) 公司不可能聘用一位连编写代码都不懂人成为渗透测试人员.公司的Web渗透测试者应首先是开发者,在此基础上才考虑对Web漏洞扫描器的掌握技能,其好处有五个方面: · 了解所开发W