国网电子商务有限公司 100000 北京
摘要:随着软件行业的飞速发展,采用传统测试模型将面临很大的挑战。如今敏捷开发流程被广泛的应用在软件开发周期中,为了能够提升测试效率,适应敏捷高度迭代的开发过程,满足市场快速响应需求变化,同时结合敏捷测试的思想,总结归纳出了基于Scrum方法的敏捷测试的策略。它强调团队成员间的沟通、协作,注重跟随需求不断调整速度,具有较强的协作性、迭代性、适应性、高效性并贯穿在整个软件开发周期过程中。
关键词:Scrum方法;传统测试过程;敏捷测试
前言:
高速发展的信息与网络技术不断推进着各行业的发展进程,使得软件需求变化的越来越迅速,为了在新的市场环境中占据有利的地位,软件产品既要充分适应市场变化,又要具有更为快速的发版迭代。随着敏捷开发过程广泛的应用于软件开发的实践中,越来越多的人也逐渐关注软件测试工作,如何使软件测试适应敏捷开发过程的快节奏,引发了大众的思考。软件测试在软件产品的整个开发周期中占据着非常重要的部分,面对多变的市场环境、越来越复杂的软件系统,采用传统的测试方法、模型来实现高效快速的发版迭代,将会使得测试工作面临着很多的挑战和难题。因此无论是传统开发的软件测试,还是敏捷开发的软件测试,在这快节奏的、竞争非常激烈的时代,测试敏捷化将会成为一种趋势。
在国内,相较于敏捷开发,敏捷测试的理论体系总体起步较晚,其中敏捷测试的相关理论知识累积严重不足,具体实践更是少之又少。在这种市场环境下,需要新的测试模式能够提高软件测试的速度,又能确保软件产品的质量,同时适应市场快速发展的节奏,因此一种测试模式出现在大众的视野中—基于Scrum方法的敏捷测试,它既提升了工作效率也降低了成本。在本文中,首先对Scrum方法、敏捷测试进行了概述,也对传统的测试方法与敏捷测试方法进行了对比分析,总结了基于Scrum方法的敏捷测试的优势,其次结合基于Scrum方法的敏捷测试的理论,更为详细的论述了基于Scrum敏捷方法的软件测试过程。
1、Scrum方法的概述
Scrum是敏捷方法中的具体实现框架,也是敏捷方法的典型代表,其中Scrum是一个增量、迭代的开发过程,每一次迭代像一个“迷你瀑布”。Scrum使我们能够不断地检验软件,并把新增功能需求通过较小的循环逐步迭代添加到项目中,每个循环被称作一个冲刺(sprint)[1],其中每个冲刺开始时需求都很明确,它包含此次发布迭代增加的功能。Scrum要求测试、开发、产品采用每日站会和迭代回顾会的形式来确保正确的沟通与协调。
2、敏捷测试的概述
在敏捷宣言的12条原则里没有谈及到敏捷测试,并不能说明没有敏捷测试。虽然目前对敏捷测试没有一个明确的定义,但通常认为敏捷测试是符合敏捷宣言思想并遵守敏捷开发原则,为了适应敏捷开发而设计的一种测试解决方案,它既能够支持持续交付,也涵盖了对应的测试流程。在敏捷开发模式里的每一次的迭代中,敏捷测试能够快速地调整测试的重点和目标,以便快速拥抱变化并及时响应用户的需求变更。敏捷测试人员在独立完成各项测试工作的同时,也更为强调实时沟通,需要全程参与团队的讨论与决策[2]。
3、基于Scrum方法的敏捷测试的优势
在传统的软件测试过程中,也有着较多经典的测试模型,如V模型、W模型和H模型等,是传统测试过程中不可缺少的环节。但这些测试模型存在着一定的局限性和弊端,导致传统的软件测试耗费了大量的成本,却没有成正比的成果。随着敏捷开发模式的不断推广和应用,给国内软件带来了崭新的面貌,以及质量与效率的飞跃。那么基于Scrum方法的敏捷测试也逐渐被应用在敏捷开发模式中,相对于传统软件测试过程具有很大的优势,可以概括如下:
(1)在传统测试迭代过程中,测试人员介入较晚,导致在后期阶段缺陷数目上升,质量风险集中触发,而敏捷测试是将测试前置,降低风险;
(2)传统测试更具有阶段性,由需求评审到最后出测试报告多个阶段组成,而敏捷测试更强调持续测试和质量反馈;
(3)传统测试强调测试的计划性,有着严格的需求变更控制,而敏捷测试更强调测试的效率和适应性,侧重计划的不断调整以适应需求的变化;
(4)传统测试强调验证和确认这两个过程,而敏捷测试始终以用户需求为中心,更为强调用户体验,不断修正质量指标,建立正确的测试策略,保证客户实现有效的需求;
(5)传统测试倡导和鼓励自动化测试,而自动化测试是敏捷测试的基础,并占据绝对的主导地位。敏捷测试通过自动化测试来支撑和协助持续及早交付有价值的软件,实现高度自动化,并在较短的时间内完成整体的验收与回归测试;
(6)传统测试更强调大量的文档,导致文档发生变动时,整体的变更工作变的尤为困难,而敏捷测试具有协作性和迭代性,更关注被测系统的本身和强调个人技能。
通过和传统测试的分析对比,可以简单的总结基于Scrum方法的敏捷测试是更为注重用户需求、体验,具有良好的自动化支撑、较强的协作性、迭代性、适应性、高效性并贯穿在整个软件开发周期过程中的测试解决方案,有着较多的优势。
4、基于Scrum方法的敏捷测试过程
在了解了传统的软件测试模型的各种弊端,也分析了基于Scrum方法的敏捷测试的优势之后,需要充分了解解基于Scrum方法的敏捷测试过程。如图1所示,下面就以Scrum方法来讨论敏捷测试过程:
图1基于Scrum方法的敏捷测试过程
在Scrum的敏捷开发模式的Product Backlog (产品待办事项)阶段,需求变成了用户故事,这时测试人员也需参与用户故事创作,尽早介入用户故事,为了减少对需求理解的歧义,与其他人员一起参与需求的评审工作,帮助制定合理的验收与完成标准、用户故事大小及迭代发布计划,这样能够很好的帮助测试人员规划测试内容,明确测试目标,提高测试效率与质量。其中一个项目由多个用户故事组成,需要为用户故事排列优先级和估算工作量。因此作为敏捷测试人员,在写好测试计划、测试用例的同时,也需要考虑优先级、工作量的估算。在Scrum方法的敏捷测试下我们需要迭代式的分批开发,通过一系列的冲刺迭代,来实现快速提供小规模的价值爆发。根据用户故事优先级的排列实现逐次迭代,最终确保分批交付整个用户故事。在此期间敏捷测试不会彻底舍弃文档,而是做合适的文档,做好需求分析、需求分解,及时的与研发和产品人员沟通,不断总结经验,调整测试用例力度。
在Release Backlog(发布待办事项)阶段,根据Product Backlog阶段,根据用户故事的优先级来分配本次发布的待办事项,是一个大量的发布任务清单。在Release Backlog(发布待办事项)阶段所分配的需求会存在变更,也体现了敏捷开发过程的多变性的特点。
在Sprint Backlog(阶段性任务划分和安排)阶段,由Release Backlog阶段分解的大量的测试任务,分配在Sprint Backlog阶段完成,如果分配的测试任务无法在当前的Sprint完成,将根据需求的优先级和工作量的估值,分配到下一个Sprint继续完成[3]。测试人员也需要及时更新测试计划与冲刺中的测试工作量和持续时间的估算值,可确保在时间短的冲刺期间为所需的测试提供时间,保障测试工作的可靠性。测试人员需要明确测试方法,并确定本次迭代的测试任务,明确具体要实现的功能特性、任务和验收标准。随着需求的不断细化,测试人员对系统尽早的进行熟悉和测试,并在开发过程中即时发现大量潜在的缺陷并即时加以解决,将问题前置,也充分体现了目前敏捷开发过程中测试改进的方向。
在每个迭代(Sprint)实施阶段,主要完成Sprint Backlog定义的任务,在此阶段测试人员按时参加每日站会和定期开展的迭代回顾会,随时评估当前测试的整体进度,并进行单元测试、持续集成测试,提出缺陷bug。为减少测试人员的负担,节省工作量和成本,采用持续构建、自动化部署,通过自动化测试进行整体的回归测试,实现快速迭代、快速交付。在测试新实现的功能特性时也可以进行更多的探索式测试[4],进而深入系统测试,发现更深层次的问题。
完成Sprint Backlog的内容,实现产品的迭代交付之后,以一种有趣的方式开展迭代总结会,让团队的人总结和思考上一个Sprint中出现的问题和亮点工作。每次总结会议中产生的重要文档将成为团队的知识库,为其他团队及后续的迭代提供经验参考,鼓励团队持续改进,后期也将进入Release Backlog(发布待办事项)阶段,安排和分配下一次的迭代Sprint。
5、总结
基于Scrum方法的敏捷测试过程更注重用户需求,具有较强的协作性、迭代性、适应性、高效性,贯穿在整个软件开发周期过程中。它依赖于敏捷开发过程,更对敏捷项目团队的整体质量负责,快速推进业务价值的交付。测试敏捷化会成为一种趋势,将有助于改进各种测试实践,快速反馈软件质量,提升测试效率,加速价值交付,实现高效稳定的目标。
参考文献:
[1]郭莹莹.基于Scrum敏捷方法的测试管理策略研究[D].北京邮电大学,2012.
[2]王小妮.基于Scrum的敏捷测试的应用[J].电子技术与软件工程,2017(09).
[3]焦永强,尚颖,李高显,刘皓洁,王可意.基于Scrum敏捷开发的航空装备软件测试方法[J].电子技术与软件工程.2020(04).
[4]张丽,杜兰,戴丽丽.基于Scrum的敏捷测试过程中探索式软件测试研究[J].电子技术与软件工程.2018(11).