第一部分 - 成为资深软件测试员的四条进阶之路
在这篇文章中,我认为我们的软件测试员有四条潜在的进阶道路。它们是:
1)成为专业的QA。知道如何使用不同类型的测试工具开展网络测试,性能测试,负载测试和压力测试;
2)成为领域专家。可以像最终用户一样来使用你正在测试的产品;
3)成为测试架构师。可以领导整个团队和整个公司的测试以及质量保证;
4)成为工具和框架的开发人员。可以开发出世界一流的测试工具; 我还将讨论工程师的其他进价道路,比如转行去开发人员或PM,改变你的工作领域。
1.1 成为专业的QA
在本节中,我想讨论成为资深软件测试员的第一条进阶道路,是成为一个专业的软件测试员。在许多公司里,我们称软件测试员为QA(质量保证),QA这种角色在微软成立软件测试员(SDET)这种角色之前,便存在了很长的时间。你可能想知道的质量保证和软件测试员(SDET)的区别是什么。我们的测试员是质量保证吗?
让我引用这里的QA定义来开始我们的讨论:
QA 代表质量保证,它是一个框架,以确保在符合规定要求下进行开发和制造产品,例如药品,农药和医疗器械。
这是一个需要个人成长 ,实现和持续改进的质量体系 ,不,这不仅是另一份工作。事实上,这是一个跟其他工作都不一样的工作。
作为一个专业QA意味着你会得到一个真正的机会,去影响工作实践和提高质量的标准。这个职位,能够提供多种个人的、职业的发展选择,在不同的项目、过程和地方里扮演不同角色。这是一个真正负责任的职业,同时也要求个人的真正能力。
你可以从上面的定义看到,QA是一个专业的职位,如牙医,教师一样,它需要自己的技能。在我担任软件测试员的整个职业生涯中,我关注了许多专业QA的博客。比如James Bach,James Whittaker,Elisabeth Hendrickson,Cem Kaner和许多微软内部测试架构师。他们教会我什么是软件测试,为什么我们需要测试,以及我们如何做测试。那么,他们之间有什么共同的地方吗?他们都是世界上的最好QA。他们都有非常深厚的测试知识,如基于模型的测试(ModelBasedTesting),探索式测试(Exploratory Testing),生产环境测试(Testing in Production),基于情景的测试(Scenario Based Testing)。他们乐于分享,活跃在社交网络之中,常常把他们想法分享给我们广大的软件测试员。这非常棒,让我们可以看到现在有许多很好的测试技术和技术日新月异的变化。
正如你看到的,成为一个专业的QA,重要的因素不是编码的技能,而是测试的技能。另一方面,软件测试员(SDET)可算是一种专攻的测试用例自动化的软件工程师。换句话说,SDE们(软件开发工程师-Software DevelopmentEngineer)为实现产品而编写代码,而测试员(这里实际指SDET软件测试开发工程师-Software Development Engineer in Test)们为自动化测试而编写代码。编码技能,是我们的测试员应有的最重要的技能之一(如果你的代码能力不够强,我预计,微软将不会聘你为测试员)。
然而,作为一个软件测试员并不妨碍你成为一个专业的QA,反而你还有很多成功的机会。在我们的日常工作中,我们有很多机会去学习新的测试方法并可在我们的项目中进行实践再掌握它们。能够深刻得理解测试方法,并能够在你的测试策略中使用它们,对测试项目成功来说是非常重要的。
那么,如何才能胜任一个专业的QA?你必须做到:
-
知道并使用不同的测试方法,比如基于模型的测试,探索式测试,用户界面测试(UI Testing);
-
在一些领域有深入的测试知识,比如性能测试,网页(web),手机应用测试,安全性测试(或一个安全专家);
-
熟悉一些测试工具,比如JUnit,NUnit,MSTest,Selenium或商业QA工具,如HP负载测试工具(HP Load Running),或VSTS负载测试工具;
让我解释一下,成为一个专业的QA,我们为什么需要第二个和第三个技能。当一个公司想雇用一个QA,他们通常都有一个明确的期望,他们想雇用一个什么样子的QA。由于不同领域的测试方法可能有着显着不同,因此QA趋于更专业,一些QA擅长安全测试,而另一些QA具有网页设计经验。公司想要招聘一些在某些领域内有经验的人,那才能够解决他们的迫切需要。例如,当正在开发一个网站时,我们可能会想雇用一些熟知性能测试、网站基础设施的人,以帮助测试网站的可扩展性。如果你能熟知流行的网络测试工具,那将是你的一大优势。例如,如果你知道Selenium,最流行的WebUI测试工具之一,它会给你在就业市场上的增加你的竞争力。在大公司里工作,比如微软,它同时会带有优势和劣势。就优势而言,你将有机会做不同类型的测试,并培养你相应技能。另一方面,你可能会使用内部测试工具(不公开性质的那些工具)。你也可能只是测试系统里的一小部分(也就是说,你可能对你负责的那块进行了非常深入功能测试),但很少有机会测试整个系统。如果你在一些领域有深厚的功底,如安全领域,或性能领域,你会在未来有更好的职业生涯。(未完待续)