我们正在经历技术行业的裁员浪潮。软件测试人员通常是最先被解雇的人:他们没有可见的交付成果,他们不编写代码,他们发现的缺陷“只会拖慢开发进度”,等等。那么为什么还要留着他们呢?
事实上,测试人员做了很多看不见的重要工作。他们是工程设计和产品开发之间的粘合剂,实际上有助于加快向客户交付优质产品速度。
人们通常如何看待测试人员
测试人员通常被视为仅仅是在功能开发完成后对其执行测试用例的人。或者,如果我们谈论自动化测试,测试人员就是编写自动化测试并维护它们的人,并报告发现的问题,仅此而已。
七年前,当我开始质量工程师的职业生涯时,我的理解也同样狭隘。我的日常工作就是根据产品负责人编写的需求创建测试用例,然后在开发完成后执行测试、记录发现的缺陷、验证缺陷修复。
我没有意识到测试工作远不止于此。但后来,我换了工作,加入了全球的各种测试社区,并与来自各行各业的人交流。这让我大开眼界:测试人员在软件开发团队中扮演的角色要比我上面描述的广泛得多。我了解到的这些新信息,开拓了我的视野,并改变了我的工作方式。
改变对测试人员和对软件测试的看法
在现代企业中,测试人员是团队的积极成员,从开发周期的一开始就参与其中。在需求定义阶段,我们协助去做风险分析。我们研究需求,明确需求中的分歧和不确定性,识别可能威胁产品的风险,并促进产品与开发人员之间的讨论。测试人员从技术和业务两个角度了解产品,这使我们能够带来新的视角。我们经常会提出别人可能不会提出的问题。有时,这样的问题会引起讨论,但其结果对公司有益。
测试人员在需求收集和设计过程中,也会提供帮助。我记得有一天,一个产品负责人提出了一个关于新功能的想法。他发起了一次团队启动会议。开发人员很喜欢这个想法,并开始着手解决方案。幸运的是,团队中的测试人员主张先调查再行动。这个测试人员,曾在公司的不同团队中工作过,并且很清晰之前做过的那些工作,他指出,类似的功能在我们的某个产品中已经存在了,也许可以与负责的团队协商,并复用相关的实现方案。事实上,我们就是这样做的。
通过这种方式,我们大大降低了成本。新功能不需要新的设计或编码,我们成功地保证了SaaS解决方案中用户体验的一致。
测试如何加快部署速度
人们可能认为测试会减慢开发速度。测试意味着再实施过程中需要做更多的工作,当开发人员说:“已经完成了,可以部署到生产环境了!”却听到还有问题需要修复才能发布时,这肯定很烦人。测试人员执行他们的脚本并进行检查,找到越来越多的问题,并要求修复这些问题。然后,开发人员需要投入时间和精力来解决发现的问题,而不是“直接发布”。
与普遍观念相反,测试推动着整个流程向前发展。从探索性测试到运行自动化脚本,测试人员在开展不同活动的过程中会识别到不同的问题,并及时与相关人员沟通。测试人员不仅提高了对产品开发状况的认识,还会倡导修复发现的问题,并常常加速开发过程。
尽管发布新功能可能看起来比其他任何事情都更有价值,但实际上,如果一个错误被发布出去,客户会抱怨新功能中的错误,开发人员在已发布的功能和新功能之间来回切换的心理成本,实际上会减缓新项目的进度。
产品发布:结束与新的开始
终于,产品发布了。开发和测试执行工作已经完成,该功能可以供客户使用了。耶!人们可能会说,测试人员的工作到此为止了,现在是专注于新功能的时候了。然而,事实并非如此。
新功能发布后,我们会分析相关的指标:它的速度和可靠性如何,新功能对整体产品的性能和稳定性的影响如何。这对于识别软件的关键部分和未来工作的优先级非常重要。我们还会关注新功能的使用情况:客户是如何使用它的,他们提出了哪些问题,以及他们主要遇到了哪些困难。
在去年的一次会议上,我分享了用户体验数据对制定测试策略的重要性,并解释了测试人员需要了解这些才能高效地完成工作。如果我们知道客户在某个地方遇到了困难或陷入了困境,我们会大声表达出来,以便我们的团队能解决这些问题,并提倡高优解决。在另一种常见情况下,如果某个功能没有被广泛使用,那么在修复内部发现的小缺陷上投入时间和精力可能就没有太多意义了。
测试人员的工作永无止境
我们的工作永无止境。我们是团队的纽带,我们从开发人员、产品经理、设计师、客户支持工程师和其他利益相关者那里积累知识,我们还能纵观全局。在测试人员的工作中,所有这些关于产品的观点都很重要,而在公司中几乎找不到其他角色拥有这种知识。
这种独特的技能和知识的结合,使我们在遇到任何有关 “现在如何工作 “的问题时,都能成为最合适的人选。我们了解当前的状态,并能协助弥合愿景与现实之间的差距,从而极大地简化开发工作。
现在你已经知道了测试人员真正的工作内容,那么在解雇他们之前,请三思而后行。