基于Scrum方法的软件测试教学模式探索与实践

2018-02-08 12:17吴潇雪慕德俊郭艳静
计算机教育 2018年2期
关键词:软件测试测试目标

吴潇雪,郑 炜,慕德俊,郭艳静

(1.西北工业大学 自动化学院,陕西 西安710072;2. 西北工业大学 软件与微电子学院,陕西 西安 710072)

1 软件测试教学现状

软件测试是伴随IT产业的发展而出现的新兴工作岗位,不论目前还是将来,人才市场对软件测试人才都有很大的需求量[1]。软件测试课程教学存在的一些问题导致教学效果与期望目标相差较大,需要引入先进的教学管理理念和教学模式进行指导,进一步强化对学生自主能力和实践能力的培养以适应市场发展的需要。

软件测试课程是计算机软件专业的一门新课程,该课程的实践性很强,如果没有实验、实训环节的支持,用传统的灌输式教学方式枯燥地讲解测试理论和测试方法,会使学生产生抵触和厌学情绪[2]。软件测试课程使用的工具和测试的对象都是看不见、摸不着的软件产品,实验与实训课程的组织和实施有较大的难度,容易造成实验的随意性。

目前大部分高校的计算机相关专业所开设的软件测试课程的学习内容主要包括软件测试的基本概念,黑盒、白盒测试用例的设计技术和测试自动化工具的使用[3]。由于该课程学习过程过于短促,加上学习内容拘泥于书本,所以在课程学习结束后,大部分学生对该课程的印象较浅,即使是学习特别用心的学生,所学到的也仅是书面的内容,掌握的也只有软件测试的基础理论知识,极度缺乏实践环节的经验,仍然无法圆满完成一个软件项目测试的实际工作。

随着软件工程领域研究的逐步深入,软件开发涉及的技术也层出不穷,如大数据、云计算等。不断涌现的软件开发新概念、新方法、新技术和新工具给软件测试课程的教学提出了挑战,传统软件测试教学方法显得捉襟见肘。

2 敏捷开发与Scrum模型

2.1 敏捷开发

敏捷开发又称“轻型软件工程”,是以人为核心的软件开发思想[4],强调开发人员的沟通、可持续交付工作以及对软件需求和开发问题的快速灵活响应。VersionOne公司2017年发布的第十一次敏捷调研报告显示[5],Scrum以及Scrum与XP的混合模式是大多数组织的敏捷开发方法,约占68%以上。

2.2 Scrum开发模型

Ken Schwaber和Jeff Sutherland 于1993年正式确立Scrum,这一过程已经被Yahoo、Microsoft、谷歌、思科、华为、阿里巴巴等公司使用。许多团队表示,Scrum极大地提升了团队的产能和士气,是一种有效的团队工程控制方法。

Scrum定义团队中的主要角色包括[6]:敏捷教练或项目经理(确保团队合理运作Scrum,并帮助团队移除实施中的障碍);产品负责人(确定产品的方向和愿景,定义产品发布的内容、优先级及交付时间);开发团队(包括美术、运维、测试等所有需要的专业人员)。

Scrum 流程[7]包括:①开始Scrum。由产品负责人列举所有产品需求,根据全部需求明确优先级,形成product backlog,开始Sprint 迭代。②Sprint迭代。每个Sprint 之前,先进行Sprint计划会议。首先,由产品负责人和开发团队一起回顾product backlog,彼此交换对此backlog 的看法。其次,由开发团队从product backlog 中选择本次Sprint提交完成的需求项,通常按照优先级顺序来选择。最后,由开发团队估计每个成员在此次sprint 中完成任务需要投入的时间。确定时间后,开发团队将优先级最高的需求项分解为单个任务,并记录到Sprint backlog 文档中。任务确定后,团队成员自愿认领任务,需要考虑任务顺序,估计每个任务的时间并确保每个成员工作负载平衡,然后顺序完成各项需求。图1是简单的Scrum流程示意图。

3 基于Scrum方法的软件测试教学模式

3.1 总体思想

图1 Scrum流程示意图

将完成实际项目的测试任务作为用户需求,以实现用户需求为目标,以学生为核心,采用Scrum开发方法指导学习过程。课上,教师引导学生一起进行制定目标、领取任务、探讨问题、分享经验;课下,学生自主进行知识评测、补充,分解问题,完成目标任务。学生的软件测试理论知识评测和学习主要依托国家级MOOC——学堂在线,同时,通过开源服务Github以及华为云服务平台实现信息共享和交流。

3.2 角色与职责

Scrum方法强调以人为本、协同工作,该模型中的每个角色都必须充分发挥其作用,才能保证最终目标的达成。在软件测试课程的教学中,参与人员有任课教师、助教以及选择该课程的全体学生,参与课程的学生以3~6人自由组合为多个小组,并选出一名小组组长。由于大多数学生都没有Scrum模式的项目开发经验,所以在实施过程中需要特别安排有Scrum经验的老师以助教的身份首先进行Scrum开发方法及过程相关理论介绍以及过程跟踪指导。各成员在基于Scrum方法的软件测试课程教学模式中所承担的角色以及对应的职责说明见表1。

3.3 Scrum教学模式实施流程

以西北工业大学软件测试课程为例说明Scrum教学模式实施流程,将Scrum 过程引入课程教学的核心要点是明确教学目标,该校课程的教学目标是通过教师引导与管理,学生在完成实际项目测试的过程中,能够运用和掌握所学习的软件开发原理和技能。课程周期为3个月,具体教学过程以每两周为一个Sprint周期,整个教学过程大约由6个Sprint组成,具体实施过程如图2所示。

1)制定课程目标任务。

软件测试课程目标任务主要包括基础理论、测试实践以及提高能力3方面的任务目标,每方面的任务又可以细化为若干小的、可验收的目标任务。基础理论目标包括软件测试方法、类型、策略、黑盒测试、白盒测试、软件测试过程管理、软件测试的度量等知识的掌握。测试实践的任务包含测试计划设计与编写、测试用例设计、测试执行、缺陷跟踪、回归测试等任务,其中部分测试活动需要使用自动测试工具,如单元测试工具Junit,功能测试工具Selenium、UFT(unified functional testing)以及性能测试工具LoadRunner。提高能力的任务目标是指面向软件测试领域热点研究问题,引导学生积极探索最新的研究领域,及时了解最新的研究成果。

表1 Scrum模型角色及职责情况

图2 基于Scrum方法软件测试课程教学模式

每个Sprint开始前,教师会将本次Sprint要完成的目标任务进行描述并上传到华为云平台作为Backlog。

2)分组并确定各组Scrum Master。

根据参与课程的学生人数,以便于沟通协作为原则以自由组合方式对学生进行分组,一般3~6人一组,并确定出第一个Sprint的Scrum Master(建议组织协调能力较强者),在后续的Sprint中,原则上建议Scrum Master轮流承担,让每个同学都能体验到不同角色和职责。

3)各组任务分配。

各项目小组的任务分配首先采取自行选择的方式,助理教师协助并进行任务监控,尽可能减少各组任务之间的依赖。

4)各组Sprint过程实施。

任务目标确立后,各组进入各自的Sprint循环过程,包括Sprint计划、任务拆分、组员任务认领和实现以及最后的回顾总结等活动。在进行具体任务实现之前,每个学生需要利用MOOC在线评测系统对自己的知识掌握情况进行评测,为了较好地完成任务目标,学生需要自行借助MOOC在线视频以及查阅资料等方式进行知识的查漏补缺。

5)成功验收交付。

任务完成之后,由Scrum Master在课堂上向全体同学和老师进行完成任务的展示和讲解,由任课老师和助教老师评定完成情况是否达到目标。确认达成目标之后,组内对本次Sprint中的优点和不足进行总结记录,一方面在下次Sprint中继续推广或改进;另一方面,在Step5的全体回顾会议中有重点地进行分享和借鉴。

6)全体回顾总结。

该活动在每个Sprint最后进行。通过老师引导,各组的Scrum Master对组内回顾会议的结论进行分享,全体同学参与讨论、沟通与补充的方式,吸收借鉴各组Sprint过程中好的方法,改进不足之处,达到互相促进、共同提高的目的。另外,教师对学习成果进行分析归纳,并可联系实际,对当前知识点进行深化、迁移与提高。

4 Scrum教学模式实施成果

4.1 学生获得专业知识与实践经验

基于Scrum方法的软件测试教学模式,将敏捷思想应用到软件工程教学中,将课程教学目标转化为软件工程项目目标,将学习过程转化为一次次的项目实践过程。学生在教师的引导下,应用已学到的软件工程理论知识来达成目标,激发了学习的兴趣,加快了对目标教学知识掌握的速度和理解的深度,对其他软件工程过程理论知识的巩固和实践使学生深刻理解并牢固掌握了基本思想和方法。课程中选择实际项目测试任务作为实践项目,学生在获得理论知识的同时,也获得了实际项目经验。

4.2 培养学生健康的个性和丰富的创造力

除了传播知识之外,培养学生健康、丰富的个性也是高校教学的目标之一。个体主体性是个人生活的灵魂,也是健全、公正、民主的社会建立的基石。基于Scrum的教学模式尊重个体,在该过程中,独立思考与团队协作并重,鼓励学生从多维度探索不同方法解决问题。实际项目的引入和完成任务的明确化,督促学生为了完成任务积极主动学习所需知识,培养了学生自主学习和研究的能力。另外,学生通过承担不同角色,培养了独立思考、发现问题和解决问题的能力。

4.3 教学、科研成果

基于Scrum模式的教学方法,课程实施形式丰富、活动真实、关注每个学生的想法和观点,也催生了多个教学科研成果。学生在跟老师以及同学之间的相互沟通中获得了专业知识、提高了能力和素养,如在2016全国软件测试大赛中,学生获得国家一等奖1个、二等奖1个、三等奖9个;在美国数模竞赛中获得一等奖1个、二等奖1个。老师也从学生丰富的思想中得到启发,促进教学和学术创新,如任课教师主讲的软件测试课程获得国家级慕课立项,即全国工程教指委2016年第一批重大在线课程立项,课程于2017年在国内最大的慕课平台——在线学堂正式上线,选课人数超过2 000人。

5 结 语

软件测试课程的教学必须要紧跟技术发展的步伐,基于Scrum方法的软件测试教学模式有利于教学的开展,其简单、易于使用的特点使其推广使用有了便利的条件,在实践中取得的良好效果也证明了该模式的有效性。在后续的教学过程中,教师可尝试将该教学模式推广到其他课程的教学中。

[1]刘超. 关于“软件工程”课程体系的基本架构及课程系列设置的探讨[J]. 计算机教育, 2009 (21): 22-26.

[2]中国工程教育认证协会秘书处. 工程教育认证工作指南(2013版)[EB/OL]. (2014-11-16)[2017-12-13]. http://www.clocin.com/p-961961086.html.

[3]郑炜. 软件测试[M]. 西安: 西北工业大学出版社, 2011: 5-10.

[4]Arora R, Sondhi S. An agile approach for engaging students in research and development[C]// Xsede16 Conference on Diversity,Big Data, and Science at Scale. New York: ACM, 2016: 51.

[5]Mahnic V. A capstone course on agile software development using scrum[J]. IEEE Transactions on Education, 2012, 55(1): 99-106.

[6]尹华, 王志坚. 基于Scrum敏捷开发的软件实训设计[J]. 计算机教育, 2016 (6): 65-69.

[7]徐建军, 董威, 谭庆平, 等. 基于Scrum敏捷开发模型的软件工程实践课程探索[J]. 大学教育, 2015(4): 115-116.

猜你喜欢
软件测试测试目标
软件测试方向人才培养“1+X”融合研究
基于OBE的软件测试课程教学改革探索
航天软件测试模型构建与应用
“摄问”测试
“摄问”测试
“摄问”测试
EXCEL和VBA实现软件测试记录管理
测试
新目标七年级(下)Unit 3练习(一)
新目标七年级(下)Unit 4练习(一)