郭婉尔
汕尾市高级技工学校 广东 汕尾516600
摘要:软件测试是技工学校信息技术专业不可或缺的一部分,但调查显示,一些技工学校信息技术、计算机或软件工程类专业课程中更多重视程序的设计和实现。此次研究将以教育游戏在信息技术专业教学中的应用作为切入点,在此基础上予以深入的探究,相关内容如下所述。
关键词:教育游戏;信息技术专业;教学;应用
1.实验内容
1.1.白盒测试/黑盒测试方法
白盒测试方法和黑盒测试方法是软件测试中用得最多得两种测试技术,也是目前工业界仍在普遍使用的两种方法。白盒测试是基于程序源代码对程序内部的逻辑结构以及相关信息进行测试的方法,测试者需先了解程序的内部结构,根据被测程序的内部结构设计测试用例,检验程序中的每条通路是否能按照预定的要求正确工作。白盒测试最常用的方法有语句覆盖、分支覆盖、条件覆盖等。黑盒测试是基于程序功能的测试方法,目的是检查软件的各项功能是否实现或软件中是否存在功能上的错误。黑盒测试最常见的方法有等价类划分法、边界值分析法等。
①语句覆盖:为了发现或确认程序中的错误,程序代码必须被执行。直观地说,如果包含bug的语句从未被任何测试执行过,那么就无法检测到bug。语句覆盖率是衡量测试质量的最通用的标准。此测试程序中设计的测试用例仅涵盖了if条件语句的true分支,而未涵盖第二个return语句,因此此测试程序没有达到语句覆盖的要求。
②分支覆盖:分支覆盖要求程序控制流中的所有边至少执行一次,这意味着每个if条件语句都需要取一次真值和假值。此次研究给出了一个分支覆盖示例游戏程序。初始测试集涵盖了所有语句,即满足语句覆盖的要求,但没有达到分支覆盖的要求。③循环测试:系统已经定义了各种覆盖标准来处理循环引起的挑战。例如,不同的循环迭代次数可能导致发现不同的错误。循环测试示例游戏程序,其中现有的测试套件涵盖了循环未执行和仅执行一次的情况,但不包括循环多次执行的情况。④边界值测试。边界值测试的示例,其中现有测试集实现了分支覆盖,但是没有在x>100的边界上进行测试。
1.2.测试用例概念
在进行软件测试时,设计测试用例是一个非常重要的环节,测试用例设计的好坏直接影响到是否能发现缺陷,测试用例设计得好就能发现缺陷,并可能会发现比较多的缺陷,设计得不好,也许就发现不了缺陷或者只能发现一些比较容易发现的缺陷。所以,编写测试用例是软件测试中必不可少的环节。本实验系统学习者通过扮演防御者角色来设计测试用例,掌握一些设计测试用例的技巧,并积累设计好的测试用例的经验。
2.实验系统的设计与实现
2.1.实验系统框架结构
本系统结构由游戏模式和学习模式两个模块组成。学习模式主要提供给对相关知识还不是很熟悉的学习者在进入游戏模式之前进行学习、练习的模块。游戏模式主要提供给学习者实操使用。
2.2.游戏模式设计
游戏包括攻击者模式和防御者模式两种游戏模式,学习者可以通过攻击者模式来对源程序进行修改,通过防御者模式来创建测试用例检测出修改的部分。通过两种模式的操作,学习者可以对软件测试的相关概念、方法和原理进行实操训练。
(1)攻击者模式
在攻击者模式中,学习者最主要的目标就是改变源程序,使改变的部分尽可能难被测试用例检测出来,学习者可在此模块看到详细源代码,并且可对源代码进行合法的微小的修改。学习者在修改程序时须遵守以下规则:①不能修改源程序的类名、函数名、变量名以及数据类型;②修改后的程序必须可运行,即没有语法上的缺陷;③不能向程序中添加新的if语句或循环语句;④修改的部分必须有输出值;⑤每次修改程序只能引入一个故障(fault)。当学习者作为攻击者时,系统将向学习者玩家展示源程序和测试集,学习者的任务是修改源程序创建测试集不能检测到的变异体。
(2)防御者模式
在防御者模式中,学习者最主要的目标就是创建测试用例,找出攻击者模式中玩家创建的变异体。学习者可根据修改后的源代码在界面上输入测试用例。测试数据需要满足以下条件:①输入的测试数据必须对源程序和修改后的源程序引起不同的程序状态;②修改的输出值的语句必须被执行且该输出值能够被测试数据检测出来。
判断学习者是否杀死当前变异体的最主要的方式是,学习者创建测试用例后,在源代码和修改代码中运行该测试用例,然后判断两者的输出值是否相同。如果源代码和修改代码的输出值不同,则说明学习者创建的测试用例成功检测出了修改部分,即杀死了当前变异体,反之则说明没有检测出程序的修改。还是以语句覆盖为例,如果防御者输入的测试用例为x=10,则运行源代码和修改代码后的输出结果是一样的,说明防御者设计的测试用例没有发现缺陷,据此判定攻击者胜,攻击者得分。如果输入测试用例为x=3,则运行源代码和修改后代码的输出结果是不一致的,据此可以判定防御者在这一局中胜,防御者得分。
3.教学评估
教师可以使用这个基于游戏模式的实验系统来进行软件测试技术课程的实验教学,并通过这个系统对课程进行管理。系统在实际使用时教师可以以管理员的角色来对源代码进行管理。教师可以根据教学进度更换或者新增符合当前教学知识点的比较典型的游戏代码,让学习者根据当前所学的内容,针对新的源代码进行代码修改;同时,学习者也可以针对新修改的程序来设计测试用例。教师可以查看每位学习者的参与度,也可以根据每个学习者修改的程序数量、检测出来的变异体数量等信息来判断学习者对知识的掌握程度。
使用基于游戏的软件进行实践学习,寓教于乐,还可以增强学习过程中的竞争性,增强学习者学习的积极性,同时也增强学习者实践教学的参与度。软件记录了每位学习者修改的源程序数量、检查出多少修改代码的数量以及在练习模式中答对的习题数量,学习者和教师均可以通过这些数据分析学习成果,学习者可以通过在游戏中扮演不同的角色,在游戏通关中掌握知识,也能够了解自己在哪些方面存在不足,需要改进。教师可以根据学习者的实践教学参与度来调整课堂教学内容、教学方法以及教学难度,适当增加源代码以及习题的难度,可以提升学习者学习的积极性、竞争性。本系统不仅可以作为实验用工具,还可以作为评价工具。例如,将课程考试由笔试的形式改为在游戏软件中进行,在规定的时间内创建一定数量的有效新代码,创建测试用例检查新代码。
4.结语
在本文中,我们提出了基于游戏的软件测试技术实验教学模式,使学生在游戏中掌握软件测试技术的相关概念、方法和原理。学生在创建新程序以及创建测试用例的同时,不仅可以掌握软件测试的相关知识,还能对如何编写高质量软件有一定的理解。同时,由于实验是在游戏中进行的,这样就为枯燥的软件测试课程增加了乐趣,更加吸引学生。接下来我们所面对的挑战就是评估此款游戏软件对使用者产生的影响,评估游戏软件在学习者使用的过程中是否有不合理或需要优化的地方。
参考文献:
[1]黎兴安. 长阳县高中信息技术课程改革与问题研究[D].华中师范大学,2017.
[2]王晓姝. 面向高职信息技术教育的严肃游戏设计与实施[D].大连理工大学,2017.
[3]李云莲. 信息技术课中培养学生信息素养的研究[D].山东师范大学,2019.
[4]杨志珍. 信息技术教育与中小学课程整合的研究[D].江西师范大学,2019.