测试工程师的学习之旅
软件行业发展迅猛。越来越多的团队开始重视测试,他们利用测试驱动开发。全新的或者改进的自动化测试和驱动框架层出不穷。团队在采用更多自动化回归测试之后,需要测试人员具有精湛的探索性测试技能。但是大部分人在校园里中学不到这些必要的技能,那么测试人员是如何炼成的呢?
同时,我发现一些人在努力寻找让自己满意的测试工作。测试人员经常问我如何融入敏捷开发,或者哪些技能可以帮助他们找到满意的工作。如果没有编程经验,他们会担心技术上无法立足于敏捷团队。我认为虽然技术很重要,但是态度决定一切。如果你乐于学习,并且努力帮助团队交付优秀的产品,那么作为测试人员,你前途一片光明。我的建议是抓住一切学习机会,主动获取新技能。
我发现许多人从例子中学到的东西比较多,所以这里分享本人的几个故事,讲述了我的学习动力是如何促进事业发展的,希望能够为读者自己的职业进步提供一些启发。
开发人员、测试人员还是领域专家?
测试人员的背景非常广泛。在过去十年间,随着越来越多的开发人员对测试产生兴趣,我见到许多开发人员更乐于把自己视为测试人员。还有许多测试人员来自于业务领域,他们的领域专长对于开发非常有价值。技术作者,必须弄清楚应用程序的行为才能正确表述,所以经常让自己变成测试人员。许多人都是碰巧担当了这个角色,我也是!
来说说我自己的故事吧。我的职业生涯起初是一名开发人员,而且我喜欢编程。测试自动化(本质上属于开发人员的任务)是我最喜欢的工作之一。我热爱测试。我乐于了解业务并想办法促其成功。拥有技术背景让我既适应开发团队又适应业务团队。下面的故事讲述了我的学习旅程:从早期的开发岁月到参与敏捷团队。
对测试的早期认识
和许多人一样,我是偶然进入了软件开发领域。我最初在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
关于作者
Lisa Crispin与Janet Gregory合著了《Agile Testing: A Practical Guide for Testers and Agile Teams》,参与编写了《Beautiful Testing》,她在过去十年间在敏捷团队中担任测试人员,喜欢通过写作、演讲和参与敏捷测试社区来分享其经验。如果想了解更多有关Lisa的信息,请访问www.lisacrispin.com。
查看英文原文:A Tester's Learning Journey