CN105095085A - 一种基于web的软件测试实训系统及方法 - Google Patents
一种基于web的软件测试实训系统及方法 Download PDFInfo
- Publication number
- CN105095085A CN105095085A CN201510528481.8A CN201510528481A CN105095085A CN 105095085 A CN105095085 A CN 105095085A CN 201510528481 A CN201510528481 A CN 201510528481A CN 105095085 A CN105095085 A CN 105095085A
- Authority
- CN
- China
- Prior art keywords
- user
- tested program
- defect
- test
- test case
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于WEB的软件测试实训系统及方法,系统分为数据层、业务逻辑层和表现层,数据层包括关系型数据库;业务逻辑层包括用户服务、课堂服务、测试任务服务、执行服务、分析服务和报告服务模块;表现层包括交互模块。用户根据测试任务输入测试用例;执行服务执行被测程序,并且针对用户所发现的每个缺陷给出多个缺陷改错选项,用户选择改错选项;执行服务根据用户的选择生成修复后的被测程序副本,执行程序副本,分析服务判断用户是否发现了被测程序的缺陷,并且判断用户是否修复了缺陷;报告服务报告被发现和被修复的缺陷。用户通过系统自行完成软件测试练习并获得实时指导,大大减轻了教学负担,提高了教学效率和效果。
Description
技术领域
本发明属于网络教育技术和软件测试技术领域,特别涉及一种基于WEB的软件测试实训系统及方法。
背景技术
在软件开发过程中,软件测试是保障软件质量和可靠性的重要手段。软件测试使用人工或自动方式来运行或测试某个系统,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。在优秀的软件企业中,测试人员和开发人员的比例通常为1:3,在部分企业中此比例甚至高达2:1。以微软为例,早在1999年开发Windows2000操作系统时,投入了250多个项目经理、1700多个开发人员,而内部测试人员则达到3200人,测试人员比例远超过一半。
相比国外,我国软件测试行业的发展仍处于起步阶段。调查显示:
(1)尚有51%的软件公司没有专门的软件测试部门;
(2)超过19%的软件公司测试人员与开发人员的比例低于1:7;
(3)国内软件测试人才缺口高达30万,超过74%的软件公司有扩大测试人员的需求,其中68%以上的软件公司更是计划大规模招聘软件测试人员;66%的软件公司不断增加测试人员的薪资。
总体而言,国内IT产业对软件测试逐步重视,测试职位发展潜力大、前景好,并且需要大量人才进行补充。针对软件测试人才缺乏的现象,各高校相继开设了软件测试课程,软件测试是一门实践性很强的技术。在软件测试教学中,教师应当配合理论教学对学生进行实践训练。然而如何有效地开展这种实训、是一个具有挑战性的问题。其原因至少有以下几点:
(1)很多高校尚未开设软件测试实验课,因缺少教师的辅导、课外的实践性练习很难展开;而在开设了实验课的高校中,由于实验课的时间所限、教师也很难同时为每个学生提供个性化的实时辅导。
(2)在传统的实践性练习中,教师不仅需要设计被测程序和程序缺陷,而且需要人工地评估每个学生的测试效果,因此教师的教学负担重、效率低。
(3)实践性练习往往依赖于特定的软件测试工具;然而现有的测试工具种类繁多、学习周期较长,有些工具价格不菲,因此教师难以从中选择合适的工具。
据调查,国内大部分与软件测试教育有关的学习系统均以资料分享为主,部分系统提供题库系统模拟传统的笔试,但很少见到能提供软件测试实践模拟和实时反馈的系统,且尚未见到能自动提供个性化指导的游戏式软件测试实训系统。鉴于此,有必要设计并发明一套可减轻教学负担、提高教学效率、激发学习兴趣、改善学习效果的软件测试实训方法及其系统。
发明内容
本发明的目的在于克服现有技术的缺点与不足,提供一种减轻教学负担、提高教学效率以及提高学习效果的基于WEB的软件测试实训系统。
本发明的另一目的在于,提高一种上述基于WEB的软件测试实训系统实现的实训方法。
本发明的第一目的通过下述技术方案实现:一种基于WEB的软件测试实训系统,所述系统的架构自下而上分为数据层、业务逻辑层和表现层,所述数据层包括关系型数据库,用于存放软件测试实训相关的数据;
所述业务逻辑层包括:
用户服务模块,用于提供用户注册、用户登入和用户信息管理;
课堂服务模块,用于提供相应用户开设课堂和管理选课用户以及为选课用户提供课堂选择;
测试任务服务模块,用于提供课堂中的测试任务以及查看完成该测试任务用户的成绩,并且每个测试任务中包含一个带有缺陷的被测程序;
执行服务模块:针对用户给出的每个测试用例,执行服务模块通过测试用例执行对应测试任务中的被测程序;针对用户所找到的每个被测程序缺陷,执行服务都提供多个缺陷改错选项供用户选择;针对用户所选择的每个缺陷改错选项,执行服务模块首先生成测试任务中带有缺陷的被测程序的副本,然后根据用户所选的缺陷改错选项修复带有缺陷的被测程序的副本,最后编译修复后的被测程序副本,并通过用户给出的测试用例执行修复后的被测程序副本;
分析服务模块,对于被执行的测试用例,分析服务模块用于判断该测试用例是否正确,当测试用例正确时,进而判断通过此测试用例能否发现被测程序的缺陷,若能,则分析服务模块定位所发现的缺陷在被测程序中的位置、同时提供缺陷修复方案;在被测程序的修复环节,分析服务模块用于将其提供的缺陷修复方案与用户给出的缺陷改错选项进行对比,从而判断用户该是否已正确地选择缺陷改错选项来修复此缺陷;分析服务模块使用基本评价指标记录用户在一个测试任务中的表现,然后根据基本指标生成综合评价指标;
以及报告服务模块,用于抽取分析服务模块所生成的基本评价指标和综合评价指标数据,并且生成相应的报告,然后传递给表现层渲染页面使用;用于报告被用户发现和被修复的被测程序中的缺陷;
所述表现层包括交互模块,用于在服务器端进行页面渲染和跳转,在浏览器端实现浏览器与服务器的异步交互。
优选的,所述关系型数据库中存放的软件测试实训相关的数据包括基本表及其字段,其中基本表包括用户信息表、课堂表、课堂限定用户学号表、测试任务表、被选的测试任务表、选课表、完成任务表和测试用例表;所述用户服务模块注册的用户包括教师角色用户和学生角色用户;所述课堂服务模块提供教师角色用户开设课堂和管理选课学生角色用户以及为选课的学生角色用户提供课堂选择;所述测试任务服务模块为教师角色用户提供在课堂中选择加入测试任务。
优选的,执行服务模块包括执行测试的子服务模块和执行修复的子服务模块;
执行测试的子服务模块,用于接收用户给出的测试用例,并且抽取测试用例的输入数据,针对对应测试任务中被测程序的.class文件进行插装,然后在虚拟机上通过用户给出的测试用例执行插装后的被测程序,并且在执行时获取被测程序的语句覆盖信息;
执行修复的子服务模块,用于接收用户所选的被测程序缺陷改错选项,生成测试任务中带有缺陷的被测程序的副本,然后根据用户给出的被测程序缺陷改错选项修复带有缺陷的被测程序的副本,最后重新编译修复后的被测程序副本得到修复后被测程序的.class文件,对此.class文件进行插装,并且执行测试的子服务模块通过用户给出的测试用例执行修复后的被测程序副本,在执行时获取修复后的被测程序语句覆盖信息。
更进一步的,所述执行测试子服务模块中,针对对应测试任务中被测程序的.class文件进行的插装包括以下两类插装:第一类插装在被测程序的每条可执行语句的字节码之前都插入探针以统计该语句被执行的次数;第二类插装在被测程序中的每个带有缺陷的语句之前都插入探针以判断该缺陷语句是否被执行,并在此缺陷语句被执行时输出其相应的缺陷编号;通过用户给出的测试用例执行上述两类插装后的被测程序,获取到测试用例对被测程序的语句覆盖信息以及测试用例所发现的缺陷的编号;
执行修复的子服务模块中,针对修复后被测程序的.class文件进行插装的过程如下:在修复后的被测程序的每条可执行语句的字节码之前都插入探针以统计该语句被执行的次数;通过用户给出的测试用例执行此修复插装后的被测程序,获取到测试用例对修复后被测程序的语句覆盖信息。
更进一步的,所述分析服务模块使用基本评价指标记录的用户在一个测试任务中的表现包括完成一个测试任务所用的测试用例总数,语句覆盖率、分支覆盖率、修复尝试次数、修复缺陷数和耗时;根据基本指标生成综合评价指标包括被测程序缺陷的查全率、查准率、修复能力和速度;对于一个课堂中完成测试任务的所有用户分析服务模块还生成完成这项测试任务的用户平均成绩和每个用户的成绩排名。
本发明的第二目的通过下述技术方案实现:一种基于WEB的软件测试实训方法,包括在数据层、业务逻辑层和表现层的实训步骤,
数据层实训步骤:在数据层,通过关系型数据库存放软件测试实训相关的数据;
业务逻辑层实训步骤,
S1、用户服务:首先进行用户注册、用户登入和用户信息管理的用户服务;
S2、课堂服务:为相应用户开设课堂和管理选课用户以及为选课用户提供课堂选择;
S3、测试任务服务:为用户提供课堂中的相应测试任务以及查看完成该测试任务用户的成绩,并且每个测试任务中包含一个带有缺陷的被测程序;
S4、执行服务:针对用户给出的每个测试用例,通过测试用例执行对应测试任务中的被测程序;针对用户所找到的每个被测程序缺陷,执行服务都提供多个缺陷改错选项供用户选择;针对用户所选择的每个缺陷改错选项,执行服务模块首先生成测试任务中带有缺陷的被测程序的副本,然后根据用户所选的缺陷改错选项修复带有缺陷的被测程序的副本,最后重新编译修复后的被测程序副本,并通过用户给出的测试用例执行修复后的被测程序副本;
S5、分析服务:对于执行服务中用户给出的测试用例,首先判断该测试用例是否正确,当测试用例正确时,进而判断通过此测试用例能否发现被测程序缺陷,若能,则分析服务模块定位所发现的缺陷在被测程序中的位置、同时提供缺陷修复方案;然后在被测程序的修复环节,将提供的缺陷修复方案与用户给出的缺陷改错选项进行对比,从而判断用户该是否已正确地选择缺陷改错选项来修复被测程序中的缺陷;最后使用基本评价指标记录用户在一个测试任务中的表现,然后根据基本指标生成综合评价指标和总成绩;
S6、报告服务:抽取分析服务模块生成的基本评价指标和综合评价指标数据并且生成相应的报告,然后传递给表现层渲染页面使用,并且报告被用户发现和被修复的被测程序中的缺陷;;
表现层实训步骤:在服务器端进行页面渲染和跳转,在浏览器端实现浏览器与服务器的异步交互。
优选的,所述业务逻辑层实训步骤中,步骤S4执行服务包括执行测试的子服务步骤和执行修复的子服务步骤;其中,
执行测试的子服务步骤:接收用户给出的测试用例,并且抽取测试用例的输入数据;针对被测程序进行以下两类插装:第一类插装在被测程序的每条可执行语句的字节码之前都插入探针以统计该语句被执行的次数;第二类插装在被测程序中的每个带有缺陷的语句之前都插入探针以判断该缺陷语句是否被执行,并在此缺陷语句被执行时输出其相应的缺陷编号;然后在虚拟机上通过用户给出的测试用例执行上述两类插装后的被测程序,以获取测试用例对被测程序的语句覆盖信息以及测试用例所发现的缺陷的编号;
执行修复的子服务步骤:接收用户所选的被测程序缺陷改错选项,生成测试任务中带有缺陷的被测程序的副本,然后根据用户所选的被测程序缺陷改错选项修复带有缺陷的被测程序的副本,最后重新编译修复后的被测程序副本得到修复后的被测程序的字节码文件;针对此字节码文件进行插装,即在每条可执行语句的字节码之前都插入探针以统计该语句被执行的次数,通过用户给出的测试用例执行此修复插装后的被测程序,以获取测试用例对修复后被测程序的语句覆盖信息。
更进一步的,获取测试用例对被测程序的语句覆盖信息的过程如下:针对被测程序的字节码文件进行插装,即在被测程序的每条可执行语句的字节码之前都插入探针以统计该语句被执行的次数;然后在虚拟机上通过用户给出的测试用例执行插装后的被测程序,所有探针所记录的有关语句执行的统计信息被写入相应的数据文件;读取这些数据文件,根据已被执行代码和未被执行代码的语句条数计算出被测程序的语句覆盖率,并分别将已被完全执行、已被部分执行和未被执行的语句所对应的源码部分用不同的背景色高亮显示,以可视化地展现测试用例对被测程序的覆盖情况。
更进一步的,所述步骤S5中分析服务步骤中,业务逻辑层在后台保存了测试任务中带有缺陷的被测程序所对应的正确程序,即不带缺陷的被测程序版本;在数据层使用一个数据库表保存带有缺陷的被测程序中每个缺陷的信息,其中缺陷信息包括缺陷的编号、缺陷在被测程序中的位置和缺陷的对应修复方案;
根据步骤S4对带有缺陷的被测程序中的每个缺陷语句都进行了第二类的插装,当执行测试的子服务执行了某个缺陷语句时,获知此缺陷所对应的缺陷编号,进而获知当前测试用例所发现的具体缺陷;在所述步骤S5分析服务的被测程序修复环节,根据缺陷编号查询数据库表以找出此缺陷对应的修复方案,并将此修复方案与用户选出的缺陷改错选项进行对比,以判断用户是否正确地选择了缺陷改错选项来修复此缺陷。
更进一步的,步骤S5中分析服务步骤中,对于用户给出的测试用例,通过以下步骤分析测试用例是否正确:
S51、根据软件测试要求分析测试用例被执行后需要达到的预期输出;
S52、通过测试用例执行在后台所保存的对应有缺陷被测程序的正确程序,将执行后所得的输出作为正确输出;
S53、比较步骤S51中预期输出和步骤S52中的正确输出是否一致;
若是,则表示测试用例正确;
若否,则表示测试用例不正确;
步骤S5中分析服务步骤中,在测试用例正确情况下,通过以下步骤判断能否通过此测试用例发现被测程序缺陷:
S54、通过测试用例执行测试任务中带有缺陷的被测程序,所得到的执行结果作为实际输出;
S55、判断步骤S51中得到的预期输出和实际输出是否一致;
若否,则表示通过此测试用例能发现被测程序的缺陷;
若是,则表示通过此测试用例不能发现被测程序的缺陷。
本发明相对于现有技术具有如下的优点及效果:
(1)本发明系统提供包含有测试任务的课堂,用户选择课堂中提供的测试任务进行软件测试实训,执行服务根据测试用例的输入部分来执行测试任务所对应的被测程序,根据测试用例的预期输出部分和被测程序的实际输出来发现被测程序中的缺陷,并给出被测程序缺陷改错的多个选项。在用户选择被测程序缺陷改错选项之后,执行服务首先生成测试任务中带有缺陷的被测程序副本,然后根据用户给出的缺陷改错选项修复带有缺陷的被测程序副本,最后重新编译修复后的被测程序副本,并通过用户给出的测试用例执行修复后的被测程序副本。用户通过测试用例发现被测程序的缺陷,分析服务定位用户所发现的缺陷在被测程序中的位置、同时提供缺陷修复方案;在被测程序的修复环节,系统将分析服务所提供的缺陷修复方案与用户给出的缺陷改错选项进行对比,从而判断用户该是否已正确地选择缺陷改错选项来修复此缺陷。因此学生可以通过系统自行完成软件测试练习。大大减轻了教学负担,提高了教学效率以及学习效果。
(2)本发明中教师可在系统中开设多个课堂,并为每个课堂中添加多个带有被测程序的测试任务;学生对这些被测程序进行查找缺陷和修复缺陷。系统可以设计多个有缺陷的被测程序测试任务供教师直接选用,教师也可以自行设计新的被测程序和和被测程序中的缺陷,并将其加入测试任务中,从而提高了系统的灵活性和易扩充性;
(3)本发明通过分析服务使用基本评价指标记录用户在一个测试任务中的表现,然后根据基本指标生成综合评价指标,并在上述指标的基础上生成用户的成绩报告。本发明使得成绩评估自动化,而且所用的评价指标比现有软件测试练习系统所采用的评价指标更加丰富。
(4)本发明中教师和学生可以使用Web浏览器访问实训系统,通过详细的系统操作手册和实时的系统提示,就可以掌握系统的用法。用户无需经过专门培训就可使用实训系统,因此该系统可用于学生课外练习。
附图说明
图1是本发明的系统架构框图。
图2是本发明关系型数据库中各基本表及其字段的关系图。
图3是本发明用户注册页面图。
图4是本发明用户登入页面图。
图5是本发明教师角色用户开设的课堂页面图。
图6是本发明教师角色用户为课堂选择训练所用的测试任务页面图。
图7是本发明教师角色用户审核选课申请页面图。
图8是本发明中所有学生角色用户的成绩展示页面图。
图9是本发明具体某个学生角色用户的成绩详单展示页面图。
图10是本发明学生用户查询选课结果的页面图。
图11是本发明执行服务流程图。
图12是本发明测试任务组成环节框图。
具体实施方式
下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。
实施例
本实施例公开了一种基于WEB的软件测试实训系统,本实施例的基于WEB的软件测试实训系统所用的开发模型是web应用程序框架SSH(Struts1.3+Spring3.0+Hibernate3.3),其中表现层框架Struts是系统的基础架构,负责模型(Model)、视图(View)和控制器(Controller)的分离;而Spring和Hibernate分别是业务逻辑层框架和数据持久层框架。
如图1所示,本实施例系统的架构自下而上分为数据层、业务逻辑层和表现层:
数据层包括关系型数据库MySQL,用于存放软件测试实训相关的数据。通过一个基于Java语言的对象关系映射框架,即Hibernate,进行所有的数据库操作;其中关系型数据库MySQL存放的软件测试实训相关的数据包括基本表及其字段,其中各基本表及其字段的关系如图2所示,本实施例中关系型数据库MySQL存放的基本表包括用户信息表、课堂表、课堂限定用户学号表、测试任务表、被选的测试任务表、选课表、完成任务表、测试用例表以及学生成绩评价指标表,上述基本表含义如表1至8中所示。
表1
字段 | 类型 | 含义 |
uid | int | 主键,用户表流水号 |
uname | char(20) | 用户名 |
usid | char(30) | 教工号/学号 |
upwd | char(100) | 密码(加密) |
umail | char(50) | 邮箱 |
utitle | char(6) | 职称 |
urole | enum('S','T','A') | 角色(学生/教师/管理员) |
ucollg | char(50) | 学校 |
umajor | char(50) | 专业 |
ubirth | date | 出生日期 |
usex | enum('M','F') | 性别 |
utime | datetime | 注册时间 |
uactive | boolean | 账号是否激活 |
表2
字段 | 类型 | 含义 |
cid | int | 主键,课堂表流水号 |
cname | char(25) | 课堂名 |
ctcher | int | 开课教师账号流水号,外键连接user.uid |
ctime | date | 开课时间 |
clast | date | 最后修改时间 |
cstate | enum('O','C') | 课堂状态(开放/关闭) |
ucstt | enum('A','J','R') | 选课申请审核(通过/待审核/拒绝) |
cpwd | char(100) | 选课密码(加密) |
cinfo | char(100) | 课堂简介 |
表3
字段 | 类型 | 含义 |
cuid | int | 主键,选课限定学号表流水号 |
cid | int | 课堂流水号,外键连接clazz.cid |
usid | char(20) | 学号 |
表4
字段 | 类型 | 含义 |
tid | int | 主键,测试任务表流水号 |
tname | char(25) | 测试任务名称 |
tdiff | char(6) | 测试任务难度 |
tbuild | char(20) | 建立者 |
tinfo | char(100) | 测试任务简介 |
tuseable | boolean | 测试任务是否可用 |
表5
字段 | 类型 | 含义 |
ctid | int | 主键,选任务表流水号 |
cid | int | 课堂流水号,外键连接clazz.cid |
tid | int | 测试任务流水号,外键连接task.tid |
cttm | date | 选任务时间 |
表6
字段 | 类型 | 含义 |
ucid | int | 主键,选课表流水号 |
uid | int | 用户流水号,外键连接user.uid |
cid | int | 课堂流水号,外键连接clazz.cid |
uctime | date | 选课时间 |
ucstt | enum('A','J','R') | 选课审核结果(通过/待审核/拒绝) |
表7
字段 | 类型 | 含义 |
uctid | int | 主键,完成任务表流水号 |
uid | int | 用户流水号,外键连接user.uid |
ctid | int | 选任务流水号,外键连接c_t.ctid |
beginTime | datetime | 进入测试任务时间 |
bbBeginTime | datetime | 黑盒测试环节开始时间 |
bbEndTime | datetime | 黑盒测试环节结束时间 |
wbBeginTime | datetime | 白盒测试环节开始时间 |
wbEndTime | datetime | 白盒测试环节结束时间 |
dbgBeginTime | datetime | 修复环节开始时间 |
dbgEndTime | datetime | 修复环节结束时间 |
bbTimeCost | bigint | 黑盒测试耗费时间 |
wbTimeCost | bigint | 白盒测试耗费时间 |
dbgTimeCost | bitint | 修复环节耗费时间 |
totalTimeCost | bigint | 总耗费时间 |
bbTcCount | int | 黑盒测试环节测试用例数 |
wbTcCount | int | 白盒测试环节测试用例数 |
dbgTcCount | int | 修复环节测试用例数 |
totalTcCount | int | 总测试用例数 |
bbBugCount | int | 黑盒测试环节发现缺陷数 |
wbBugCount | int | 白盒测试环节发现缺陷数 |
dbgBugCount | int | 修复环节发现缺陷数 |
totalBugCount | int | 总发现缺陷个数 |
linesCvr | float | 代码覆盖率 |
branchesCvr | float | 分支覆盖率 |
debugCount | int | 修复次数 |
fixedBugCount | int | 已修复缺陷数 |
token | bigint | 通行凭证 |
score | int | 小测验得分 |
ucttm | int | 完成任务次数 |
uctlvl | int | 已完成关卡数 |
uctfinished | boolean | 是否已完成测试任务 |
表8
字段 | 类型 | 含义 |
tcid | int | 主键,测试用例表流水号 |
uctid | int | 完成任务流水号,外键连接u_c_t.uctid |
tcin | char(50) | 用例输入 |
tcexpout | char(50) | 预期输出 |
tcactout | char(50) | 实际输出 |
tcrslt | char(100) | 测试结果 |
tcbugid | char(100) | 发现缺陷的编号 |
tctime | datetime | 测试时间 |
本实施例系统在业务逻辑层使用Spring框架,将业务逻辑封装成多个服务供上层调用,在本实施例中业务逻辑层包括:
用户服务模块,用于提供用户注册、用户登入和用户信息管理;其中用户服务模块注册的用户包括教师角色用户和学生角色用户,不同角色的用户包括不同的权限。用户服务模块提供用户注册页面、用户登入页面。其中用户注册页面如图3所示,用户登入页面如图4所示,用户的注册信息包括用户名、学号、密码、电子邮件、学校、专业、出生日期、性别等。用户在注册完成后,在用户的登入页面输入用户名和密码后登入。
课堂服务模块,用于提供教师角色用户开设课堂和管理选课学生角色用户以及为选课的学生角色用户提供课堂选择。其中开设的课堂如图5所示,包括课堂名称、课堂状态、选课申请审核状态、选课密码、课堂信息以及选课学生角色用户的学号范围。如图6所示,为教师角色用户为课堂选择训练所用的测试任务。如图7所示,为教师角色用户审核学生角色用户选课申请的审核页面,教师角色用户通过该页面对学生角色用户的选课权限进行管理,拒绝或接受学生角色用户的选课申请。
测试任务服务模块,用于为教师角色用户提供课堂中的测试任务以及查看完成该测试任务学生角色用户的成绩,并且每个测试任务中包含一个带有缺陷的被测程序。本实施例测试任务服务模块提供查看完成该测试任务学生角色用户的成绩的页面,通过如图8所示的页面查看所有学生角色用户的成绩,通过如图9所示的页面查看具体某个学生角色用户的成绩详单。本实施例中学生角色用户可以通过如图10所示页面查询选课结果,其中选课的结果包括:所在的课堂编号、课堂名称、课堂状态、开课教师、开课建立时间等。
执行服务模块:针对用户给出的每个测试用例,执行服务模块通过测试用例执行对应测试任务中的被测程序;针对用户所找到的每个被测程序缺陷,执行服务都提供多个缺陷改错选项供用户选择;针对用户所选择的每个缺陷改错选项,执行服务模块首先生成测试任务中带有缺陷的被测程序的副本,然后根据用户所选的缺陷改错选项修复带有缺陷的被测程序的副本,最后编译修复后的被测程序副本,并通过用户给出的测试用例执行修复后的被测程序副本。其中本实施例执行服务模块包括执行测试的子服务模块和执行修复的子服务模块:
执行测试的子服务模块,用于接收用户给出的测试用例,并且抽取测试用例的输入数据,针对对应测试任务中被测程序的.class文件进行插装,其中插装时所用的工具为Cobertura,然后在虚拟机上通过用户给出的测试用例执行插装后的被测程序.class文件,并且在执行时获取被测程序的语句覆盖信息。在本实施例中针对对应测试任务中被测程序的.class文件进行的插装包括以下两类插装:第一类插装在被测程序的每条可执行语句的字节码之前都插入探针以统计该语句被执行的次数;第二类插装在被测程序中的每个带有缺陷的语句之前都插入探针以判断该缺陷语句是否被执行,并在此缺陷语句被执行时输出其相应的缺陷编号;然后在虚拟机上通过用户给出的测试用例执行上述两类插装后的被测程序,以获取测试用例对被测程序的语句覆盖信息以及测试用例所发现的缺陷的编号;
执行修复的子服务模块,用于接收用户所选的被测程序缺陷改错选项,生成测试任务中带有缺陷的被测程序的副本,然后根据用户给出的被测程序缺陷改错选项修复带有缺陷的被测程序的副本,最后重新编译修复后的被测程序副本得到修复后的被测程序.class文件,使用Cobertura工具对此.class文件进行插装,并且执行测试的子服务模块通过用户给出的测试用例执行修复后的被测程序副本,并且在执行修复后的被测程序副本时获取语句覆盖信息。本步骤中对修复后的被测程序进行插装的过程如下:在修复后的被测程序的每条可执行语句的字节码之前都插入探针以统计该语句被执行的次数;通过用户给出的测试用例执行此修复插装后的被测程序,以获取测试用例对修复后被测程序的语句覆盖信息。
其中执行被测程序时获取语句覆盖信息过程如下:检测基本的代码并观察被执行的代码和未被执行的代码,根据已被执行代码的语句条数和未被执行代码的语句条数计算出被测程序的语句覆盖率;标记未被执行的代码,当执行插装后的被测程序时,语句覆盖信息被自动抽取并被写入相应的数据文件,使用Cobertura工具读取这些数据文件,获取到相应的语句覆盖信息,生成相应的覆盖信息报告,并在浏览器页面呈现此报告。
分析服务模块,对于被执行的测试用例,分析服务模块用于判断该测试用例是否正确,当测试用例正确时,进而判断通过此测试用例能否发现被测程序缺陷,若能,则分析服务模块定位所发现的缺陷在被测程序中的位置、同时提供缺陷修复方案;在被测程序的修复环节,分析服务模块用于将其提供的缺陷修复方案与用户给出的缺陷改错选项进行对比,从而判断用户是否已正确地选择缺陷改错选项来修复此缺陷;分析服务模块使用基本评价指标记录用户在一个测试任务中的表现,然后根据基本指标生成综合评价指标;
报告服务模块,用于抽取分析服务模块生成的基本评价指标和综合评价指标数据,并且生成相应的报告,然后传递给表现层渲染页面使用,并且报告被用户发现和被修复的被测程序中的缺陷;基本评价指标记录的用户在一个测试任务中的表现包括完成一个测试任务所用的测试用例总数,语句覆盖率、分支覆盖率、修复尝试次数、修复缺陷数和练习耗时。报告服务模块根据基本指标生成综合评价指标包括完成测试任务的用户理解能力、被测程序缺陷的查全率、查准率、修复能力和速度;根据上述基本评价指标和综合评价指标,对于一个课堂中完成测试任务的所有用户报告服务模块还生成完成这项测试任务用户的平均成绩和每个用户的成绩排名,从而生成用户的成绩报告,每份成绩报告如表9所示,包括基本评价指标、综合评价指标和横向对比,其中横向对比记录用户的平均成绩和每个用户的成绩排名。教师可以通过成绩报告直接观察学生的测试任务练习过程中的表现情况。
表9
表现层包括交互模块,在服务器端使用Struts进行页面渲染和跳转,在浏览器端DWR(DirectWebRemoting)实现浏览器与服务器的异步交互。另外,本实施例通过JavaScript/Ajax技术实现页面的局部刷新和异步交互;使用jQuery实现页面的动态效果;并使用一个基于jQuery的图表工具,即Highcharts,以图表的形式显示各种统计数据。
本实施例中服务端部署环境包括:
①操作系统:Linux(RedHat/Ubuntu/CentOS)或Windows(2000/XP/7/8)。
②运行环境:JDK1.5以上版本。
③数据库:MySQL5.5以上版本。
④Web容器:Tomcat6以上版本。
⑤开发包版本:Struts1.3、Spring3.0、Hibernate3.3、Cobertura2.0.0、DWR2.0、jQuery1.7.2、Highcharts2.2.4。
本实施例中用户使用的客户端运行环境包括:
①操作系统:Linux(RedHat/Ubuntu/CentOS)或Windows(2000/XP/7/8)。
②浏览器:Chrome17.0以上、InternetExplorer6以上、FireFox11以上。
本实施例还公开了一种基于WEB的软件测试实训方法,包括在数据层、业务逻辑层和表现层的实训步骤,其中,
数据层实训步骤:在数据层,通过关系型数据库MySQL存放软件测试实训相关的数据;本实施例中关系型数据库MySQL存放的基本表包括用户信息表、课堂表、课堂限定用户学号表、测试任务表、被选的测试任务表、选课表、完成任务表、测试用例表以及学生成绩评价指标表。如上表的表1至表9所示。
业务逻辑层实训步骤,
S1、用户服务:首先进行用户注册、用户登入和用户信息管理的用户服务;
S2、课堂服务:为相应用户开设课堂和管理选课用户以及为选课用户提供课堂选择;
S3、测试任务服务:为用户提供课堂中的相应测试任务以及查看完成该测试任务用户的成绩,并且每个测试任务中包含一个带有缺陷的被测程序;
S4、执行服务:针对用户给出的每个测试用例,通过测试用例执行对应测试任务中的被测程序,用户根据测试用例的执行发现被测程序中的缺陷,并给出被测程序缺陷改错选项;针对用户所找到的每个被测程序缺陷,执行服务都提供多个缺陷改错选项供用户选择;针对用户所选择的每个缺陷改错选项,执行服务模块首先生成测试任务中带有缺陷的被测程序的副本,然后根据用户所选的缺陷改错选项修复带有缺陷的被测程序的副本,最后重新编译修复后的被测程序副本,并通过用户给出的测试用例执行修复后的被测程序副本。
如图11所示,本步骤中执行服务包括执行测试的子服务步骤和执行修复的子服务步骤;其中,
执行测试的子服务步骤:接收用户给出的测试用例,并且抽取测试用例的输入数据;针对被测程序进行以下两类插装:第一类插装在被测程序的每条可执行语句的字节码之前都插入探针以统计该语句被执行的次数;另一类插装在被测程序中的每个带有缺陷的语句之前都插入探针以判断该缺陷语句是否被执行,并在此缺陷语句被执行时输出其相应的缺陷编号;然后在虚拟机上通过用户给出的测试用例执行上述两类插装后的被测程序,以获取测试用例对被测程序的语句覆盖信息以及测试用例所发现的缺陷的编号;执行测试的子服务不仅能执行用户所给出的测试用例,而且能跟踪和统计这些测试用例的逻辑覆盖效果和缺陷查找效果。
执行修复的子服务步骤:接收用户所选的被测程序缺陷改错选项,生成测试任务中带有缺陷的被测程序的副本,然后根据用户所选的被测程序缺陷改错选项修复带有缺陷的被测程序的副本,最后重新编译修复后的被测程序副本得到修复后的被测程序的字节码文件;针对此字节码文件进行插装,即在每条可执行语句的字节码之前都插入探针以统计该语句被执行的次数,通过用户给出的测试用例执行此修复插装后的被测程序,以获取测试用例对修复后被测程序的语句覆盖信息,生成覆盖信息报告,并在浏览器页面中呈现此报告。
本实施例中获取测试用例对被测程序的语句覆盖信息的过程如下:针对被测程序的字节码文件进行插装,即在被测程序的每条可执行语句的字节码之前都插入探针以统计该语句被执行的次数;然后在虚拟机上通过用户给出的测试用例执行插装后的被测程序,所有探针所记录的有关语句执行的统计信息被写入相应的数据文件;读取这些数据文件,根据已被执行代码和未被执行代码的语句条数计算出被测程序的语句覆盖率,并分别将已被完全执行、已被部分执行和未被执行的语句所对应的源码部分用不同的背景色高亮显示,以可视化地展现测试用例对应被测程序的覆盖情况。
S5、分析服务:对于执行服务中用户给出的测试用例,首先判断该测试用例是否正确,当测试用例正确时,进而判断通过此测试用例能否发现被测程序缺陷,若能,则分析服务模块定位所发现的缺陷在被测程序中的位置、同时提供缺陷修复方案;然后在被测程序的修复环节,将提供的缺陷修复方案与用户给出的缺陷改错选项进行对比,从而判断用户是否已正确地选择缺陷改错选项来修复被测程序中的缺陷;最后使用基本评价指标记录用户在一个测试任务中的表现,然后根据基本指标生成综合评价指标和总成绩;对于一个课堂中的所有完成测试任务的用户,分析服务还生成这些用户的平均成绩和每个用户的成绩排名。
S6、报告服务:抽取分析服务模块生成的基本评价指标和综合评价指标数据并且生成相应的报告,然后传递给表现层渲染页面使用;并且报告被用户发现和被修复的被测程序中的缺陷;
表现层实现步骤:在服务器端使用Struts进行页面渲染和跳转,在浏览器端DWR实现浏览器与服务器的异步交互。另外,本实施例通过JavaScript/Ajax技术实现页面的局部刷新和异步交互;使用jQuery实现页面的动态效果;并使用一个基于jQuery的图表工具,即Highcharts,以图表的形式显示各种统计数据。
本实施例步骤S5中分析服务步骤中,业务逻辑层在后台保存了测试任务中带有缺陷的被测程序所对应的正确程序,即带缺陷的被测程序版本BUG-PRO所对应的不带缺陷的被测程序版本COR-PRO;在数据层使用一个数据库表保存带有缺陷的被测程序中每个缺陷的信息,其中缺陷信息包括缺陷的编号,缺陷在被测程序中的位置和缺陷的对应修复方案。
根据步骤S4对带有缺陷的被测程序中的每个缺陷语句都进行了第二类的插装,当执行测试的子服务执行了某个缺陷语句时,获知此缺陷所对应的缺陷编号,进而获知当前测试用例所发现的具体缺陷;在所述步骤S5分析服务的被测程序修复环节,根据缺陷编号查询数据库表以找出此缺陷对应的修复方案,并将此修复方案与用户选出的缺陷改错选项进行对比,以判断用户是否正确地选择了缺陷改错选项来修复此缺陷。
步骤S5中分析服务步骤中,对于用户给出的测试用例,通过以下步骤分析测试用例是否正确:
S51、根据软件测试要求分析测试用例被执行后需要达到的预期输出;
S52、通过测试用例执行在后台所保存的对应有缺陷被测程序的正确程序,将执行后所得的输出作为正确输出;
S53、比较步骤S51中预期输出和步骤S52中的正确输出是否一致;
若是,则表示测试用例正确;
若否,则表示测试用例不正确;
步骤S5中分析服务步骤中,在测试用例正确情况下,通过以下步骤判断能否通过此测试用例发现被测程序缺陷:
S54、通过测试用例执行测试任务中带有缺陷的被测程序,所得到的执行结果作为实际输出;
S55、判断步骤S51中得到的预期输出和实际输出是否一致;
若否,则表示通过此测试用例能发现被测程序的缺陷;
若是,则表示通过此测试用例不能发现被测程序的缺陷。
在本实施例中,如图12所示,进入测试任务进行练习时,本实施例每个测试任务的练习包括以下六个环节:故事引入环节、基础知识闯关环节、黑盒测试闯关环节、白盒测试闯关环节、缺陷修复闯关环节和获得成绩报告环节。其中:
故事引入环节:系统以故事的形式介绍软件测试的基本知识,并强调在后续的实训环节中所涉及的测试知识点。
基础知识闯关环节。系统随机地给出十道选择题,以考察学生的软件测试基础知识;在学生解答后,系统进行自动评分。总的评分为100分,而学生只有在获得60以上的评分时,才能成功闯过此关。
黑盒测试闯关环节:给出被测程序的需求规格说明书,要求学生使用黑盒测试技术设计测试用例。接收学生输入的测试用例,在后台执行被测程序并将测试结果进行反馈。测试反馈包括测试用例的实际输出和测试结果,其中测试结果包括以下三种情况:PASS,表明测试用例通过,未能发现程序缺陷;FAIL,表明测试用例未通过,发现了程序缺陷;ERROR,表示测试用例本身的设计有误。此外,还使用各种图表为学生呈现其测试用例的分布情况,例如系统使用饼状图呈现其“测试用例的预期输出”在“被测程序的输出空间”中的分布情况。在此环节,学生所找到的缺陷数需要超过系统所设定的最小值、才能闯关成功。
白盒测试闯关环节:给出被测程序的源码,要求学生使用白盒测试技术设计测试用例。和上一环节相同,也接受测试用例的输入,并反馈测试结果。此外,系统在后台执行被测程序的同时,跟踪测试用例对程序的逻辑覆盖情况,并显示以下的逻辑覆盖信息:测试用例集的语句覆盖率、分支覆盖率、子条件覆盖率、以及每条语句的覆盖次数。在此环节,学生所找到的缺陷数也需超过系统所设定的最小值,否则无法成功闯关。
缺陷修复闯关环节:要求学生尝试修复在以上环节和本环节中所发现的程序缺陷。自动定位每个缺陷在代码中的位置,并给出修复缺陷的若干选项。在学生修复缺陷后,系统在后台立即执行回归测试:即“使用学生原有的测试用例”运行修复后的被测程序,并将新的测试结果进行反馈。在此环节,学生所修复的缺陷数必须超过所设定的最小值,否则无法成功闯关。
获得成绩报告环节:自动对学生在本测试任务中的表现进行分析,并生成包括各项评价指标数据的详细报告。将此报告自动地发给学生,因此学生不仅能获知最终成绩,而且能及时地了解自己在各个环节的表现情况。并且允许学生再次进入本程序测试,重复练习,同时记录学生在各次练习中的表现。
通过上述六个环节,本实施例融入了游戏的元素,能在游戏剧情中展开每个被测程序测试的练习;学生以游戏闯关的形式完成从程序查找缺陷到修复缺陷的整个过程,期间还可参与班级的程序缺陷查找竞赛。
上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。
Claims (10)
1.一种基于WEB的软件测试实训系统,所述系统的架构自下而上分为数据层、业务逻辑层和表现层,其特征在于,所述数据层包括关系型数据库,用于存放软件测试实训相关的数据;
所述业务逻辑层包括:
用户服务模块,用于提供用户注册、用户登入和用户信息管理;
课堂服务模块,用于提供相应用户开设课堂和管理选课用户以及为选课用户提供课堂选择;
测试任务服务模块,用于提供课堂中的测试任务以及查看完成该测试任务用户的成绩,并且每个测试任务中包含一个带有缺陷的被测程序;
执行服务模块:针对用户给出的每个测试用例,执行服务模块通过测试用例执行对应测试任务中的被测程序;针对用户所找到的每个被测程序缺陷,执行服务都提供多个缺陷改错选项供用户选择;针对用户所选择的每个缺陷改错选项,执行服务模块首先生成测试任务中带有缺陷的被测程序的副本,然后根据用户所选的缺陷改错选项修复带有缺陷的被测程序的副本,最后编译修复后的被测程序副本,并通过用户给出的测试用例执行修复后的被测程序副本;
分析服务模块,对于被执行的测试用例,分析服务模块用于判断该测试用例是否正确,当测试用例正确时,进而判断通过此测试用例能否发现被测程序的缺陷,若能,则分析服务模块定位所发现的缺陷在被测程序中的位置、同时提供缺陷修复方案;在被测程序的修复环节,分析服务模块用于将其提供的缺陷修复方案与用户给出的缺陷改错选项进行对比,从而判断用户该是否已正确地选择缺陷改错选项来修复此缺陷;分析服务模块使用基本评价指标记录用户在一个测试任务中的表现,然后根据基本指标生成综合评价指标;
以及报告服务模块,用于抽取分析服务模块所生成的基本评价指标和综合评价指标数据,并且生成相应的报告,然后传递给表现层渲染页面使用;
所述表现层包括交互模块,用于在服务器端进行页面渲染和跳转,在浏览器端实现浏览器与服务器的异步交互。
2.根据权利要求1所述的基于WEB的软件测试实训系统,其特征在于,所述关系型数据库中存放的软件测试实训相关的数据包括基本表及其字段,其中基本表包括用户信息表、课堂表、课堂限定用户学号表、测试任务表、被选的测试任务表、选课表、完成任务表和测试用例表;所述用户服务模块注册的用户包括教师角色用户和学生角色用户;所述课堂服务模块提供教师角色用户开设课堂和管理选课学生角色用户以及为选课的学生角色用户提供课堂选择;所述测试任务服务模块为教师角色用户提供在课堂中选择加入测试任务。
3.根据权利要求1所述的基于WEB的软件测试实训系统,其特征在于,执行服务模块包括执行测试的子服务模块和执行修复的子服务模块;
执行测试的子服务模块,用于接收用户给出的测试用例,并且抽取测试用例的输入数据,针对对应测试任务中被测程序的.class文件进行插装,然后在虚拟机上通过用户给出的测试用例执行插装后的被测程序,并且在执行时获取被测程序的语句覆盖信息;
执行修复的子服务模块,用于接收用户所选的被测程序缺陷改错选项,生成测试任务中带有缺陷的被测程序的副本,然后根据用户给出的被测程序缺陷改错选项修复带有缺陷的被测程序的副本,最后重新编译修复后的被测程序副本得到修复后被测程序的.class文件,对此.class文件进行插装,并且执行测试的子服务模块通过用户给出的测试用例执行修复后的被测程序副本,在执行时获取修复后的被测程序语句覆盖信息。
4.根据权利要求3所述的基于WEB的软件测试实训系统,其特征在于,所述执行测试子服务模块中,针对对应测试任务中被测程序的.class文件进行的插装包括以下两类插装:第一类插装在被测程序的每条可执行语句的字节码之前都插入探针以统计该语句被执行的次数;第二类插装在被测程序中的每个带有缺陷的语句之前都插入探针以判断该缺陷语句是否被执行,并在此缺陷语句被执行时输出其相应的缺陷编号;通过用户给出的测试用例执行上述两类插装后的被测程序,获取到测试用例对被测程序的语句覆盖信息以及测试用例所发现的缺陷的编号;
执行修复的子服务模块中,针对修复后被测程序的.class文件进行插装的过程如下:在修复后的被测程序的每条可执行语句的字节码之前都插入探针以统计该语句被执行的次数;通过用户给出的测试用例执行此修复插装后的被测程序,获取到测试用例对修复后被测程序的语句覆盖信息。
5.根据权利要求3所述的基于WEB的软件测试实训系统,其特征在于,所述分析服务模块使用基本评价指标记录的用户在一个测试任务中的表现包括完成一个测试任务所用的测试用例总数,语句覆盖率、分支覆盖率、修复尝试次数、修复缺陷数和耗时;根据基本指标生成综合评价指标包括被测程序缺陷的查全率、查准率、修复能力和速度;对于一个课堂中完成测试任务的所有用户分析服务模块还生成完成这项测试任务的用户平均成绩和每个用户的成绩排名。
6.一种基于WEB的软件测试实训方法,包括在数据层、业务逻辑层和表现层的实训步骤,其特征在于,
数据层实训步骤:在数据层,通过关系型数据库存放软件测试实训相关的数据;
业务逻辑层实训步骤,
S1、用户服务:首先进行用户注册、用户登入和用户信息管理的用户服务;
S2、课堂服务:为相应用户开设课堂和管理选课用户以及为选课用户提供课堂选择;
S3、测试任务服务:为用户提供课堂中的相应测试任务以及查看完成该测试任务用户的成绩,并且每个测试任务中包含一个带有缺陷的被测程序;
S4、执行服务:针对用户给出的每个测试用例,通过测试用例执行对应测试任务中的被测程序;针对用户所找到的每个被测程序缺陷,执行服务都提供多个缺陷改错选项供用户选择;针对用户所选择的每个缺陷改错选项,执行服务模块首先生成测试任务中带有缺陷的被测程序的副本,然后根据用户所选的缺陷改错选项修复带有缺陷的被测程序的副本,最后重新编译修复后的被测程序副本,并通过用户给出的测试用例执行修复后的被测程序副本;
S5、分析服务:对于执行服务中用户给出的测试用例,首先判断该测试用例是否正确,当测试用例正确时,进而判断通过此测试用例能否发现被测程序缺陷,若能,则分析服务模块定位所发现的缺陷在被测程序中的位置、同时提供缺陷修复方案;然后在被测程序的修复环节,将提供的缺陷修复方案与用户给出的缺陷改错选项进行对比,从而判断用户该是否已正确地选择缺陷改错选项来修复被测程序中的缺陷;最后使用基本评价指标记录用户在一个测试任务中的表现,然后根据基本指标生成综合评价指标和总成绩;
S6、报告服务:抽取分析服务模块生成的基本评价指标和综合评价指标数据并且生成相应的报告,然后传递给表现层渲染页面使用;
表现层实训步骤:在服务器端进行页面渲染和跳转,在浏览器端实现浏览器与服务器的异步交互。
7.根据权利要求6所述的基于WEB的软件测试实训方法,其特征在于,所述业务逻辑层实训步骤中,步骤S4执行服务包括执行测试的子服务步骤和执行修复的子服务步骤;其中,
执行测试的子服务步骤:接收用户给出的测试用例,并且抽取测试用例的输入数据;针对被测程序进行以下两类插装:第一类插装在被测程序的每条可执行语句的字节码之前都插入探针以统计该语句被执行的次数;第二类插装在被测程序中的每个带有缺陷的语句之前都插入探针以判断该缺陷语句是否被执行,并在此缺陷语句被执行时输出其相应的缺陷编号;然后在虚拟机上通过用户给出的测试用例执行上述两类插装后的被测程序,以获取测试用例对被测程序的语句覆盖信息以及测试用例所发现的缺陷的编号;
执行修复的子服务步骤:接收用户所选的被测程序缺陷改错选项,生成测试任务中带有缺陷的被测程序的副本,然后根据用户所选的被测程序缺陷改错选项修复带有缺陷的被测程序的副本,最后重新编译修复后的被测程序副本得到修复后的被测程序的字节码文件;针对此字节码文件进行插装,即在每条可执行语句的字节码之前都插入探针以统计该语句被执行的次数,通过用户给出的测试用例执行此修复插装后的被测程序,以获取测试用例对修复后被测程序的语句覆盖信息。
8.根据权利要求7所述的基于WEB的软件测试实训方法,其特征在于,获取测试用例对被测程序的语句覆盖信息的过程如下:针对被测程序的字节码文件进行插装,即在被测程序的每条可执行语句的字节码之前都插入探针以统计该语句被执行的次数;然后在虚拟机上通过用户给出的测试用例执行插装后的被测程序,所有探针所记录的有关语句执行的统计信息被写入相应的数据文件;读取这些数据文件,根据已被执行代码和未被执行代码的语句条数计算出被测程序的语句覆盖率,并分别将已被完全执行、已被部分执行和未被执行的语句所对应的源码部分用不同的背景色高亮显示,以可视化地展现测试用例对被测程序的覆盖情况。
9.根据权利要求7所述的基于WEB的软件测试实训方法,其特征在于,所述步骤S5中分析服务步骤中,业务逻辑层在后台保存了测试任务中带有缺陷的被测程序所对应的正确程序,即不带缺陷的被测程序版本;在数据层使用一个数据库表保存带有缺陷的被测程序中每个缺陷的信息,其中缺陷信息包括缺陷的编号、缺陷在被测程序中的位置和缺陷的对应修复方案;
根据步骤S4对带有缺陷的被测程序中的每个缺陷语句都进行了第二类的插装,当执行测试的子服务执行了某个缺陷语句时,获知此缺陷所对应的缺陷编号,进而获知当前测试用例所发现的具体缺陷;在所述步骤S5分析服务的被测程序修复环节,根据缺陷编号查询数据库表以找出此缺陷对应的修复方案,并将此修复方案与用户选出的缺陷改错选项进行对比,以判断用户是否正确地选择了缺陷改错选项来修复此缺陷。
10.根据权利要求9所述的基于WEB的软件测试实训方法,其特征在于,
步骤S5中分析服务步骤中,对于用户给出的测试用例,通过以下步骤分析测试用例是否正确:
S51、根据软件测试要求分析测试用例被执行后需要达到的预期输出;
S52、通过测试用例执行在后台所保存的对应有缺陷被测程序的正确程序,将执行后所得的输出作为正确输出;
S53、比较步骤S51中预期输出和步骤S52中的正确输出是否一致;
若是,则表示测试用例正确;
若否,则表示测试用例不正确;
步骤S5中分析服务步骤中,在测试用例正确情况下,通过以下步骤判断能否通过此测试用例发现被测程序缺陷:
S54、通过测试用例执行测试任务中带有缺陷的被测程序,所得到的执行结果作为实际输出;
S55、判断步骤S51中得到的预期输出和实际输出是否一致;
若否,则表示通过此测试用例能发现被测程序的缺陷;
若是,则表示通过此测试用例不能发现被测程序的缺陷。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510528481.8A CN105095085B (zh) | 2015-08-25 | 2015-08-25 | 一种基于web的软件测试实训系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510528481.8A CN105095085B (zh) | 2015-08-25 | 2015-08-25 | 一种基于web的软件测试实训系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105095085A true CN105095085A (zh) | 2015-11-25 |
CN105095085B CN105095085B (zh) | 2018-01-19 |
Family
ID=54575580
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510528481.8A Active CN105095085B (zh) | 2015-08-25 | 2015-08-25 | 一种基于web的软件测试实训系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105095085B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105610942A (zh) * | 2015-12-31 | 2016-05-25 | 广东诚伯信息有限公司 | 一种基于pc前端的学习系统及学习方法 |
CN106844334A (zh) * | 2016-12-20 | 2017-06-13 | 网易(杭州)网络有限公司 | 用于评测会话机器人智能的方法及设备 |
CN109947648A (zh) * | 2019-03-19 | 2019-06-28 | 贺莉娟 | 针对web系统需求规格的纵横结合测试方法 |
CN110442517A (zh) * | 2019-07-18 | 2019-11-12 | 暨南大学 | 一种自动程序修复中获取安全补丁的方法 |
CN111566625A (zh) * | 2018-01-17 | 2020-08-21 | 三菱电机株式会社 | 测试用例生成装置、测试用例生成方法和测试用例生成程序 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1949264A (zh) * | 2005-10-14 | 2007-04-18 | 南京永创计算机技术培训中心 | 永创ysed 与yned IT人才培养模式 |
CN101567133A (zh) * | 2009-04-07 | 2009-10-28 | 深圳市易思博信息技术有限公司 | 一种基于互联网的分布式软件项目实训系统及实训方法 |
CN101944203A (zh) * | 2010-09-03 | 2011-01-12 | 北京航空航天大学 | 个体软件过程实训方法及其实训系统 |
CN102231111A (zh) * | 2011-07-25 | 2011-11-02 | 杨海 | 一种基于浏览器实现编程的方法 |
CN103023732A (zh) * | 2012-11-30 | 2013-04-03 | 蓝盾信息安全技术股份有限公司 | 一种信息安全实验室装置 |
US20140248593A1 (en) * | 2007-01-30 | 2014-09-04 | Breakthrough Performancetech, Llc | Systems and methods for computerized interactive skill training |
-
2015
- 2015-08-25 CN CN201510528481.8A patent/CN105095085B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1949264A (zh) * | 2005-10-14 | 2007-04-18 | 南京永创计算机技术培训中心 | 永创ysed 与yned IT人才培养模式 |
US20140248593A1 (en) * | 2007-01-30 | 2014-09-04 | Breakthrough Performancetech, Llc | Systems and methods for computerized interactive skill training |
CN101567133A (zh) * | 2009-04-07 | 2009-10-28 | 深圳市易思博信息技术有限公司 | 一种基于互联网的分布式软件项目实训系统及实训方法 |
CN101944203A (zh) * | 2010-09-03 | 2011-01-12 | 北京航空航天大学 | 个体软件过程实训方法及其实训系统 |
CN102231111A (zh) * | 2011-07-25 | 2011-11-02 | 杨海 | 一种基于浏览器实现编程的方法 |
CN103023732A (zh) * | 2012-11-30 | 2013-04-03 | 蓝盾信息安全技术股份有限公司 | 一种信息安全实验室装置 |
Non-Patent Citations (3)
Title |
---|
张战成等: "结合缺陷预防的软件测试教学改革探索", 《无锡职业技术学院学报》 * |
李莹: "软件测试实训实施之我见", 《福建电脑》 * |
黄志成: "基于Web的程序设计自动化实训系统设计与开发", 《电脑开发与应用》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105610942A (zh) * | 2015-12-31 | 2016-05-25 | 广东诚伯信息有限公司 | 一种基于pc前端的学习系统及学习方法 |
CN106844334A (zh) * | 2016-12-20 | 2017-06-13 | 网易(杭州)网络有限公司 | 用于评测会话机器人智能的方法及设备 |
CN106844334B (zh) * | 2016-12-20 | 2022-07-15 | 网易(杭州)网络有限公司 | 用于评测会话机器人智能的方法及设备 |
CN111566625A (zh) * | 2018-01-17 | 2020-08-21 | 三菱电机株式会社 | 测试用例生成装置、测试用例生成方法和测试用例生成程序 |
CN111566625B (zh) * | 2018-01-17 | 2024-01-09 | 三菱电机株式会社 | 测试用例生成装置、测试用例生成方法和计算机能读取的记录介质 |
CN109947648A (zh) * | 2019-03-19 | 2019-06-28 | 贺莉娟 | 针对web系统需求规格的纵横结合测试方法 |
CN109947648B (zh) * | 2019-03-19 | 2022-04-29 | 贺莉娟 | 针对web系统需求规格的纵横结合测试方法 |
CN110442517A (zh) * | 2019-07-18 | 2019-11-12 | 暨南大学 | 一种自动程序修复中获取安全补丁的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105095085B (zh) | 2018-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Ghrayeb et al. | Art of triangulation: an effective assessment validation strategy | |
CN105095085B (zh) | 一种基于web的软件测试实训系统及方法 | |
Mazumder | Applying six sigma in higher education quality improvement | |
Sripada et al. | In support of peer code review and inspection in an undergraduate software engineering course | |
Verleger et al. | Challenges to informed peer review matching algorithms | |
Lam et al. | Analysis of the effectiveness of instructional strategies for construction management students | |
Yunanto et al. | Tracer study information system for higher education | |
Brouwer et al. | Entrepreneurial mindset development in a senior design/capstone course | |
Damaj et al. | Simple and accurate student outcomes assessment: A unified approach using senior computer engineering design experiences | |
Barrett et al. | On the Current State of Academic Software Testing Education in Sweden | |
US20090275009A1 (en) | System and method for school progress reporting | |
Koral-Kordova et al. | Improving capacity for engineering systems thinking (CEST) among industrial engineering students | |
Tunga et al. | The use of pair programming in education: A systematic literature review | |
Banerjee et al. | Designing item banks in alignment with course outcomes for engineering courses | |
Pérez-Castillo et al. | A teaching experience on software reengineering | |
Rusirawan et al. | Development of joint curriculum as a first step to establish joint/double degree: Lesson learned from the partnership ITENAS and MATE | |
Standridge et al. | Introducing simulation across the disciplines | |
Flowers | Improving the capstone project experience: A case study in software engineering | |
Malik et al. | Learning Barriers In Service Courses A Mixed Methods Study | |
Goncher et al. | A Pilot Study Assessing Student’s Problem and Information Identification Skills in an Introductory Engineering Design Course | |
Dinh et al. | First year experience of CDIO adoption into an information technology program | |
Sabatini et al. | The Influence of Work Motivation and Leadership on the Performance of Guru Penggerak in Deli Serdang Regency | |
Esposito et al. | Building Energy Modeling in Airport Architecture Design | |
Purwoko et al. | Counselor Performance Test Instrument: Validity, Reliability, and Implications for Group Guidance Services | |
McFarlane et al. | Development of simulation games to improve the practice of program management |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |