融合实验的“软件测试”课程教学方法探索

2022-11-26 01:02王轶辰张冰清伊高磊
教育教学论坛 2022年42期
关键词:软件测试维度知识点

王轶辰,张冰清,伊高磊

(北京航空航天大学 可靠性与系统工程学院,北京 102206)

引言

目前,据国家权威机构统计,中国软件测试人才的缺口近40万人,而且呈逐年上升的态势[1]。“软件测试”是一门有理论、重实践的课程,如何定义测试理论与测试实践之间的关系,如何为学生构建理论与实践之间的桥梁,如何培养学生在测试领域的创新思维,是教学改革需要解决的主要问题。

“软件测试”课程必须在提供尽量真实的实践场景的同时进行理论和技术知识与技能的传授。但是,由于课程目标或资源的限制,目前并不具备建立完整的项目并让学生使用真正软件的条件,甚至没有意义。为解决这一问题,我们在“软件测试”课程中将实验用作教学工具。实验有助于系统地准确表征和研究问题、观察现象及制定和评估解决方案。此外,实验有助于建立较短的反馈和学习周期,还可以在受控环境中体验风险和失败。

本文从“软件测试”课程的教学发展历史入手,分析了实验作为教学手段的相关研究,然后从原理上探讨了将实验融入“软件测试”课程的合理性,并在此基础上重构了教学大纲和课堂教学过程,构建了融合实验的“软件测试”课程教学体系。

一、“软件测试”课程教学发展

伴随着软件行业的发展和软件测试在行业中地位的不断变化,“软件测试”课程的教学内容与教学模式也在不断更新。以本学院开设的“软件测试”课程为例,进入21世纪以来,经历了五个主要阶段。第一阶段,2000年左右,随着航空航天装备中软件应用规模的扩大,软件工程作为保障软件质量的手段之一逐渐受到重视,其中的软件测试活动开始尝试在工程中进行推广。在这一阶段,校内没有独立的“软件测试”课程,相关内容在“软件工程”课程中进行介绍。第二阶段,2005年左右,航空航天装备中的软件测试工作已经逐渐科学化和系统化,对于第三方测试能力也开始进行标准化的认证,此时工业界对软件测试人员的需求不断增加,在这一趋势下,学校内的“软件测试”教学从软件工程中分离出来,成为一门独立的具有32学时的研究生课程。第三阶段,2010年左右,随着航空航天领域对软件质量要求的不断提高,尤其是航空领域大型客机项目的深入开展,对软件可靠性和安全性的要求越来越高,对测试人员素质的要求也在提高,此时学校的“软件测试”课程增加了实验课环节,课时从32学时提高至52学时。第四阶段,2015年以后,无论是航空航天领域还是民用领域,软件测试成为一项必不可少的软件生命周期活动。2016年我国成为《华盛顿协议》成员后,于2017年启动我国高等教育的新工科建设,其主要内容是学科交叉融合,理工结合、工工交叉、工文渗透,孕育产生交叉专业,跨院系、跨学科、跨专业培养工程人才的教育模式。在这一趋势下,“软件测试”课程尝试采用翻转课堂的教学方法,在进一步扩展学习时间的同时,强调了对学生动手能力和实践能力的培养。第五阶段,近五年,国际形势的变化导致在科技领域出现了若干“卡脖子”技术,软件行业的“自主可控”成为主流趋势,而创新能力成为高校培养的核心目标之一,同时在建设“双一流”大学的目标驱动下,科教融合的理念已经开始在课程教学中得到体现,与之对应,“软件测试”课程也在不断寻求广度和深度的提升,力求在让学生拓宽视野的同时,树立和养成创新思维,锻炼创新能力。

随着“双一流”高校建设的深入,通过知识的传授培养学生的科学思维和专业能力成为评价课程教学水平的重要指标之一,也是当前教学改革的主流和对教师的高标准要求。数学家波里亚说过:“在前辈数学家中欧拉对我的影响最大。主要原因在于,欧拉做了一些跟他才能相当的伟大数学家从没做过的事,即他解释了他是如何发现他的结论的。对此,我如获至宝。”[2]这段话很好地说明了创新型人才不仅要有分析问题和解决问题的能力,还应具有发现问题、提炼问题的能力,同时这也为我们制定课程教学目标和教学手段提供了重要的思路,对于要传授的知识和技能首先要从初学者的角度考虑如何想到这个解决方法的,将获得知识和技能的过程展示给学生,是传授科学思维和创新思维最好的方法。

二、实验方法与教学过程的融合

(一)教学过程

教学过程是由教师和学生共同完成的过程,二者在这个过程中所处的状态和从事的活动是不同的,但是目标却是相同的,那就是完整和顺畅地实现相关知识与技能从教师到学生的传递过程。然而,在实现这个目标的过程中始终存在教师提出的教学任务与学生完成这些任务的需要及实际水平之间的矛盾,但同时这个矛盾也成为教学方法研究与教学改革的内在发展动力。

教师完成教学任务的前提是要有明确和准确的教学目标。布鲁姆将教育目标分为三大领域:认知领域、情感领域和动作技能领域。布鲁姆的教育目标分类法为我们确定教学任务的内容及内容需要达到的程度提供了科学的依据,同时也是各种新教学方法产生的思想源泉。在近几年出现的诸如任务式教学、案例驱动教学、翻转课堂教学及研究性教学等一些新的教学方法或模式中,都有布鲁姆教育目标分类思想的体现。

(二)实验方法

实验方法属于实验科学方法,它源自自然科学和社会科学方法。目前实验方法已经成为多数科学与工程研究的基础。与其他学科一样,软件工程研究也需要实验方法的支撑,甚至有学者认为软件工程研究就是一门实验科学,研究者需要在实验室研究从业者遇到的问题,利用实验提出并改进解决方案,而从业者需了解如何构建更好的系统,这一点研究者可以通过构建模型来提供帮助,因此在软件工程研究中形成了“建模—实验—学习”的循环模式。

在许多学科研究中,将实验作为改善教学的一种手段已被证明是成功的。然而,在传统的“软件工程”课程教学中,实验通常被设置为一门单独的课程,作为理论课的配套,这其中也显现出诸多弊端。最明显的是,目前“软件工程”实验课通常采用了结构化的课程设计,即通过“操作指南”的方式引导学生完成实验,在这个过程中教师仅进行了操作指南的解释工作,而学生只要具备一定的理解能力和操作能力就可以很好地完成实验内容。由此可见,实验课对于学科的教学目标而言,无论在知识维度还是在认知过程维度上都没有体现出更有价值的作用。

(三)实验与教学的融合

将理论课与实验课分离设置不仅难以实现完整的教学目标,而且在一定程度上低估了实验方法在教学中的作用。事实上,已经有不少学者和教育者开始关注使用实验方法作为教学手段开展各类学科的相关课程,并提供了许多有价值的成果。例如Dillon从他对实验方法优缺点的概述中得出一个重要结论:实验是实证研究的一部分,它可以使学生成功地观察到现象,然而这并不是目的,相反,学生应该有足够的时间来学习和了解与感兴趣的现象相关的想法和概念。

另外,参照戴尔的学习金字塔理论,实验方法位于锥的“底部”,也就是说通过有效的实验方法,可以使学生掌握90%左右的学习任务,对于实现教学目标来说是最为有效的手段之一。而基于皮亚杰的建构主义理论构建的科学的学习圈方法中,实验法同样是一种重要的教学手段,尤其对于知识维度的概念性知识和程序性知识具有非常好的学习效果。在布鲁姆教学目标分类中认知过程维度的最高级别是创造,即对于我们现在非常关注的创新性思维来说,实验法是一种非常有前途的教学手段。

三、理论与实验相融合的“软件测试”课程教学方法

(一)教学大纲的构建

在我们的日常教学活动中,通常要求首先根据教学计划,以纲要形式规定一门课程的教学内容,即教学大纲,其中包括这门课程的教学目的,教学任务,教学内容的范围、深度和结构,教学进度,以及教学法的基本要求等。在确定教学大纲的过程中,要充分考虑教和学两个方面,即教学目标与内容、施教方法与学习方式。本研究集中于如何将实验法方法有效地融入教学过程,所以我们重点探讨采用实验方法作为教学手段后教学目标及教学大纲的重构过程[3]。

1.教学目标的确定。教学目标是驱动教学活动开展的源泉,课程的教学内容、教学方法、教材及课堂教学设计等都以教学目标为基础。如前文分析所述,随着新工科教育及创新思维培养目标的提出,“软件测试”课程的教学目标逐渐演化为“在充分了解软件测试相关概念的基础上,扎实掌握基本技能,同时在深入理解理论原理的前提下,探索创新”。在此基础上,参照布鲁姆教学目标分类学中对认知过程维度的划分,我们将教学目标分为四个级别,分别是:理解并记忆(K1):应能够对大纲中要求的术语、概念及它们的分类与关系进行解释和分析,同时能够准确记忆其内容。熟练运用(K2):可以选择正确的测试概念或者技术,在给定的问题场景中熟练使用并解决问题。分析(K3):可以将与流程或技术有关的信息分成不同组成部分,以便更好地理解,可以对现象和结论进行划分。评价与创造(K4):可以在对现有技术与方法进行科学评价的前提下,提出具有创新性的想法或方案[4]。完整的实验过程可以很好地覆盖上述四个级别的教学目标。

一般的实验过程从确定实验目标开始,建立实验假设,确定实验变量并设计实验方案,进行实验收集数据,分析数据得到实验结论,并对实验有效性进行分析。学生在实验过程中,需要对相关概念进行理解,需要对实验中的因果关系进行深入分析从而构建实验方案,实验执行过程需要熟练使用相关的技能,实验最后的有效性分析和实验结论的评价与改进过程则是进一步对相关知识的深入探索。

2.教学内容的确定。教学内容是对一个学科的知识进行分解、分析、选择和总结的结果。任何一门课程都不可能覆盖该学科所有内容,于是选择适合的知识内容进行讲授成为构建教学大纲的一个重要环节。我们采用“主题—知识点”的方式组织大纲中的教学内容。首先将“软件测试”课程的主要内容利用主题进行划分,每个主题要规模适中,通常可以用2学时来进行学习,例如“基于结构覆盖的测试方法”就是一个较大的主题,一般需要4~5个学时,如果我们将其拆分为“基于控制流的结构覆盖测试”和“基于非控制流的结构覆盖测试”,那么每个主题就比较适中了。主题的下一级是知识点,一个主题一般包含多个知识点,明确的知识点通常有两个标准,一是让学生在短时间内可以理解,二是使学生通过练习能够掌握。只要符合其中一个,我们认为这就是一个标准的知识点。知识点是知识中的最小单位,最具体的内容,有些情况也叫“考点”。

第一,教学主题的确定。在选取和确定大纲的教学主题时,我们制定了以下原则:完整性原则,即教学内容应可以构成一个较为完整的知识或技术体系,可以让学生在头脑中构建完整而清晰的知识图式;基础性原则,即教学内容应首先涵盖该学科内的基本概念、基本知识和基本技能;可扩展性原则,即教学内容应选取适量的学科前沿知识,同时需要对学科基础问题演化为学科前沿的过程进行阐述。

第二,知识点的分析。将每个主题进行知识点分析,通常进行两个维度的分析和设计,第一个维度是目标维度,第二个维度是实施维度。在目标维度的分析中,我们参照布鲁姆的教学目标分类理论,并结合“软件测试”课程的特点进行适当简化,将主题下的知识点分为三种类型,称之为概念点、技能点和深入点,因为不同类型知识点的施教方式是不同的。在施教维度的分析中,我们参照戴尔的学习金字塔,选取适合的学习方式来进行不同层次知识点的传授,其中实验法作为重要的一种教学手段。

(二)融入实验的教学设计

教学设计是根据大纲的要求和教学对象的特点,将教学中的各种要素有序安排,确定合适的教学方案与施教细节。一般包括教学目标、教学重难点、教学方法、教学步骤与时间分配等环节。教学设计是对教学大纲和教材的二次开发过程,因为本文将实验作为一种主要的教学方法引入“软件测试”课程教学过程,所以每堂课的教学目标、教学重难点及教学步骤等都会为此进行重新设计。

1.基于实验的教学设计。本小节我们以大纲中的“控制流覆盖测试”为例,探讨基于实验的教学设计过程。在前文中我们将控制覆盖测试这个主题划分为三类知识点,即概念点、技能点和深入点。因为不同类型的知识点的教学目标是不同的,施教手段也是不同的,所以我们需要首先对知识点做进一步的分析(见表1)。

表1 “软件测试”课程知识点分析

从分析过程可以看出,知识点在实验过程中体现在不同的环节中。

2.基于实验的课堂教学过程。基于实验的课堂教学过程分为五个主要环节:实验题目分析环节,需要在学习和了解基本概念的基础上理解实验的目的和动机,可以通过教师讲解的方式进行,也可以通过课前自学的方式完成;实验设计环节,一般会让学生独立完成,这是实验中最重要的环节之一,是学生对基本概念进行独立深入理解的过程;实验方案讨论环节,此环节通过个人展示的方式开展,选择实验方案有代表性的学生进行展示,介绍自己的实验设计,其他同学提问讨论,教师在这个过程中要发挥引导和指导作用;执行实验分析数据环节,这一环节要分组实施,每个组的学生首先要对本组成员完成的实验设计进行评选,选出可实施的实验设计,然后分工完成,这期间最重要的莫过于收集实验数据并进行分析,继而得到假设检验的结果;集体讨论环节,在完成实验结果分析和实验有效性分析之后,全体学生与教师一道,对实验进行研讨,这是一个对知识进行抽象、总结和升华的环节。

结语

“软件测试”课程的教学目标在不断提高,教学内容也在不断更新。本文提出基于实验的软件测试教学方法,通过将实验作为课堂教学手段,来提高学生对测试领域知识点的掌握程度及对测试技能的熟练程度,同时可以有效促进学生创新思维的养成。事实证明,融合实验的教学方法无论在教学大纲还是教学设计方面都进行了有效的改进或改善,成为一种颇具潜力的教学方法。

猜你喜欢
软件测试维度知识点
一张图知识点
一张图知识点
第四页 知识点 歼轰-7A
基于OBE的软件测试课程教学改革探索
EXCEL和VBA实现软件测试记录管理
关于软件测试技术应用与发展趋势研究
软件测试工程化模型及应用研究
光的维度
关于G20 的知识点
“五个维度”解有机化学推断题