余久久,张佑生
(安徽三联学院计算机工程学院,安徽合肥 230601)
教学软件测试过程模型研究及应用
余久久,张佑生
(安徽三联学院计算机工程学院,安徽合肥 230601)
教学软件的开发已相对成熟,但在测试方面,尚未形成完善的测试过程模型或体系。在对教学软件所具有的教学性、人机交互性与科学性三大共性特点深入分析的基础上,充分结合了软件工程领域中的软件测试流程,遵循“测试与开发活动同时贯穿于软件生命周期”的思想,提出一个由教学需求设计、测试用例设计、教学设计、软件设计、单元与集成测试、编码、综合测试、教学评价等涵盖了软件开发、测试及评价活动共同组成的针对教学软件的测试过程模型,并通过实际测试项目予以应用实现。
教学软件;测试;用例;需求;教学设计;评价;模型
教学软件是指计算机辅助教学使用的程序或软件,通过计算机呈现教学内容、结构和教师教学意图,指导和控制教学活动,接受学生要求与回答,存储有关教学资料进行教和学的活动等[1],包括以某种计算机文件格式(如.PPT格式、.AVI格式、.MPG格式等)制作出的多媒体教学课件、基于网络环境下的课程学习系统、网络教学平台、针对各类学科的教学模拟软件、课堂上教师使用的教学辅助类软件以及学生课外使用的各种自学辅助类软件等。教学软件表面上体现出功能模块的开发,实质上蕴含着以符合使用者思维习惯和学习需要的教学目标分析与设计、学习过程的设计、教学内容组织等[2]。教学软件的开发过程需历经反复迭代,其中较为典型的开发模型有三重螺旋开发模型[3]、原型法开发模型[4]、原型与螺旋相结合的开发模型[5]、教学软件RUP改进模型[6]等。
伴随着对教学软件的不断使用,有关对软件产品自身质量的关注问题也接踵而来,有效的教学软件测试活动将成为其开发过程中必不可少的质量保证手段。软件测试过程模型即在测试实践的基础上,有机结合相应的软件开发活动所总结和抽象出的一系列测试活动规律。与软件开发过程一样,软件测试过程同样遵循软件工程原理和管理学思想等[7]。近几年,软件测试行业在测试V模型、W模型、X模型、H模型与前置模型等传统测试过程模型所存在局限性的基础上又提出了一系列改进的测试过程模型[8],所改进的测试模型在一定程度上体现了各测试活动之间以及与开发活动的关联性,但是仅局限于对传统软件工程阶段(计划阶段,需求分析,设计阶段,实现阶段,测试阶段,运行维护)[9]测试活动的研究,并未形成在对教学软件特点及生存周期进行细致分析的基础上而提出相应的测试过程模型或体系。本文把教学软件共性特点与软件工程领域中的软件测试过程有机结合,提出一个针对教学软件的测试过程模型,并应用到具体的教学软件测试项目实例中。
不同类型的教学软件具有不同的应用方式,其功能及表现形式也各具特点,总体来说,具有教学性、人机交互性、科学性等三个共性特点[6]。对教学软件在实际使用中所开展的各种教学活动是否具备科学性的评测准则,通常根据软件的教学目标对教学过程及结果进行价值判断,并成为教学决策服务的活动,也是研究教师教学与学生学习的价值过程,主要体现在教学设计(教学过程与活动设计是否合理、媒体呈现方式是否科学、软件承载的知识内容是否符合教学要求等)和教学使用(软件使用环境是否稳定、作用效果是否明显等)两个方面[1]。具体来说,对教学内容、教学方法、教学环境、软件使用者等诸多因素的评价构成了教学软件评价的主体,但最主要还是对软件的使用过程与使用效果进行评价。总之,教学软件测试过程中不能缺少对教学性、人机交互性、科学性三个方面的测试或评测,这是常规软件测试所不具备的测试要素。
科学合理地设计测试过程模型需要在细致分析被测软件自身特点及实现目的的基础上,充分结合软件开发与测试流程,通过测试活动的早期介入来把握软件开发全过程。能够将测试计划、测试用例设计、测试执行、测试分析与反馈等一系列活动有效结合在一起,尽可能早地暴露出软件设计中的错误[10]。在一个能够有效描述教学软件测试过程模型中仅具备测试流程要素是远远不行的,重要的是必须结合开发设计活动进行合理的组织,形成一个完整的过程体系。遵循“测试先行”的思想,测试活动与开发活动的关联性在模型中也要有一定程度的体现。基于此,本文根据软件工程领域中软件测试的各项活动并充分结合教学软件所反映出的教学性、人机交互性、科学性三个方面特点,提出了教学软件测试过程模型,如图1所示。模型要求软件工程师、教育技术专家、软件测试人员、美工人员、学科教师及学生等项目关系人一开始便介入教学软件的生命周期中,测试与开发同步进行,共同参与软件开发全过程。
图1 教学软件测试过程模型
2.1 教学需求分析
软件工程领域的需求工程理论是教学软件需求分析研究的重要基础[11]。除了从软件产品自身功能和非功能实现角度进行需求获取之外,教学软件的需求更多的体现在教学需求分析方面,以实现有效教学为目的来体现最终的教育价值。教学需求分析是对教学软件类型及所适用领域特征的分析过程,主要包括与教学目标分析和使用者特征分析两方面内容。教学目标分析是确定软件教学需求的重要依据。教师由实际教学目标选择与设计教学总体方向,学习内容、教与学的活动方式、教学策略和教学模式、学习环境的构建、学习评价等因素,这些都围绕教学目标而展开。使用者特征分析指软件开发前充分分析软件使用者状况,包括对使用者智力因素(学习起点水平、认知能力、认知发展特征等)与非智力因素(兴趣、秉性、情感、性格等)的分析[12]。信息化环境中对使用者的计算机操作能力进行充分评估也是对使用者特征分析的重要组成部分,既保证了教学软件的开发具有针对性,也为教学软件人机交互性的测评提供直接依据。
从教学目标和使用者特征两方面出发制定出合理完善的教学软件评价指标体系是教学需求分析过程的重要部分,对于同一教学软件,制定不同的教学目标或者对不同层次的使用者产生相应的实用价值会有所差异。例如,某网络课程学习系统,若仅作为课堂上用来教学演示的工具或平台,只要注重浏览页面中课程信息内容呈列方式是否美观、大方,标题是否醒目,文字色彩是否鲜明即可。但是,若以学生操作与练习为主要教学目的,则在浏览页面的课程信息内容中需要实现对学生进行练习或自测的功能并予以结果反馈。此外,对不同层次的使用者而言,教学软件同一功能在信息表现形式上也会略有侧重。例如对于低年级学生,在教学软件练习或自测功能上要设计或表现出一定的“娱乐性”。软件评价指标的具体制订可以依据教学软件类型、学科特点、教学目标、用户特征等因素,在共同评价框架的基础上设计一级、二级或多级评价指标。
教学软件在实际使用中还要受到如教学环境因素、教师因素、学生因素等的影响,这要求学科教师与需求分析人员共同参与到需求分析全过程中,有效引导和确定需求,尤其不能忽视对用户未意识到的隐性需求(如教学对象的兴趣爱好、软件的声光表现形式与实际播放环境的效果等)的挖掘,从而很好地将学科教学思想贯穿于软件之中。
2.2 测试用例设计
测试用例设计是针对软件特定的功能或其功能组合制定一系列测试方案(步骤)与对应的预期结果,并编写成固定格式的测试用例文档来指导随后的实际测试活动[13],来源于被测软件的需求分析,不仅是软件设计的参照,也是软件测试执行的基础,并且在实际的软件设计及测试过程中不断的被复用与完善。因为不同使用目的的教学软件决定了软件的不同类型,如演示型教学软件、教学模拟型软件、网络课程型教学软件、评测练习型教学软件等。不同类型的教学软件的结构、设计理念及教学目是有所不同的,具有各自不同的优势为教和学的过程提供有效的支持。针对教学软件的不同类型,在设计测试用例的预期结果方面要有所侧重。例如,对于同一个更改页面文字功能模块的测试用例,普通软件要求通过测试执行的预期结果是文字被更改成功即可。但是,演示型教学软件要求预期结果是文字更改成功且更改后的页面文字呈现方式要美观大方;模拟型教学软件要求预期结果是文字更改成功且同时能动态模拟出文字被更改的全过程;评测练习型教学软件则要求在文字成功更改后还能显现出某种娱乐性的“奖赏”信息用来表示更改正确的提示等。根据教学软件类型而不是软件的通用功能来设计测试用例的过程应该由软件测试人员、教育专家、学科教师共同完成,这为指导随后的教学软件测试执行起到重要作用,也是普通软件的测试用例设计要素中所不具备的。
2.3 教学设计与软件设计
教学设计与软件设计是软件开发活动的重要组成部分,由软件工程师、资深教育技术专家与学科教师等共同参与,二者并发进行来验证教学需求并不断反馈与优化。教学设计以教学过程为研究对象,运用系统的方法分析与研究教学中的问题与需求,设计解决它们的教学策略、教学方法及教学步骤,并对教学效果做出评价的计划过程和操作程序[4]。教学内容设计(由教学目标设计教学大纲与教学内容,科学的组织及确立教学知识体系结构)、教学策略设计(由教学目标合理组织教学过程,选择具体教学方法,制定教师与学生所遵守的教学行为等)、媒体展现设计(根据教学策略所采用教学过程中适合呈现出的相应的声音、图像、动画等媒体信息)与教学评价设计(根据教学软件的用途或功能,而设计相应的软件评价指标体系)组成了教学设计的内涵,应该由资深教育技术专家与学科教师一起完成。软件设计即教学软件系统结构设计,由专业软件工程师或系统分析师来完成,设计过程分为概要设计和详细设计两个层次。概要设计即系统总体功能模块的划分设计,也称为总体设计。详细设计即对软件中每个模块所需实现的具体功能而采用相应技术及流程的设计。软件设计的内容主要包括软件的数据库设计(软件数据库的存储方式以及数据库逻辑结构与物理结构)、网络架构设计(软件架构网络的计算模式、基于网络的方案等)、用户界面设计(界面对象、动作及屏幕布局设计原则)、人机交互设计(设计用户与软件进行信息双向交流的方式、过程及交互准则)等。
2.4 编码
编码指选择一种或几种编程语言来实现软件设计阶段的设计方案,使其变成初始可运行的目标系统[14]。教学软件作为一种计算机辅助教学使用的程序或软件,其开发及制作的直接蓝本-脚本的编写与实现过程也属于计算机软件编码范畴。脚本一般可以分为文字稿本与制作脚本,学科教师把教学思想、教学内容与教学要求等通过文字稿本进行详细设计与描述,而制作脚本则由软件程序员按照文字稿本的内容在特定的软件开发平台上予以编译、连接与调试,开发出相应的程序脚本,来实现教学软件的体系结构与教学功能。
2.5 单元与集成测试
教学软件的单元测试与集成测试只着眼于软件自身功能实现,如软件的构造性或可靠性等,而不考虑测试或验证软件的教育教学因素。与普通软件一样,教学软件也是由众多单元来实现软件的功能。一个测试单元,可以是软件代码中的一个程序、一个类或一个函数,也可以是由某几个单元组成的一个更大的单元(模块、组件)。教学软件单元测试的目标纯粹是从软件自身属性或软件系统功能设计的角度出发来测试代码在功能实现方面是否正确,并确保代码在结构上的安全与可靠,而不考虑软件的教育教学因素。单元测试一般与软件编码同步,主要由程序员完成,可以较早发现软件缺陷,缩短开发周期。集成测试通常是在程序中所有的单元(模块)测试通过后把若干单元聚集在一起进行的局部测试活动,旨在验证诸单元的组合能否正常工作及各单元之间的接口功能是否正确。集成测试的方式可以采用自顶向下、自底向上或混合集成策略等。实际测试中也可以适当的把某些单元测试延迟,或者把作为软件子系统一部分的模块单元测试内容延迟至对该子系统集成测试阶段进行,从而有效提高测试效率[15]。
2.6 综合测试
教学软件的综合测试是在单元测试与集成测试的基础,从软件操作的层面结合之前由教学软件的类型所设计的测试用例来进行的测试活动,以黑盒测试方式进行。人机交互性的测试是综合测试环节的重点,从软件操作的角度出发,主要检测教学软件的人机交互功能。测试诸如当软件界面或对话框中进行输入字符、提交及修改表单等操作后,软件能否及时给出有效响应;数据的输入是否遵循特定的输入方式或已输入数据是否可以按照某一搜索方式被顺利的查询;提交新的数据后页面能否及时刷新等。综合测试中也不能遗漏对构成教学软件一些常用的功能(如上传下载功能、页面浏览功能、测评反馈功能等)方面的测试,这些测试大都以黑盒测试为主。此外,综合测试中还应该对教学软件的界面导航与稳定性方面进行测试。导航测试主要检测界面中的导航按钮(前一页、下一页、返回等)功能是否正确,是否存在空链接,界面中各级菜单的链接是否有效,从某一随机的页面中是否能便捷的返回指定页面等。稳定性测试用来测试安装在不同软、硬件环境下,教学软件能否正常运行,是否兼容网络环境及其他软件程序,教学软件出现系统故障后是否发生数据丢失现象,是否具备重新恢复正常运行的能力等。
2.7 教学评价
教学评价即依据软件的教学目标对教学过程及结果进行价值判断并为教学决策服务的活动,是研究教师的教和学生的学的价值的过程[16]。教学评价是教学软件测试过程中独特的环节,也是测试中不可或缺的部分,旨在测评教学软件所表征的教学内容是否具备科学性,是否达到教学或学习的目的,以促进教学设计。与由软件测试人员或相关测试机构在软件交付前在模拟用户使用环境下对软件系统功能测试有所不同,教学评价是对软件教学或学习的过程中就所涉及到的教学内容、教学方法、软件使用者、教学环境等诸多因素是否遵循人类认知规律科学性的评测行为,主要体现在对教学设计和教学使用的评价两个方面。教学设计评价主要侧重于评测软件教学内容的设计及组织是否遵循学生认知的基本规律,软件的教学目标或使用对象是否明确,是否具备良好的交互与反馈功能等,主要由教育技术专家来评判。具体可以从教学内容的选题、教学理念、教学对象、教学目标、内容组织与结构、学习活动、资源拓展、兴趣激励与监控、交互、练习与评测等方面有选择地实施评价过程[1]。教学使用评价即由使用软件的教师与学生来评判教学软件的使用效果,侧重于有效辅助课堂教学效果、增强使用兴趣、减轻教学或学习负担、是否支持探究性学习等方面。从软件设计者角度来看,软件教学评价过程有助于发现问题,调整设计开发方向,提高开发质量。从使用者角度来看,该过程可以为其选择合适的教学资源,激发学习兴趣,提高学习效率[6]。
“《办公自动化》网络课程学习系统”以作者所在学院非计算机类专业学生为主要用户,任课教师通过文本、图片、音乐、动画等各种媒体形态所呈现出的该学科知识的教学内容设计来为学生课外自主选修该课程内容提供服务。项目团队由教育技术专家、学科教师、软件设计师、程序员、软件测试人员等组成。以对该系统的测试活动为例,说明本模型的具体应用,测试周期为3个月。
测试人员在系统开发之前与学科教师及软件开发人员一起参与到该系统的教学需求分析过程当中,并在与软件的主要使用者学生进行探讨、深入分析教学目标的基础上,首先对系统使用者特征进行详细分析来引导和确定教学需求。测试人员与学科教师在系统的教学需求分析之后着手开展对系统被测对象的测试用例的分析与设计工作,以制定系统页面内容表现方面的测试用例为例,有关页面内容表现要依据课程学习内容并结合使用者特征选择最佳的信息显示方式,为使用者提供清晰的学习资源空间。从系统功能实现并结合教学设计与使用者的认知规律,设计测试用例分别从课程的界面设计、文字编排、内容导航、内容交互等四个方面制定测试项目与预期测试通过标准,测试用例模板如表1所示。预期测试通过的要求可以根据使用者特征状况并结合实际环境来制定。例如内容导航中的导航设置项的测试,对于学习基础差的学生而言,要求测试通过的要求是不仅导航功能可以正确灵活的使用,而且需要浏览页面记录下使用者的导航历史记录或路径,以备下次导航前回到上次学习的知识点复习使用。而针对学习基础好的学生而言,则导航设置项测试通过的要求可以不含记录导航历史信息等。最后,所设计的测试用例应该具备良好的通用性,即能够在某一类型或某一领域的相似软件的测试中广泛运用。
表1 页面内容表现的测试用例
接下来,测试人员与学科教师一起着手制定综合测试计划(包含测试目标、测试范围、测试起始与完成时间、测试重点、完成标准等内容)与该系统教学评价范畴或指标(在实际使用环境下在教学需求阶段所定义的教学软件一级或二级评价指标。例如一级评价指标:教学设计、技术实现、呈现艺术。二级指标即教学设计分解为教学目标组织、教学交互设计、学习评价等;技术实现分解为系统架构设计、运行环境、操作性能等;呈现艺术分解为界面设计、媒体选择、美工效果等[6]),要求与开发活动同时进行。在软件设计师与程序员设计出最初的系统原型并通过单元测试与集成测试后,学科教师与测试人员一起参与不断的完善与改进测试用例设计来指导对系统的综合测试,与此同时,选取以学生为主的软件使用者为代表与专业的教学软件评价人员在实际的运行环境中按照事先所定义的评价指标共同参与软件评价活动,对其广泛的试用来验证教学需求。
系统在交付期内顺利完成测试过程,项目组人员、学生代表与评审专家在项目结束时全部参加了项目评审。在系统运行期间,学生基于实际使用状况提出了新的需求,测试人员与学科教师在此期间又对其进行一次测试过程。根据系统新增的教学需求与测试策略,可以选用当前软件测试领域中较为成熟的一些测试用例复用模型完成对相应模块的测试用例设计与复用过程,并为基于复用的软件测试的工程化管理提供管理框架[18]。
系统在投入使用两个月后,有学生提出了在浏览页面内容表现方面需要加入媒体呈现效果。基于此,作者在表1所示的测试用例的“测试项”一栏中增加“动画表现”测试项,并设计出“画质”、“色彩”、“构图”、“音效”等测试子项及相应测试说明。从而通过对现有的测试用例进行补充与完善来完成添加新需求的测试工作。需要说明的是,对于具体测试项目所设计的测试用例可能不完全满足被测软件的测试需求,因此实际测试中要求针对被测软件的需求及时补充新的用例或对现有用例进行充实完善[19]。
该系统在试点院系进行了实际应用,反映良好,目前正考虑利用本文所提出的测试过程模型就其他类型教学软件的测试工作做进一步推广运用。
[1]余胜泉.教学软件设计指导手册[M].北京:清华大学出版社,2011.
[2]黄少颖,刘美风,张霞.教学软件需求分析有效实施的指导原则研究[J].现代教育技术,2007,17(3):10-12.
[3]刘新阳,张从善,常淑娟,等.关于新型教学软件开发模式的构想[J].中国电化教育,2003(5):65-67.
[4]谷震离.多媒体教学软件原型法开发模型研究[J].计算机工程与设计,2006,27(10):1829.1829-1830.
[5]李为民,张军征.教学设计与软件工程结合的教学软件开发模式[J].现代教育技术,2009,19(7):49-52.
[6]余久久.面向教学软件的RUP改进模型的设计研究[J].电化教育研究,2012,33(4):77-81.
[7]熊智,刘莉,雷钰锋,等.X测试模型的改进与应用[J].计算机工程与设计,2011,32(8):2748-2751.
[8]余久久,张佑生.软件测试改进模型研究进展[J].计算机应用与软件,2012,29(11):202-207.
[9]方海光,任剑锋,陈蜜.教育软件工程框架的构建[J].计算机科学,2009,36(1):29-33.
[10]陆永忠,宋骏礼,谷希谦.基于行为的软件测试过程模型及其应用研究[J].计算机应用,2007,27(5):1238-1239.
[11]何晓蓉.软件工程与UML案例解析[M].北京:中国铁道出版社,2010.
[12]学习者特征分析[EB/OL].http://www.baidu.com/教育技术培训/,2010.
[13]张智轶,陈振宇,徐宝文,等.测试用例演化研究进展[J].软件学报,2013,24(4):664-665.
[14]石东凌,张应博,邹启杰.软件工程使用教程[M].大连:大连理工大学出版社,2011.
[15]周学海,陈蓓蓓.软件测试过程模型的改进-并行V模型[J].计算机工程与应用,2005,24(9):125-127.
[16]教学评价[EB/OL].http://www.baidu.com/教学软件评价/,2011.
[17]罗月念.多媒体教学软件的开发及其传输优化研究[D].贵阳:贵州大学,2008.
[18]楼芳,李亮,何志强.基于本体的渗透测试用例复用模型[J].计算机工程与科学,2011,33(2):23-26.
[19]尹平.可复用测试用例研究[J].计算机应用,2010,30(5):1309-1311.
Research and Application of Testing ProcessModel for Instructional Software
YU Jiu-jiu,ZHANG You-sheng
(Computer Engineering College,Anhui Sanlian University,Hefei230601,China)
The applications on instructional software aremuch popular in universities currently.The development process on instructional software has come into being the development processmodel system perfectly,but the testing process on instructional software has notbeen formed yet.Accord to the ideology that“the activities on testing and development is run through software life cycle at the same time”and combined with the testing flow in software engineering domain,this article analyze the common characters on teaching,human-computer interface and scientific for instructional software,and puts forward a testing processmodel on instructional software which composed of teaching requirement design,testing case design,teaching design,software design,unit/ integration testing,coding,all-around testing instructional software estimation.Furthermore,we apply thismodel to the realistic development example for teaching system project and achieve good results.
instructional software,testing,case,requirement,teaching design,estimation;model
TP311
A
1007-4260(2014)03-0125-06
时间:2014-9-15 16:07 网络出版地址:http://www.cnki.net/kcms/doi/10.13757/j.cnki.cn34-1150/n.2014.03.031.html
2013-10-14
2013年安徽省高等学校省级质量工程项目(2013jyxm274),2013年安徽三联学院院级质量工程项目(13zlgc023),2014年安徽三联学院科研基金项目(2014Z003)和2014年安徽省职业与成人教育学会教育科研规划项目(BCB14035)资助。
余久久,男,安徽合肥人,硕士,安徽三联学院计算机工程学院讲师,主要研究方向为软件工程、软件测试、计算机教育。
张佑生,男,安徽合肥人,硕士,安徽三联学院计算机工程学院教授,主要研究方向为计算机应用技术。