论文部分内容阅读
【摘要】随着国内软件测试人才需求的急剧增加,软件测试人才的培养也愈受重视。文章就软件测试技术在我系作为专业限选课程,探讨了目前教学中存在的一些问题,对当前软件测试课程的教学方法和手段进行了有益的实践与探索,并取得了良好的效果。
【关键词】软件测试 教学方法 实践 探索
【中图分类号】G623.58 【文献标识码】A 【文章编号】2095-3089(2012)11-0220-02
1.软件测试课程开设的背景
随着软件的规模和复杂性与日俱增,软件缺陷导致的各类损失不断增加,甚至带来灾难性的后果,软件质量问题已经成为所有软件使用者和开发者关注的焦点。作为软件质量保证和质量控制的有效手段,软件测试愈发体现出其自身的重要性,受到了越来越多的关注[1-2]。
国外的软件厂商极为重视软件测试,在欧美等软件产业发达国家的软件企业中,测试人员与开发人员的配置比例一般已达到或超过1:1,而在国内被调查软件企业中,能够基本达到该比例的企业仅占22%[3]。由于我国企业对于软件测试在软件质量保障中的重要作用认识较晚,导致软件测试人才的供需之间存在着巨大缺口。据国家权威部门统计,我国软件人才缺口超过100 万人,其中很大一部分为软件测试人才,缺口达到30~40万[4]。为缓解高端技能人才紧缺问题,原信息产业部将软件测试工程师列为国家紧缺型人才,并于2004年联合五部委颁布的124号文件中强调要“加快培养软件测试人才,开展软件评测技术的研究”,为软件测试人才的培养提供了政策支持。
2.软件测试课程的教学目的
我们是对计算机专业的学生进行软件测试课程的教学,而不是进行软件测试专业人才的培养,计算机专业的学生至少能熟练掌握一至两门软件开发语言,熟悉计算机网络、操作系统、数据库、中间件等的基本知识,能从事对应的程序开发工作。所以本课程教学的目标主要有三点:其一,帮助学生掌握规范化的软件开发流程,熟练掌握软件测试的基本理论;其二,能进行一般的软件测试,能设计测试方案,编写测试用例,至少能掌握一种软件测试自动化工具;其三,让学生了解软件测试行业的特点,了解软件测试职业和职位,培养学生的兴趣爱好,开拓就业方向,为有志于进入软件测试行业的学生提供一定基础。总的来说就是让学生成为初级软件测试人才,为学生进一步成为中、高级软件测试人才提供坚实基础。
该课程需掌握的知识主要包括:
1)掌握软件测试技术的基本理论、基本方法。包括熟悉黑盒测试技术、白盒测试技术、基于缺陷模式的测试技术等等,熟悉单元测试、集成测试、系统测试、回归测试、性能测试、功能测试等测试方法。
2)能进行测试方案的设计,测试计划、测试用例的编写。
3)至少掌握一种软件自动化测试工具的使用,能进行测试环境的配置,并能了解其它自动化测试工具。
4)能进行测试结果分析以及编写测试总结报告。
3.软件测试课程教学中目前存在的问题
(一)课程定位不明确
随着软件测试行业的兴起,许多高等院校认识到软件测试人才培养的重要性,纷纷开设软件测试专业或者软件测试课程,但是如何专业的培养软件测试人才还没有一个完整的体系。在我校,因为没有开设软件测试专业,软件测试课程应该作为专业必修课、限选课还是选修课一直存在争议。目前作为一门专业限选课程,授课内容和授课的形式也存在一些争议。在授课内容方面,目前的软件测试教材大都是近几年出版的,内容安排上基本是按照测试理论、测试技术、测试工具、测试实践、测试管理的顺序依次展开。内容上“面面俱到”,如何在教学过程中“面”与“面”之间取舍、平衡,使之达到软件测试课程设置的目的还不是特别明确。
(二)课程教学方法单一,缺乏教学互动
虽然目前市面上已经有大量的软件测试教材,但是基本上以理论居多,教材中案例的例子也不多,导致教师在课堂教学过程中,通常只是凭自己以往的教學经验,利用传统方法简单地讲解,不能通过师生和谐的双边活动完成课堂教学任务或者达不到理想的教学效果。另外,由于是一门新兴的课程,既有深厚的理论功底又有丰富实践经验的教师非常缺乏,因此教学方法和手段难免因循守旧,教学过程开展得不够深入、彻底,存在大量的不规范性和随意性。高校中虽有讲授软件工程的主讲教师能很好的讲解软件测试理论和介绍软件测试方法,但缺乏较好的软件测试案例和一定的工作经验,因此很难出现生动活泼的教学场景,与学生的互动鲜有显现。
(三)课程实践环节薄弱
《软件测试技术》课程作为一门新兴课程,具有理论性抽象,实践性强的特点。为了更好地实现教学目标,这不仅要求讲授的教师具有深厚的理论功底,更要求教师具有丰富的实际软件项目测试经验,同时也需要学生具备一定的程序编写能力和严谨的逻辑思维能力。但现实中高等院校严重缺乏这类具有实践经验的教师,也缺乏对教师进行相关的培训工作,另外大多数学生的动手实践能力和编程能力也比较薄弱,这些都是实践教学中遇到的现实问题。除此之外,软件测试这门课需要适当的软硬件投入,尤其是软件,目前市面上比较好的测试软件都不是免费的,建一个专用实验室动辄就要几十万甚至几百万,普通高等院校很难有充足的经费专门为一门课程建立一个专用的实验室,这也是实践环节的现实问题,因此我们只能选择一些开源的免费测试软件进行教学工作。
4.教学方法探索与实践
(一)激发学生对本课程的兴趣
培养学生对软件测试课程的兴趣,是成功教学的第一步。课程的开始可以通过列举历史上许多经典案例,如“千年虫问题”、“美国火星登陆事故”、迪斯尼公司的“生病的狮子王”等等来说明软件测试的现实问题和重要性;然后介绍软件测试行业的发展,人才需求等情况,鼓励学生对软件测试行业的就业倾向。
(二)运用案例进行教学 在讲解理论知识的同时,使用案例来进行分析及表现理论知识的运用,可以很好地帮助学生获得感性认识。例如在讲解黑盒测试的等价类划分方法時,引用经典的三角形问题案例;在讲解边界值分析方法时,引用加法器案例;在讲解决策表方法时,引用NextDate函数案例等等。运用案例进行教学,学生一方面能够理解理论知识,另一方面能学习理论方法的具体运用,进一步加深对理论知识的掌握,同时也为学生进行测试用例的设计打下坚实的基础。进行案例教学时需要掌握一定的技巧,比如在课堂开始不要急于讲解理论知识,而是先引出案例需要解决的问题,引领学生去思考,带着问题去学习,这样可以取得事半功倍的效果。
(三)加强理论讲授与实践环节的互动
由于软件测试课程实践性强,在课程设置上采用理论授课与上机实践相结合的授课方式。在我校,采用2+2的教学模式,即每周2节理论课与2节实践课同时进行且必须是同一个教师授课。这样在讲解理论知识时,可以将学生在实践中使用的方法、步骤及遇到的问题拿到理论课中进行讲解,让学生知道为什么这样做,这样做的依据来源于哪些理论知识,如此可以使学生深刻理解理论知识的重点。另外在上实践课时,教师用约三分之一的实践时间先行讲解实验目的、内容、方法及步骤,讲解的过程中,教师不能只为做实验而实践,必须讲清楚这个实验来源于哪些理论知识,哪些已经学过,哪些还没有学,学过的知识需要再简单口述一遍,没有学过的也要简单的介绍一下知识要点,让学生有初步的了解。这样一来,理论课与实践课就可以形成良好的互动,知识要点有一定的重复率,学生也勤于思考,积极动手,学得明白,有很强的收获感,越学越有劲。
(四)开放自主互评式教学
为了让学生积极参与到本课程的教学与实践中,可以让教师与学生的角色在一定程度上进行互换,进行开放式学习实践,学生可以从探索知识的奥妙中获得成就感,同时还能培养学生的集体协作精神。
(五)适当进行阶段性考核
在一个学期的教学过程中,一般有18周,时间跨度比较长,而实时掌握每个学生的学习情况非常重要,一个重要的方式就是进行阶段性考核。约每隔6周进行一次阶段性考核,了解学生对前一阶段所学知识的掌握情况,同时还能了解学生前一阶段的知识难点、学习态度等问题,可以进行重点、个别指导。阶段性考核的次数不宜太多,一个学期大约进行两次。每次时间也不宜太长,一个课时的时间就可以了。主要考核学生对基础知识、基本理论的掌握情况,不宜考核一些偏、难、怪的内容。按照经验,进行阶段性考核,对学生的考核结果进行公开评价,可以发现学生之间的差距,让学生了解自己的学习状态,有效端正学生的学习态度,有力促进学生主动学习。
5.总结
软件测试在国内软件行业正越来越受到重视,社会需要大量的软件测试人才,许多高校因此开设了软件测试课程。但软件测试人才的培养才刚起步,需要学校、教师、学生和公司共同努力,才能培养出社会真正需要的软件测试人才。本文就我校开设的软件测试课程作为专业限选课,以拓展学生知识面为目的,对进行的教学活动做了一些有益的探索。从近三年的教学结果来看,经过不停的改进教学方式方法,在试卷难度相当的情况下,学生的平均成绩从最初的65.3分提高到83.4分,取得了一定成效。今后将进一步探索有效的教学方式方法,增强实践教学,不断提高教学水平,以期达到更好的效果。
参考文献:
[1]柳纯录,黄子河,陈渌萍.软件评测师教程[M].北京:清华大学出版社,2006.
[2]赵翀,孙宁.软件测试技术:基于案例的测试[M].北京:机械工业出版社,2011.
[3]武剑洁,石桂玲.软件质量与测试教学内容改革的探索[J].计算机教育,2010(20):30-37.
[4]宋建伟,刘小平.软件测试培训课程体系浅析[J].信息安全与技术,2010(10):94-96.
作者简介:
李小亚,1974.6,男,汉族,重庆璧山人,博士,讲师,华南师范大学,研究方向:计算机应用技术,无线传感器网络等。
【关键词】软件测试 教学方法 实践 探索
【中图分类号】G623.58 【文献标识码】A 【文章编号】2095-3089(2012)11-0220-02
1.软件测试课程开设的背景
随着软件的规模和复杂性与日俱增,软件缺陷导致的各类损失不断增加,甚至带来灾难性的后果,软件质量问题已经成为所有软件使用者和开发者关注的焦点。作为软件质量保证和质量控制的有效手段,软件测试愈发体现出其自身的重要性,受到了越来越多的关注[1-2]。
国外的软件厂商极为重视软件测试,在欧美等软件产业发达国家的软件企业中,测试人员与开发人员的配置比例一般已达到或超过1:1,而在国内被调查软件企业中,能够基本达到该比例的企业仅占22%[3]。由于我国企业对于软件测试在软件质量保障中的重要作用认识较晚,导致软件测试人才的供需之间存在着巨大缺口。据国家权威部门统计,我国软件人才缺口超过100 万人,其中很大一部分为软件测试人才,缺口达到30~40万[4]。为缓解高端技能人才紧缺问题,原信息产业部将软件测试工程师列为国家紧缺型人才,并于2004年联合五部委颁布的124号文件中强调要“加快培养软件测试人才,开展软件评测技术的研究”,为软件测试人才的培养提供了政策支持。
2.软件测试课程的教学目的
我们是对计算机专业的学生进行软件测试课程的教学,而不是进行软件测试专业人才的培养,计算机专业的学生至少能熟练掌握一至两门软件开发语言,熟悉计算机网络、操作系统、数据库、中间件等的基本知识,能从事对应的程序开发工作。所以本课程教学的目标主要有三点:其一,帮助学生掌握规范化的软件开发流程,熟练掌握软件测试的基本理论;其二,能进行一般的软件测试,能设计测试方案,编写测试用例,至少能掌握一种软件测试自动化工具;其三,让学生了解软件测试行业的特点,了解软件测试职业和职位,培养学生的兴趣爱好,开拓就业方向,为有志于进入软件测试行业的学生提供一定基础。总的来说就是让学生成为初级软件测试人才,为学生进一步成为中、高级软件测试人才提供坚实基础。
该课程需掌握的知识主要包括:
1)掌握软件测试技术的基本理论、基本方法。包括熟悉黑盒测试技术、白盒测试技术、基于缺陷模式的测试技术等等,熟悉单元测试、集成测试、系统测试、回归测试、性能测试、功能测试等测试方法。
2)能进行测试方案的设计,测试计划、测试用例的编写。
3)至少掌握一种软件自动化测试工具的使用,能进行测试环境的配置,并能了解其它自动化测试工具。
4)能进行测试结果分析以及编写测试总结报告。
3.软件测试课程教学中目前存在的问题
(一)课程定位不明确
随着软件测试行业的兴起,许多高等院校认识到软件测试人才培养的重要性,纷纷开设软件测试专业或者软件测试课程,但是如何专业的培养软件测试人才还没有一个完整的体系。在我校,因为没有开设软件测试专业,软件测试课程应该作为专业必修课、限选课还是选修课一直存在争议。目前作为一门专业限选课程,授课内容和授课的形式也存在一些争议。在授课内容方面,目前的软件测试教材大都是近几年出版的,内容安排上基本是按照测试理论、测试技术、测试工具、测试实践、测试管理的顺序依次展开。内容上“面面俱到”,如何在教学过程中“面”与“面”之间取舍、平衡,使之达到软件测试课程设置的目的还不是特别明确。
(二)课程教学方法单一,缺乏教学互动
虽然目前市面上已经有大量的软件测试教材,但是基本上以理论居多,教材中案例的例子也不多,导致教师在课堂教学过程中,通常只是凭自己以往的教學经验,利用传统方法简单地讲解,不能通过师生和谐的双边活动完成课堂教学任务或者达不到理想的教学效果。另外,由于是一门新兴的课程,既有深厚的理论功底又有丰富实践经验的教师非常缺乏,因此教学方法和手段难免因循守旧,教学过程开展得不够深入、彻底,存在大量的不规范性和随意性。高校中虽有讲授软件工程的主讲教师能很好的讲解软件测试理论和介绍软件测试方法,但缺乏较好的软件测试案例和一定的工作经验,因此很难出现生动活泼的教学场景,与学生的互动鲜有显现。
(三)课程实践环节薄弱
《软件测试技术》课程作为一门新兴课程,具有理论性抽象,实践性强的特点。为了更好地实现教学目标,这不仅要求讲授的教师具有深厚的理论功底,更要求教师具有丰富的实际软件项目测试经验,同时也需要学生具备一定的程序编写能力和严谨的逻辑思维能力。但现实中高等院校严重缺乏这类具有实践经验的教师,也缺乏对教师进行相关的培训工作,另外大多数学生的动手实践能力和编程能力也比较薄弱,这些都是实践教学中遇到的现实问题。除此之外,软件测试这门课需要适当的软硬件投入,尤其是软件,目前市面上比较好的测试软件都不是免费的,建一个专用实验室动辄就要几十万甚至几百万,普通高等院校很难有充足的经费专门为一门课程建立一个专用的实验室,这也是实践环节的现实问题,因此我们只能选择一些开源的免费测试软件进行教学工作。
4.教学方法探索与实践
(一)激发学生对本课程的兴趣
培养学生对软件测试课程的兴趣,是成功教学的第一步。课程的开始可以通过列举历史上许多经典案例,如“千年虫问题”、“美国火星登陆事故”、迪斯尼公司的“生病的狮子王”等等来说明软件测试的现实问题和重要性;然后介绍软件测试行业的发展,人才需求等情况,鼓励学生对软件测试行业的就业倾向。
(二)运用案例进行教学 在讲解理论知识的同时,使用案例来进行分析及表现理论知识的运用,可以很好地帮助学生获得感性认识。例如在讲解黑盒测试的等价类划分方法時,引用经典的三角形问题案例;在讲解边界值分析方法时,引用加法器案例;在讲解决策表方法时,引用NextDate函数案例等等。运用案例进行教学,学生一方面能够理解理论知识,另一方面能学习理论方法的具体运用,进一步加深对理论知识的掌握,同时也为学生进行测试用例的设计打下坚实的基础。进行案例教学时需要掌握一定的技巧,比如在课堂开始不要急于讲解理论知识,而是先引出案例需要解决的问题,引领学生去思考,带着问题去学习,这样可以取得事半功倍的效果。
(三)加强理论讲授与实践环节的互动
由于软件测试课程实践性强,在课程设置上采用理论授课与上机实践相结合的授课方式。在我校,采用2+2的教学模式,即每周2节理论课与2节实践课同时进行且必须是同一个教师授课。这样在讲解理论知识时,可以将学生在实践中使用的方法、步骤及遇到的问题拿到理论课中进行讲解,让学生知道为什么这样做,这样做的依据来源于哪些理论知识,如此可以使学生深刻理解理论知识的重点。另外在上实践课时,教师用约三分之一的实践时间先行讲解实验目的、内容、方法及步骤,讲解的过程中,教师不能只为做实验而实践,必须讲清楚这个实验来源于哪些理论知识,哪些已经学过,哪些还没有学,学过的知识需要再简单口述一遍,没有学过的也要简单的介绍一下知识要点,让学生有初步的了解。这样一来,理论课与实践课就可以形成良好的互动,知识要点有一定的重复率,学生也勤于思考,积极动手,学得明白,有很强的收获感,越学越有劲。
(四)开放自主互评式教学
为了让学生积极参与到本课程的教学与实践中,可以让教师与学生的角色在一定程度上进行互换,进行开放式学习实践,学生可以从探索知识的奥妙中获得成就感,同时还能培养学生的集体协作精神。
(五)适当进行阶段性考核
在一个学期的教学过程中,一般有18周,时间跨度比较长,而实时掌握每个学生的学习情况非常重要,一个重要的方式就是进行阶段性考核。约每隔6周进行一次阶段性考核,了解学生对前一阶段所学知识的掌握情况,同时还能了解学生前一阶段的知识难点、学习态度等问题,可以进行重点、个别指导。阶段性考核的次数不宜太多,一个学期大约进行两次。每次时间也不宜太长,一个课时的时间就可以了。主要考核学生对基础知识、基本理论的掌握情况,不宜考核一些偏、难、怪的内容。按照经验,进行阶段性考核,对学生的考核结果进行公开评价,可以发现学生之间的差距,让学生了解自己的学习状态,有效端正学生的学习态度,有力促进学生主动学习。
5.总结
软件测试在国内软件行业正越来越受到重视,社会需要大量的软件测试人才,许多高校因此开设了软件测试课程。但软件测试人才的培养才刚起步,需要学校、教师、学生和公司共同努力,才能培养出社会真正需要的软件测试人才。本文就我校开设的软件测试课程作为专业限选课,以拓展学生知识面为目的,对进行的教学活动做了一些有益的探索。从近三年的教学结果来看,经过不停的改进教学方式方法,在试卷难度相当的情况下,学生的平均成绩从最初的65.3分提高到83.4分,取得了一定成效。今后将进一步探索有效的教学方式方法,增强实践教学,不断提高教学水平,以期达到更好的效果。
参考文献:
[1]柳纯录,黄子河,陈渌萍.软件评测师教程[M].北京:清华大学出版社,2006.
[2]赵翀,孙宁.软件测试技术:基于案例的测试[M].北京:机械工业出版社,2011.
[3]武剑洁,石桂玲.软件质量与测试教学内容改革的探索[J].计算机教育,2010(20):30-37.
[4]宋建伟,刘小平.软件测试培训课程体系浅析[J].信息安全与技术,2010(10):94-96.
作者简介:
李小亚,1974.6,男,汉族,重庆璧山人,博士,讲师,华南师范大学,研究方向:计算机应用技术,无线传感器网络等。