APP下载

核心概念与案例驱动的软件测试课程教学研究

2016-12-21王勇李丽卢桂馥刘涛

计算机教育 2016年9期
关键词:核心概念软件测试

王勇+李丽+卢桂馥+刘涛

摘要:提高计算机相关专业学生的软件测试水平,将有利于保证学生毕业后开展高水平的软件测试工作,从而进一步提高我国的软件质量。文章分析软件测试教学过程中存在的问题,提出以核心概念与案例驱动的软件测试课程教学改革,阐述其具体方法和实施途径,最后总结课程评价和效果。

关键词:软件测试;核心概念;案例驱动

0.引言

随着软件日益渗透到人们生活的方方面面,人们对软件高质量的要求也日渐迫切。然而,通过与软件企业中的项目经理和测试人员沟通交流,大多企业表示,虽然软件测试工作是一项重要工作,但与系统开发人员和软件设计师相比,软件测试员的工作未能得到应有的重视,这与软件测试人员的技术水平以及业界的重产出轻质量相关。因此,提高软件测试水平,将有利于开展高水平的软件测试工作,保证软件的高质量,同时,也会为软件测试职业带来正面效应。

1.存在的问题

1.1基本概念混淆

目前,大多数高校均开设软件测试课程,通常以讲解理论知识为主,实践教学环节只占很小的部分,即教师重理论、轻实践;另一方面,学生普遍对理论不感兴趣,重视软件测试工具的使用。最后结果是学生对测试理论一知半解,对测试工具的掌握粗枝大叶。

通过调研可以看出,学生对软件测试中的基本概念含糊不清,经常混淆。比如,软件测试与调试,软件错误(error)与故障(fault),软件故障(fault)与失效(failure)等混为一谈。对软件测试的基本原理不清,表现为对诸如覆盖(coverage)、故障传播模型(RIP模型)、测试充分性等不甚了解。众所周知,对一门学科的核心概念的精准把握,有利于掌握该学科的基本原理。反之,核心概念的混淆,反映学生对软件测试原理的理解不够深入。

1.2案例及测试教学工具缺乏

软件测试是一门实践性很强的课程。学生们如果不能亲手完成测试活动的各个过程,就很难真正地掌握软件测试的相关知识,更难胜任软件公司的软件测试工程师岗位。目前,大多高校都对软件测试课程的实践教学环节高度重视,也采取了案例驱动的教育教学改革。然而,适用于高校教学的实际案例不多见,软件测试教材中所给出的诸如判断属于哪种三角形的案例很难适应软件测试对象不断发展的要求。高校在案例及可应用于教学的测试工具选择上存在困境。如何在给定课时的情况下,既教授学生专门的软件测试理论知识,又让学生掌握市场上常见的软件测试工具,对高校的教师的确是一个很大的挑战。

1.3师资缺少工程背景

软件测试是一门艺术,Boris Beizer等将软件测试划分为五级,leve10到level4。在最高级(1evel4)中,测试看作是一种智力训练,能够帮助所有的IT专业人员开发出更高质量的软件产品。由此可见,软件测试虽然感觉起点要求比较低,但是到第三级以后,软件测试工程师不但要有软件测试的相关理论知识,还要有大量的与软件产品质量相关的知识。大多高校都缺少专门从事软件测试领域研究并具有丰富工程背景的教师。近年来,不少本科高校引进了大量的计算机相关的博士,软件相关的博士依然较少,而博士偏重于某一狭小领域的研究方向,对整个软件相关的本科专业教学帮助并不大。因此,解决软件测试的师资及其工程化背景,是提高软件测试教学质量的关键之一。

2.方法

2.1以学生反馈为抓手,重点灌输核心概念和测试思想

核心概念的清楚把握是理解某一门技术的关键。例如,在整个软件测试过程中,软件规格说明书起着至关重要的作用,是衡量软件是否失效的关键。表1是软件测试中所涉及的核心概念。基于这些核心概念,我们通过随机测验的方式及时了解学生的掌握情况。

通常的测试结果显示,学生对有些概念的理解令人惊讶。我们需要对这些概念进行重点标注,并调整部分教学内容的讲授。

软件测试本质是一种抽样技术。正如Beizer所说,测试很简单,测试人员只需要找到一个图然后覆盖它。然而,覆盖的原则是什么?关注点在哪里?我们需要结合故障传播的过程,并进行多次强化。故障传播模型有利于学生理解软件失效产生的过程,而能理解软件工作即为发现软件失效的过程,而软件调试即为已知软件失效去找到bug并进行修复的过程。通过学生的多次反馈,积极灌输测试基本概念与测试思想,有利于学生理解软件测试的本质思想,更有利于后期的测试实践。

2.2以案例驱动打通软件测试工作流程

软件测试是一门艺术,更是一项工程实践活动。学生在教学活动中工程实践能力的提高是判断教学质量的关键。因此,很多高校都试图探索出符合本校学生实际的项目驱动教学方案。自2012年,我们也进行了案例驱动教学改革的尝试。我们认为,单元测试是集成测试、系统测试等方法的基础,通过案例驱动,打通软件测试的整个工作流程比讲授更多的测试技术更重要。因此,在整个案例驱动过程中,我们侧重于精讲单元测试过程中各个测试准则的应用。

软件测试是发现软件错误的过程,该过程不仅仅包括测试用例的设计与测试谕言的使用,还包括大量的文档撰写。规范化的文档是进行规范化测试的基础与保证,IEEE829 Standard给出的测试文档如图1所示。

我们对标准的测试文档进行简化,主要强调软件规格说明书、测试设计规格说明、测试用例与测试数据规格说明、测试结果报告等主要测试文档的撰写。在案例驱动中主要应用一个简单程序——飞机座位预订程序作为课堂教学案例讲解,使用一个较为复杂的程序——车辆保险程序作为学生课后练习使用。其内容主要分以下几个部分(见表2)。

2.3借助开源项目,增强学生的学习兴趣

面向教学的案例选择程序规模通常较小,无法满足学生对较复杂软件测试学习的实际需求。因此,为了增强学生的学习兴趣,提高学生的实践能力,可以通过引入软件测试领域广泛使用的SIR库(The Software Infrastructure Repository,htto://sir.unl.edu/portal/index.html)中开源软件作为学生的软件测试对象。表3选取SIR库中规模适中的8个程序作为开源项目。SIR库已包含了一个用于正确版本和多个错误版本,以及应用各种测试研究的测试用例集合。通过研读开源软件的帮助文件,学生能够掌握测试用例的规范编写,以及测试脚本的编写。表3为开源软件信息表。

3.课程评价及效果

软件测试课程不同于一般的理论课程,它不但需要学生的个人能力,同时需要团队的协作精神。我们将课程成绩划分为两块,理论考试占70%,实践考核为30%。我们在实践过程中将学生每4个人分为一组,作为实践部分的最终得分。在考核中,教师对每一个小组进行考核,组长对小组成员进行考核。我们将每个小组规定为100分,55分交给组长分配给每个组员,比如25分、10分、10分、10分,总计55分,其他组员每个人有15分的分配权利。

我们分别对教学改革前的2010级计算机科学与技术专业的81名学生、教学改革后的2011级计算机科学与技术的79名学生、2012级计算机科学与技术专业的84名学生进行了满意度调查,主要包括课程满意度、组长满意度、组员满意度。为了避免直接对教师进行评价,我们让每名学生对课程之间进行效果评价,分为很满意、比较满意、满意、不满意四个等级。小组内也进行满意度评价,分别是组长对组员,组员对组长及其他组员。图2显示学生对课程的满意度有了显著的改善。图3显示学生之间的满意度也逐年增长。总之,采用核心概念和案例驱动的教学改革有效果显著。

4.结语

高校在软件测试课程的教学与实践中还存在诸多问题。我们针对这些问题采用以核心概念和案例驱动的教学方法改革,并取得了一定的教学效果。但是,培养满足社会需求的软件测试人才,不仅仅要改革软件测试课程的方式方法,还需要课程群之间的相互渗透。下一步,我们将基于核心概念与案例驱动的教学改革实践应用于软件方向的课程中。

猜你喜欢

核心概念软件测试
软件测试方向人才培养“1+X”融合研究
大数据背景下软件测试技术的发展
关于 Web 应用系统的软件测试的研究
英语语言学的理论体系与构建探讨
凸显核心概念,有效设计高中生物教学
从新人教版初中生物教材探讨初高中生物核心概念教学衔接
利用微课辅助高三生物核心概念的理解
有效掌握科学概念的教学实践
挖掘核心概念,发现潜在疑问
军用软件测试项目管理系统设计与实现