瀑布开发与敏捷开发中测试与开发的配合

2016-07-22 10:50南京新联电子股份有限公司210005
电子测试 2016年11期

张 静,于 琪(南京新联电子股份有限公司,210005)



瀑布开发与敏捷开发中测试与开发的配合

张 静,于 琪
(南京新联电子股份有限公司,210005)

摘要:传统的瀑布开发方式对于如何应对频繁变化的软件需求有明显的不足,部分电力行业或工控行业的软件开发公司正转向使用敏捷开发方式。而敏捷开发方式中对测试工作的要求不能从互联网企业的敏捷开发方式中生搬硬套过来。本文对比了瀑布开发方式中测试与开发的配合流程,提出了适用电力或工控等传统行业的敏捷开发方式中测试如何与开发配合的建议。

关键词:瀑布开发;敏捷开发;测试与开发配合;测试人员素质要求

0 引言

电力或工控等传统行业的软件开发有其“有明确的国网或行业标准,需求比较固定、变动不频繁”等特点,而这些特点正是瀑布式开发在传统行业大行其道的根本原因。

随着新技术不断引入电力或通信等传统行业,以及很多地方用户对软件功能提出各种变更性建议,很多传统行业的软件开发公司开始尝试使用敏捷开发方式来管理软件开发过程。

传统行业的软件对质量要求一直遵循“高标准、严要求”的质量标准,测试工作作为质量保证的一种手段,不能因为开发方式的变动而被弱化。

因为敏捷开发首先是在互联网行业兴起并被广泛使用,所以带有互联网行业的特点:用户体验胜于软件的正确性。而在传统行业这种对操作安全性和软件质量要求更加严格的行业,不能简单地将互联网行业中的敏捷开发的测试工作内容生搬硬套过来。

由于以上这些情况,本文提出了电力或工控等传统行业中使用敏捷开发方式适用的测试方法和流程。

该测试方法和流程经过在公司内部一年半的使用过程中,取得了良好的效果:测试工作的压力从瀑布模型的后期集中爆发变成均衡地释放,测试发现Bug的有效率也有相应提高。

1 正文

1.1瀑布式开发模式中测试与开发的配合

瀑布式开发模式中,测试与开发的配合可以归结为一下几点内容:

1)及时介入,了解需求。

测试人员在需求了解进度上需要和开发人员保持一致,为保证后面的测试计划编制打下基础。

2)并行设计,相互审查,保证设计质量(开发写设计文档,测试写测试用例)

需求评审结束后,开发人员写开发文档,测试人员可以结合开发的设计文档编写测试用例,编写的过程也是一个对开发文档进行评审的过程,同样,当测试人员写好用例以后,开发人员也要评审测试用例,以发现用例不完善之处,经过这个环节以后,即可以保证开发的设计文档被测试理解,也可以保证测试用例是覆盖设计文档和需求文档的。

3)持续集成,回归测试保证代码质量

在软件基线版本出来以后,就可以进行回归测试,这样发现的Bug及时提交给开发人员进行Bug修复。在Bug修复后进行新的回归测试,保证代码质量的稳定性。为了将这个迭代过程不断进行下去,开发和测试都需要将持续集成服务器的项目构建作为一件重要的事情看待。

瀑布开发模式中,测试与开发的配合流程如图1所示:

1.2敏捷开发模式中测试与开发的配合

敏 捷 开 发 有 很 多 类 型:Lean(精 益 )、XP(Extreme Programming,极限编程)、Scrum等。

本文以Scrum这种敏捷方式为例。Scrum的每个迭代周期称为一个Sprint,一般2或3周。每个Sprint中,都会选择一些功能(Scrum中称为“用户故事”)来完成,与瀑布开发不同的是,这些功能(用户故事)是包含文档、开发、测试等内容的一个完整交付。

迭代完成一个个可交付的软件版本,将设计、开发、测试融入到每个Sprint进行迭代;而不是按阶段地进行项目流程划分。

图1 瀑布开发中测试与开发的配合流程

这是敏捷开发与瀑布开发模式的区别所在。

敏捷开发方式可以用图2来表示:

图2 敏捷开发方式示意图

按照这种开发方式,传统软件工程方法(瀑布式开发)中的回归测试、系统测试(功能测试、性能测试、安全性测试)等难以被完整地覆盖到。如何在使用敏捷开发方法的同时,又不降低测试质量是亟待处理的一个问题。

对于这个问题,本文建议将迭代周期(Sprint)区分为2中:Functional Sprint与Hardening Sprint。

1.2.1Functional Sprint

一个开发功能完成,开发人员进行要执行单元测试,测试人员进行:新增功能的功能测试和可接受性测试(“简单的回归测试”),此外,可根据需要进行一些安全性测试、压力测试。

如果测试人员发现Bug,可以放入下一个Sprint,配合流程见图3所示:

图3 Functional Sprint测试与开发配合流程

具体的配合方式如图4所示:

图4 Functional Sprint测试与开发配合方式

1)当组件基本开发完毕,开发人员将任务单放在自测栏下面。

2)如果准备将该组件提交测试,开发人员将任务单放在测试栏下面。

3)如果组件通过测试,测试人员将任务单放在完成栏下面。这样一个组件就走完了整个开发流程。

1.2.2Hardening Sprint

Hardening Sprint的周期要比Functional Sprint周期长,一般为4~8周。

这个过程中,开发人员不再开发新功能,主要是修复Bug。测试人员进行的主要是回归测试+系统测试。

假设Hardening Sprint能够进行2次系统测试。在进行第一轮系统测试时,封存软件版本;系统测试结束后,开发人员修复Bug,测试人员进行迭代的回归测试。影响软件发布的Bug解决后,测试人员进行第二轮系统测试,并封存软件版本。

Hardening Sprint测试与开发的配合流程如图5所示。

2 两种开发模式中对测试人员的素质要求

不管是采用瀑布开发还是敏捷开发,对测试人员的素质要求是一致的。测试人员的素质框图如图6所示:

测试人员所需要具有的关键素质或能力可以概括为:

1)理解软件测试在整个软件工程中的流程,软件测试如何与软件需求、软件架构设计、软件开发、软件验收和发布等阶段进行配合。撰写测试计划。

2)对所测试的软件有较强的业务理解:根据软件需求和开发功能的要求,拆分出测试原始需求,能够根据“用户场景分析”和“功能交互分析”进一步将测试需求分析为测试项。进行测试分析,并撰写测试方案。

3)熟悉软件测试的工程方法:能够利用“功能分解法”、“等价类划分法”和“边界值分析法”等工程方法,根据测试项设计出测试用例。

3 总结

本文分析了瀑布开发与敏捷开发中测试人员如何与开发进行工作配合,以及在两种开发模式中测试人员的工作内容。并对两种开发模式中对测试人员的统一素质要求进行了总结。

参考文献

[1] 曹向志.软件测试项目实战:技术、流程与管理[M]. 电子工业出版社, 2010.

Cao Xiang-zhi.Software testing project Combat: technology,process and management[M].Electronic Industry Publishing House, 2010.

[2] Mike Cohn.用户故事与敏捷方法[M].清华大学出版社,2010.

Mike Cohn.User Stories Applied:For Agile Software Development [M].Tsinghua university press, 2010.

[3] Andrew Pham.Scrum实战——敏捷软件项目管理与开发[M]. 清华大学出版社, 2013.

Andrew Pham. Scrum combat -- agile software project management and development[M].Tsinghua university press,2013.

[4] Ken Schwaber. 30天软件开发:告别瀑布拥抱敏捷[M].人民邮电出版社, 2014.

图5 Hardening Sprint测试与开发配合流程

图6 测试人员的素质要求

Ken Schwaber.30 days of software development: Farewell waterfall embrace agile[M].People's Posts and Telecommunications Press,2014.

[5] Patton,R.软件测试[M].机械工业出版社,2006.

Patton,R.Software testing.[M].Machinery Industry Press,2006.

[6] 杨波.一种软件测试需求建模及测试用例生成方法[J]. 计算机学报, 2014/03, 37(3):522-538.

Yang Bo.An Approach of Modeling Software Testing Requirements[J].Chinese journal of computers,2014/03,37(3): 522-538.

Test work combined with development in waterfall development model and agile development model

Zhang Jing,Yu Qi
(Nanjing Xinlian electronic Ltd.,210005)

Abstract:Traditional waterfall development method has obvious shortcomings for how to deal with the frequent software development changes.Some software development companies domain in power system or industry control are turning to the use of agile development.However,the requirements for testing in the agile development mode cannot be copied from agile development mode used in Internet companies.This paper compares the test combined with development process used in the waterfall development method,and puts forward the advice on how test cooperate with development in agile that suitable to traditional area such as power or industry .

Keywords:Waterfall development;Agile development;Test coordinate with development;Quality requirements for testers

作者简介

张静(1989-),女,工程师,本科,主要从事电力系统自动化方面的测试工作。

于琪(1984-),男,项目经理,硕士,主要从事软件开发管理工作