摘 要: 案例教学能充分调动学生积极性,提高学生理论水平和实践能力。结合多年软件测试教学经验,在分析软件测试课程案例教学存在的问题基础上,有针对性地提出在该课程理论教学和实践教学中进行案例设计,并构建课程案例库,分析了实施案例教学的基础和前提。
关键词: 软件测试; 案例教学; 实践教学; 案例库
中图分类号:G642 文献标志码:A 文章编号:1006-8228(2014)12-74-03
Research on case teaching in software testing course for higher vocational colleges
Zhang Xiaolan, Guo Jiandong
(Guangdong College of Industry and Commerce, Guangzhou, Guangdong 510510, China)
Abstract: Case teaching can not only fully mobilize the students" enthusiasm, but also improve their theoretical level and practical ability. Combined with teaching experience in software testing, the problems of the case teaching in software testing course are analyzed. In order to improve the teaching effect in software testing course, the case design method in theory teaching and practice teaching is proposed. The construction of teaching case library is given. The basis and premise of the implementation of case teaching are introduced.
Key words: software testing; case teaching; practice teaching; case library
0 引言
51testing公司发布的《2013年中国软件测试从业人员调查报告》显示[1],2013年中国软件企业软件测试人员与开发人员比例基本保持在1:3,相比之前的1:7比例虽有所下降,但仍与国外软件企业1:1的比例相差甚远,这表明国内软件测试人才市场需求仍会增长,其职业发展的潜力依然很大。正因为如此,很多高校相继开设软件测试专业或课程。在教学过程中,主讲教师一般讲解软件测试理论和介绍软件测试方法,但却缺乏较好的测试案例供学生测试,以验证所学的理论,故教学效果不佳。例如利用等价类划分法、边界值法设计测试用例,学生虽然能按要求做练习,能设计出测试用例,但是很多学生还是会疑惑设计出来的测试用例有何用、怎么用,学生缺乏实践环节的经验,当面对实际软件项目测试工作时,仍然无从下手。
目前,很多高职院校对“软件测试”这门课程进行了改革,并且取得了一定的成效。广东工贸职业技术学院(以下简称“我院”)计算机系从2009年开始开设软件测试课程,通过近五年的教学经验积累和总结,提出从构建软件测试课程的案例入手探讨该课程的案例教学方法。
1 软件测试案例教学所面临的问题
1.1 教材及教学资料缺乏
当前软件测试方面的教材很少,适应高职院校学生的教材更少。绝大部分教材只是阐述空洞的理论,附加简单而又陈旧的工具介绍,而这些理念和工具很多已经被业界淘汰或是被取代[2]。根据《2013年中国软件测试从业人员调查报告》显示,业界现在普遍采用的功能测试软件是QTP,而绝大部分教材中还停留在介绍Mercury Interactive公司的WinRunner工具,同时对于业界中性能测试龙头软件LoadRunner,很多教材并未涉及。绝大多数教材上所提到的自动化测试工具不多,而且讲解的也不是很详细,需要教师进行大量的补充。
1.2 案例缺乏
大多数软件测试教材都是理论内容过多,实践内容不足,甚至只有最后一章有测试案例。大多数高校软件测试课程的定位都是以讲解理论知识为主,实验教学只占很小一部分。高职院校定位于培养技能型人才,要求学生有较强的实际动手能力,这势必需要进行大量的测试实践,而实践需要大量的测试案例。同时,理论教学也需要运用典型案例,加深学生理解所学知识,培养其分析问题与解决问题的能力。
2 理论教学案例设计
教材及教学资料的缺乏势必需要软件测试主讲教师有针对性地扩充理论教学案例。
2.1 扩充教材中的教学案例
在软件测试的众多教材中,讲述软件测试方法的经典案例有三角形问题、日期问题、闰年问题等,但这些案例通常都是文字表述,缺乏具体的程序供学生测试。因此,首先要扩充教材中的案例,采用面向测试的软件设计方法将这些案例做成一个个小的被测系统,设一些缺陷,让学生沿着“测试—理论—进一步测试”的主线来学习。首先对这些案例系统进行测试体验,再系统学习理论,最后利用设计出的测试用例进一步测试,这不仅有利于加深学生对软件测试抽象理论的理解,也让学生更加深知在编程过程怎样避免缺陷,做到规范化编程,提高编程能力。
2.2 引导学生编写软件开发文档作为教学案例
在软件测试的理论教学中,经常会提到几个概念,如:黑盒测试是基于用户需求的测试,集成测试的测试依据是系统概要设计说明书,单元测试的测试依据是系统详细设计说明书等。学生通常会觉得很困惑:用户的需求到底是怎样的,系统概要设计说明书、详细设计说明书中分别包括什么内容,有何区别,对这些文档始终没有直观的认识。事实上,在企业的开发与测试工作中,文档都是很重要的一部分内容。软件开发企业在软件开发过程中会产生一系列的文档,如需求分析报告、详细设计报告、概要设计报告等等,但很少对外公布这些文档。就算能通过校企合作或项目合作的方式获得企业项目文档,缺乏项目业务背景的学生也很难弄清项目中的数据流程、工作流程等。所以通过与软件工程课程教师的沟通协调后,要求学生在软件工程课程设计中,按小组自选熟悉的项目系统,如:“学生成绩管理信息系统”、“图书管理系统”、“宿舍管理系统”等等,按照软件工程的原理编写相应需求说明书、概要设计说明书、详细设计说明书等,只有具备以上资料,才可真实地模拟实际工作模式。在软件测试课程中,延续使用这些案例系统,将对学生掌握软件测试的流程很有帮助。
3 实践教学案例设计
3.1 实践教学目标及工具选用
为了培养面向市场的合格测试人才,在教学过程中,除了理论知识外,还要求教师加强学生测试技能的培养。测试技能的培养是需要通过大量的实践练习来获得的[3]。
通过实践教学环节,加深学生对软件测试理论知识的理解,使学生能掌握软件测试的技术和方法,熟练主流自动化测试工具的使用,提高实际动手能力。51testing公司发布的《2013年第七届中国软件测试从业人员调查报告》中对软件测试从业人员常用的单元测试工具、功能测试工具、性能测试工具进行统计调查分析,得出在功能自动化测试工具中QTP使用最广泛,如图1所示。在性能测试工具中LoadRunner仍然稳居第一,LoadRunner在性能测试工具中的大哥地位无可动摇,Jmeter测试工具在今年来有小幅上升趋势,如图2所示。在单元测试工具中,软件测试从业人员最常用的单元测试工具是Junit,如图3所示。
图1 2013年调查中常用的功能自动化测试工具分布
图2 2013年调查中常用的性能测试工具分布
图3 2013年调查中常用的单元测试工具分布
注:以上图表数据均来自51testing公司发布的《2013年中国软件测试从业人员调查报告》
在我院软件技术专业的软件测试课程实践教学中选用的单元测试工具是基于Java开发软件的测试选择Eclipse+Junit;基于C++开发软件的测试选择了CppUnit;基于.NET开发软件的测试选择Nunit。另外,性能测试选择了LoadRunner试用版本,功能测试选用QTP,实践教学环节工具基本与当前主流工具平台相符。
3.2 实践教学案例来源
在软件测试的实践教学中,我们从以下几个方面来扩充教学案例。
⑴ 课程设计成果
我院计算机系软件技术专业在程序设计方面,前期开设了Java和.NET程序设计两个方向。在Java程序语言设计,C#程序语言设计、数据库设计课程结束后,通常会安排两周的课程实训,要求学生在教师的指导下完成课程设计作品。将程序语言设计作品用作单元测试的案例,学生间交叉进行测试,互相充当对方的测试员,这样不仅有利于将程序开发与软件测试结合起来,综合解决软件开发中的问题,而且交叉测试会极大地调动学生学习测试兴趣和积极性,课堂气氛活跃。
⑵ 毕业设计成果
在大三第二个学期,我院会安排12周的毕业综合实践周,由指导老师跟学生共同确定毕业设计题目,学生独立完成毕业设计。通过对以往选题汇总发现,绝大部分同学都是选择Windows程序开发和网站开发两个方面。从毕业设计作品中可选择一部分优秀的作品作为实践教学的案例。考虑到现有的网站如网易、搜狐发布前已经做足了测试,很难再发现其中的缺陷,所以在Web网站测试实践中,我们将学生的网站作品在机房的局域网内发布,学生在学生机进行测试,在这个过程中真正体会Web网站测试、Cookies测试、安全测试、目录测试等方面,找到测试成就感与自信。
⑶ 科研项目成果
我院一直鼓励教师多参与科研项目,教师参与开发的项目也可以用于实践教学案例。只有任课教师对所选的项目非常熟悉,甚至是亲自参与开发,才能对项目开发整个流程、可能遇到的问题有充分的认识与准备,为学生提供有力的帮助和准确及时的指导,为项目教学的顺利开展提供前提条件,使项目教学的整个实施过程都能在任课教师的良好掌控之下[4]。
⑷ 校企合作项目
目前我院已与部分企业签订了校企合作协议,在软件测试课程的综合性生产实习中,引入企业的实际项目作为案例。邀请校外实习基地企业的行业专家将实际工作项目带入实训室,学生3~5人为一组,按行业实际给他们分配角色,在该过程中强化学生的综合设计和运用能力,让学生掌握在实际项目应用中各种测试方法的使用,熟悉测试项目管理,感受大型测试项目工作流程。
4 案例教学的实施前提
4.1 跟前导课程的衔接
软件测试与软件开发有非常紧密的联系。要想成为一名优秀的测试人员,就必须会编写程序,至少精通一门程序开发语言才能胜任单元测试、集成测试、性能测试的工作,软件开发课程学习的好坏直接影响了软件测试能力。在软件测试单元测试、集成测试教学实践中,案例主要来源于程序设计语言课程的设计作品,这要求该课程主讲教师对学生严格要求,要求学生按小组保质保量完成小组作业,这些小组作品是软件测试课程中交叉测试的基础和前提。
同时,软件测试要用到一系列的文档,如需求分析说明书、概要设计和详细设计说明书、用户手册和安装使用说明等,这些也是软件工程课程设计上要学生完成的内容,课程设计对这些内容的要求严格与否,会对软件测试课程带来很大影响。通过这几年的教学发现,大多数学生对这些文档不甚了解,而且高职院校的学生普遍重技术轻理论,不愿意花时间去写文档。
4.2 教师自身素质的提高
为了顺利实施案例教学,主讲教师也需要不断提高自身素质。软件测试工具较多,范围广,不易把握重点,大部分测试工具如:LoadRunner、WinRunner、JUnit、Jmeter等都是英文版[5],参考资料少,这就要求教师通过主动学习、走进企业来提高自身素养。高职院校提倡“双师型”专业教师队伍建设,要求教师既要具备理论教学的素质,也应具备实践教学的素质,学校也可以派遣教师到软件测试培训机构进行培训,提高教师水平。只有这样,教师才能自如地将企业实际的测试流程、方法、技术带入案例教学实践中。
5 结束语
兴趣是最好的老师,在理论教学和实践教学中引入案例教学、建立测试案例库,使理论和实践过程更具直观性、生动性、说服力、吸引力,能有效调动学生的积极性和兴奋点,有助于学生掌握软件测试的基本理论和方法,加深对软件测试测试自动化工具的理解。同时随着教学的推进,教师可针对当前的测试工具,设计新的教学案例,扩充至教学案例库中,不断提高案例的针对性、实效性、鲜活性。
参考文献:
[1] 2013年第七届中国软件测试从业人员调查报告.http://
,2013.
[2] 钟久隆,路桂明.高职院校《软件测试》课程教学改革探索与实践[J].
教育教学论坛,2012.2:130-131
[3] 丁智国,吕振洪.软件测试课程实验教学探索[J].计算机教育,2012.3:
102-105
[4] 龚宇辉.基于项目驱动的软件测试人才培养模式[J].华章,2013.20:
199
[5] 陈艳.基于项目驱动的软件测试课程教学探索[J].计算机时代,
2013.3:62-66