测试左移:软件成功的秘诀
当我提到“测试左移”,你也许想知道这个词是什么意思。
20多年前,在软件开发过程中是没有单独的“测试阶段”,测试人员的角色根本就不存在。开发人员开发软件,然后测试,最后发布。
当缺陷开始占用项目的预算的时候,软件测试的概念逐步被引进,因此“功能测试”就造就了很小的测试团队。那个时候,测试和开发人员差不多1:10的比例。
IT行业开始使用瀑布模式,我们都知道,瀑布模式的软件开发生命周期是“需求”->“设计”->“编码”->“测试”。
所以,如果你是按照上面从左到右的顺序,那么测试阶段就是软件开发生命周期里属于极“右”的了。
测试左移的概念介绍
过去很长一段时间,人们意识到软件测试的重要性,以及极右或是说在软件开发周期的最后阶段保留“测试阶段”的影响力。之所以会发生这种是因为bug的成本在后期是非常高的,需要花费很多精力和时间去修复。甚至严重的情况是产品都不能按时发布,导致很大的损失。
“缺陷越早发现成本越低”
意识到这个道理经历很大的教训,所以在软件行业一个巨大的革命应运而生,被叫做“测试左移”,它的意思是把测试阶段从右向左移或者说每个阶段都把测试和测试人员都参与进去。测试左移也意味着不是在最后阶段进行测试而是一直持续测试,在每个阶段都持续测试。
什么是测试左移?
首先,测试左移的原则支持测试团队在软件开发周期早期和所有干系人合作。因此他们能清晰地理解需求以及设计测试用例去帮助软件“快速失败”,促使团队更早的修改所有的bug。
测试左移并没有什么独特的,只是让测试人员在软件开发生命周期内更早的参与进来,同时让他们去理解需求、软件设计、软件架构以及软件功能,也让他们去向客户、商业分析师和开发人员问问题,寻找答案,提供反馈结果已达到支持团队的工作得可能性。
参与和理解会使测试人员获取产品完整的知识,彻底想清楚各种场景,根据软件行为设计实时的场景,这些都会帮助团队在编码完成之前识别出一些缺陷。
测试左移对软件开发有怎样的影响?
下面列出几点:
左移聚焦在使测试人员在全部和最重要的项目阶段参与进来。这就是测试人员把焦点从发现bug转移到bug的预防上,同时也驱动项目的商业目标。
左移提高测试重要性,使测试人员的角色和责任都有极大的提升。
随着测试团队的责任的提高,团队不在仅仅聚焦在“测试软件去发现bug”,而是积极团队合作,参与项目初始阶段的计划和建立强壮有效的测试策略,而测试策略又为团队提供好的测试领导力和指导,使团队聚焦在产品的长远的视角,而不仅仅是测试工作。
左移首先为测试人员提供了设计测试的机会,无论这些测试是被聚焦在客户的体验还是期望,也促使开发人员根据这些测试去开发软件以满足客户需求。
左移并不是仅仅是测试人员的事。向左移动,持续执行测试活动也使开发发挥身为代码所有者的主动性,提高测试责任。
左移也鼓励测试人员去适应行为驱动开发(BDD)和测试驱动开发(TDD),预防软件bug。
敏捷中的测试左移:同样左移也适用于敏捷团队,测试人员也和其他角色一样参加每天的站立会议,评审会议,这会使他们了解更多的产品信息,能够很好分析产品细节并做出反馈,预防bug。
总之测试左移需要测试人员“尽早参与”,尽可能参加每个阶段的讨论和团队合作,都能对最终交付产生价值,帮助项目提前识别风险并做减轻计划。
在左移中测试人员应该做哪些不同的事情?
在左移策略中,下面几点是测试人员应该做的几个关键因素
#1)测试团队需要项目初始阶段尽早参与,以便更好的团队整合以及在软件开发的每个阶段对业务都能提供有用的输入。
#2) 测试团队应该和业务&运营团队一起工作,这样对项目会得到更明确需求,提供清晰的观点,培养新人也更有针对性,对培训和测试工具需求也能提前准备。
#3) 测试团队必须和业务人员在软件开发早期进行沟通,这样去获取对产品更清晰地认识,也可以制定统一的测试策略和计划去优化测试,分析测试环境的从属关系,需要的第三方应用以及准备健壮的自动化策略和框架,建立有效的测试数据管理计划。
#4) 测试团队必须和其他团队成员一起,为团队提供较好的测试领导力和指导工作,使团队聚焦在产品的长远的视角,而不仅仅是测试工作。
#5)需求是项目成功的关键和基础,好的需求就决定了项目的成功。在需求计划阶段,测试人员需要评审和分析模糊的、更加清晰地、完整的、可测的以及符合验收标准的等等需求。
同时也需要去识别有没有遗漏的需求,理解需求的关联性,实施相关测试策略。清晰地需求帮助软件“更快失败”,能尽早修复所有失败。
#6) 用真实的栗子阐述功能会使需求更加明确和精细。
#7) 测试人员需要定期参加设计评审会议,理解产品设计和结构,识别设计缺陷,建议不同的设计选项,相应的分解设计创建测试场景。
#8)测试人员需要提前很好的执行静态测试(评审),在关键项目文档上提供反馈,所以可以预防缺陷,达到预防效果。
#9)测试团队应该和设计、开发团队合作,测试团队提前提供测试场景,然后开发代码,处理所有可能的实时场景及业务流程。
#10)测试团队不得不设计健壮的测试场景,因此只要一部分bug在测试过程中被发现,在测试阶段大部分的bug都被预防了。
#11)测试人员必须尽可能早的去测试,无论是在独立的还是本地系统上,以至于缺陷不会在下个阶段出现。
针对测试人员关于测试左移概念关键是通过各种方式尽可能提前发现缺陷。
测试左移的好处:
测试左移是依据敏捷宣言而来的,同样也有几点优势。
他们是
个体和互动高于流程与工具
工作的软件高于详尽的文档
客户合作高于合同谈判
响应变化高于遵循变化
也就是说,尽管右项有其价值,我们更重视左项的价值。
概括来说,测试左移流程是:
尽早发现bug,减少项目成本
一遍一遍持续测试,减少收尾阶段的bug
所有事情做自动化,尽早上线
聚焦在客户需求,提高客户体验
结论:
“测试左移”的概念给整个测试角色带来了巨大的转变。直到现在,测试不仅仅是“发现bug”,现在它已致力于“从早期bug的检测到预防”的一段旅程中。
因此,从软件开发方法论中,测试左移在软件行业是很大的进步,尤其是更快的面向市场,提高软件质量方面。