CDIO工程教育《软件测试技术》教学改革

CDIO工程教育《软件测试技术》教学改革

摘要:随着软件的复杂度和多样性日益增长,软件测试作为软件质量保障的关键环节,重要性不言而喻。本文对新工科背景下基于CDIO模式的《软件测试技术》的教学进行探讨,从教学内容、实验环节、课程相融、企业实践等方面进行研究,旨在将工程教育落到实处,提升课程质量,实践表明教学改革成果取得一定的效果。

关键词:新工科;CDIO;软件测试;教学改革

0前言

基于国家战略发展新需求,新工科计划的提出,明确我国工程教育改革方向应以工程类人才的培养为核心[1-2]。自2017年开始,无论是“复旦共识”[3]还是“天大行动”[4]对知识的综合应用能力,创新能力和工程性思维提出更高的要求。通过对新工科建设模式进一步的探讨,旨在以新的理念、新的结构、新的模式、新的质量和新的体系推动现有工科专业的改革和创新,同时也为高校培养适应社会发展的应用型、工程性人才提供方向。近年来国际工程教育改革的最新成果CDIO模式,由构思(Conceive)、设计(Design)、实现(Implement)、运行(Operate)四个环节组成[5]。该模式由麻省理工学院等四所工程院校于2004年提出[6],以工程项目研发的全过程为载体,将教育环节融入工程领域的实践情景中,让学生主动参与实践中,培养自学能力和工程意识的同时,让学生在实践中掌握工程基础知识,提升项目实践能力以及解决复杂工程问题和创新创业发展的能力,思维更加开阔,具备工程性大局观。新工科提出“培养什么样的人”即我们的目标,强调回归工程。CDIO模式给出“如何培养人”即达成目标的路径,强调“做中学”,与新工科的培养目标相吻合。两者理念互相补充,符合人才培养规律。新工科背景下基于CDIO模式的教学研究为工程性人才的培养提供一条可复制、可落地的实施路径,全面提升学生的知识水平、实践能力和个人综合素质。

1软件测试技术发展及教学现状

软件测试贯穿于整个软件开发全过程,是软件质量的重要保障。随着信息技术的发展,满足人们生活、工作、学习的应用软件越来越多[7],功能的复杂性和多样性使得软件规模也越发复杂和庞大,因此通过测试找到软件中存在的缺陷是软件前非常重要的工作和必经环节。软件测试开展的好坏,直接影响最后的软件质量。基于软件质量的控制与保障,软件测试在软件行业中的地位与日俱增,企业对测试人员的需求和要求越来越高;此外,当前软件测试的需求呈现多样化,有系统功能、性能测试、面向对象测试、Web测试、移动APP测试等。同时自动化测试工具和软件的出现,让测试的专业度变得更高。“十四五”规划对科技创新提出更迫切的需求,51testing的《2020年第十四届软件测试现状报告》显示我国当前人工智能、大数据、云计算发展迅速,但是软件测试人才的不足成为制约我国软件行业发展的主要因素。当前我国软件测试人才缺口近40万,并且缺口人数以每年20%的速度增加,在快速发展的技术时代,软件测试人才的培养至关重要。《软件测试技术》作为软件工程专业的核心课程,培养学生掌握基本的测试知识和测试技能、熟悉软件测试流程、能设计测试用例并开展测试,并对测试中应具备的原则和测试人员需具备的素质有深刻理解,同时在测试过程中培养学生的职业素养和团队合作能力等。该课程是软件开发中的重点环节,对支撑毕业要求中“培养学生解决复杂工程能力”有着举足轻重的作用。通过调查发现,当前的软件测试课程无法满足企业和市场对测试人才的要求,问题主要存在以下方面:

1.1内容缺少新技术、新方法的讲授,结构不完整

当前测试内容的讲解重点围绕在黑盒和白盒方法的讲解和运用该方法设计测试用例上,对移动APP测试、面向对象测试、Web测试的讲解较少,内容较陈旧,同时对逐渐成熟的自动化测试工具的涉及也较少。内容与社会岗位需求相比偏滞后;

1.2逻辑缺少连贯性,课堂教学内容呈现“碎片化”

对知识的点的讲授偏散,虽然讲授大量的黑盒方法例如等价类划分、边界值分析法、判定表等以及白盒方法例如各种逻辑覆盖法、基本路径法。但学生只是掌握一个一个碎片的知识点[8],对这些课程知识点间以及课程和课程知识点间的内在关系一知半解,学期末易出现遗漏现象,无法形成系统的知识体系;

1.3认知上学生普遍存在“重开发、测试”的观点

在学习系统测试课程之前,学生已系统学习多种程序开发语言,学习的重点一直在软件开发上,未来的目标也是从事软件开发工作。对软件测试的认知仅停留在开发结束后对系统功能进行简单的验证。学生误以为测试课程的学习对开发用处不大,甚至没有用处。对课程的学习不认真,有混学分、应付考试之态[9];

1.4实践案例与企业岗位需求脱节,缺少应用性和专业性

实验依旧围绕传统的三角型问题、NEXTDAY问题的用例设计和测试上,学生对课程实验仅停留在理论的简单应用,缺少真实性。无法感受真实的测试环境,同时在实践过程中涉及的测试文档撰写不规范,缺少专业性。

2新工科背景下基于CDIO模式的《软件测试技术》教学改革措施

为了应对未来的科技变革与挑战,软件测试的教学主要围绕测试知识的讲授与测试的实践开展,分为理论和实验两部分,以行业需求为导向,贯穿“做中学”。旨在建立课程知识点间的逻辑串联,模拟真实的测试环境提升学生的实践能力。同时将计算机技术与软件专业技术资格(水平)考试中的中级工程师即软件评测师的内容、其它相关课程的内容以及相关领域的前沿技术与本课程的教学相融合,培养学生的创新意识和实践能

2.1重组教学内容

在CDIO模式下,介绍完测试的基本理论知识以及相关概念后,以工程项目的生命周期为载体,基于整个软件测试的环节:测试需求分析、制订测试计划、测试用例的设计、测试的执行和管理、测试的报告和评估。在各个环节渗透测试理论,让学生具备完成该环节相应的知识储备,掌握测试每个阶段应完成的内容。建立完整的测试知识体系,将知识点的讲授和测试项目的开展结合起来,提升学生的学术性,以及自主学习和持续发展能力;同时在每个测试环节引入企业经典文档进行解读,作为课程学习的重要补充,提升学生对测试行为表达的专业性。传统的软件测试,集中于三角形问题、佣金问题、NextDay问题的用例设计。在本课题背景下,基于时展,讲授了特定环境下的测试开展和测试方法,加入新测试方向,新测试工具的运用。比如移动APP测试、面向对象测试、Web测试等。在测试过程中介绍主流的自动化测试工具,通过对同一项目的手动和自动测试结果对比,让学生体会自动化测试的执行过程和执行复杂程度,实现从手动测试到自动测试的过渡;此外,将教学内容进行课外的延伸,通过开放实验室项目,进行工程训练。训练围绕CDIO模式开展,学生通过自行组队,自主查阅资料,对所给项目进行分析,制订测试计划(C)后通过组内合作完成用例的设计和完善(D),进一步开展测试(I)。测试过程以答辩展示,测试结果以报告提交(O)。该环节是课堂内容的拓展,所选项目由教师针对性选择,既要有明显错误,让学生能上手,又要有隐藏错误,让学生主动思考。同时引导学生向着高效率挑战,使用自动化工具进行测试,提升教学的高阶性。

2.2实验环节开展沉浸式测试

为能将理论得到较好的应用,对重点环节辅以相应的实验,突出工程实训。将实验的开展和CDIO四个环节相结合。在此过程中,通过学习主流公司的经典测试案例,了解测试过程,提升学生的职业素养以及对测试的理解。实验环节主要以小组开展“沉浸式”为主,让学生真正参与测试当中。基于CDIO模式,结合所给案例,小组通过以下环节开展测试。该环节重点挖掘学生的主动性、创造性。过程模板一改传统的由教师下发转变为学生依据项目讨论制定。具体实验环节如下表1所示:小组在整个项目运作过程中模拟真实测试,从接受者变为参与者。以团队合作形式开展测试,在组长的带领下进行项目分析、方案探讨、任务分配、资源整合。测试所发现的缺陷经过组长确认后记录到缺陷报告中;评审环节是测试实施中关键的一环,无论是测试计划的提出还是测试用例的设计以及对程序的纠错,都要经过评审会议进行审核。一方面能锻炼学生的表达能力;另一方面对测试进行质量把关;通过答辩展示各组的测试过程,其它小组作为评委对答辩者进行提问,在交流过程中,对存在的问题,教师不断与学生交流,引导学生思考问题、解决问题,将测试的执行与测试学习融为一体。经过评审、答辩、反复修改后学生的创新性和团队意识将有很大的提高。

2.3课程相融,建立课程群体系

软件评测师是国家软考即计算机技术与软件专业技术资格(水平)考试中针对软件测试的中级工程师考试,该考试对从事测试工作的软件评测师的能力和素质从不同维度提出了要求。因此,将该考试大纲和考试内容与课程进行融合,用工程师标准要求学生。教师亲身参加该课程的考试并取得相应证书,在此过程中,了解软件评测师的需求,从而将课程与软考融合让课程大纲与考试大纲保持一致。通过对近十年软考真题的整合,结合教学内容,配套相应真题,建立了针对性的习题库开展练习,让学生学习有方向、有目标。课程的练习不仅停留在课后作业,也吸取软考中的一些案例分析、用例设计等,提升学生对知识的应用能力。软件测试并不是孤立存在,与软件工程课程,有着密切联系。软件工程课程讲述科学开发软件的过程,软件测试伴随着整个软件开发,因此基于CDIO模式将测试课程的讲授与软件工程中软件开发过程一一对应,让学生更好地体会每个环节应对应什么样的测试工作,具体环节见表2:在课程的讲授过程中,将课程置身于软件工程宏观背景下,结合软件工程中软件开发教学内容和其它程序设计教学内容开展教学。构思和设计部分重点考察学生的测试计划的设立、测试用例的设计。实现和运行部分重点考察学生基于测试用例对测试的执行、缺陷的管理和测试的总结。让学生学习科学开发软件的同时也学会科学的测试。课堂上所用的测试程序,选取该学期关联性高的其它程序课程中正在设计的程序开展测试,不同课程间从不同角度进行考核,共享实验成果。一方面建立了课程间的联系;另一方面让学生参与自己设计程序的测试过程中,让测试氛围感变得更强。在学生之间搭建了软件测试和其它课程间的桥梁,让学生能知测试、用测试。将软件测试的教学与学科竞赛相融合,提升学生学习的积极性。通过引导学生积极参与软件测试大赛,让学生亲身参与工程性问题的测试与实践中,实现理论到实践的应用和升华,真正做到能分析、能设计、能执行、能报告。也鼓励学生将其它正在参与的学科竞赛的程序当做本课程的测试程序,同一个案例,既可从开发角度,也可从软件测试角度进行分析;同时每次参与大赛也是一次自我的提升,大赛的相关资源也可用到软件测试的课堂教学中,拓宽课堂教学的深度与广度。

2.4参与企业项目,提升实践能力

通过暑期企业实践或挂职锻炼等形式提升教师的工程实践能力,让教师真正参与真实的企业实践中。利用教师真实的软件测试经验,更好地开展教学,让课堂言之有物,而非理论实践两张皮;同时加强“双师型”教师的培养,不仅注重专业测试知识积累,也重视专业测试的实践。既能上课堂,又能下工厂。同时借助校企合作,让学生参与测试一线,了解测试前沿发展技术和企业最新要求,掌握最新测试工具和方法,为造就应用型人才和构建科学职业规划奠定基础。

3实施效果

通过对软件测试技术课程的教学改革,教学取得初步进展和积累。在对本课程教学持续的改革和完善中,每年学生的期末总评成绩较去年均有小幅度提升,同时中级软件评测师证书的考取率实现了0的突破。在毕业设计中,毕业选题从全部围绕程序开发、算法设计到部分学生开始以测试作为毕业论文的重点研究方向并高质量完成毕业论文。学生对未来的职业规划,从仅停留在软件开发工程师上开始对测试工程师有了一定的认知,学生的毕业选择有了多样性,选择了最适合自己的工作岗位。同时测试课程的学习也为学生更好地从事其它软件行业工作添砖加瓦。

4结语

新工科背景下基于CDIO模式的《软件测试技术》教学改革,以学生为中心,培养测试工程师为目标,结合行业动态和企业要求,针对课程教学中出现的问题,通过让学生真正参与测试等一系列方法进行教学改革实践,提升学生的动手能力,激发学生的学习兴趣,培养学生的团队精神和创新意识,形成学中做、做中学、学中思的良好氛围,教学效果明显改善。未来将进一步完善CDIO模式在本课程中的应用,旨将这些经验在其它相关领域课程中得以应用、推广。德州学院计算机与信息学院推行的“一生一师一项目”拓展学习的视野,锻炼学生的逻辑思维能力,实践任务化、目标化学习过程,增强学生学习的自主性和能动性,本论文为实践成果的一部分。

作者:闫婷 单位:山西工商学院