基于敏捷测试的软件测试实践教学

2017-04-12 02:02李绘卓
计算机教育 2017年3期
关键词:测试工具软件测试软件

李绘卓,唐 峻,范 勇

(西南科技大学 计算机科学与技术学院,四川 绵阳 621010)

基于敏捷测试的软件测试实践教学

李绘卓,唐 峻,范 勇

(西南科技大学 计算机科学与技术学院,四川 绵阳 621010)

分析软件测试课程目前的现状,提出基于敏捷测试的软件测试课程教学方法,即以项目为驱动,采用测试驱动开发方法,将测试技术融入到开发实践活动中,搭建与之适应的持续集成教学平台。结合西南科技大学的教学实践,说明教学效果。

敏捷测试;项目驱动;软件测试实践教学

1 现状分析

软件测试课程目前在很多高校都是作为软件工程专业中独立课程开设的,但课程内容、教学方法和手段方面的更新速度往往跟不上行业专业技术的发展。在软件测试的教学上,各高校在理论及实践上一直在探索新的教学经验与方法,但软件测试课程内容比较抽象,且与之相互影响的软件工程相关课程较多,因此很难在教学内容及教学手段上形成有效共识。目前该课程在本科教学中主要存在的问题如下。

(1)测试技术实践脱离软件开发流程。传统实践教学中,往往是对理论和具体测试技术的讲授,测试技术实践往往脱离软件开发流程,加之重开发轻测试的观念,很容易让学生失去对测试技术的学习动力及兴趣。

(2)缺乏测试技术的系统化实践。目前各高校都在软件测试课程中进行教学改革,以改善重开发轻测试、重理论轻实践[1]的现象为目标,但在实践中依然存在重视专项技术的理论及实践教学,而忽略了软件测试理论作为软件质量保障的重要环节,应贯穿于软件开发过程。从而造成学生只知道具体技术,而不能将其应用于软件开发过程中,在根本上意识不到软件质量控制对软件项目开发的意义。

(3)软件测试工具多样性,但缺乏综合应用。测试工具是软件测试实践课程中的重点训练要点,软件开发过程中,往往涉及多种测试工具,但是由于高校实验条件的匮乏,加之测试工具的复杂多样,导致学生无法接触和了解多种测试软件的综合应用。加之传统实践课程往往单独对部分工具进行实践,使得学生无法与企业的需求衔接。

2 教学实践内容探讨

2.1 教学实践内容

软件测试课程是一门实践性非常强的课程,教学中应强调如何将软件测试相关理论知识应用于软件开发中,而不是简单的知识点及理论的灌输。为达到这一目标就不能将开发与测试分开,而是需要在软件开发过程中,实践软件测试中的具体测试技术。通过这一手段使学生熟悉软件测试在软件生命周期中的重要性,并对软件质量过程控制有一个全面的了解。为此,有必要在实践课程中增设综合实践阶段。在该阶段中,以项目为驱动,引入敏捷测试。敏捷测试即不断修正质量指标,正确建立测试策略,确认客户的有效需求并得以圆满实现和确保整个生产过程安全、及时发布最终产品[2]。基于此,在综合项目实践中,要强调测试驱动开发,通过在软件开发各阶段测试控制项目软件质量,让学生在项目开发实施过程中能主动地、自然地应用软件测试理论。

在实践操作过程中将测试课程分成两个阶段,第一个阶段为基础实践阶段,沿用传统实践方法,针对知识点建立独立案例,使学生在实践过程中掌握单项测试技术。期间强调测试用例的设计、黑盒测试及白盒测试的基本方法,同时关注测试工具的学习。第二个阶段为综合实践阶段,将软件测试技术具体实施到项目开发中,采用敏捷开发测试模型,以测试驱动开发方式控制软件质量。综合实践注重测试过程管理、测试与设计开发的融合,强调测试技术与测试工具的综合应用。具体的教学重点及工具使用情况见表1。

综合实践部分采用敏捷开发测试模式(见图1),将软件测试技术持续应用在整个软件开发过程中,并强调测试驱动开发,在不断迭代中完善项目软件设计与质量。整个过程中,让学生掌握单元测试、集成测试、系统测试各环节的工作内容,在项目实践的综合应用中测试具体技术,并掌握测试工具的综合运用。

表 1 测试课程内容安排表

图1 软件测试课程综合实践开发测试模型

2.2 综合案例设计

在课程安排中,教学案例是课程设施的关键。案例分成两个部分:基础实践部分,仍然以教程案例为主,并强调工具使用;在综合实践部分,需设计体量适中的项目,以此为驱动完成软件测试技术的训练。为了满足学时的要求,案例应选择不涉及太多应用领域的知识,而应使用简单常见的应用架构。作为学生参考学习的基础,案例内容应完整,包含详细的系统功能描述和系统设计主要代码结构,以及对典型功能及代码的测试用例,具体包括单元测试、集成测试、系统测试等测试内容。

目前,西南科技大学实施的核心案例为基于Java免费框架Struts的小型网站,实践教学中以《儿童数学练习网站》为例,网站以提供小学生的数学练习为目的,为小学生提供多种数学题型进行答题训练,记录并统计小学生的练习做题的情况。网站包括注册、登录、题型选择、出题、做题、判题、查看做题历史纪录、退出登录等功能。同时,在网站的数学题型中融入了软件测试教程中的经典案例,三角形问题、闰年问题、下一日问题等作为小学生数学练习题型,以达到对测试基本知识点的强化训练。该案例功能较为简单,涉及的开发技术大多都在专业技术课程中已经学习,通过该项目可以让学生实践项目开发的全过程软件及全过程测试。

2.3 综合测试实践平台搭建

敏捷开发具有五个价值观:沟通、简单、反馈、勇气、谦逊[7],而基于此价值观,在综合实践过程中,简化开发流程,强调学生组内沟通,并为学生的系统测试项目搭建相关的持续集成平台。通过该平台,可以控制学生项目开发测试流程,减少文档的撰写,让开发测试透明化,方便教师全面掌握学生在项目开发中进行测试的全过程。平台基于Jenkins持续集成工具,整合了多种测试工具及管理工具,工具列表见表1。通过该平台可以实现项目的项目管理、版本管理、软件自动编译、单元测试、代码规范检查、质量报告生成、BUG跟踪、网站发布等功能。通过该平台应用,不是避免了传统案例教学过程中对测试工具的单独应用,而是实现对各类开发测试工具的综合应用,做到对项目进行全过程质量管控,以及对项目软件质量的全过程的监控。

通过该平台,一方面教师可实时查看项目软件的过程提交情况,杜绝项目的集中突击、滥竽充数的现象;另一方面教师可查看持续构建下软件各个阶段时期下的软件质量,关注学生对于软件测试过程的控制,避免学生对于测试的一些错误认识和做法(有时间就多做没时间就少做;重开发,测试技术含量低;测试是软件开发最后阶段做的工作等)。另外,也为教师提供更为全面的软件开发测试过程的客观数据,方便教师掌握测试开发进度,及时把控学生对相关测试理论的掌握情况。我院2016年度学生项目实践数据如图2所示。

图2 2016年度学生项目实践数据

平台的搭建使用了大量的开源免费软件,在使用过程需要进行脚本配置,如Ant、SonarQube下的各类检查脚本等。由于脚本的编写相关技术要求较高,为简化教学,要求学生仅仅掌握基本原理,能做到直接应用即可,而脚本的编辑由教师编写。为便于学生在整个软件开发过程中能够更好地使用该平台,平台搭建后发布在校园网内,让学生在教学区及非教学区均能使用该平台。平台示意图如图3所示。

图3 软件测试技术网络实践平台

2.4 实践教学实施

实践课程分两个阶段,在两个阶段的课程安排上也有些不同,各有其教学重点。

在基础测试实践部分,由学生独立完成测试实践内容,基础实践阶段一般沿用传统的教学方式,先对理论部分进行简单复习,然后进行理论实践,在实践过程中以小程序或案例实施理论应用,在这期间强调工具的使用。综合实践部分由学生分组实践(建议4~5人一组),要求设计开发一个可运行软件,编写代码2 000行左右。以项目为驱动,按照图1中的敏捷开发测试模型,在项目开发实践过程中应用测试理论,且各小组项目均在持续集成开发平台上完成。通过禅道完成项目管理、测试管理、BUG管理,并通过Jenkins完成持续集成。让学生在测试驱动开发模式下,通过不断迭代开发,完善项目软件的设计和质量。

另外,传统实践模式往往采用小组模式进行,因此有不少学生总是怀疑自己能力不够而处于一种旁观者的位置,而技术能力比较强的学生又总会感觉凭他们的个人力量就能解决所有问题。所以,一个本应该由全体成员同心协力群策群力完成的课题就变成了少数几个人表演的舞台。在敏捷模式下,由于强调结对工作,并通过项目分析、软件设计、测试用例设计、编码、单元测试、集成测试、文档撰写等结对工作,实现平等互补、紧密合作[8]。通过结对可以有效地让技术力量薄弱的成员完全摆脱过去那种旁观者的位置,并能从合作中学到许多自己不知道和不了解的内容,从而锻炼动手能力。同时,结对编程是一种有效改善沟通的方法,在无形中可以培养学生的合作精神,结对编程使双方容易学习到别人的优点,意识到自己的缺点并加以改正,通过组内成员以及组与组之间的成员相互协作相互沟通及具体的合作,顺利地建立起两者之间良好的人际关系,从而在结对编程中达到提高综合素质和能力的目的。

3 结 语

在软件测试教学改革中,西南科技大学计算机科学与技术学院在压缩已有的基础实验基础上,引入了敏捷测试模型,作为对软件测试综合实践的模型,搭建与之适应的持续集成教学平台,让学生在项目开发的实施过程中主动地、自然地应用软件测试理论。该测试实践教学模式已经实施了3届,通过以上几方面的改革和实践,加强了软件测试和其他软件工程相关课程的联系,增加了学生对于测试学习热情,软件测试技术的综合应用能力也有了较大提高。

[1] 王云. 软件测试课程教学探索与思考[J]. 软件, 2015, 36(7): 129-131.

[2] 百度百科. 敏捷测试[EB/OL]. [2016-09-10]. http://baike.baidu.com/view/2401601.htm.

[3] 百度百科. 禅道项目管理工具[EB/OL]. [2016-09-10]. http://baike.baidu.com/view/7881832.htm .

[4] Lars Vogel.Apache Ant Tutorial[EB/OL]. (2014-03-02)[2016-09-10]. http://www.vogella.com/tutorials/ApacheAnt/article.html.

[5] 仇慧. 使用Jenkins实现软件开发的持续集成[EB/OL]. (2014-11-10)[2016-09-10]. http://www.ibm.com/developerworks/cn/java/ j-lo-jenkinsintegrate/.

[6] 尹鹏. SonarQube3.6代码质量管理实战[EB/OL]. (2014-01-20)[2016-09-10]. http://www.ibm.com/developerworks/cn/opensource/ os-sonarqube/.

[7] 百度百科. 敏捷开发[EB/OL]. [2016-09-10]. http://baike.baidu.com/view/309926.htm.

[8] 李中华, 倪明涛. 敏捷开发模式在本科计算机科学与技术专业教学中的应用探索[J]. 科技信息, 2010(21): 649-650.

(编辑:史志伟)

1672-5913(2017)03-0155-05

G642

四川省教育厅教改项目“基于PDCA构建软件专业人才工程教育体系”(14sjzl17);校级教改项目“基于TDD软件测试实践教学研究”(14xn0023);校级教改项目“项目和案例实践考核导向下项目建设”(15xn0046)。

李绘卓,女,讲师,研究方向为图形图像、软件测试,huizhuoli@foxmail.com。

猜你喜欢
测试工具软件测试软件
软件测试方向人才培养“1+X”融合研究
禅宗软件
基于OBE的软件测试课程教学改革探索
航天软件测试模型构建与应用
软件对对碰
EXCEL和VBA实现软件测试记录管理
基于移动平台APP测试
手车式真空断路器回路电阻测试电流线接头研究
浅谈响应时间测试分析方法
即时通讯软件WhatsApp