转自:www.infoq.com/cn
软件行业发展迅猛。越来越多的团队开始重视测试,他们利用测试驱动开发。全新的或者改进的自动化测试和驱动框架层出不穷。团队在采用更多自动化回归测试之后,需要测试人员具有精湛的探索性测试技能。但是大部分人在校园里中学不到这些必要的技能,那么测试人员是如何炼成的呢?
同时,我发现一些人在努力寻找让自己满意的测试工作。测试人员经常问我如何融入敏捷开发,或者哪些技能可以帮助他们找到满意的工作。如果没有编程经验,他们会担心技术上无法立足于敏捷团队。我认为虽然技术很重要,但是态度决定一切。如果你乐于学习,并且努力帮助团队交付优秀的产品,那么作为测试人员,你前途一片光明。我的建议是抓住一切学习机会,主动获取新技能。
我发现许多人从例子中学到的东西比较多,所以这里分享本人的几个故事,讲述了我的学习动力是如何促进事业发展的,希望能够为读者自己的职业进步提供一些启发。
开发人员、测试人员还是领域专家?
测试人员的背景非常广泛。在过去十年间,随着越来越多的开发人员对测试产生兴趣,我见到许多开发人员更乐于把自己视为测试人员。还有许多测试人员来自于业务领域,他们的领域专长对于开发非常有价值。技术作者,必须弄清楚应用程序的行为才能正确表述,所以经常让自己变成测试人员。许多人都是碰巧担当了这个角色,我也是!
来说说我自己的故事吧。我的职业生涯起初是一名开发人员,而且我喜欢编程。测试自动化(本质上属于开发人员的任务)是我最喜欢的工作之一。我热爱测试。我乐于了解业务并想办法促其成功。拥有技术背景让我既适应开发团队又适应业务团队。下面的故事讲述了我的学习旅程:从早期的开发岁月到参与敏捷团队。
对测试的早期认识
和许多人一样,我是偶然进入了软件开发领域。我最初在Texas大学的Austin数据处理部门获得了“开发实习生”的职位。
我的培训老师其实比我早几周入职,也是刚刚接受培训,他们刚学会了编程,然后又教会了我。很快,我就了解了Easytrieve、Cobo和4GL还有层次型数据库的基础知识。我们以相同的方式编写代码,所以彼此的程序易于操作。现在回想起来,集体性的代码所有权非常有用。
在这次培训的数月之后,我很高兴的接受了教育协调员的工作,不仅仅监督开发人员培训,还负责培训最终用户。我们通过课程教育老师们如何执行简单的查询和报告,这节省了开发人员大量的工作。我从这一年的经历(期间我还在日常开发工作)中学到了很多:如何教授他人。
我惊讶的发现从客户和其他开发人员身上受益良多。我们(开发人员和分析人员)与客户坐在一起,讨论他们的需求,并现场画出原型。我们一一展示直到他们确认需求。我曾经加入一个团队来规划图书馆的在线编目系统,与图书管理人员坐在一起了解卡片编目系统是如何运作的。学习不同的领域是我工作中最有趣的部分。我们对测试一无所知,但是与客户的合作帮助我们在发布产品之前提高了软件的质量。
在最初的开发/分析工作中,我学会了如何领导他人。我的老板曾经告诉我做领导意味着确保其他人知道我的团队所做的贡献。我学会了以身作则。在以后的工作中我一直谨记在心,想办法让老板和其他业务上的人员知道我的团队和我自己带来的价值。
在转变中学习
几年后,我在一家大型软件公司担任技术支持,那时对测试和质量保证的概念不太了解。同事和我出于自我防范的意识做了大量测试工作:在客户发现缺陷之前最好由我们自己来找到这些问题。某天,老板问:“谁想做DB2培训?”没人了解DB2,但是我主动请缨。很快,我成为了团队中SQL和DB2专家。
公司发现在客户之前找到缺陷好处多多,所以决定创建第一个测试团队。我再次自愿参与。因为我了解SQL,所以我测试了使用Oracle和Sybase数据库的项目,这些都比我们自己的数据库产品在市场上更受欢迎。
在新的工作中,我开始学习测试的方方面面。我参加了一次测试研讨会了解了更多知识。我们开始尝试测试自动化。我们的软件适应于所有操作系统,因此我有幸学习VAX/VMS、Wang、OS2、AS400和八种不同的UNIX系统。虽然这些经历写到简历上不是那么好看,但是在所有平台上维护测试环境是宝贵的经验。
我们的团队同时负责打包发布。我理解了发布说明和准确文档的重要性,以及如何管理alpha和beta测试。起初这些任务让人觉得很困难,即使现在我也觉得自动化测试是这样。但是我很幸运的受到了来自外部课程、自学教材和同事等各方面的培训和支持。我试着克服困难,不断想办法掌握新技能。
随着在测试、自动化、数据库和操作系统等各方面的广泛经验,我拥有了不凡的技能。这本不是我的目标,起初我只是想学习新知识!不论是技术能力还是有关业务的什么东西,我喜欢在新领域中探索,很值得去做。当公司遇到财政危机时,我找到了一份不错的新工作。
个人关系创造机会
我的新工作很有趣,而且有机会学到新技能。例如,我成为了团队的Powerbuilder专家。我能够花费几个月时间来学习一种测试工具并搭建自动化GUI测试集。最重要的是,一些过去的同事也加入了这家新公司,让我领悟到——这世界真是小啊!
几年之后,在互联网热潮中,我加入了一家web创业公司。我对测试web应用一无所知,但是因为我曾经使用过多年各种测试自动化工具,所以我在因特网上想找到适合web应用的工具。
当我查看工具列表网站时,“OCLC”几个字母吸引了我的眼球。当我在参与在线图书馆编目项目时深入了解了OCLC,因为OCLC一直被用于编目书籍和向图书馆提供服务。奇怪的是,它们在出售一款名为WebArt的测试工具,我决定购买。它的开发者Tip House过来培训我们如何测试web应用和自动化测试。
和许多测试人员一样,我总是在想如何更好地及时交付高质量的软件。互联网世界比数据库产品变化快得多,我对缓慢、瀑布型的过程感到沮丧。尝试一种不同方式的机会很快就出现了。当我们的创业小公司被一家大公司收购的时候,一些同事离职选择自主创业,他们给我一本名为《Extreme Programming Explained》的书,说:“我们准备尝试极限编程。”当我读了这本书,我觉得自己必须尝试一下,请求他们带上我。
第一次加入XP团队之后,我开始学习在XP模式下测试人员应该如何工作,并分享到在线敏捷社区中(虽然那时我们还不称之为“敏捷”)。我惊讶的发现XP专家和其他敏捷实践者非常受欢迎。当Bob Martin大叔过来培训我们时,他建议我给Ward Cunningham打电话请教测试中的问题,并提供了他的手机号。Ward与我讨论了一个小时!如果我听说类似Ron Jeffries或者Kent Beck来访或者出席一个我参加的会议,我会想办法与他们见面,而他们总是很慷慨地花时间会解答问题。Brian Marick帮助我创建了一个敏捷测试邮件组,使我受益良多。
贡献社区获得机会
当我的团队还有那些我通过会议、用户组和邮件列表结识的朋友都认识到敏捷测试技术的好处时,我决定不应该让其他的测试人员和团队继续重复昨天的故事。在XP社区的鼓励下,Tip House和我合著了一本书《Testing Extreme Programming》。许多人帮忙审阅了草稿并反馈意见,包括Janet Gregory。Janet 和我开始组织研讨会和教程。
极限编程的核心是人,而事业成功的要素也是。我运用了个人关系,并最终成为一名演讲者、教练和书籍作者。我不仅成为了一名更出色的测试人员,我还学会了沟通的最佳方式。我经常参加会议,向他人学习,并在研讨会和培训班中阐述自己的观点。这一切都因为我想学习,并花时间与朋友发展良好的工作关系。
我也体验了回报的乐趣和价值。我的第一个XP团队与其他组织发起了本地的XP用户组。我在第一次会议上做了演讲!过去十年间,我通过这个用户组见到了许多优秀的朋友并受益良多,而它只是占用了我的一些时间而已。我努力回报以前获得的所有帮助。我参加了本地用户组,志愿帮忙组织会议,维护着一个测试邮件列表,和其他公司组织一些短期的研讨会,和对测试和敏捷开发存在疑问的团队进行网络和电话会议。我发现帮助别人越多,自学的也就越多。这感觉太好了——回报他人就是帮助自己。
学无止境:开阔眼界
我已经从事软件测试这个职业许多年了,但是不觉得厌倦。我每天都在学习新东西:要么是技术,要么是业务运作上的发现。在同事或者用户组、会议甚至Twitter上的同行的协助下,我尝试了新的开源工具,并且学习了新的脚本语言。这可能很困难,但是值得付出。
例如,我努力学习Ruby,因为我从没掌握过一种面向对象语言。我阅读相关书籍并从同事中获得帮助,通过Ruby编写的脚本让我有更多时间关注更有趣的测试。我参加了一些组织以改进测试工具,如关注测试自动化的Austin Workshop和敏捷联盟功能测试工具委员会。我不仅了解了更多工具,而且见到了许多能提供帮助的同行。
为什么如此重要?
我希望其他测试人员在看到本文时能够感受到我对自己工作的热爱(虽然有时会沮丧:希望自己掌握更多的技能!)来自早期技术支持团队的朋友惊讶于为何我找到一份新工作这么容易,而他们依然挣扎于讨厌的工作中。我不比他们任何人更聪明:我花时间学习并抓住新机会!对学习的时间投入和参与技术社区活动对我的职业发展产生了回报。
这就是我希望读者从我的学习之旅中得到的启示:对自己的职业发展负责。不要局限于技术或者测试技能。了解公司业务领域使你能够帮助他们做出正确选择。现在,请走出你的封闭角落,想一想如何帮助团队和公司。加入一个在线的测试俱乐部,或者志愿帮助本地的测试用户组。买一本新书或者阅读在线的教程。今天就启程可以让你的学习之旅走得更远一些。你会更加喜欢自己的工作,你会获得更多机会,你会让我们所有人为你感到骄傲。
下面是一些测试人员学习的资源:
- Collaboration Explained: Facilitation Skills for Software Project Leaders, Jean Tabaka, Addison-Wesley 2006. These skills will serve you even if you aren’t a ‘project leader’.
- Everyday Scripting with Ruby: For Teams, Testers and You, Brian Marick, Pragmatic Bookshelf, 2007
- “Writing Maintainable Automated Tests”, Dale Emery, 2009,
- Continuous Integration and Testing Conference
- “Google’s ’20 percent time’ in action”, Alex K.
- Exploratory testing articles and blog posts, Jonathan Kohl,
- Agile user groups
- Software Testing Club
- Weekend Testers
- Articles about agile testing
相关推荐
总结,软件测试工程师的实习经历是一次宝贵的学习之旅,它让我在实践中磨练技能,理解软件开发的全貌,并且为我未来的专业道路指明了方向。希望每一位即将踏入职场的学子都能找到自己的定位,积累经验,为实现梦想而...
从一名软件测试新手成长为一名测试架构师,小艾的成长之旅是充满挑战和收获的。他的经历告诉我们,软件测试不仅仅是一个技术领域,更是一个不断学习和适应变化的过程。在这个过程中,理论知识的积累和实践经验的丰富...
虽然给出的部分内容并未包含实际的文字内容,但从标题“云风 游戏之旅-我的编程感悟”以及描述“游戏开发大神云风的经典著作 《游戏之旅-我的编程感悟》”中可以推测出书中可能涉及的关键知识点。 ### 关键知识点...
在本资源中,我们聚焦于“图形渲染管线学习之旅”的第七个阶段。图形渲染管线是计算机图形学中的核心概念,它是计算机将3D模型转化为2D图像的过程,广泛应用于游戏开发、影视特效、虚拟现实等领域。这篇文档将深入...
使用人群:面向软件测试工程师、自动化测试爱好者及希望提升测试效率与质量的专业人士。 使用场景及目标:适用于需要在项目中快速上手TestNG、优化测试流程、提升测试覆盖率和准确性的场景。通过深入学习,你将能够...
《软件测试精品课程课件》是一份全面且深入的教育资源,专为那些渴望自我提升、学习软件测试技术的人群设计。这份课件由资深讲师贺平精心制作,旨在帮助学习者掌握...现在就下载这份课件,开始你的软件测试学习之旅吧!
本教程旨在为你提供全面的软件测试基础知识,帮助你开启软件测试的学习之旅。 一、软件测试基础 软件测试是对软件进行有计划、有组织的系统性检查,目的是发现软件中的错误、缺陷和不足,以提高软件质量,确保软件...
* 测试工程师:在北京天创时代信息技术有限公司任职测试工程师,负责测试计划的编写和测试用例的设计、执行、跟踪并验证 bug 等工作。 四、项目经验 * 极品时刻表项目:在 2009 年 11 月至 2009 年 12 月期间,...
Apache JMeter,作为一款开源的负载测试工具,凭借其强大的功能、灵活的扩展性和易用性,成为了众多开发者和测试工程师的首选。本资源《JMeter性能测试实战指南》旨在为广大性能测试爱好者、开发者及测试人员提供一...
总的来说,这个压缩包提供了一个全面的PyTorch学习资源,涵盖了从理论到实践的深度学习之旅。无论是想要快速了解PyTorch,还是希望深入研究其工作原理,这个资源都提供了充足的支持。对于有志于投身深度学习领域的...
在软件开发过程中,测试是确保产品质量的关键环节。本套“软件测试全套教程【进阶篇】-适合有基础的伙伴”旨在帮助已有...现在,是时候打开“软件测试全套教程【进阶篇】-门道科技”这个压缩包,开始你的学习之旅了。
总之,软件测试生产实习报告是学生软件测试学习之旅的重要里程碑,它不仅是学生个人技能提升的见证,也是我国软件测试教育与产业紧密结合的生动体现。随着实习报告的不断更新和完善,我国软件测试领域必将培养出更多...
【软件测试】是IT行业中一个至关重要的领域,它旨在确保软件产品的质量和性能,减少潜在的错误...抓紧时间下载这些资源,开始你的软件测试学习之旅吧!同时,欢迎探索更多相关的IT资源,以拓宽知识视野,增强专业能力。
无论是对于希望开始自动化测试之旅的新手,还是希望进一步提升自动化测试技能的专业人士,这套教程都能提供巨大的帮助。通过系统的学习和实践,学习者可以显著提高自动化测试的效率和质量,最终在软件测试领域取得...
深度学习是现代人工智能领域的重要分支,它通过模拟人脑神经网络的工作原理,处理复杂的数据问题。Caffe(Convolutional ...通过阅读并实践书中的内容,你将能够熟练地运用Caffe解决实际问题,开启深度学习的探索之旅。
在电子工程师的自学旅程中,理解基础理论与..."电子工程师入门篇.pdf"很可能会涵盖以上这些方面,为你的自学之旅提供全面指导。记住,耐心和毅力是成功的关键,一步步扎实学习,你将逐渐精通这个充满挑战和机遇的领域。
深度学习框架Tensorflow是Google开发的一种...通过这个视频教程,你将有机会系统地学习和掌握Tensorflow,为你的深度学习之旅打下坚实的基础。记得,实践是检验真理的唯一标准,所以一定要动手操作,不断尝试和改进。
机器学习是人工智能的一个重要分支,它致力于让计算机通过学习数据而不是明确编程来改善其性能。...观看该视频,你将有机会跟随经验丰富的算法工程师,一步步深入理解和应用机器学习,从而开启你的AI之旅。