论文部分内容阅读
摘要:《软件测试技术》是计算机科学与技术学科的一门新兴课程,本文对该课程的教学改革与实践成果进行了总结,重点对教学内容、教学方式和课程项目建设进行了深入探讨,最终提高了学生的软件测试技能并初步培养了学生的创新意识。
关键词:软件测试;教学改革;项目建设
中图分类号:G642.0 文献标志码:A 文章编号:1674-9324(2012)11-0037-02
当今软件面临复杂性、开放性和演化性等诸多挑战,而软件测试是保障软件质量的一种重要手段。近些年来软件测试日益得到工业界、教育界和学术界的广泛关注。基于上述背景,南通大学计算机科学与技术学院从2007年开始在本学院和杏林学院均开设了《软件测试技术》这门课程。截止到目前先后有四名教师担任过该门课程的教学工作并有800名左右的学生选修了该门课程。通过与相关任课教师和听课学生的深入交流,发现目前该课程在课程建设中存在如下问题:①与计算机专业的传统课程相比,《软件测试技术》作为一门独立课程在国内院校普遍开设较晚,早期一般作为《软件工程》课的某一章节进行授课。同时已经出版的相关教材关注重点一般比较分散,知识点较为陈旧甚至存在相互冲突问题,与企业实际需求存在一定差距,授课老师普遍反映难以把握授课重点和难点。②听课学生在学习过程中反映课程内容抽象枯燥,学习兴趣普遍不高。③《软件测试技术》是一门实践性较强的课程,目前缺乏合理的项目设计,可以由浅入深、循序渐进地培养并提高学生的软件测试技能。针对上述问题,以我们在软件测试领域的已有研究成果为基础,对《软件测试技术》课程的教学和实践进行了改革和实践并初步取得了一定教学改革成果。
二、课程教材和内容选择
我们对国内外高校开设的《软件测试技术》课程进行了调研、分析和研究,同时为了使授课内容与企业的实际需求相适应,深入企业与测试部门的管理人员和测试人员进行了沟通交流,从课程教材选用和课程内容设置上进行了探讨。
1.课程教材的选择。通过在中国主流电子商务网站输入关键词软件测试或软件质量保障,我们发现相关教材有将近一百本。通过精心筛选,我们最终确定了两本英文教材和一本中文教材。两本英文教材分别是《Introduction to Software Testing》和《Foundations of Software Testing》。中文教材是同济大学朱少民教授编写的《软件测试方法和技术》。在实际教学中以中文教材作为授课教材。
2.课程内容的选择和改革。在教学内容设置上我们提出了如下教学内容框架。该框架包括基本概念模块、测试技术模块、测试流程模块和测试工具模块。其中基本概念模块是核心,它有效支持了其他三大模块;而测试技术模块、测试流程模块和测试工具模块则相互依赖。在基本概念模块的教学内容设置上,首先通过引入国内外经典案例介绍不充分的软件测试将给企业带来重大的经济损失,从而让学生初步意识到学习这门课程的重要性。然后对软件测试中核心基本概念给出了精确的定义。例如缺陷(Fault)、错误(Error)和失效(Failure)这三个术语对应的英文单词均可翻译为错误,但在软件测试中却存在细微差别,其中缺陷是指软件中存在的静态不足,错误是因缺陷导致程序运行时出现的不正确内部状态,失效是指与预期输出不匹配的实际输出。为了加深学生对这三个基本术语的理解,我们在教学过程将这三个术语与学生熟悉的医生看病过程进行了类比。当病人出现打喷嚏、发高烧和流鼻涕等症状时,我们认为病人出现失效,医生为了作出正确诊断,需要安排病人去测血压和量心跳来观察是否出現数据异常,该过程相当于判断是否出现错误。当观察完数据后,医生可以确定病人症状根源,例如确定病人患上感冒,该根源类似于缺陷。通过这个生活实例铺垫,大部分学生可以准确掌握这三个术语的区别。在软件测试技术模块的教学内容设置上,从文献中可知目前软件测试存在大量有效方法和技术。我们将已有软件测试技术分为两类:基于程序规约的黑盒测试和基于程序内部实现的白盒测试。并从中选择出经典的软件测试方法进行讲解,其中黑盒测试方法包括等价类划分、边界值分析、判定表、因果图法、组合测试等。而白盒测试方法包括语句覆盖准则、判定覆盖准则、条件覆盖准则、判定-条件覆盖准则、条件组合覆盖准则、路径覆盖准则和基本路径覆盖准则等。其中在黑盒测试方法的实际教学中结合目前的科研成果将正交试验法进行扩展并引入组合测试方法。在软件测试流程模块的教学内容设置上,除了对基于V模型的四个测试阶段进行了详细介绍,同时结合实际调研情况还额外考虑了软件回归测试技术。目前软件演化频率和回归测试成本越来越高。为了有效保障修改后的软件产品质量,测试人员一般通过回归测试技术来保证代码修改的正确性并避免副作用。有企业统计数据表明回归测试所需开销一般占整个软件维护成本的50%以上,所以针对回归测试技术的教学显得尤为重要。为了提高这块内容的教学质量,我们对国内外研究成果进行了分析和筛选。在教学中提出了经典回归测试技术框架。在该框架内首先对修改前后程序进行对比并识别出代码修改模块,通过修改影响分析方法识别出与代码修改存在依赖关系的其他程序模块。随后在已有测试用例集的基础上,通过测试用例选择、测试用例集扩充和测试用例集约简等方法进行优化并最终构造出针对修改后程序的测试用例集。通过课后交流,学生普遍认为这些学习内容可操作性较强,并可以有效提高他们应聘软件测试员岗位的竞争力。
三、课程项目建设的探讨
《软件测试技术》课程实践性较强,所以合理设置难度适当的课程项目可以促进学生的学习兴趣并提高他们的软件测试技能,同时有效提高动手能力和培养团队沟通协作能力。在教学改革中我们设计了一个综合项目,该项目包括测试用例设计、测试用例执行和测试报告生成等模块。具体来说:首先选择被测程序,然后根据控制或数据依赖关系将被测程序进行建模(可选模型包括抽象语法树、控制流图和数据流图等)。接着确定覆盖准则并生成相应的测试需求,例如基本路径集等。有了测试需求后,可以采用遗传算法或者动态符号执行技术生成对测试需求充分覆盖的测试用例集。最后通过执行测试用例来搜集覆盖信息并生成最终的测试报告。目前以JAVA编程语言为主来完成该项目开发,在开发过程中充分利用已有的开源软件,主要以JUnit单元测试框架、Ant构建工具和Eclipse集成开发环境为主。在项目组织形式上,可以将4~6人组成一组并最终提交综合项目实验报告。
通过这两年的《软件测试技术》课程的实际教学改革,我们明显感觉通过系统科学的知识传授,并辅以一定的实践,可以有效培养学生的实际动手能力和创新意识。有的学生在毕业后进入软件测试部门并得到用人单位的好评。有的学生在考取研究生之后选择了软件测试方向作为自己的研究方向。
参考文献:
[1]Ammann P,and Offutt J,Introduction to Software Testing[M].Cambridge University Press,2008.
[2]Mathur AP.Foundations of Software Testing[M].Pearson Education Press,2008.
[3]朱少民.软件测试方法和技术[M].清华大学出版社,2010.
[4]聂长海.关于软件测试的几点思考[J].计算机科学,2011,38(2):1-3.
[5]陈翔,顾庆,王子元,陈道蓄.一种基于粒子群优化的成对组合测试算法框架[J].软件学报,2011,22(12):2879-2893.
基金项目:本文受南通大学教学研究课题(2011B56,2011B61)资助
作者简介:陈翔(1980-),男,讲师,博士,主要研究方向:软件测试和程序分析。
关键词:软件测试;教学改革;项目建设
中图分类号:G642.0 文献标志码:A 文章编号:1674-9324(2012)11-0037-02
当今软件面临复杂性、开放性和演化性等诸多挑战,而软件测试是保障软件质量的一种重要手段。近些年来软件测试日益得到工业界、教育界和学术界的广泛关注。基于上述背景,南通大学计算机科学与技术学院从2007年开始在本学院和杏林学院均开设了《软件测试技术》这门课程。截止到目前先后有四名教师担任过该门课程的教学工作并有800名左右的学生选修了该门课程。通过与相关任课教师和听课学生的深入交流,发现目前该课程在课程建设中存在如下问题:①与计算机专业的传统课程相比,《软件测试技术》作为一门独立课程在国内院校普遍开设较晚,早期一般作为《软件工程》课的某一章节进行授课。同时已经出版的相关教材关注重点一般比较分散,知识点较为陈旧甚至存在相互冲突问题,与企业实际需求存在一定差距,授课老师普遍反映难以把握授课重点和难点。②听课学生在学习过程中反映课程内容抽象枯燥,学习兴趣普遍不高。③《软件测试技术》是一门实践性较强的课程,目前缺乏合理的项目设计,可以由浅入深、循序渐进地培养并提高学生的软件测试技能。针对上述问题,以我们在软件测试领域的已有研究成果为基础,对《软件测试技术》课程的教学和实践进行了改革和实践并初步取得了一定教学改革成果。
二、课程教材和内容选择
我们对国内外高校开设的《软件测试技术》课程进行了调研、分析和研究,同时为了使授课内容与企业的实际需求相适应,深入企业与测试部门的管理人员和测试人员进行了沟通交流,从课程教材选用和课程内容设置上进行了探讨。
1.课程教材的选择。通过在中国主流电子商务网站输入关键词软件测试或软件质量保障,我们发现相关教材有将近一百本。通过精心筛选,我们最终确定了两本英文教材和一本中文教材。两本英文教材分别是《Introduction to Software Testing》和《Foundations of Software Testing》。中文教材是同济大学朱少民教授编写的《软件测试方法和技术》。在实际教学中以中文教材作为授课教材。
2.课程内容的选择和改革。在教学内容设置上我们提出了如下教学内容框架。该框架包括基本概念模块、测试技术模块、测试流程模块和测试工具模块。其中基本概念模块是核心,它有效支持了其他三大模块;而测试技术模块、测试流程模块和测试工具模块则相互依赖。在基本概念模块的教学内容设置上,首先通过引入国内外经典案例介绍不充分的软件测试将给企业带来重大的经济损失,从而让学生初步意识到学习这门课程的重要性。然后对软件测试中核心基本概念给出了精确的定义。例如缺陷(Fault)、错误(Error)和失效(Failure)这三个术语对应的英文单词均可翻译为错误,但在软件测试中却存在细微差别,其中缺陷是指软件中存在的静态不足,错误是因缺陷导致程序运行时出现的不正确内部状态,失效是指与预期输出不匹配的实际输出。为了加深学生对这三个基本术语的理解,我们在教学过程将这三个术语与学生熟悉的医生看病过程进行了类比。当病人出现打喷嚏、发高烧和流鼻涕等症状时,我们认为病人出现失效,医生为了作出正确诊断,需要安排病人去测血压和量心跳来观察是否出現数据异常,该过程相当于判断是否出现错误。当观察完数据后,医生可以确定病人症状根源,例如确定病人患上感冒,该根源类似于缺陷。通过这个生活实例铺垫,大部分学生可以准确掌握这三个术语的区别。在软件测试技术模块的教学内容设置上,从文献中可知目前软件测试存在大量有效方法和技术。我们将已有软件测试技术分为两类:基于程序规约的黑盒测试和基于程序内部实现的白盒测试。并从中选择出经典的软件测试方法进行讲解,其中黑盒测试方法包括等价类划分、边界值分析、判定表、因果图法、组合测试等。而白盒测试方法包括语句覆盖准则、判定覆盖准则、条件覆盖准则、判定-条件覆盖准则、条件组合覆盖准则、路径覆盖准则和基本路径覆盖准则等。其中在黑盒测试方法的实际教学中结合目前的科研成果将正交试验法进行扩展并引入组合测试方法。在软件测试流程模块的教学内容设置上,除了对基于V模型的四个测试阶段进行了详细介绍,同时结合实际调研情况还额外考虑了软件回归测试技术。目前软件演化频率和回归测试成本越来越高。为了有效保障修改后的软件产品质量,测试人员一般通过回归测试技术来保证代码修改的正确性并避免副作用。有企业统计数据表明回归测试所需开销一般占整个软件维护成本的50%以上,所以针对回归测试技术的教学显得尤为重要。为了提高这块内容的教学质量,我们对国内外研究成果进行了分析和筛选。在教学中提出了经典回归测试技术框架。在该框架内首先对修改前后程序进行对比并识别出代码修改模块,通过修改影响分析方法识别出与代码修改存在依赖关系的其他程序模块。随后在已有测试用例集的基础上,通过测试用例选择、测试用例集扩充和测试用例集约简等方法进行优化并最终构造出针对修改后程序的测试用例集。通过课后交流,学生普遍认为这些学习内容可操作性较强,并可以有效提高他们应聘软件测试员岗位的竞争力。
三、课程项目建设的探讨
《软件测试技术》课程实践性较强,所以合理设置难度适当的课程项目可以促进学生的学习兴趣并提高他们的软件测试技能,同时有效提高动手能力和培养团队沟通协作能力。在教学改革中我们设计了一个综合项目,该项目包括测试用例设计、测试用例执行和测试报告生成等模块。具体来说:首先选择被测程序,然后根据控制或数据依赖关系将被测程序进行建模(可选模型包括抽象语法树、控制流图和数据流图等)。接着确定覆盖准则并生成相应的测试需求,例如基本路径集等。有了测试需求后,可以采用遗传算法或者动态符号执行技术生成对测试需求充分覆盖的测试用例集。最后通过执行测试用例来搜集覆盖信息并生成最终的测试报告。目前以JAVA编程语言为主来完成该项目开发,在开发过程中充分利用已有的开源软件,主要以JUnit单元测试框架、Ant构建工具和Eclipse集成开发环境为主。在项目组织形式上,可以将4~6人组成一组并最终提交综合项目实验报告。
通过这两年的《软件测试技术》课程的实际教学改革,我们明显感觉通过系统科学的知识传授,并辅以一定的实践,可以有效培养学生的实际动手能力和创新意识。有的学生在毕业后进入软件测试部门并得到用人单位的好评。有的学生在考取研究生之后选择了软件测试方向作为自己的研究方向。
参考文献:
[1]Ammann P,and Offutt J,Introduction to Software Testing[M].Cambridge University Press,2008.
[2]Mathur AP.Foundations of Software Testing[M].Pearson Education Press,2008.
[3]朱少民.软件测试方法和技术[M].清华大学出版社,2010.
[4]聂长海.关于软件测试的几点思考[J].计算机科学,2011,38(2):1-3.
[5]陈翔,顾庆,王子元,陈道蓄.一种基于粒子群优化的成对组合测试算法框架[J].软件学报,2011,22(12):2879-2893.
基金项目:本文受南通大学教学研究课题(2011B56,2011B61)资助
作者简介:陈翔(1980-),男,讲师,博士,主要研究方向:软件测试和程序分析。