前言:想要写出一篇令人眼前一亮的文章吗?我们特意为您整理了5篇软件测试课程总结范文,相信会为您的写作带来帮助,发现更多的写作思路和灵感。
中图分类号:G64文献标识码:A文章编号:1009-3044(2012)14-3353-02
Course System Research of Software Testing Technology Based on Demand of Talent Market
ZHENG Hao, LIU Jian-fang
(Pingdingshan University, Pingdingshan 467000, China)
Abstract: This paper analyze the actual needs of talent market at first, and then set up the Curriculum system based on the software testing theory and technology. Paying more attention on the application, we want to construct course system to meet the market, which has deep foundation and strong skills. All of these promote the quality of the professional course.
Key words: Market requirement; software testing; Curriculum system
最近的年度软件测试行业专项调查报告显示,社会对软件测试人才的需求越来越大,可人才市场提供的人力资源、实际能力却不能满足这种需求。目前国内对测试人才职业化培养体系还不够充分,现行的传统教育体制重学历教育,轻职业技能培训,导致了软件测试人才告急。如何结合人才市场的实际需求,构建适合的课程培养体系,成为软件测试课程改革迫在眉睫的问题。
1中国软件测试行业的市场需求分析
在我国,软件产业的兴起和发展也就是这短短十几年。在前面的兴起和发展壮大阶段,一般的软件公司都是重开发轻测试,甚至存在把测试工作都放在用户那里去做的错误思想;追求眼前功能的实现,开发软件追求“短”、“平”、“快”。不太考虑性能和功能的优化。软件测试以往一直被中小IT企业所忽视,只有一些知名企业才有专门的软件测试人员。
现在,更多的国内企业认识到测试的重要性,但是由于国内测试人才的储备相对较少,据国家权威部门统计,中国软件人才缺口超过100万人,其中很大一部分为软件测试人才,缺口达到30~40万。但由于软件测试的重要性是近几年才被充分认识到的,高校教育和企业培养都还没有跟上,致使软件测试需求严重供不应求。
分析年度软件测试行业专项调查报告,目前对测试人员的素质和要求逐步提高,测试人员不仅应掌握相关计算机知识背景、软件工程基本知识、熟悉项目编程语言、熟悉项目技术架构及需求内容,而且要求工作有责任感、独立分析能力及团队精神等方面。其中“动手能力”和“实际经验”是软件企业在招聘软件测试人员时最为看重的,而这也恰恰是很多求职者的“软肋”。
2现有软件测试课程体系存在的问题
2007年,我校软件学院认证管理中心被授予计算机软件测试人才培养基地。软件学院软件工程专业以及软件技术专业均开设有软件测试相关课程。由于软件测试是一门实践性很强的课程,应采用精讲多练的原则开展教学,即学生通过大量的上机实践,循序渐进地提高自身的软件测试用例设计、开发、执行能力以及软件测试的管理能力。但在具体实践教学组织中,教师普遍感觉有许多不如意的地方,具体存在的问题有:
1)对实践课程的认识程度和重视程度不够,软件测试开展的不够彻底,测试过程中存在大量的不规范性;
2)缺乏合适的教材,同时教师缺乏相应的实战经验,导致教学上知识结构不合理,教学内容与具体应用脱节,尽管教师都能很好的讲解软件测试理论知识,但却由于缺乏合适的测试案例,没有将理论教学内容和最新相关技术结合,使得学生思维局限性大,并没有真正提高学生自主思考的能力和创造性思维。
3)教学方法和手段因循守旧,学生对软件测试职业存在一些片面的,甚至是错误的理解。
3基于人才市场需求的《软件测试技术》课程体系研究
基于人才市场需求的软件测试技术课程体系研究主要是分析目前人才市场对软件测试行业人才的岗位需求,掌握软件测试人才需要具备的职业素质,同时调查研究在学生对前续课程的掌握情况,以及目前所具备的相关职业素养的程度,计划从技术、沟通协调能力、经验和技能、综合素质能力等方面分别对岗位需求和学生水平展开调研。
3.1课程体系目标定位
我校软件工程专业的培养目标是培养适应社会发展需求,具有扎实的计算机知识基础,掌握软件工程领域的前沿技术和软件开发方法,具有较强的软件实践能力和创新精神,具备较强的软件项目的分析、设计、开发和维护能力,能够按照工程化的原则和方法从事软件开发和管理的应用型人才。
作为该专业的一门专业必修课,为构建厚基础、强技能、注重技术应用的适合应用性人才培养的课程体系。将以软件技术为基础,测试理论与技术为核心,进行课程体系设置。理论教学目的是让学生深刻理解软件测试思想和基本理论;熟悉多种软件的测试方法、相关技术和系统地软件测试过程;会熟练编写测试计划,测试用例,测试报告,并熟悉几种自动化测试工具,从而从工程化角度提高和培养学生从事大型软件的测试技术和能力。
同时在实践环节,要求学生通过实验学习,培养与提高项目测试过程中采用的主要技术、设计测试用例、编写测试总结报告等能力,激发学生创新精神和创新能力,具体应达到下列基本要求。1)使学生掌握分析问题和解决问题的技巧,通过具体实验使学生掌握常用的黑盒测试技术、白盒测试技术、自动化测试工具。2)让学生了解测试流程,掌握测试总结报告的编写。通过实验使学生理解软件缺陷的描述,并能结合项目设计出较完善的测试用例。
3)了解Web系统的测试范围,使学生能在应用场景下联系实际和所学知识分析和解决问题,缩短理论和实践的距离。
3.2课程教学内容选取
结合课程体系目标定位,该课程在教学内容选取上主要是基于人才市场需求,厚基础、强技能、注重技术应用。总学时共72学时,其中理论和实践各36学时。结合课堂教学和实践教学,软件测试技术课程包括以下几部分:
1)软件测试基本理论及方法:包括软件测试的概念、测试的原则、用例的设计、各种测试方法及技巧,测试策略。同时通过实验掌握软件测试的步骤、方法及常见问题的处理。
2)测试流程及文档写作:软件测试流程、各阶段的文档编写;书写测试计、测试用例、测试报告、产品安装手册、产品使用手册。在实践环节,通过SATM系统让学生掌握软件测试流程各个阶段的相关技术、测试相关文档的写作技巧。
3)系统学习软件测试的各种工具,包括:自动测试工具WinRunner;压力测试工具LoadRunner;测试管理工具Testdirector;流程管理工具CVS;JAVA单元测试工具Junit。要求学生掌握自动化测试理论与方法,熟练使用常见测试工具。
4)软件过程控制与质量保证:软件质量的概念及软件质量管理的基本方法;测试项目的范围管理、人员组织结构、理解测试的配置管理、风险管理、成本管理等。
5)项目实训:引入具有真实企业背景的软件测试案例,充分考虑人才市场的需求,突出强调工学结合的重要性。通过实际项目掌握实际工作中开发和测试的流程,使用相关工具,完成各种测试目标,实现软件测试实践环节单项专业知识与整体技能综合运用的目标,提高测试能力和积累相关经验。
3.3课程教学方法设计
为构建厚基础、强技能、注重技术应用的适合应用性人才培养的课程体系,在教学过程中,需要把技能训练和职业素质培养有机结合起来,注重学生综合能力的培养与提高,突出强调职业岗位针对性。提高学生综合运用所学知识发现问题、分析问题、解决问题的能力,进而培养学生的技术应用和技术创新能力。在教学方法设计上做了一下改进:
1)突出工学结合:在讲解基本理论知识的基础上,引入具有真实背景的软件测试案例,并结合理论知识讲解将案例进行改造,使案例的分析应用与理论知识相呼应。目前市场上IT公司在招聘测试人员时按照所需技能的不同,将测试人员分为三个等级,分别为初级测试工程师、中级测试工程师和高级测试工程师。分析不同等级的要求,在教学过程中,主要针对初级和中级的技能要求循序渐近的展开教学。使通过此教学改进,既弥补了教师缺乏实战经验带来的不足,也使学生能较真实的接触到实际应用,从一定程度上实现了人才培养与市场需求的接轨。
2)强调团队合作:在教学过程中实施“1-7”模式,即在实验课教学中,采用团队合作的方式,分组完成各项任务。在实验初期由教师合理分配各团队成员间的任务,培养学生的基本岗位技能。经过两个实验任务的完成,每个团队挑出一名同学为项目组长,模拟公司招聘的形式,招聘4~6个组员组建自己的团队。后期实验任务的分工由团队组长负责项目进展、分工协作、制定测试计划等工作,其他小组成员则按要求完成自己的工作,如编写测试策略、设计测试用例、撰写测试报告等,教师主要起引导作用,充分发挥以学生为主体。为了全面培养学生,在不同的任务中,组员通过角色互换,充分发挥其沟通能力及综合技术能力。在学期末,通过团队评比,以提高平时成绩的形式对表现优秀的团队进行奖励。通过此教学手段,可以培养加强学生面试技巧、沟通能力、团队意识、竞争意识等职业素质的培养。
4结束语
基于人才市场需求的《软件测试技术》课程体系研究定位在对人才市场的实际需求分析之上,针对软件测试人才的特点要求,把行业、企业对人才的要求转化为教学中的具体目标。构建厚基础、强技能、注重技术应用的适合应用性人才培养的课程体系。
参考文献:
[1]朱少民.软件测试方法和技术[M].北京:清华大学出版社,2010.
[2]古乐.软件测试案例与实践教程[M].北京:清华大学出版社,2007.
[3]马民生,马友忠,任刚.以就业为导向的软件测试实践课课程改革[J].电脑知识与技术,2010(4):241-242.
[4]刘伟.独立学院软件测试课程的教学探索与实践[J].广西教育.2009(24):31-33.
本文针对软件测试课程的教育现状,结合软件测试的课程特点和培养目标,从面向应用型人才的培养方式出发,提出了以案例式教学为主导,走教学产业化发展的软件测试改革方案。
关键词:
软件测试;应用型人才;案例式教学;教学产业化
随着我国IT行业的发展,越来越多的企业意识到软件测试的重要性,因此软件测试人员成为当前IT业界亟需的热门人才。面对软件测试人员紧迫的需求形势,应用型人才培养单位应该扩大软件测试人员的人才培养规模,提高培养质量。
一、《软件测试》课程教育现状
我国软件测试技术发展已有十余年,但IT市场对于测试人员仍然呈现出供不应求的势态。目前国内高校对软件工程专业几乎都会开设软件测试课程,甚至有些高校已经设置有软件测试专业。2011年11月,教育部主办了“2011年高等学校软件测试课程教学论坛”,对测试人才的培养及测试领域的全面发展起到了积极地推动作用[1]。高校系统化的专业教育体系为学生奠定了扎实而科学的学科基础,并对软件测试技术的理论化和系统化发展起到了不可替代的作用。利弊相依,传统的人才培养模式对软件测试课程设置和培养方案上还是会存在以下不足。
1.重理论轻实践在传统的软件测试课程设置中,大多采用教师在课堂上讲授理论知识,学生上机时完成实验操作的教学方式。实验的目的只是为了检查学生知识点的理解和掌握,实验题目大多比较陈旧,不能与时俱进地与当前的最新技术或最热门的应用相结合,使得学生的测试知识体系过于单薄。
2.重学生个体知识积累,轻团队协作能力培养团队协作在软件工程中的重要性无须多述。软件测试作为软件工程中重要一个环节,贯穿于整个软件生命周期,测试人员与系统分析员、软件设计师、程序员、维护人员之间的沟通必不可少,良好的团队协作才能有助于项目的进行,有助于高效、正确地开发出高质量的软件产品。传统的教学模式中,很少引入分组协作的环节去锻炼学生的沟通和交流能力,更不能设计出测试人员和开发人员的沟通场景,不能满足学生在项目中去加深理解、巩固提高的需求。
3.重即有知识,轻科学创新一直以来,软件测试课程在高校的课程体系中受到重视并不多,课程结束后并没有延续测试知识的后续课程。因此,学生不能在后面的学习和实践中进行总结提升。知识在母体中是要经过消化、适应、转化、演进、创新、融合、活化,而后才称为组织的“行动知识”,现有的教学模式不能很好的产生知识发酵效果。
二、《软件测试》课程特点和培养目标
软件测试是一门应用型较强的学科,应注重理论联系实践。一个合格的软件评测师除了要掌握即有的测试理论和软件知识外,还必须具备对软件测试行业的深刻理解,必须具备对计算机专业知识,包括编程技能、数据库、网络、中间件等知识的系统掌握,必须具备沟通能力、团队协作精神。软件测试是为了尽可能多地发现并排除软件中潜藏的错误,最终把一个高质量的软件交给用户,这并不是一项简单的工作。要做好软件测试,测试人员不仅需要站在客户的角度思考问题,真正理解客户的需求,具备良好的分析能力和创造性思维能力,完成功能测试和界面测试,而且要能理解软件系统的实现原理和各种使用场景,具备扎实的技术功底,能使用测试工具完成相应的性能测试、安全性测试、兼容性测试和可靠性测试等更具挑战性的任务[2]。从这个角度看,一个优秀的测试工程师需要掌握更多的知识和技能。
三、《软件测试》课程教学改革方案
以上可以看出,当前高校对于测试课程的不重视,以及当前的软硬件设施及教学方法都不能满足对应用型测试技术人才的培养要求。为了适应软件产业发展对测试人才的迫切需要,实现软件人才培养的持续性发展,针对软件测试课程调整培养方案,展开深入的教学改革和实践活动十分迫切和必要。
1.加大师资力量,构建完善的软硬件测试平台教师素养的提高是软件测试教学改革得以顺利开展的前提。此前,国内对软件测试并不重视,致使国内软件测试人才短缺,大部分高校内虽然有计算机系,但多以重开发轻测试,测试教师的专业素质和数量都远远不够。因此,不仅要重视对教师测试专业技术的培训,提供更多的学习机会,也应该认真开展软件测试教学研究,构造专业的软件测试教学团队。作为一门实践性较高的课程,软件测试必须建议专门的、完备的实验教学体系和环境。目前,高校普遍缺乏软件测试的软、硬件环境,致使学生无法通过项目实践来深入理解和提高测试相关知识和技能。
2.运用案例教学,丰富软件测试项目实战案例在教学活动中,学生总是对最新、最流行的项目和案例感兴趣,陈旧的案例既不能满足当前市场上对测试人才的技术需求,又不能很好的激起学生的兴趣。运用案例教学最重要的环节就是丰富案例素材,保持案例的“鲜活性”与“生命力”。高校可以采用历年本科毕业设计中运用了流行的技术、难度适中、功能较为完整的应用作为软件测试课程的测试案例,不但可以保证素材的延续性,也使得学生毕业设计完成的质量有所提高。
3.加强校企合作,走教学产业化发展之路[3]企业需要人才,高校为企业输送人才,校园中学习的技能最终要接收用人单位的考验。所以与软件企业合作,建立对口的学生实训基地,是应用型人才培养的重要途径。软件测试技术的掌握与提高离不开项目实战,让学生在真正的软件工程过程中从事测试工作,不仅能使学生深刻体会到软件测试在整个项目中的作用,掌握测试方法和技巧,对于学生的沟通交流能力、团队协作能力都有积极的促进作用。
四、小结
软件测试是保障软件质量,验证软件可靠性的重要环节,其重要性不言而喻。重视软件测试应从企业用人的实际需求出发,高校应加强面向企业需求的软件测试改革,切实培养学生的动手操作能力,使学生掌握最新的测试方法和技巧,让企业需求促进和推动高校教学发展。
参考文献:
[1]李静赵志升.软件测试专业课程体系建设和教学改革[J].教育与职业,2014(1):136-137.
[2]朱少民.软件测试方法和技术[M].北京清华大学出版社,2005.
关键词: 软件测试; 项目驱动; 教学模式; 测试流
中图分类号:G642 文献标志码:A 文章编号:1006-8228(2013)03-62-02
0 引言
软件测试形成了一个新兴的行业。软件测试的工作贯穿于整个软件产品生产过程的始终,是保证软件质量的有效手段。软件测试课程是软件工程专业的必修课程之一,是一门理论性和实践性都很强的专业课。该课程对于人才的培养目标是:掌握软件测试和软件质量的基本理论、常用的测试方法和自动化测试工具,能够编写测试计划、设计测试用例、完成软件初步测试。
目前软件测试行业人才严重不足。据企业专职软件测试人员分布调查,27.5%的企业目前没有专业的软件测试人员,43.5%的企业软件测试人员的数量在1~10人之间。为了适应行业人才需求,国内高校纷纷开设软件测试课程。但软件测试在国内高校中尚属一门新兴的课程,缺少对不同开发方式和应用场景的软件测试方法介绍,学生对软件测试过程缺乏完整的认识,学习主动性不高,甚至认为软件测试是一门文字性课程。如何进行软件测试教学方法调整以适应业界需求已成为一个亟待解决的问题。
1 软件测试课程教学存在的主要问题
1.1 学生学情分析
软件测试是对软件形成过程中的文档、数据和程序等内容进行测试,而不仅仅是对程序进行测试,这需要学生对软件工程的基础理论,系统的分析设计,软件的开发技术等有一定的了解。
在还没有完全理解软件工程相关理论时,就开始进行软件测试课程的学习,会导致学生对软件测试理解的偏差。例如,认为软件测试就是找出软件项目中的错误,是简单而枯燥的工作,因而只重视开发技术的培养,不重视甚至忽略测试技术的掌握。
1.2 教学材料分析
软件测试方面的书籍大多是翻译的,而且多是培训用书或介绍软件测试工具的书,而能够满足高校软件测试课程的教材较少。在当前市面上的软件测试教材中,大部分也只是阐述空洞的理论,附加简单而又陈旧的工具介绍,这些理念和工具很多已经被业界淘汰,这样的教材难以适应当前市场对软件测试人才的需求。
软件测试工具较多、范围广、不易把握重点,而大部分测试工具如:LoadRunner、WinRunner、JUnit、C++Test等都是英文版本,工具书较难读懂。教学过程中没有相关的软件产品供学生测试,以验证所学的理论,达不到理想的教学效果。
1.3 教学方法分析
传统教学手段是以课堂教授为主的“灌输式”教学。教师授课时主要是在分析一门课程知识结构的基础上,循序渐进地讲授一门课程的知识点,学生按部就班地学习知识点。传统教学法过于理论,学生往往在学了一堆理论知识后对如何测试实际项目还是很茫然。虽然传统教学法在某些教学环节也会给出一些实例或小项目,但是对于整个课程来说,这些实例或小项目是孤立的、彼此没有联系的,以至学生掌握的知识也是零散的,不系统的,缺乏对课程的整体把握。
1.4 考核方式分析
课程考核是课程教学过程中的重要一环,是检测和促进学生学习效果的重要手段。目前学生考核体系基本以闭卷形式的终结性考核成绩为主,以考勤、课堂表现、作业等组成的平时成绩为辅的考核方式。这种方式存在的问题主要是:以期末考试成绩为重,考核内容相对片面,注重的是软件测试基础理论知识,对软件测试应用知识的能力考查不够,过分注重书本知识而忽略了软件测试综合应用能力的整体考查。
2 基于项目驱动的软件测试教学法探索
欲改善上述局面,就应结合学生的专业特色,在教学过程中以实际工程项目为主线,把软件项目的整体思想纳入到本课程中来,让学生在学习过程中积累项目测试经验,掌握项目测试的流程,增加学生对课程目的性的认识,提高学生的积极性。
项目驱动式教学法是一种建立在建构主义学习理论基础上的、有别于传统教学的新型教学方法。建构既是对新知识的理解与掌握,同时又包含对原有经验和知识的改造和重组,综合形成新的知识建构。该方法提倡以学生为中心的学习。在整个教学过程中教师起组织者、指导者、帮助者和促进者的作用,教师利用情境、协作、会话等学习环境要素充分发挥学生的主动性、积极性和创造性,最终使学生有效地掌握当前所学知识。
2.1 软件项目前期准备阶段
项目是项目驱动教学的核心,整个教学过程都始终围绕项目展开。项目设置的好坏将直接影响到教学效果,因此在设计项目上应注意以下几点。
2.1.1 项目具有典型性
项目教学法中应选择以解决身边的现实问题为背景材料,从熟悉项目着手能充分激发学生的学习热情。项目能覆盖学生已经学习过的知识点,如:软件工程的基础理论,系统的分析设计,软件的开发技术,从源头上保证知识的完整性。
2.1.2 项目规模、难度适中
项目教学法中选择的项目规模和难度都应适中。如果项目规模和难度过大,软件测试用例的设计难度大,学生不容易完成。项目规模和难度过小,则涉及的知识点少,不能反映学生对软件测试用例设计的理解程度。因此,设计的项目应保证学生通过努力能够完成,这样可以树立学生完成任务的信心,充分调动学生的积极性和主观能动性。
2.1.3 项目规范
由于软件测试是对软件形成过程中的文档、数据、程序,以及所有相关文档进行测试,所以被测软件应该是按照软件工程思想设计开发的,每个阶段的工作都应当在文档中体现出来,文档撰写有严格的标准和规范。
项目来源:
途径1:所在学院的每门课程都有多名教师建立的课程群,测试案例可以由教授面向对象程序设计、综合课程设计、系统分析与设计等课程的教师提出要求,选择典型的作品充实案例库。
途径2:从毕业设计中选择,大四的学生都要作毕业设计,教师可以从其提取一些典型系统,充实案例库。
途径3:来自学生科研项目,每年都有大量的学生申报科研项目,教师可以收集其优秀作品,充实案例库。
途径4:来自校企合作项目,教师在和企业合作开发项目时,在合同允许的情况下,将开发系统作为实际案例,充实案例库。
2.2 基于项目驱动的软件测试教学法实施
基于项目驱动的软件测试教学法实施是在学生已完成软件系统分析与设计的实践,并有一定的编程能力的基础上设计的,涉及两种活动流:教学流和测试流。
⑴ 教学流
由于软件测试课程的知识点前后关联关系不大,教师在教学流过程中,不必在讲清楚课程的基础知识和基本技能后再进行项目的教学,可直接面对具体任务进行教学。在教师带领学生分析解决具体项目的方法时,将相关联的知识点串联起来,让学生在学习各阶段的理论知识同时,完成软件相应的测试活动。
基于项目驱动的教学流按照项目测试流程大体可分为三个阶段:软件测试基础、软件测试技术和软件测试管理。
第一阶段,学生主要进行部分软件开发和相应产品的静态测试。在开发的过程中通过规范的开发文档和测试文档,给学生展示单元测试、集成测试和系统测试的密切关系,让学生深刻认识到软件测试是紧密伴随软件开发过程而进行的活动。
第二阶段,主要进行测试设计和实现。软件测试中对具体项目常常有多种测试方法,教师可只讲解其中最实用的方法。其他方法的应用作为讨论、实验、课外作业的形式由学生完成,让学生在完成项目实践的过程中学习知识、解决问题、提高技能。本阶段的教学应只包括对重点教学内容的讲解,其过程应该精练,以便为学生学习提供广泛的空间,为学生顺利完成项目打下良好的基础。
第三阶段,主要进行测试管理和报告。通过测试用例管理工具、案例以及规范的软件测试报告的介绍和展示,让学生深刻认识软件测试需要规范的测试管理过程,软件测试中测试需求、测试用例、测试业务组件、测试计划、测试执行、测试结果、缺陷都需要进行合理的规划和管理。
⑵ 测试流
基于项目驱动的测试流是由教师给定多个项目,并提出测试要求,教学过程中将团队测试的思想贯穿始终,将学生分成若干小组,以小组为单位完成项目测试。每个小组由1个项目组长、1个测试组长和3个测试组员构成。小组内部责任明确,选择有较强实践能力和沟通能力学生担任项目组长,负责制定测试方案、任务分配和人员协调工作。选择有较强学习能力和技术能力学生担任测试组长,负责分析软件需求、获得测试需求、制定测试策略方案、确定测试方法。小组内每个学生必须完成最基本的任务,即测试用例的设计、编写、执行和维护等各项任务。
测试流执行过程中,学生探究性地学习相关的知识和技能,在知识运用中掌握实践技能。通过任务的实施和完成,让学生体验到知识应用的成就感,增强学习的积极性,促使学生更加主动地、探索性地学习相关的知识和技能,使知识技能的掌握更加牢固。测试流执行过程中,教师为项目组提供相关的学习资料资源,引导学生有目的性、有针对性地学习,同时关注学生开展项目的全过程,严格要求按照项目的具体实施流程进行,比如软件测试项目必须按照测试计划、测试设计、测试执行和测试结果分析来进行,每个阶段的工作必须撰写规范的技术报告。
测试流的最后阶段,教师组织各测试小组进行课程设计答辩。答辩时,组间相互评价,从文档规范性、测试方法的正确性和有效性、测试技术应用的广泛性等方面选出最优测试小组。最终经过教师对学生单人考核,结束本次测试流教学。
3 结束语
本文针对软件测试课程教学中存在的问题,提出采用项目驱动的教学模式,通过教学流、测试流两种活动流,将软件测试理论知识融入到实践活动中。该教学模式打破了传统,激发了学生的学习兴趣,有利于学生对测试过程形成一个整体认识,符合软件工程系统化思想。由于软件测试相关理论还在不断完善,实验理论、实验方法手段、实验技术正在飞速发展,这就需要我们在教学过程中不断地探索、总结、完善软件测试教学的内容和方法,进一步提高课程的教学效果和质量。
参考文献:
[1] 龚宇辉.软件测试课程教学改革研究[J].教育与职业,2010.24:
130-131
[2] 张向宏.软件测试理论与实践教程[M].人民邮电出版社,2009.
[3] 聂长海.关于软件测试的几点思考[J].计算机科学,2011.38(2):1-3
[4] 程茂,温静,吴玉洁.软件测试课程的教学研究[J].河北师范大学学报
Abstract: With the increasing complexity of software engineering, software engineering quality requirements continue to improve. The teaching of the traditional software testing course can't meet the needs of the times. From the traditional software testing experimental teaching, aiming at the existing problems and the overall objectives of the experimental teaching requirements, this paper explores the significance of project driven software testing and experimental teaching reform, which with reasonable distribution of the curriculum system, the distribution of appropriate experimental content, can meet the requirements of personnel training program.
关键词:软件测试;项目驱动;实验教学;教学改革
Key words: software testing;project driven;experimental teaching;teaching reform
中图分类号:G642.0 文献标识码:A 文章编号:1006-4311(2017)03-0226-03
0 引言
软件测试在很早以前就是软件工程里的一个课程。但近几年来才被国内的软件行业及软件公司所重视。因而出现需要大量软件测试人员的需求。所以国内的很多高校因市场的需求,开设了相关的软件测试专业或方向。但很多学校的开设的软件测试的课程只停留在基本理论的学习,或者测试工具的介绍上,以至于毕业出来的学生只能满足最底层的测试工作。而较高要求的测试岗位很难招到人。所以培养“高素质、复合型”的软件测试人才,是学校的当务之急,软件测试的教学改革势在必行[1]。
1 传统测试课程教学存在的问题
教学课时少,课程结构单一。传统软件测试是以软件工程原理的一个章节来讲的。讲课的课时也就4个学分。老师授课只是对测试基本的概念及流程作讲解,内容偏重理论且抽象。学生理解和掌握难度比较大,在实际测试工作中无法入手。现如今对软件测试的工作越来越重视,对软件测试的工作要求越来越高。如此单一教学内容,让学生今后胜任软件测试的相关工作是不现实的。
重理论,轻实践。传统软件测试课程的教学一直以任课老师讲授以主,学生被动接受知识,在理论的教学过程中,授课老师重点讲解软件测试的基本概念、原理及方法。但软件测试的相关课程在实践方面要求有较强的动手的实践能力。如在讲解黑盒测试、白盒测试中的测试方法来设计测试用例时,实际使用过程中需要结合多种方法来保证测试用例的完整性,这需要引入实际的生产案例来练习。再如在讲解单元测试、集成测试时,在讲解单一类的测试、容器内的测试、数据库持久层的测试时,如果老师在授课时只是讲理论,没有引入实际的生产案例,学生很难体会到课程的挑战和乐趣,缺少主观主动性,学习效果较差。这样的教学质量难以保证,学生很难学以致用。
2 项目驱动教学的内涵
“项目教学法”最早见于美国教育家凯兹和加拿大教育家查德合著的《项目教学法》。“项目教学法”的理论认为:知识可以在一定的条件下自主建构获得;学习是知识、技能与行为、态度与价值观等方面的长进;教育是满足长进需要的有意识、有系统、有组织的持续交流活动。教育家陶行知先生说过:教、学、做应是一体化的,教、学、做是一件事,不是三件事[2]。
项目教学法由以下内容组成:有一定的教学内容,具有实际应用价值;能将理论知识和实际岗位技能结合起来;与企业实际生产或商业经营等活动有关系;学生可以独立制定计划并实施;学生可以运用所学知识克服、处理在项目工作中出现的困难和问题;有一定的难度,学生在完成过程中能掌握和运用新的知识和技能;要渗透情感、态度、价值观的培养;有明确而具体的成果展示,师生能共同评价项目完成情况和工作成果[3][4]。
3 项目驱动的软件测试实验教学的意义
以软件行业发展需要为依托,面向软件开发(敏捷开发)过程中对软件测试人才的迫切需求,以提高教学质量为核心,以教学改革为动力,以实现软件开发与测试的学生知识、能力与素质协同发展为原则,以培养学生实践能力为目标,结合学科优势,以主干课程建设为突破点,开展项目驱动软件测试实验教学改革与研究,构建和实践面向应用型本科软件测试人才的专业实验教学体系。具体的意义可归纳为以下四点:
①优化测试相关专业主干课程体系,打造以项目驱动软件测试实验教学的专业特色。测试相关主干课程体系优化与专业课程实验教学改革是项目的核心。专业主干课程体系的建设能直接反映专业课程建设的目的和培养目标,是提高人才素质和保障教育质量的核心环节,也是衡量教学水平和教学质量的重要标志[5]。因此,面向软件工程和软件实践背景,开展“项目驱动软件测试实验教学”,对于丰富和完善软件测试课程教学改革,培养适应软件测试行业中“高素质,高要求”的复合型、应用型管理人才,打造学科专业特色,形成学科专业竞争力,具有重要价值。
②以主干课程教学组织与团队建设为着手点。制定主干课程建设的方案和措施,通过课程示范作用,带动本专业相关其他课程的建设与改革。狠抓主干课程教材的选用与编写、教学大纲的制定、应用案例的编写、教学内容的精选、教学手段与教学方法的改革等环节,夯实了主干课程建设的基础,并为该专业今后教学改革奠定基础。
③以点带面,扩展软件工程专业实验教学体系。通过在主干课程中适当引入综合性实验、设计性实验、软件工程案例分析,可加强学生的实践技能、创新意识和团队精神的培养,提高学生的综合运用能力和竞争力。从长远来讲,这项成果会进一步提高我校该专业的人才综合素质, 进一步提高该学科专业综合竞争力。
④扩大毕业生就业率及提高就业档次。通过该项目的建设,希望能推动该学科专业课程体系的优化,改善广州大学该专业本科学生的知识结构,提高软件测试学生的综合素质和专业技能,扩大毕业生就业率及提高就业档次。
不管是站在专业学科建设的角度,还是站在学生培养的角度,从培养“高素质、复合型”的软件测试人才、解决学生就业的目标来看,教学改革研究均具有重要的意义,有必要开展系统、深入的研究。
4 项目驱动的软件测试实验教学改革方案
以培养“高素质、复合型”的软件测试人才为目标,以专业主干课程体系优化主干课程教学团队,强化主干课程配套的实践教学环节,构建了理论教学和实践教学相结合的、 “测试理论+测试方法+测试工程”三位一体的主干课程培养体系,并开展长期的跟踪实践,努力在应用型创新人才培养模式上形成自身的专业特色,完善“强基础、重能力、多样性、个性化”的人才培养方案。
4.1 软件测试的课程体系的建立
随着软件行业对软件测试重视,软件测试对从业人员的要求也越来越高。传统的教学内容已经不能满足就业人员的需要。需对软件测试的课程体系进行扩展、优化。如图1软件测试教改实践课程体系所示。
软件测试基础:本课程从理论和实践两个层面引导学生学习软件测试的基础知识,涵盖软件测试的思想、流程和方法,主要内容包括软件测试的基本概念和基本原理、白盒测试方法、黑盒测试方法以及面向对象软件测试等知识点。
高效单元测试:课程以最典型的单元测试框架JUnit为例讲述了单元测试的方法和最佳实践,介绍了在java软件开发中使用junit进行测试的原则、技巧与实践,深入阐述如何编写自动测试。课程讨论了实践中的测试技术,主要内容包括:用mock objects进行隔离测试、用ant和maven进行自动构建、Cactus进行容器内测试的方法、对java应用程序、数据库应用程序等进行单元测试,以及Parasoft Jtest的使用。
WEB项目应用测试:由浅入深、全面、细致地阐述了如何使用开源测试工具来完成Web自动化测试,便于学生轻松掌握Web自动化测试的原理、方法和实际操作。课程将教如何使用Selenium、WebDriver、Jmeter、Badboy搭建起一整套稳定、高效、低成本的自动化测试平台。结合应用实例展示web应用项目测试的过程。
软件测试质量与保证:软件测试质量与保证是面向软件测试方向一门专业必修课,在学习软件测试基础理论与技术的基础上,加强对软件质量的认识及质量保证的重视,主要从软件质量的概述、软件质量工程体系、软件质量度量、软件可靠性测试、软件质量标准、全面质量控制等多方面展开对软件质量保证的深入学习。
性能测试与优化管理:从测试项目实战需求出发,讲述了性能测试技术和软件性能测试工具应用的实战知识。引入项目案例,详细讲述性能测试方案实施、性能测试计划制定、性能测试用例设计、性能测试脚本开发、性能总结、性能优化管理及相关交付文档。
软件测试综合项目实训:本课程综合应用软件测试方向各门专业课程,以一个实际案例贯穿整个教学过程,使学生对软件测试的过程有深刻地理解,包括测试需求的获取、制定测试计划,设计测试用例,测试执行、测试缺陷、测试评估及报告,并在实训过程中加强对团队协作的体会及文档的协作能力。
移动应用程序测试:本课程将从实际应用角度出发,以智能终端和4G业务规划为基础,介绍手机测试的方法和实践技术,主要内容;手机设备软硬件的现状与趋势,手机软件测试用例设计技术与方法,手机软件体系结构与手机软件测试技术和常用测试工具。
4.2 项目驱动实验教学的实施方针
由于课程深度的不同,项目驱动实验教学的方针与过程也不同。其主干课程项目驱动实验教学的实施方针如下:
《软件测试基础》由于是基础课程,课程涉及的基础概念比较多,且为低年级的学生。所以实验教学的案例要以单独、经典的小应用实例为主,以巩固和强化理论知识为目的。
《高效单元测试》软件测试专业课。课程涉及代码级软件测试方法与技术。课程从应用程序的角度可分为三个方面的单元测试:表示层单元测试、运用层单元测试、数据层单元测试。从这三个方面再拆散成若干个小实验以便对应相应的理论知识。在实验案例选择的原则要以高年级完成的课程设计或毕业设计为主,其原因是这样的项目实例学生能更好的理解,上课的更有效果。
《WEB应用项目测试》软件测试专业课。课程主要讲解Web自动化测试的原理、方法和实际操作及测试工具的使用。在项目驱动实验教学实例的选取了一些比较完善并同学比较熟悉的系统,比如学院的信息管理系统或学院的邮件系统。学生对这些系统的业务比较了解。做自动化测试比较容易上手。
《软件测试综合项目实训》是一个以实际案例贯穿整个教学过程,以学生为主,教师为辅的综合项目实训课程。在实验教学的实例选取上要求要接近企业的工作要求。所以项目组在设计用例时,直接向相关校企合作单位,要来需求和被测项目,并设计成实验教学,以便学生在最接近现实的环境中作项目实训。
《移动应用程序测试》软件测试选修课。课程主要讲解移动测试的原理、方法和实际操作及测试工具的使用。在项目驱动实验教学实例的选取上,把学校组织参加比赛的移动应用项目拿来测试,这个项目影响较广,学生对业务比较了解也比较。
5 小结
如何正确处理系统性理论知识体系与学生实际能力培养之间的矛盾?其解决的基本途径是:重视实际能力培养,强化软件测试工程案例教学,重视课程配套的课内课外各种实践教学,强化学生人文素质培养。只有这样,才能解决学生专业知识面过窄、适应能力差、满足不了高要求的根本问题。如何搞好主干课程体系建设和主干课程师资队伍建设,其解决的基本途径是:以测试相关主干课程和教学团队建设着手点,建立完善的主干课程体系,发挥主干课程的带动效应,可达到以点带面效果,解决课程教学内容不先进、教学方法单一、教学手段落后、教师业务能力不强等问题。
参考文献:
[1]宰光军,任两品,刘燕.复合型软件测试人才培养模式的探索与创新[J].计算机光盘软件与应用,2012(20).
[2]张世泽,刘同先,丁升选,吕淑敏.浅议项目教学法在我国的发展、应用和建议[J].教育教学论坛,2014(50):168-169.
[3]郑春瑛,郭伟青.项目教学法在管理信息系统课程中的应用探讨[J].中国职业技术教育,2007(22).
一软件测试课程教学存在的不足
目前,在很多高校计算机课程中,并没有单独开设软件测试技术课程,只在“软件工程”课程的某一章节进行了介绍,而在“软件工程”课程中,软件测试只是在软件开发进行以后才开始进行,这对于学生理解软件测试是极为不利的[3]。软件测试技术方面的教材不是很多,而且质量良莠不齐。有些学校开设的软件测试课程作为选修课,过多注重软件测试理论的讲解和测试方法的介绍,对于实践环节重视不够,缺乏系统的训练,距离软件公司对软件测试人才的要求差距较大。
软件测试课程教学中存在的问题主要有:(1)理论与实践脱节导致学生学习兴趣不浓;(2)软件测试实验室的环境搭建受限,课堂教学与实践结合的不紧密;(3)课堂教学内容与公司实际操作有出入,使得学生不受用人单位的欢迎;(4)学生缺乏完整项目的测试经验,无法掌握项目测试的流程和步骤[4]。(5)学生的开发经验不足,对于理解测试驱动开发有难度。
二创新模式的课程改革
针对目前软件测试课程教学存在的问题和不足,对目前高校开设的《软件测试》课程进行了调研、分析和研究,为了使授课内容更接近实践要求,我们深入企业并与软件测试部门的人员进行沟通交流,从教材内容、教学方法等方面对软件测试课程的教学进行探讨。
1教材的选择
软件测试实践性非常强,而且课程开设较晚,更新较快,教材的选择尤为重要。针对学生接受的实际情况和教材的实用性方面对教材进行选择,经过筛选,我们选择两篇外文教材:(美)佩腾(Patton,R.)著,张小松等译的《软件测试(原书第2版)》和(美)梅耶(Myers,G.J.)等著的《软件测试的艺术(原书第3版)》,一本中文教材:朱少民老师主编的《软件测试方法和技术(第二版)》,教学过程中把中文教材作为授课教材,外文教材作为参考书,来更好的扩大学生的视野[5]。
2课程内容的选择和改进
作为一个实践要求非常高的课程,我们在选择课程教学的内容上做了很多探索。经过实践发现,上课时在讲解基本知识和概念的同时,如果穿插讲解一些经典案例,教学效果会更好。学生不但能够掌握理解基本概念,又能结合实际应用,积累一些实践经验,这对于以后从事软件测试工作有着非常大的帮助。
在教学过程中,我们始终以学生为中心,让他们参与到软件测试的教学过程中来,调动其主观能动性,使他们更容易接受所学知识。
3测试工具的选择
在课堂教学和实践教学过程中,测试工具的选择很重要。如果建一个相当规模的测试实验室,投入是很大的。如何选择既能达到课程要求又能节省费用的测试工具就显得尤为重要。在最大限度的接近业界实际使用的前提下,可以选择一些开源的软件。对于业界关注度不够的测试环节,在讲授软件测试时要重点讲解,比如,静态测试在企业中就重视度不足,认为无关紧要,实际上该方法能够培养良好的编程风格。我们在授课时选择PMD、FindBugs等工具让学生熟悉,不但能培养学生的测试能力,同时也能督促学生养成良好的编程习惯[6]。对于单元测试部分,根据时下软件开发的两大趋势,选择Junit进行讲解,掌握该软件的使用,对于其他工具开发的软件进行单元测试也是非常容易的。
4实践环节的加强
除了课堂教学以外,实践教学的开展对于软件测试课程来说更重要。包括上机实践课和企业实践两部分。
上机实践环节应抓好以下环节:⑴定好计划,每次上机要明确任务,对于任务的选择要有针对性,要更具有可操作性,要更贴近实际。比如对于Junit的实践,每一次上课做什么都详细制定,把各种断言、套件测试、参数化测试等重要部分要重点关注,这样对于学生掌握这部分知识能起到很好的作用。(2)加强考核,对于实践环节所做的任务,要认真检查,并对学生完成情况进行总结,这样才能提高学习的效果。(3)加强与学生的沟通,让学生完成任务时,加入不同的小组,通过小组之间的沟通和交流,起到更好的促进作用。(4)完整项目的实践,除了平时的练习外,整个课程结束后,通过完整项目的带动,让学生参与到整个测试过程中,使理论与实践融合,知识掌握更牢固。
同时要深化企业实训,加强与企业的合作,让学生有机会深入到企业的软件测试部门,了解软件测试企业实际工作时如何开展的,与软件测试部门人员沟通交流,增强学生学习的自信心,加强学生实践能力的培养。学生每年9月份到北京实习,并与富士康签订了合作协议,这些举措都是为了更好地提高学生的实践能力。为了使效果更好,可以从以下几个方面抓起:(1)学校拟定一个校外实纲,与实习企业一起制订校企实习基地协议、实习安全协议、学生实习规范和学习实习鉴定表等,不断促进校外实习制度化,规范化、完善化。(2)企业要提供良好的实训场地,并配备资深的讲授老师。在实训前,讲授教师先了解一下实训生的情况,对讲课计划和讲课内容做适当的调整。(3)在实训期间,学校可以留一些教师监督实训过程,并实时地提出建议,保证学生训有所获。(4)实训结束后,要对实训生做一个项目式的考核,并认真填写实习成绩评定表。
5注重软件测试人才的软实力培养
软件测试是一门热门行业,软件企业在招聘人员时,不仅要求应聘人员有一定的理论知识和实践动手能力,同时要求应聘人员有良好的职业素质。而在当前的教学模式下,对职业素质方面的教育还是比较欠缺。这需要对学生进行培训,增加就业几率。
(1)注重培养学生的团队协作与沟通能力
对于软件测试行业来说,测试人员的沟通能力非常重要。一个合格的软件测试人才,应该具有较高的团队协作与沟通能力,可以快速融入团队,高效地展开团队式工作。一个不善于表达自己思想的人不可能成为一名优秀的测试工程师。我们在实践课开展过程中,重视培养同学的沟通能力,团队协作能力,在学生中树立良好的团队意识。
(2)培养学生的怀疑精神
软件测试的目的就是为了找出软件存在的不足,因此我们鼓励学生怀疑一切可疑的地方,尽自己最大的努力来验证自己的判断。即使再简单的功能,也要站在用户的角度,多用一些边界值进行测试,验证系统是否有问题。
(3)搜索能力的培养
一个好的软件测试工程师,要有很强的搜索发现新知识和技能的能力,这不仅指一般性知识的搜索和查阅,更多是指与本专业相关的测试工具软件、插件、测试学习网站等的搜索与下载,比如51testing就是国内比较好的测试学习网站,其上就有很多软件测试方面比较成熟的知识和实践技巧。在信息爆炸的当代社会,软件的种类繁多,软件技术的变化日新月异,所以大学生应该掌握软件测试的检索技术,以满足自己学习和工作的需要。这种能力是自己的充电器,会使自己终生受益。
此外,一个优秀的测试工程师还应有高度的责任感、耐心、洞察力,在技术层次都相差不大的情况下,这些软实力对于测试工程师的发展有着至关重要的作用。
总之,通过《软件测试》课程的教学方法的探索,通过系统科学的知识传授,并辅以上机实践和企业实践,学生的实践动手能力有了很大提高,这直接反映到学生的就业和以后的学习中。有一部分学生在毕业后进入企业的软件测试部门并得到用人单位的好评,一部分学生在考取研究生之后选择了软件测试方向作为自己的研究方向。如何在现有的探索的基础上,更大限度的提高教学的效果,是我们下一步的研究重点。
参考文献
[1]朱少民.软件测试方法和技术(第二版)[M].清华大学出版社,2010.
[2]聂长海.关于软件测试的几点思考[J].计算机科学,2011,38(2):1-3.
[3]陈树峰.面向对象软件的依赖性分析与回归测试[J].计算机应用,2009,29(11):3110-3113.
[4]李雯睿,张鹏程,杨种学.基于主动学习策略的软件测试教学方法初探[J].计算机教育,2012(8):54-57.