APP下载

软件敏捷测试实践教学方法探索

2018-10-19余久久

关键词:测试工具测试项目软件测试

余久久

(安徽三联学院计算机工程学院,合肥 230601)

0 引言

近年来,随着软件行业的高速发展和软件市场的日渐成熟,软件企业对于软件测试人才的需求飞速增长[1]。软件测试也已发展为高校软件类专业的一门主干课程,并受到教育界、产业界及学术界的高度重视。软件测试也成为一门重要的职业。关于软件测试课程的实践教学,近几年很多高校一直在积极探索新的教学经验与方法。由于不同高校的办学定位及人才培养目标有所不同,加之软件测试自身的内容又比较抽象,因此很难在教学内容及教学手段上形成有效共识[2]。尽管目前国内有很多高校积极开展各种教学改革活动,但主要还是以脚本化测试流程来安排实践教学环节,这与当前IT行业中、小(微)软件项目的敏捷测试方法所脱节。测试工具(开源的或付费使用的)也具有复杂性与多样性,市面上很多软件测试教材大都缺乏对某一种或几种测试工具的综合应用案例作详细讲解,而仅仅是从文字性的理论层面笼统介绍这些测试工具的使用方法,使得学生理解起来困难与抽象,无法与企业实际需求相衔接。此外,有些高校尽管会出资购买(通常由第三方软件企业研发)一些现成的软件测试实验(实训)平台辅助实践教学,以适应学生数量多和软件测试实践教学的“测试多样性”特点。然而在实验初期,无论是教师还是学生都要花费大量的时间和精力去熟悉这些平台的操作方法,工作量较大。然而,很多测试实验平台中包含的测试案例资源没有任何针对性,内容也不完整,这对提升学生的软件测试水平帮助不大[3]。

基于此,本文针对应用型本科软件测试课程的教学目标、内容与学生认知特点,以软件企业中、小(微)实际敏捷测试项目的运作流程为导向,探索软件敏捷测试实践教学方法,强调对轻量级软件项目的快速迭代测试与持续集成、相应测试工具的熟练应用,并把该方法充分应用于作者所在高校《软件测试》课程的实践教学中,取得良好的教学效果。

1 敏捷测试方法简介

敏捷测试强调从用户角度测试系统,重点关注迭代测试新开发的功能[4]。敏捷测试强调测试速度与适应性,通过不断修正测试指标,实现用户的有效需求,达到及时发布最终产品的目的。其克服了传统测试流程中存在的问题,比如不适应需求的频繁变更,软件周期缩短及繁杂流程制约等关键问题[5]。近年来,随着国内外软件行业的蓬勃发展,敏捷测试已广泛应用于各类轻量级软件项目的测试实践中。

2 软件敏捷测试实践教学方法

2.1 明确课程的实践教学目标与教学内容

软件测试课程具有较强的综合性与实践性,以纯理论的形式全面介绍各种过程化的测试方法与软件测试质量保证体系则不适宜。针对应用型本科层次学生,需要掌握一门面向对象高级程序设计语言(Java/C++/C#等)作为学习前提,在理论层面上需了解现代软件测试的重要性、原理、方法、规范及管理过程,熟悉软件测试的基本工作流程[6-7]。应用型本科计算机类专业核心课程大都以专业应用为主,对一些深厚的理论知识不做过多要求。刘强[8]等人进一步提出了应用型本科高校软件测试课程的教学应引导学生树立快速迭代的测试思想,了解用户的测试需求,具备阅读与撰写测试文档的能力。在实践环节,要求学生能够在特定的测试环境下熟练使用相应的测试工具,完成对中、小(微)测试项目快速开展敏捷测试活动,并对每日新增代码完成持续集成测试,使得新增代码组件具有可测试性,能撰写出规范化的各类阶段性测试文档。当然,良好的团队协作能力与沟通能力也不可或缺。结合教学实际,本文在文献[7]的基础上,由应用型本科软件测试课程的教学目标所制定出的课程实践教学内容,如表1所示。

2.2 选取敏捷测试项目

教师要能以一个完整的轻量级软件测试项目来组织实践教学内容。应用背景为学生所熟知,不宜过难,规模不宜过大,必须以用户需求为测试目标,每一轮测试周期不能过长,要符合敏捷测试项目特点[9]。学生能运用敏捷思想和最佳测试实践技术解决用户需求。

表1 软件测试实践教学内容

2.3 构建敏捷测试框架

敏捷测试在较短的迭代周期内,代码的提交量相对于传统测试大得多[10]。其测试核心是“快速迭代,持续集成,构建验证”。敏捷测试目前已成为业内轻量级软件项目测试的主流方法。为了适应这种新的变化,培养满足企业实际需要的人才,有必要在软件测试课程实践教学中引入敏捷测试方法[9-11]。

敏捷测试的持续性迫切要求测试的高度自动化,即自动化测试是敏捷测试的基础[12]。所以自动化测试工具的学习与应用是学生自始至终是测试实践的内容。此外,敏捷测试的迭代周期不能过长,通常不超过一周。本文所构建的软件敏捷测试实践教学框架如表2所示。作者结合教学实际及测试项目难易度等特点,在框架中制定出了四轮测试周期,每一轮测试周期为一周,整个敏捷项目测试完成时间一般不超过一个月。

表2 软件敏捷测试实践教学框架

2.4 制定敏捷测试过程考核体系

软件测试考核形式要求多样化,旨在提升学生对实际测试项目的运作能力。结合教学实际,在充分借鉴文献[6]的基础上,制定了一套完整的多元化的软件测试课程实践教学过程考核体系,如表3所示。当然,教师可以根据测试项目的最终完成情况增设相应幅度(1~5分)的额外奖励分数,例如,测试组能否提出测试新思路,能否撰写出高水平科技论文等。建议适当聘请一些企业测试人员参与考核中,保证考核的公正性。

表3 敏捷测试过程考核体系

3 教学实施与反馈

3.1 教学实施

作者及其教学团队自2014年起对所在高校计算机与软件技术类本科专业的软件测试课程开展敏捷测试实践教学活动。当然,学校环境与软件企业有所不同,在校学生的经验、能力等方面也远不如企业员工,因此应结合实际教学环境采取敏捷测试实践教学方法指导实践教学活动。由于我院软件测试课程实践环节仅安排4周时间,所以划分为四个敏捷测试周期(每个周期1周左右),这里主要介绍关键环节的实施情况。

教师紧密围绕表1中的实践教学内容并通过对软件企业实际调研,精心设计出若干个行业背景为学生所熟知、能与校园生活密切相关的敏捷测试项目,同时充当用户代表,并给出了用户主要的测试需求,如表4所示。学生以分组形式(每组不超过4人)参与敏捷测试实践活动。在第一个敏捷测试周期中,测试组需要了解项目特点,制定出敏捷测试计划,确定团队人员分工与职责,从用户角度定义与分解出项目最主要的测试需求,明确每一条测试任务的验收标准,完成测试工作量的基本估算。在第二个及第三个敏捷测试周期中,逐步明确一些用户次要功能特性的测试任务与验收标准,在主要功能模块测试的基础上,使用测试工具不断完成相应模块的测试驱动程序的开发及模块单元测试,并进行持续集成测试,提交阶段性项目测试版本。在第四个敏捷测试周期中,不断完善之前的单元测试及集成测试(框架),完成项目的验收测试。开发验收测试脚本,尝试对一些新增功能进行探索性测试,通过自动化测试手段完成最终的验收测试,统一提交最终测试版本与相关测试文档。实践结束后,指导教师借鉴表3中的实践过程考核体系,与来自企业的测试工程师一起参照考核条目对每个测试组综合评定成绩。

表4 敏捷测试项目及用户主要测试需求

3.2 教学反馈

作者在近3 a的软件测试课程实践教学中,充分运用了软件敏捷测试实践教学框架,以激发学生学习软件测试兴趣,教学效果良好。80%以上的学生认为在以下几个方面体现出学习效果:(1)增强了软件测试的职业素养,充分了解现代敏捷软件测试项目的实践方法,与企业需求形成无缝衔接,毕业后愿意从事软件测试岗位相关工作。(2)学习主动性与应用创造性在实践中得到提升。小组实践使.自己更愿意积极而主动地参与项目活动。(3)编码与测试能力显著增强,尤其对相应的自动化测试工具的应用水平。

4 未来的工作

软件敏捷测试实践教学方法的实施对任课教师和学生均提出了新的挑战。任课教师需要转变传统测试思想,即现代软件测试不是软件开发完毕之后的一个“附带检测”活动,也不是围绕软件缺陷所展开的一系列活动,而是关注测试对象的本身,关注用户不断变化的需求及快速交付用户的产品价值。此外,教师还要熟悉敏捷测试中所用到的自动化测试工具的使用方法,能够指导学生快速搭建敏捷测试环境,关注持续迭代的新功能。学生在实验前不仅需要了解测试理论知识之外,也要花费额外的时间去熟悉相关软件白盒及黑盒自动化测试工具的使用方法,能够熟练安装与配置自动化测试测试平台,了解敏捷测试项目功能特性的设计与代码实现的验收标准,需要具备一定的代码编写及文档写作能力。所以在实施软件敏捷测试实践教学环节的初期,无论是教师还是学生,工作量都是比较大的。

未来工作主要有:(1)任课教师需要深入软件企业一线,参与到实际敏捷测试实践中,多了解敏捷测试的最新应用成果,多搜集敏捷测试在实际项目中的综合案例资源。能够结合本地化教学环境对一些来自企业的案例进行适当的整合、加工、优化以及再设计,能够模拟出符合应用型本科学生认知特点、难易度适中、服务于教学的实践教学案例(包含有用户需求、测试目标、测试驱动开发环境、组件源代码、项目文档等)。在此基础上编写出相关教材(讲义)作为开展敏捷测试实践教学的指导书。(2)自行开发并熟悉使用基于云架构的软件测试实验(实训)平台,以适应学生数量多、测试实验结果多样化的需要。平台要能够服务于教学需要,具备团队管理功能,使教师了解开发小组的分工,实时监视团队的运行情况[13]。平台要能够承载教师所设计的各类敏捷测试项目案例,并具有动态更新与维护功能。允许学生随时随地学习和选择软件敏捷测试实验任务,使用测试工具,提交测试代码和测试数据,由平台动态地调用软件测试资源和执行云测试,完成敏捷自动化测试[14]。当然,平台也还要具备完善的实践效果评估功能。通过所制定的过程考核体系,能够全方位的从专业技能、综合能力和职业素养三个维度完成团队评估与个人实践评估[13]。(3)开展敏捷测试实践教学初期,需要学生系统了解一些诸如单元测试、自动化测试等相关技术,这些前期预备知识又是需要学生以课外自主学习方式所完成的。所以,在当前“后MOOC”时代下如何把敏捷测试实践教学环节有效的融入到学生对软件测试课程的SPOC(小规模限制性在线课程)混合学习中,能充分体现出SPOC混合学习效果的优越性,提高学生学习兴趣,这也将是今后要做的工作。

5 结语

围绕敏捷测试实践教学框架组织应用型本科学生开展软件测试实践活动,培养学生的软件测试职业素养及敏捷测试能力,成效明显。我院每年都有大量计算机及软件类专业毕业生即将从事软件测试及管理岗位。可见,软件敏捷测试实践教学框架的构建是科学合理的,亦是可行的[9]。

猜你喜欢

测试工具测试项目软件测试
我国金融科技“监管沙盒”测试项目准入标准制度研究
基于OBE的软件测试课程教学改革探索
篮球半场往返运球上篮的训练方法——体育中考篮球测试项目训练心得
航天软件测试模型构建与应用
EXCEL和VBA实现软件测试记录管理
基于移动平台APP测试
手车式真空断路器回路电阻测试电流线接头研究
软件测试工程化模型及应用研究
浅谈响应时间测试分析方法
纤检机构管理信息系统标准项目库存在的问题及改进建议