软件测试正在逐渐发生演变。曾几何时,测试的目的就是为了验证软件是否符合规格说明。测试人员往往在项目的很后期才加入,并且很少体现出影响力,但这一点正在逐渐转变。Cirilio Wortel在 荷兰2015敏捷测试日大会 上登台演讲,内容就是软件测试的演变 – 从保证(insurance)到影响(influence)。以往招聘测试人员的目的就是验证软件是否遵守规格说明的需求,而完全不管规格本身是好是坏。当时对于测试人员的奖励完全取决于他们所发现bug数量的多少。
Cirilo谈到了他作为测试人员,所参与的一个为荷兰UWV(荷兰就业机构)所开发的项目。他只是简单地看了看规格,就能够明显地看出这个软件不可能正常运行,他们所开发的这套系统永远也不可能上线。这个项目的承诺过多,并且在规格说明中的某些部分根本就是错的。这种情形很令人沮丧,因为测试人员不允许对功能性逻辑提出任何疑问,他们只允许从测试的角度来理解需求。随后在项目中尝试了多个解决方案,试图解决这些问题,但由于最主要的目的是对规格的遵从,因此这些方案完全不起作用。试图解决这些问题的所有努力都只专注于表面现象,而不是真正的解决方案。测试人员完全被摒弃在这个过程之外,他们唯一的作用就是尝试破坏该系统,并且尽可能记录下更多的bug。
现如今,测试人员越来越多地参与到需求分析流程,以及软件开发本身的流程中。测试不再是一个独立的任务,测试人员将通过测试的角度,为业务分析师、架构师和程序员提供支持。新的需求分析技术也开始演变,它们更专注于需要构建“什么”,而不是“如何”构建它。由于测试的关注点从对规格的遵循转变为对规格的精炼,测试人员也因此在实际生产出的产品中起到了更大的影响力。
随着软件开发的逐渐成熟,以及持续交付这一概念的提出,新的工具与技术不断涌现,以实现更高实时性的分析。在指定新的特性时,其中会包含所期望的行为,以及可衡量的结果。这些期望如今可以在开发周期中进行验证,但也可以在生产环境中进行验证。技术方面的东西可以进行监控,可以使用A/B测试的手段对针对某个问题的不同方案进行比较,也可以通过使用情况分析报告对功能性需求进行验证。
InfoQ采访了Wortel,谈到了他对测试当前正在发生的转变的看法,怎样让测试人员发挥更大的影响力,以及测试人员如何为应对将来在测试方面的发展做好准备。
InfoQ:你谈到了测试当前正在发生的转变。你能详细地说明一些正在发生的主要转变吗?
Wortel :重要的是,要理解这是在测试方面 我 的转变,我在演讲中已经概括了这方面的许多内容。
对于我来说,在2000年那段时间是非常令我受挫的,我能看到车辆飞速地奔驰,而我却无法使它调头,甚至无法降低它的速度。作为一名测试人员,我的影响力相当有限,无非是在bug跟踪工具中加入一些新内容,很难保证这种工作会产生任何实际的影响。测试往往很后期才结束,它完全是一种反应性的活动。大多数测试完全被团队摒弃在外,并且对于所创建的软件不承担任何职责。在我看来,这一点很大程度上是取决于整个产业的组织方式的。没有人对于大型的项目具备清晰的认识。由于项目采取公开招募的方式,因此各大咨询公司没有别的选择,只能通过不断进行变更和积极地争取重做的方式,才能把钱从客户的口袋中掏出来。他们对于将任务“完成”这一点完全不感兴趣。招聘测试人员的目的就是出于质量保证的策略,替人背黑锅而已。
这些年以来,测试人员正变得更具有自我意识,在标准、工具和技术方面的专业性也更强。但直到敏捷方法出现之前,测试人员的影响力还是很有限。测试经常被认为是瓶颈,是一种需要处理的必然的邪恶。为了解决这个问题,出现了各种胡扯的方案。一大批没有经验的测试人员、框架、脆弱的测试自动化工具、审计、检查、认证,这些东西的目的只是为了产生更多的咨询行为,但几乎没有取得任何正面的效果。
InfoQ:这些改变是如何影响测试人员的角色的?
Wortel :自从我在2007年接触到敏捷之后,我在实践中发现自己作为测试人员的角色的价值大大提升了。我能够为团队带来转变,用我的批判性思考能力和领域知识帮助团队交付价值。我感觉到自己做出了贡献,而不仅仅是破坏软件而已。
和其它任何转变一样,对于许多测试人员来说,向敏捷软件开发这种方式的转变也伴随着阻力和不确定性。我相信,在这些年的经验之后,许多测试人员已经适应了他们的新角色,并且对于为他们本身的专业领域之外的东西承担责任也不是那么抵触了。多来以来,测试人员的工作都是被动的、无人关注的,而突然之间对于他们的期望产生了转变,他们要更加主动积极,并且与开发者与业务干系人紧密合作。敏捷测试的要求是,你要打破惯例思考问题,而角色的定义也不那么清晰了。测试的重要性从单纯的测试执行转为需求分析工程,而测试自动化也逐渐变得更为重要了,这也要求了测试人员要掌握更多技术,而沟通技巧也变得尤为重要。
InfoQ:对于想要在战略上发挥更大影响力的测试人员,你是否能够提供一些建议?
Wortel :我的经验告诉我,只要你尝试对整个交付过程中的任意部分做出贡献,你就会赢得其他干系人对你的尊重。我个人天生就有很大的好奇心,喜欢经常提问。一旦你理解了某个流程的工作方式,通常需要一些常识(和测试的心态),你就能够创造价值。一开始时,其他人对于接受你的意见可能会显得犹豫不决,但只要你坚持下来,迟早有一天你们的角色会掉转过来,人们会开始征询你的意见。我在实践中多次看到这一点,它可以发生在需求分析工程、开发、管理和运维等各个方面。作为一名测试人员,你对事物的看法往往比其他角色更加开阔,项目干系人的专业能力往往限制在某个特定的领域中,这使他无法看到全局。
InfoQ:测试人员要想更多地参与整个流程,需要做些什么?
Wortel :在我现在参与的项目VNU Vacature Media中,整个流程是内置在团队中的。我们进行持续交付,并且我们的基础设施对于流程来说是非常重要的。每个提交都会立刻发布到产生环境,并且整个系统都处于严密地监控中,以确保它的稳定性。由Ops成员所维护的基础设施为我们提供了很有价值的工具,让我们的工作变得更有效率。如果我在探索性测试中看到任何奇怪的现象,我可以很快地通过Logstash和Kibana这样的工作进行跟踪。而通过使用Graphite,我们还可以看到当前的性能和内存占用的情况。
除了这些非功能性的目标之外,这个基础设施的灵活性为我们提供了进行A/B测试的手段,以观察使用情况。在产品上线前预先定义预测值,然后根据结果评估我们是否达到了预测的期望,这为我们提供了极有价值的反馈,让我们了解产品所创造的实际价值。我们不再限制于软件开发周期,而是将我们的工具推向生产环境与实时的使用数据报告。
InfoQ:你对于未来在测试方面的发展有什么期望吗?
Wortel :我很乐于见到手工测试的比例会变得越来越小了。在探索性测试中通过真实的人类互动体验系统的行为依然是很有价值的,但多数bug在需求阶段就应当被避免。这是通过为所期望行为创建一些真实的示例,并且在所有项目干系人中实现一种共同的理解而做到的。自动化测试是在开发阶段实现的,并且将用于指导实际的实现过程。我最近所感受到的一个现象是,“发布”这个概念的想法由于持续交付的出现而消失无踪了。我们的角色仍旧在不断变换,而我们必须变得更为融入集体,将所有的能力集中在一起,而不是遵循那些预定义的角色。
InfoQ:为了应对未来,测试人员应当如何进行准备?
Wortel :拥抱变化、分享知识。不要对你的角色表现出防卫性,而是让它变得公开,尝试着寻找与其他所有专业的成员协作的机会。让你自己能够被他人想起,并且做到直言不讳。尝试在你所参与的项目,以及整个社区中寻找具有类似想法的人,扩展你的知识,不断地尝试离开你的安乐窝,去尝试新的东西。
查看英文原文: Agile is Giving Testers More Influence