下载
加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 测试工程师-敢问路在何方-

测试工程师-敢问路在何方-.doc

测试工程师-敢问路在何方-

残冷月情
2018-09-26 0人阅读 举报 0 0 暂无简介

简介:本文档为《测试工程师-敢问路在何方-doc》,可适用于综合领域

测试工程师敢问路在何方测试工程师:敢问路在何方邮件群发【正文如下】:我已经从事测试工作超过年从测试员(SDET)成长为高级测试员(SDETII)最近再从高级测试员成长为资深测试员(seniortester)。在我作为专业测试员的职业生涯中我曾疑虑过我是否应该转行去做开发我是否能在其他公司找到另一份测试工作我们的软件测试员是否有更好的职业前景以及我们(微软)拥有的测试员是否过多。在这系列博文中我将给大家分享下我的一些想法讨论如何才能成为资深测试员并有一个更好的职业发展。这篇文章是写给我们的测试员和测试经理。我希望我的文章能帮助你深入思考测试和测试员的职业生涯并希望你有一个更好的职业生涯。本文分为两部分在第一部分中我描述了测试员的四条进阶之路在第二部分中是我给我们测试员的一些建议。你可以在这里下载这篇文章的Word版本。注:本文是我之前系列博文的总结并只是我个人的看法。目录第一部分成为资深软件测试员的四条进阶之路成为一个专业的QA成为一个测试架构师成为一个领域专家成为一个工具开发人员转行或继续结论第二部分我的一些建议激情和动力开放的思想和广泛的兴趣提升影响力(MakingBigImpact)编码编码编码花时间去思考了解产品用不同方式做事给测试经理的建议结论第一部分成为资深软件测试员的四条进阶之路在这篇文章中我认为我们的软件测试员有四条潜在的进阶道路。它们是:)成为专业的QA。知道如何使用不同类型的测试工具开展网络测试性能测试负载测试和压力测试)成为领域专家。可以像最终用户一样来使用你正在测试的产品)成为测试架构师。可以领导整个团队和整个公司的测试以及质量保证)成为工具和框架的开发人员。可以开发出世界一流的测试工具我还将讨论工程师的其他进价道路比如转行去开发人员或PM改变你的工作领域。成为一个专业的QA在本节中我想讨论成为资深软件测试员的第一条进阶道路是成为一个专业的软件测试员。在许多公司里我们称软件测试员为QA(质量保证)QA这种角色在微软成立软件测试员(SDET)这种角色之前便存在了很长的时间。你可能想知道的质量保证和软件测试员(SDET)的区别是什么。我们的测试员是质量保证吗让我引用这里的QA定义来开始我们的讨论:QA代表质量保证它是一个框架以确保在符合规定要求下进行开发和制造产品例如药品农药和医疗器械。这是一个需要个人成长实现和持续改进的质量体系不这不仅是另一份工作。事实上这是一个跟其他工作都不一样的工作。作为一个专业QA意味着你会得到一个真正的机会去影响工作实践和提高质量的标准。这个职位能够提供多种个人的、职业的发展选择在不同的项目、过程和地方里扮演不同角色。这是一个真正负责任的职业同时也要求个人的真正能力。你可以从上面的定义看到QA是一个专业的职位如牙医教师一样它需要自己的技能。在我担任软件测试员的整个职业生涯中我关注了许多专业QA的博客。比如JamesBachJamesWhittakerElisabethHendricksonCemKaner和许多微软内部测试架构师。他们教会我什么是软件测试为什么我们需要测试以及我们如何做测试。那么他们之间有什么共同的地方吗他们都是世界上的最好QA。他们都有非常深厚的测试知识如基于模型的测试(ModelBasedTesting)探索式测试(ExploratoryTesting)生产环境测试(TestinginProduction)基于情景的测试(ScenarioBasedTesting)。他们乐于分享活跃在社交网络之中常常把他们想法分享给我们广大的软件测试员。这非常棒让我们可以看到现在有许多很好的测试技术和技术日新月异的变化。正如你看到的成为一个专业的QA重要的因素不是编码的技能而是测试的技能。另一方面软件测试员(SDET)可算是一种专攻的测试用例自动化的软件工程师。换句话说SDE们(软件开发工程师SoftwareDevelopmentEngineer)为实现产品而编写代码而测试员(这里实际指SDET软件测试开发工程师SoftwareDevelopmentEngineerinTest)们为自动化测试而编写代码。编码技能是我们的测试员应有的最重要的技能之一(如果你的代码能力不够强我预计微软将不会聘你为测试员)。然而作为一个软件测试员并不妨碍你成为一个专业的QA反而你还有很多成功的机会。在我们的日常工作中我们有很多机会去学习新的测试方法并可在我测试方法并能够在你的测试策们的项目中进行实践再掌握它们。能够深刻得理解略中使用它们对测试项目成功来说是非常重要的。那么如何才能胜任一个专业的QA你必须做到:知道并使用不同的测试方法比如基于模型的测试探索式测试用户界面测试(UITesting)在一些领域有深入的测试知识比如性能测试网页(web)手机应用测试安全性测试(或一个安全专家)熟悉一些测试工具比如JUnitNUnitMSTestSelenium或商业QA工具如HP负载测试工具(HPLoadRunning)或VSTS负载测试工具让我解释一下成为一个专业的QA我们为什么需要第二个和第三个技能。当一个公司想雇用一个QA他们通常都有一个明确的期望他们想雇用一个什么样子的QA。由于不同领域的测试方法可能有着显着不同因此QA趋于更专业一些QA擅长安全测试而另一些QA具有网页设计经验。公司想要招聘一些在某些领域内有经验的人那才能够解决他们的迫切需要。例如当正在开发一个网站时我们可能会想雇用一些熟知性能测试、网站基础设施的人以帮助测试网站的可扩展性。如果你能熟知流行的网络测试工具那将是你的一大优势。例如如果你知道Selenium最流行的WebUI测试工具之一它会给你在就业市场上的增加你的竞争力。在大公司里工作比如微软它同时会带有优势和劣势。就优势而言你将有机会做不同类型的测试并培养你相应技能。另一方面你可能会使用内部测试工具(不公开性质的那些工具)。你也可能只是测试系统里的一小部分(也就是说你可能对你负责的那块进行了非常深入功能测试)但很少有机会测试整个系统。如果你在一些领域有深厚的功底如安全领域或性能领域你会在未来有更好的职业生涯。成为一个专业QA的另一个关键技能不是测试的技能而是其他的技能。想象一下你希望加入一家规模较小的公司或初创的公司只有测试技能可能无法确保你能应聘上这份工作。但是如果你能够做些其他工作如自动化编译版本搭建Web服务器创建部署脚本。你将有更大的机会被录用(因为你可能不是全部时间都在做测试所以如果你能在同一时间做很多不同的事情那你将是一个非常不错的候选人)。为什么我们应该立志做一个专业的QA而为什么不干脆永远做一个软件测试员做一个优秀的软件测试员是同时需要编码技能和测试技能。然而我们需要在未来选择一个领域来深入要么编码要么测试。这真的取决于你是否对软件测试有激情和是否把它作为一种事业。如果你喜欢测试本身成为一个专业的QA是一条很适合的职业发展道路。此外同时拥有编码技能和测试技能将是你去应聘其他公司的QA职位时的亮点之一。另一方面我也看到很多软件测试员对今天的工作并不满意而且我认为根本原因是他们有着工程师的根(engineeringroot)并不喜欢测试。如果你真的喜欢编码转行到开发或做更多的测试自动化测试类库的开发可能是你的方向。在过去我们曾经有两个独立的角色:SDETSTE(软件测试工程师)一个专注于自动化另一个专注于测试和许多公司一样他们也有类似的角色如亚马逊谷歌。我认为这有一定道理。我们可能会从上面的定义中注意到的一件事质量保证是许多行业都有的职位不仅仅在计算机软件行业。例如在汽车行业QA是负责审查我们的汽车是否符合质量要求(meetsthequalitybar)。不幸的是在软件行业的QA还不够成熟。今天几乎没有哪个学院设立软件测试专业或者设置一个软件质量保证的学位。我们中的许多人选择软件测试员作为我们的职业因为我们被雇用来担任测试员并不是我们喜欢做测试。我们看到了很多关于测试员(SDET)在公司内外职业发展的博文和文章我们还将在不久的将来持续看到这种情况。只是因为测试作为一个专业的职业还不够成熟我可以预言这里面很快就会发生很大的变化(例如在必应(Bing)团队中我们做了一种改革没有单独的测试员所有人都是软件开发工程师每个人都负责自己的程序的质量时我们采用在生产环境测试(TestinginProduction)把测试员的角色调整到更广的服务监测和运营领域中)。成为一个测试架构师在本节中我想讨论我们如何能够成长成一个测试架构师。在这里测试架构师不是一个头衔(title)而是一个角色(role)。例如如果你在很多测试工具框架上都做出了突出的贡献你可能有一个测试架构师的头衔你也可能不是一个测试架构师。同样一些软件测试员在他们的公司中扮演测试架构师的角色但他们没有一个测试架构师的头衔。测试架构师的角色意味着什么呢在这里我列出了测试架构师应该着眼的几个重要领域:定义一个功能的整体测试策略比如如何测试一个浏览器如何测试一个云数据库等某个测试领域的专家如安全性测试性能测试云测试在团队中引入或发明新的测试方法如探索性测试众包测试(crowdsourcingtesting)根据具体情况指导和培养团队思考测试的未来和测试员的职业发展的未来并为未来做好准备参与测试相关的活动如测试访谈会议博客怎样才能成为一个测试架构师呢首先它不是一个简单的事情你需要先成为一个专业的软件测试员。作为专业的软件测试员你会在你的日常工作提高上述的能力再成长为一个测试架构师。另外许多架构师都在不同的公司、团队中接触过了不同的项目所以都是非常有经验。参与到不同类型的项目之中你总是能得到一些新的想法。最后你必须有一种能力即在任何项目中能迅速地适应变化(adoptingchange)并做出贡献。这个技能对测试架构师来说非常重要。今天有一些测试架构师为其他公司提供咨询服务。他们通常有广泛的知识敏捷开发项目管理沟通技巧和风险管理并帮助拯救许多几乎失败的项目(helptosurvivemanynearlyfailedprojects)。他们是最好的专业软件测试员并在相关领域中获得了尊重。成为一个领域专家今天我想说我们软件测试员的职业生涯中最重要的一条路就是成为一个领域的专家。我们必须认识到我们当中许多人最终是不会成为测试工具的开发人员或测试架构师。他们将成为专业的QA一个领域专家或只是转行到一个新的岗位。就个人而言我更喜欢你考虑在领域专家这个方向努力。领域专家是谁让我来回答这个问题。假设你测试特定的软件测试五年那你有资格成为一个领域专家吗答案是不一定取决于领域专家的定义。举例来说我已经测试了SQLServer六年。我很熟悉数据类型排序规则(collation)并能编写基本的SQL查询语句。“领域专家”在这种情况下应该能够设计数据库应用程序或者管理数据库。为什么我这么来定义领域专家因为它是搞数据库的人在其他公司找工作时一个基本要求(一个数据库开发人员或一个DBA)。我能胜任领域专家吗我并不这么认为因为我只知道SQLServer的一小部分。而我对这些都没有经验比如设计一个数据库架构(databaseschema)开发一个使用的数据库的应用程序或者管理大量的SQLServer实例。所以我很难找到一个数据库开发人员的工作或一个DBA的工作。正如你可以从上面的例子中看到“领域专家”是的的确确取决于上下文。如果你在Windows团队中工作“领域专家”就应该知道安装配置管理Windows或者能够编写基于Windows的软件。如果你在VisualStudio团队中“领域专家”就应该知道如何使用VisualStudio和NET编程。如果你在WindowsAzure和SQLAzure中你就应该知道如何通过使用所有可用WindowsAzure的技术来构建一个可伸缩的应用程序。从这个意义上说领域专家需要你有一个全面理解而不只是在某一小块里非常深入而已。他同时还关注于最终用户是如何得使用我们正在测试的软件或服务。我们为何要成为一个领域专家有一天你可能会考虑离开目前的职位你可能选择加入另一个团队或另一个公司。你可能会问自己的一个问题是从我过去作为一个软件测试员的经验中学到些什么样的技能或者我能胜任什么样的职位。不幸的是今天我们很多的软件测试员只对他们的所负责部分有着深刻的理解但他们缺乏测试产品应有全面的视野。其中一个原因是今天我们的测试员过于注重功能性测试我相信这是我们不太注重用户的使用场景或者我们的最终用户是怎么在使用我们产品。这也是我即使测试了SQLServer六年我依然没有资格担任一个数据库开发人员或一个DBA的主要原因。你可能会问为什么我们应该考虑成为一个领域专家或另一种问法为什么不就永远待在测试角色上。原因是它会为你的未来打开一个非常宽广的门让你有一个更好的职业。领域专家的需求将远高于专业的QA另外补偿金(compensation)也将更高尤其是当你成为一个解决方案提供者时。对微软的软件测试员更是如此。我们公司有大量的优秀产品有非常多的客户。对熟悉微软产品并知道如何打造端到端解决方案的领域专家或专业人士都有着很高的需求。你越了解微软产品你的职业发展越好。给软件测试员的建议现在我想给我们的软件测试员提供一些建议。首先问问自己你三年后想成为什么样子的人要成为一个领域专家或者想成为一个专业软件测试员。这个问题我建议你尽早地思考和作出决定。然后如果你想成为一个领域专家你需要有一个成长计划。这里有一些可以帮助到你的步骤:)选择一个你想专注的领域。我们在微软实在是太幸运了我们有这么多伟大的产品因此我们有许多领域可以专注。近年来IT技术的变化日新月异我们应该谨慎选择那些IT趋势的领域。在这里我想有几个你可能有兴趣知道的领域:NoSQL和BigData是数据库管理领域的热点。市场对熟悉NoSQL(例如HadoopMongoDB等)的人有着巨大需求。WindowsAzure是微软的云计算平台。完全理解的这个系统和知道怎么构建可扩展的系统将是你的职业发展中的一大优势。WindowsPhone和Windows是我们下一代的操作系统。能为这些平台构建应用程序能让你轻松地找到一个开发人员工作。企业客户希望整合社交网络office移动和必应(Bing)搜索以提供更大的生产力。熟悉Office微软其他的产品能够可以让你成为一个解决方案的提供者。)在你的工作中培养你的技能。一旦你有对你想熟悉什么样的领域有一个想法后你需要培养的相应技能。如果你目前的工作领域不是你的兴趣所在考虑转到其他团队。此外做一些副项目(sideproject)参与车库项目(Garageprojects)中做些基层创新始终是一个不错的方式来提高你的技能。作为一个微软的员工你有着很多优秀的资源可以利用我强烈建议你发掘总结你的知识。我强烈建议你设定了一个目标并持续不断地提高你的技能。这是你的事业你应该认真地投入时间来对待。请看我的其他博文你可以从中找到另一些提高自己的建议。给主管和经理(LeadandManager)的建议亲爱的主管和经理我希望你能认识到并非你所有的员工在最后都能成为一个专业的软件测试员。我们应该帮助我们的成员增长他们的领域知识并给他们一个更好的职业。有一天当你的员工决定转行或离开公司时他们会感谢你提供的机会以帮助他们学到自己的知识并感谢微软提供了一个让他们能成长的平台。有时建立一个健康、快乐的团队比完成的任务更为重要。微软拥有的优秀员工正是我们宝贵的财富。作为主管和经理我们应致力于让我们的员工感到开心并有一个更好的职业发展。鼓励人们学习新东西让员工能在某些领域里投入自己的时间始终是一个培养员工的不错的方式。你也将认识到如果这样做你的员工也会引入一些新东西到他们的日常工作中。拥有领域知识和了解顾客如何使用产品一直对测试都有很大益处这将是软件测试的趋势。成为一个工具开发人员今天许多我们的软件测试员编写了测试类库和测试框架协助测试自动化和测试运行自动化。在整个公司里我们有很多的测试框架测试运行系统。编写测试工具是一项重要的技能它可以帮助我们的软件测试员增加他们的编码能力。如今很多软件测试员开发测试框架和测试类库。他们和其他开发人员一样写一些代码。测试工具开发人员和软件测试员之间的一个很大区别是编码技能是开发人员最重要的技能而对软件测试员来说最重要是测试技能。我们的工具开发人员面临的一个挑战是你应该与使用你所创建的类库的其他人紧密合作并确保你的确提高了工作效率。请记住编写工具不是你的目标让其他人更敏捷才是你的目标。我能给想要成为工具开发人员的软件测试员一个建议是你可以大体上看看编写一个测试工具跟编写的其他软件是一样的所以如果你有良好的编码能力你可以在很多团队中有着潜力无穷的成长所以不要限制自己去寻找一个软件测试员工作或只编写测试类的工具。另一种观点认为测试工具开发人员和编译器开发人员UI开发人员或数据库开发人员一样他们只是在不同的领域具有专业知识的开发人员。这是我之所以把本节的标题写成“成为工具开发人员”而不是“成为测试工具开发人员”。它带来了另一个有趣的观点就是我们的测试员(SDET)角色实际是专业软件测试员和测试工具的开发人员的混合体。我们希望大家通过编码(开发的角色)来做更多的测试自动化(测试的角色)。但是在某些情况下我们发现在这两个领域我们都不太擅长。它可能潜在地限制我们的软件测试员长期的职业规划。转行或继续我曾打算写一些建议关于你是否应该留在你目前的职位或转行到另一个其他团队、其他公司的职位。在写下我的想法之前我想我可以给你一些关于这个主题的参考。第一篇文章是一个年前Interface上发表的一篇文章标题是“职业生涯什么职业生涯”。文章首先说“你的职业生涯发展是你的责任。”和“你管理着自己的职业生涯。”然后说你你的经理和微软怎样一起合作帮助你的成长。这篇文章提供了一系列的问题让你进行思考并回答。根据你的答案并提供些很好的建议无论现在是否应该做出改变。我最喜欢它的一部分是它有很多的探索式(probing)、开放式(openended)的问题。例如:回顾……你最享受的是做什么是什么驱使你投入时间来干得这么漂亮(Whatwasitaboutthosetimesthatmadethemsogood)有时你会特别不喜欢你的工作吗为什么去年里你感到最骄傲的成就是什么在你开始你的职业生涯后你的抱负或长期目标有所改变吗何时为何你现在将如何描述你的长期目标你的价值观是什么(一个主要标准判断你是如何做事的)你目前的工作和你的部门(微软)是否符合你的价值观你的经理是如何做你的教练还有谁是你兴趣的好教练展望……你真正擅长什么从你的职业生涯中你最想收获是什么当你展望你的职业生涯时是否有些事情你特别想避免吗为什么你想避免它们你认为在未来十年中你的职业生涯将会出现什么你需要什么样的技能或经验来为你下下个工作准备对于十年的计划你需要什么样的技能或经验你的经理(或微软)可以做些什么来帮助你实现你的目标你需要从他们身上得到什么才能使你获得成功当你展望你的职业生涯时有什么是你特别期待的事情吗理由是什么你认为你的下一个工作将是什么下一个工作之后你认为你的再下一个工作又将是什么回顾你会被引导着去思考过去的工作经验。展望你会被引导着去思考你想成为什么样子。思考这些问题会真正帮助你整理职业生涯的思路。然后第二篇文章是在讨论这个问题即“是改变的时候了吗”。文章列出了职业发展的八大选择模式:广泛(Enrichment)偏向(Lateral)垂直(Vertical)跨职能(Crossfunctional)重新调整(Realignment)探索(Exploratory)执行(Peform)和其他的追求(OtherPursuits)。这篇文章讨论了你是如何在做决策比如什么时候应该作出改变、什么时候又不是一个合适的改变时间和如何做好你的功课再做出一个合适的改变。它也列举了很多别人的例子。例如:如果你不满意你的工作不管是因为你不喜欢你现在工作的类型还是因为你共事的人的价值观或者公司文化跟你不对路做出改变也许能帮你走出这种状态但你得先做下功课!LouNeeGerard如是说:“跳槽换工作不是一个避难所。做出的改变应该是积极的应该因为你真正想要去做些什么而不是去摆脱你不喜欢的事情。”他曾从行政职务转行到PM。当你有一个明确的目标并你已决定是否投入额外的努力时这可能需要一个新的挑战(challenge)你应该时刻关注这些潜在机会能不能满足你的目标并时刻准备采取行动。例如:跟你的经理聊聊。根据不同的情况这可能是一个非常宝贵的步骤或一个你不想采取的步骤。你的经理可能是你最好的支持者并支持你的改变。如果你开始提你想要做的事情和你现在的工作不一样虽然有些经理可能会感觉受到了威胁一个优秀的经理会认识到对微软来说你的成长是一件好事并尝试与你一起向你的目标努力。有时候你和你的经理很可能不是很合拍。这种事难免。如果你不能跟你的经理聊你可能需要选择另一位导师来帮助你做决策。安排非正式的访谈。现在有不少谈论工作的非正式谈话比如他们做了什么他们是如何到达这种水平什么样的技能才是重要的。你不需要你的经理像针对正式的访谈一样进行审核批准就能组织安排这样非正式的访谈。这样的访谈实际上有利于微软这个整体:你将了解到更多适合你的职业发展方向和更多微软提供的机会。如果你的目标是成长(growth)……考虑寻找一个比较成熟的团队并且负责人有着良好的记录。在一个运作良好的团队中工作你可以学到很多东西包括何时创新以及如何创新何时交付和如何交付以及优秀的团队过程。如果你的目标是提升(advancement)……考虑一个具有部门的战略价值的初创团队。这些团队开始都比较小成长非常快。他们可以为你提供快速提升、回报明显的机会。初创团队的风险与机会并存新团队有更大的升迁机会但也有较高的风险其中许多团队是从来没有交付出任何东西并且他们可能需要在人员不足的情况较长的工作时间。看看微软之外。从我们公司之外的人得到一些建议。设计师和MSTE易用性培训经理ScottBerkun说到“真正的职业发展是远比微软大的。你在这里看到的差异和对比可以帮助你做出更明智的决策在某些情况下我们更比其他高科技公司分层和分级得更多并在另一些情况下我们更加开放和灵活。”如果不从外部的角度来看你会看不清楚在微软你所拥有的优势。当你到了一个新的职位时你想要踏出为未来规划的或者丰富你职业生涯的一步。BarbaraWilsonMSTE领导培训经理提出了三个试金石来判断你是不是在踏出正确的一步:最后的这份工作。如果你有一个以上的选择(待在原来地方可能是其中之一)这个试金石才会有效。假设微软的工作是你最后的这份工作在你正在考虑的几个选择中哪些选择将会对你在几年之后想要做的有所帮助例如如果你希望看到自己进入培训的角色然后你可以在真正技术相关的和参与到培训他人的两个工作之间做一个选择的话后者的职位可能是一个更合适的选择。我会感到兴奋吗问你自己四个问题:我对这个产品或服务会有激情我能接触到客户吗我对此职位或团队的问题处理解决感兴趣吗这个团队的文化和管理理念是否适合我的风格合适吗问问自己的职位它能会为你提供些什么然后再问问自己你能为你的团队带来什么。如果这两个答案似乎是互补的(complimentary)它可能是一个很好适合你的职位。当你完成所有的自我评估和功课后Brechner建议再做一个测验来判断此举是否正确:“带着你的勇气。”改变有时是非常困难的即使你已预想过的相关情况。如果你觉得这一个改变将教会你一些新东西并且在改变时你感觉还行那么很可能它就是一个很正确的改变。结论这是第一部分的结尾。除了这四条职业进阶之路我们还有其他的道路。例如我们可以成长为测试主管(Lead)测试经理PM和开发甚至我们可以找到一个不是计算机领域的职业。作为软件测试员你对系统有宽广视角你考虑客户比考虑代码更多你努力思考为什么我们要开发这个功能我怎么能确保这个功能就是我们的客户所需要的。你从测试中学到这些技能可以在你争取未来的职业时给与一些帮助。在接下来的一部分里我将讨论我们的软件测试员成长为更优秀的工程师的几个方面。第二部分我的一些建议在这部分的文章中我将专注于提供建议以此帮助你的职业生涯发展。的确改变可能需要一段时间有一天你将成为一个资深员工。不断学习不断思考和壮大自己的兴趣是你的职业成功的关键。我希望本文可以帮助你思考和开始积累你的力量。以我自己为例我曾只专注于我的项目只用很少的时间来思考。有一天我无意中访问了wwwinfoqcom和听到了“被夸大的测试(TestingisOverrated)”的会谈。阅读后我把我的想法分享给我的同事们并认识到在我工作之外还有这么多出色的信息。我开始阅读这些文章并借阅测试书籍。培养这样的学习和思考的习惯会花费时间但一旦你有了这样的能力你会发现你可以成长得非常迅速。激情和动力有时人们每天都做类似的事情就会觉得乏味。他们开始失去激情感觉自己的职业生涯发展变得缓慢。我们应该如何处理这种情况我可以给你一些建议。考虑离开自己的舒适区域。一旦你在一个地方里待了很长一段时间你就有了一个舒适区域它让你觉得你的工作失去挑战你的技能不在提高。因此是时候来改变了。你既可以换到其他公司也可以换到其他不熟悉项目。请大家认真考虑这个问题因为这对你的职业生涯有重要影响。在未来的博文中我将详细讨论改变或不改变。在一般情况下我认为改变是应该的你应该常常对此进行思考。我看到过很多例子换到其他团队并获取到更好的职业生涯。另外还要考虑到换到其他团队会给你提供机会去学习新的、最终将有利于你的技能。考虑做一些某些副项目(sideproject)。我的第二个建议是考虑做一些副项目。在过去的几年里我发现大家在他们的空闲时间里或主要任务责任外打造的项目往往比资助项目有更大的影响(thesideprojectswhichpeoplebuildduringtheirfreetimeoroutofmainresponsibilitytendtohavemuchlargerimpactthatthefundedproject)。作为一个专业的工程师我们应该自我激励自我组织。如果我所做的事情正是我的兴趣所在我将会对它充满激情并会为它做出持续努力。拓展你的兴趣点。我的第三个建议是试试其他领域的兴趣。例如当我觉得日常工作很枯燥时我经常去公司内部微博了解今天微软内部发生了些什么事。我喜欢阅读wwwinfoqcom的文章了解公司外部又发生了些什么事。我喜欢阅读谷歌测试博客了解他们正在做些什么。你可以选择一个你特别有兴趣的领域然后保持这个卓越的习惯每天都学习些新东西。最后我有一些建议给我们的经理:宏观管理而不是微观管理给大家一些做其他事情的自由鼓励大家去尝试不同的机会。我知道我们的承诺我们的任务必须要完成。然而让大家愉快和受到激励比交付一个功能更为重要。一个快乐的团队能提供更好的产品我们都不希望总是压力山大。开放的思想和广泛的兴趣一旦你在一个地方里待了很长一段时间在你所在领域你获得了非常深厚的领域知识和测试方法。在这种情况下我们往往是安于我们现在所做的并有时还会避免改变。然而作为一个专业的软件测试员我们应该始终更宽更广地思考思考有我们可以采用些什么新技术思考你所在领域的未来测试技术。在一般情况下一个优秀的软件测试员应该思考的比我们目前已有的东西更远并有一些应对更改的计划。为什么呢究其原因是技术变化太快如果我们不提前考虑提前做好准备有一天当变化发生时你会发现你得仓促地面对这么多的挑战。例如我总在浏览wwwinfoqcom和wwwdbmscom以此提高我的技能。当我们的团队决定用列存储来实现数据仓库时我已经知道我们为什么应该这样做的这个领域中最热门的技术是什么。为了培养这样的技能我们需要的是开放和广泛。我们需要知道公司内部发生了什么事社区里又发生了什么事。我们应该很开放地聆听和学习别人的想法。我强烈的主张我们的资深测试员应与其他团队成员保持密切联系尤其是微软里其他团队并培养一种学习技术并能迅速吸收的能力。有一天你会觉得学习的投入将为你的工作带来巨大的回报。我可以给你一个例子我如何做到这一点。就我而言我订阅了微软内部和外部的大量非常活跃的博客接收别人的更新。我也参加了会谈和培训来提高自己。讲座范围可以非常广泛如云计算中的系统工程方法(serviceengineering)基于场景的工程方法(scenariofocusengineer)即以用户需求为导向的系统开发等等。通过参加这样的培训你将收获更广的技术知识。另外你能知道公司内部发生了什么事。在过去的一年我就参加了两个$外训然后我引入ATDD和个人看板(PersonalKanban)到我们的团队之中。SQL团队中许多成员所使用的技术和ATDD其实早已被微软内部的很多团队使用过。你可以看到开放和广泛的价值它能帮助你成长为一个资深测试员。提升影响力(MakingBigImpact)今天我想谈的另一个话题是作为一个资深测试员需提升影响力。衡量一个人的成就的重要途径之一就是你对团队对项目对客户有多大的影响。我有三个方面提升影响力的建议。帮助他人的成长我们需要意识到无论你是多么聪明只靠你自己你是不可能成功的。你帮助他人成长越多你越可能会成功。作为一名资深测试员我总是很喜欢看到初级测试员提高他们的技能发展他们的职业我也将提供建议和指导他们帮助他们成长。就我的心里而言我认为帮助别人是最重要的事情我们应该每一天都帮助别人。有很多方法可以帮助他人成长帮助他们做项目回答论坛里问题指导新成员教他们如何编码和如何测试。对一个团队来说建立这样的文化氛围是极其重要的因为大家会感到其他人的温暖并鼓励分享和学习。最后我们一个团队一起都能成长起来。影响他人一旦你变得越来越资深你已经掌握了非常深厚的技术知识大量的项目经验。你得到别人更多的尊重成为某一领域内的大牛(GOTOperson)。换句话说你有能力影响他人。如果我们看看架构师技术潮人(TechiquesFollows)大牛的工程师(DistinctEngineers)他们的观点和思想能影响了很多人类似这样的能力是他们独一无二的资产。你认为我们能够像大牛一样影响其他人吗我想是可以的。每个人都有一个你擅长的领域。你应该用你的专业知识来帮助人们作出决定并提供宝贵的建议。例如对于每一个我参与过的或我学习到的项目我都对它有些独特的看法我试图理解为什么我们应该开发这样的项目我会更多思考为什么我们不使用另一种方式来构建它我常常把我的想法分享给项目里的所有人然后我们一起再作出决定。我写了大量的博客分享我的想法并希望影响更多的人。更多的跨团队协作以我自己为例在最近几年我引入ATDD(验收测试驱动开发AcceptanceTestDrivenDevelopment)到我们的团队并把它介绍给很多微软内部的其他团队如BingLync团队。我也参加不同类型的会议和研讨会了解其他团队是在如何做测试。每当我看到有人做我所熟悉的项目我也问他们是否需要帮助。总之当你努力提升你的影响力时你的经验同样也会积累越来越多你不断成长为一个资深测试员。编码编码编码今天我想讨论一个最重要的技能我们的软件测试员应该在自己的职业生涯中所掌握这就是编码。为什么编码这么重要因为你是软件测试员(SDET)软件测试开发工程师(SoftwareDevelopmentEngineerinTest)你是软件工程师。作为一个软件工程师编码就是每一天你应该做的任务这是你应该掌握的技能。你可能会问是否编写测试用例没有编码更重要。这里的原因是编写测试用例可以帮助提高产品的质量但有时它并没有促进你的职业生涯发展。我可以举我的一个例子。当我刚参加到SQLServer团队之中我们编写以TSQL脚本为基础的测试我很少有机会写编码。因此我的编码技巧并没有提高。幸运的是SQLServer的测试团队转移到以编程的方式编写测试今天我们的软件测试员的编码时间增加了不少。这是相当不错。当然有时我们花费太多的时间在编写代码和类库上而花费较少的时间来写真正的测试用例。这是另一个很大的话题在这里我就不打算讨论了。由于今天我们当中大部分人在编写自动化测试这意味着我们有很大的机会来提高我们的编码技能吗答案是不一定。今天我们的测试员做了太多的任务:我们编写测试库我们验证测试结果验收产品我们配置机器和安装新版本进行测试我们修正我们脆弱的测试我们创建和关闭缺陷。有时我们花费大量的时间在下载和编译源代码。我们也有其他的任务如会议项目跟踪缺陷报告。上述所有任务将需要花费我们每天中的大量时间而时间提醒着我们做实实在在编码真得很少我们的技能提高也非常小。我记得有一天我曾对我们的测试经理提到过我的梦想我可以花的时间在编码上他很惊讶他认为这个数字理应还要大很多。然而现实是这个数字理应小得多。所以我们该怎么处理这种情况呢我们应该尽力尝试改善我们的工程系统以减少不必要的时间开销让系统能够安装配置环境安装测试版本运行测试创建关闭的缺陷和退出测试。所有这些应该是自动化的。我们应给自己承诺每天尽可能多得编码。由于你的工作性质如果你不能做到这一点你应该考虑换到其他工作。小结请记住编码是一个重要的技能你应该去提高它。花时间去思考在最近几天我试图去理解我们应该如何去教导和学生如何去学习。我的PhD研究经验和最近戴尔卡耐基培训为我提供一些想法:教给他人或分享经验给他人最佳的办法是让他们思考。在你的谈话中不管他们思考了什么他们至少学到些东西。一个好的实践是鼓励他们说话与你互动。思考自身有时可能并不够我们可能需要实践和应用我们的思考到我们的工作中。就研究论文而言我们的论文大部分沿用了经典的格式它必须有简介相关的研究实验结果和结论。没有实验结果的论文几乎是不可能被发布的。另一方面论文的本质观点似乎是不知为何地被隐藏起来或不是那么容易得找出来。我认为这是做研究里一个的问题。当我们想要向人们做演示展现点东西时或者我们想要写点东西教给别人时同样也有上面的问题。首先你会花很多时间在研究我应该思考些什么。之后你头脑中就有些想法了你会渴望通过写些东西与他人分享这是一个很棒的方式来概括你的想法。最后我相信资深测试员的价值是他可以给团队带来的观点技能而不是他在过去的工作经验。对我们的软件测试员来说能够努力思考问题并找出解决方案是一个重要的技能我希望我们的资深员工应有的最最重要的技能就是思考一个优秀的领导必须首先是一个出色的思考者。了解产品我相信作为一个资深软件测试员我们应该充分了解我们正在测试的产品。知道产品的方向未来是创建更好的测试的第一步。换句话说如果我们不理解为什么我们应该构建这个产品和我们将构建怎样的产品那么我们将不能编写出优秀的测试。我们应该更多地参与项目产品的规划并影响产品的的策略(不仅是测试策略)。请注意这是我们可以提高产品质量的重要途径之一。如果我们可以发现设计时的缺陷我们可以节省下很多的时间和金钱而且甚至比发现大量功能上的缺陷要有价值得多。有趣的是我相信一个优秀的产品设计和一个正确的方向会带来更少功能缺陷。过去我参与了大量的改进我发现如果是精心设计的功能我们在实现功能的过程中将看到更少的产品问题缺陷后顾之忧。无论如何如果该功能没有得到很好的设计我们不应该去实现这个功能否则你在执行的功能时会看到很多问题。参与产品的设计也可以帮助我们提高管理构建项目的技能。并提高我们的技术技能对测试架构师和领域专家的职业道路都是至关重要的。了解产品可以帮助团队成员讲同一种语言更顺畅地交流。假设有一天你想加入另一家公司做云计算当你和你的面试官谈论时他们可能会问你很多关于云计算的问题。如果我们只知道在服务中如何测试单个组件你会发现你是缺乏知识思考的这将影响你未来的职业生涯。然而如果你知道并思考过IASSPASS亚马逊AWS等云计算技术我敢打赌你将有更大的机会得到这个职位。对于一家初创公司来说有一个除测试以外的技能是至关重要的。这始终是一条金科玉律。最后我想分享下ErwinEngelsma的观点:“测试能够提高顾客的满意度前提是你真的知道客户认为什么是真正重要的并测试了相关的内容。在你的客户几乎不感兴趣的领域做出很大的改进虽然是一个值得称道的努力但是这不会改变他们对产品好坏的看法!”改进测试时的关键问题ErwinEngelsma。用不同的方式做事有一天我的经理问我:“Qingsong当你还在高级测试员级别时为什么你可以得到出众的评价结果”。在高级测试员的阶段我还没有很丰富的测试知识对团队的影响也不大。所以我也想知道是什么让我有这么一个出色的评价结果答案就是在用不同方式做事情。这个问题的一种思考方式是你如何把你与其他人区分开来。我发现当我被分配了一些任务时我会额外地做一些我应该做的事情这使我跟他人不一样更主要的原因我提升了影响力也发展我的职业。这里有一些在过去我曾做过的事情的例子:当我们计划在SQLServer中增加对日期和时间(DateandTime)的支持时我花时间和时区在WindowsLinuxNET和WinAPI上的了很多时间来研究日期支持情况。我曾积极参与到项目的规划和设计中。这就让当我们测试功能时我就有了一个更好的地位。另外我在该功能的测试过程中承担了更多的责任包括构建管理测试运行管理在线文档审查并帮助他人编写测试用例。这些增加了我的知识还帮我产生了更大的影响。当我们在SQLServer中实现了稀疏列(SparseColumn)功能之后在功能提交后我并没有停止思考我们的功能。我曾积极地在内部寻找能够使用我们这个功能的地方。最后我发现我们团队的VSTS系统可以使用这个功能所以我和支持团队一起工作把这个功能部署到系统中去。这样一来我帮忙提高了团队的业务能力同时也更好地了解到功能的用户场景。结果就是我看到这个功能还缺少的一些更细功能。最后我希望你能体会用不同方式做事的意义。如果你有这样的能力将会帮助你的职业生涯很多。给测试经理的建议今天我希望写一篇关于招聘软件测试员的博文。主要读者是我们的招聘经理。这篇博文不是关于如何面试人或决定雇不雇用一个人我认为这些是具体过程。而我的主要议题将关注为什么即为什么我们需要聘请一个或多个测试员。我不是一个测试经理当需要更多的人时我不知道我们的经理给人力资源那边说的原因是什么。也许先让我列一些可能的原因:)我们开始一个新的项目或功能我们需要建立一个新的开发和测试团队。)我们有一个新的测试主管(testlead)主管应至少管理,人。)我们在做项目时测试资源短缺。)我们的副总裁给测试经理一些名额如果我们不填上这些名额就会被“浪费掉”。我们真的缺乏测试资源吗我总是听人说他们的项目缺乏测试资源。但是我们真的缺乏测试员不一定根本不是。微软内部没有测试资源缺乏的问题而是资源分配问题。今天我们的测试通常属于一个组件(component)团队由一个测试主管带领。他深刻理解他的领域并且测试也做得相当不错以便发展他的职业生涯。人们往往认为每一个部门都需要一个单独的测试团队人们往往认为测试是一个专业的工作需要深入的了解测试。我们可以以另一个角度来看这个问题。今天现代的测试框架如NUnitXUnitMSTest和Selenium编写自动化测试起来是非常容易做测试并不是真的需要太多的测试知识尤其是对于白盒测试来说(我相信由开发人员来写白盒测试并尽早地跑起来那么白盒测试的效果将比黑盒测试大得多)。我看到不少的情况是我们的资深软件测试员对他们负责的组件有着丰富的领域知识对于这样的组件深刻理解是必要的。测试查询优化器(queryoptimizer)就是一个例子。不过我认为最好的测试员应该把他的知识和测试理念应用到测试类库让每个人都可以使用它使得这样的组件测试变得更加容易。在SQLServer中TestQP和QREL是很好的例子这两个工具就内嵌了查询优化器和关系数据库的知识。你将你的知识转化为代码后我觉得你能随意移植到其他团队我们是没有必要去限制因为他在这个领域中有着最丰富的知识。扩大我们的团队并不意味着我们的业务扩大有时一个团队从人扩大到人甚至更多时人们感到自豪。然而这并不意味着我们的业务扩展了四倍。不应该用人数来衡量经理或团队成功与否。你想增加新的测试员来提高团队的工作效率这可不一定。有时它是成立的我们的测试员在项目上非常繁忙我们有一种感觉添加一个或多个的测试员可以帮助我们真的吗如果原因是我们想招人那完成这个项目之后又该怎么办我们永久地保留他们。下面是一些我给我们招聘经理的建议如果他想雇用一个新的测试员时:)需要一个测试员时尝试探索不同的方法来解决这个问题并把雇用一个新的测试员作为最后的备选解决办法。)如果在项目上我们需要更多的测试员我们可以从其他的团队调用些测试员吗)如果我们有太多要做的事情我们能标清优先级并放弃部分低优先级的任务吗)考虑培养一个技术主管而不是培养一个人事管理主管。我们倾向于培养非常优秀的技术人员成为主管让他管理更多的人。然而今天我们的主管在人事管理和其他的东西上花了太多的时间他们只是没有时间思考没有时间去提高他们的技术方面技能。所以请考虑把我们的主管视为技术主管这样一来管理多少并不重要重要的是能影响帮助到团队的人。)请务必花时间去改善我们的文化我们的过程和方法。优秀工程是更高生产力的关键。减少我们的技术负债投入时间去创新。)考虑采用一些指标来衡量测试员或测试的效率因此我们可以用更好的方式来作出决定。测试新人的职业生涯怎么样这是一个很大的话题这里我不会说得太多。一种看法是我们都希望我们的员工能够快速成长在未来有一个更好的职业。我们都希望我们的测试员可以很轻松地在其他公司找到测试工作如果他们决定去追求公司以外的机会。然而今天许多公司的开发人员与测试员比例相对偏低并且他们相信他们的产品质量不算坏。我希望有人能在就业市场和测试员的水平上做一些研究我们可以用更多的事实来分析这个问题。结论这是“成长为资深软件测试员”系列博文的结尾。我希望从我的博客中你可以学到一些有用的信息并帮助你决定你的职业道路。近年来计算机技术的变化日新月异。云计算社交网络移动都是热点领域。技术的变更同样也需要不同类型的测试技术。我会开始写另一个系列博文“对测试的未来和软件测试员的职业的未来”。在接下来的段落中我将列出一些的最新文章以此回答软件测试的未来是什么服务领域测试(testingintheservicearea)的未来是什么以及对软件测试员的职业生涯有何影响。“测试的未来”的相关参考文章:在谷歌年的测试自动化会议上谷歌工程和创新倡导者的主管(DirectorofEngineeringandInnovationAgitatoratGoogle)AlbertoSavoia负责开幕式主题演讲。他认为我们曾熟知的软件测试已死或至少是垂死的。我与几位同事看了这个视频两遍大家都觉得这是很警醒的谈话让我们更严肃地深思测试和事业。我强烈推荐每个测试相关的人去看看这个视频。主题中提到初创公司对“我们正在做正确的事情吗”比“我们正在正确地做事吗”更感兴趣。也就是说这里的质量真的不是我的软件或者服务是否有缺陷而是我的想法是不是吸引顾客的最佳想法。这对我们的软件测试员有一定的影响因为我们太专注于“我们正在正确地做事吗”并可能导致我们很难在初创公司找到工作。“众包”是最近非常热门的话题。你能想象一家拥有数以十万计的软件测试员的公司吗它可以帮助其他公司在极短的时间内完成测试。这些兼职软件测试员的薪水和他们找到的缺陷挂钩。他们在不同的地方用不同的语言在不同的设备上运行测试。不同于我们的内部测试他们像真正的客户般的运行测试。uTestcom就是这么一个公司该公司在这个领域相当抢眼它将会对测试服务和测试移动应用的方式上有着极大影响。在内部我们有几个团队包括BingLync都在积极利用众包来测试他们的功能。对我们的测试员意味着是什么仍是未知数。由JamesWhittakerJasonArbon和JeffCarollo编写的“谷歌怎样进行软件测试”很详细地回答封面的上问题。能在迷雾下看到像谷歌这么一个大型技术公司如何处理软件测试的复杂性是很具知识性和趣味性。一个有趣的现象是在此书的出版之前三位作者都离开谷歌一位回到微软担任开发主管和另外两个则加入了uTestcom。下面是一次访谈的片断:InfoQ:在本书中你提出了“不要雇用太多的测试员”并且在未来里测试工程师的作用在下降。你对此有何回应公司认为需要更多的角色以此划分开发人员和质量保证之间的界线为什么你要这样的界线吗谷歌已经证明编写代码和保证代码优秀的界线是模糊的其结果就是代码被开发更快并且潜在缺陷更少。雇用太多的测试员是为开发人员创建了一个依靠对产品来说这就是有害的。当人们过于纠结自己的角色会使我懊恼。“我是一个测试员”是一种不健康的心态。“我是一名开发人员”同样也是不健康的心态。当人们停止过多关注自己的角色开始专注于他们的产品这才是奇迹发生之时。这时候每个人都专注于尽一切力量来打造他们能打造的最好的产品。InfoQ:对当前那些考虑加入测试相关角色的测试分析师(testanalysts)或新毕业生你能提供最好的建议是什么可以满足这个角色不断变化的技能。对待测试如同开发一般。获取一个CS学位并擅长CS。证书和行业培训只会教你简单的东西。学习难的东西并掌握它。软件测试员只做简单的事情在很长的时间里仍然会被视为二等公民。不想被这样对待吧那就获取一等的技能。Bing团队的融合工程(CombinedEngineering)设想对服务测试和软件测试员的职业生涯都是非常有趣的。在融合工程软件开发工程师(SDE)们和软件测试开发工程师(SDET)们合并为一个“工程师”的角色我们为交付服务而优化而不是为软件而优化。换句话说许多测试成为开发者真正的开发人员只写代码而不是测试。我认为这可能是服务团队的未来发展方向今天的测试员可以更专注于监测基础设施和工具他们和开发人员是一样的。我们的生产环境测试(TestinginProduction)专家SethEliot认为TestOps是我们的测试的未来发展道路之一。你可以到这个链接看看相关信息。我认为生产环境测试能真正改变我们如何做测试以及测试员的职业的未来。这是TestOps访谈的一个小段:我认为测试领域的一个重要的变化将是我已经谈到过围绕测试服务和生产环境测试。我把它称为TestOps。运行测试评估结果。我们要使用测试员需要摆脱定式思维观念编写测试大量数据(一般是指服务)作为产品的质量信号而不是用日常运行的测试结果作为质量信号。这包括系统数据如CPUAPI请求系统响应时间以及(妥善匿名处理的)用户数据。此外还包括在生产环境中持续运行时交易发出的数据。这些依然是测试用例你可以得到持续的可用性和性能状况而不是只获得每天的失败通过的状态。这是一种技术但它也必定会改变我们的软件工程。角色的分类与归类(roleandspecializationversusgeneralization)的问题答案是应满足每个团队的具体需要。数据科学家做为工程团队的一部分就是TestOps方法的一个令人兴奋的结果。

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/29

测试工程师-敢问路在何方-

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利