成为一个专业QA的另一个关键技能,不是测试的技能,而是其他的技能。想象一下你希望加入一家规模较小的公司或初创的公司,只有测试技能,可能无法确保你能应聘上这份工作。但是,如果你能够做些其他工作,如自动化编译版本,搭建Web服务器,创建部署脚本。你将有更大的机会被录用(因为你可能不是全部时间都在做测试,所以,如果你能在同一时间做很多不同的事情,那你将是一个非常不错的候选人)。
为什么我们应该立志做一个专业的QA,而为什么不干脆永远做一个软件测试员?做一个优秀的软件测试员,是同时需要编码技能和测试技能。然而,我们需要在未来选择一个领域来深入,要么编码要么测试。这真的取决于你是否对软件测试有激情,和是否把它作为一种事业。如果你喜欢测试本身,成为一个专业的QA是一条很适合的职业发展道路。此外,同时拥有编码技能和测试技能将是你去应聘其他公司的QA职位时的亮点之一。另一方面,我也看到很多软件测试员对今天的工作并不满意,而且我认为根本原因是,他们有着工程师的根(engineering root),并不喜欢测试。如果你真的喜欢编码,转行到开发或做更多的测试自动化,测试类库的开发可能是你的方向。在过去,我们曾经有两个独立的角色:SDET,STE(软件测试工程师),一个专注于自动化,另一个专注于测试,和许多公司一样,他们也有类似的角色,如亚马逊,谷歌。我认为这有一定道理。
我们可能会从上面的定义中注意到的一件事,质量保证是许多行业都有的职位,不仅仅在计算机软件行业。例如,在汽车行业,QA是负责审查我们的汽车是否符合质量要求(meets the quality bar)。不幸的是,在软件行业的QA还不够成熟。今天,几乎没有哪个学院设立软件测试专业或者设置一个软件质量保证的学位。我们中的许多人选择软件测试员作为我们的职业,因为我们被雇用来担任测试员,并不是我们喜欢做测试。我们看到了很多关于测试员(SDET)在公司内外职业发展的博文和文章,我们还将在不久的将来持续看到这种情况。只是因为测试作为一个专业的职业还不够成熟,我可以预言,这里面很快就会发生很大的变化(例如,在必应(Bing)团队中,我们做了一种改革, 没有单独的测试员, 所有人都是软件开发工程师, 每个人都负责自己的程序的质量时,我们采用在生产环境测试(Testing in Production),把测试员的角色调整到更广的服务监测和运营领域中)。
成为一个测试架构师
在本节中,我想讨论我们如何能够成长成一个测试架构师。在这里,测试架构师不是一个头衔(title),而是一个角色(role)。例如,如果你在很多测试工具 / 框架上都做出了突出的贡献,你可能有一个测试架构师的头衔,你也可能不是一个测试架构师。同样,一些软件测试员在他们的公司中扮演测试架构师的角色,但他们没有一个测试架构师的头衔。
测试架构师的角色意味着什么呢?在这里,我列出了测试架构师应该着眼的几个重要领域:
定义一个功能的整体测试策略,比如,如何测试一个浏览器,如何测试一个云数据库等;
某个测试领域的专家,如安全性测试,性能测试,云测试;
在团队中引入或发明新的测试方法,如探索性测试,众包测试(crowd sourcing testing);
根据具体情况指导和培养团队;
思考测试的未来和测试员的职业发展的未来,并为未来做好准备;
参与测试相关的活动,如测试访谈,会议,博客;
怎样才能成为一个测试架构师呢?首先,它不是一个简单的事情,你需要先成为一个专业的软件测试员。作为专业的软件测试员,你会在你的日常工作,提高上述的能力,再成长为一个测试架构师。另外,许多架构师都在不同的公司、团队中接触过了不同的项目,所以都是非常有经验。参与到不同类型的项目之中,你总是能得到一些新的想法。最后,你必须有一种能力,即在任何项目中能迅速地适应变化(adopting change),并做出贡献。这个技能对测试架构师来说非常重要。
今天有一些测试架构师为其他公司提供咨询服务。他们通常有广泛的知识,敏捷开发,项目管理,沟通技巧和风险管理,并帮助拯救许多几乎失败的项目(help to survive many nearly failed projects)。他们是最好的专业软件测试员,并在相关领域中获得了尊重。
成为一个领域专家
今天,我想说我们软件测试员的职业生涯中最重要的一条路,就是成为一个领域的专家。我们必须认识到,我们当中许多人最终是不会成为测试工具的开发人员或测试架构师。他们将成为专业的QA,一个领域专家或只是转行到一个新的岗位。就个人而言,我更喜欢你考虑在领域专家这个方向努力。
领域专家是谁?
让我来回答这个问题。假设你测试特定的软件测试五年,那你有资格成为一个领域专家吗?答案是不一定,取决于领域专家的定义。
举例来说,我已经测试了SQL Server六年。我很熟悉数据类型,排序规则(collation),并能编写基本的SQL查询语句。“领域专家”在这种情况下,应该能够设计数据库应用程序或者管理数据库。为什么我这么来定义领域专家,因为它是搞数据库的人在其他公司找工作时一个基本要求(一个数据库开发人员或一个DBA)。我能胜任领域专家吗?我并不这么认为,因为我只知道SQL Server的一小部分。而我对这些都没有经验,比如,设计一个数据库架构(database schema),开发一个使用的数据库的应用程序或者管理大量的SQL Server实例。所以我很难找到一个数据库开发人员的工作或一个DBA的工作。
正如你可以从上面的例子中看到,“领域专家”是的的确确取决于上下文。如果你在Windows团队中工作,“领域专家”就应该知道安装 / 配置 / 管理Windows或者能够编写基于Windows的软件。如果你在Visual Studio团队中,“领域专家”就应该知道如何使用Visual Studio和.NET编程。如果你在Windows Azure和SQL Azure中,你就应该知道如何通过使用所有可用Windows Azure的技术来构建一个可伸缩的应用程序。从这个意义上说,领域专家,需要你有一个全面理解,而不只是在某一小块里非常深入而已。他同时还关注于最终用户是如何得使用我们正在测试的软件或服务。
原文转自:blogs.msdn.com/b/qingsongyao/archive/2012/12/14/tester-s-career-series.aspx