基于黑箱的自动软件测试工具的质量保障方法_王铁江
塔河流域空间数据库及其管理系统设计

生态环境数据
社经水资源
元数据
社经水资源数据
实Hale Waihona Puke 传输实时传输元数据
水利工程数据
水利工程
导入添加
导入添加
导入添加
导入添加
导入添加
导入添加
数据校验检查
数据校验检查
防火墙
防火墙
水文数 据库
社经/水资源库
水利工程库
生态环境库
多媒体数据库
遥感影像库
图形数据库
元数据据库
基础数据 库
*
四、总体技术方案与功能设计
《测绘基本术语》 GB/T14911-94 《国家基本比例尺地形图分幅和编号》 GB/T13989-92 《专题地图信息分类与代码》 GB/T18317-2001 《基础地理信息数字产品元数据》 CH/T1007-2001 《1∶5千 1∶1万地形图图式》 GB/T5791-93 《1∶2.5万 1∶5万 1∶10万地形图图式》 GB12342-90 《遥感影像平面图制作规范》 GB15968-1995 《地球空间数据交换格式》 GB/T17798-1999 《中华人民共和国行政区划代码》 GB/T2260-1995 《县以下行政区划代码编制规则》 GB10114-88 《中国湖泊名称代码》 SL261-98 《中国河流名称代码》 SL249-1999 《中国水库名称代码》 SL259-2000 《中国水闸名称代码》 SL262-2000 《地下水监测规范》 SL/T 183-96
基础数据库
主题数据库
成果数据库
*
水文日汇总表 水位、水文站点基本信息表 降水量、水面蒸发量站点基本信息表 水文站点实时观测信息表 测流量成果信息表 实测输沙率信息表
白盒测试和黑盒测试实验报告

软件质量保证与测试实验指导计算机工程学院测试环境配置1.setting Junit(1) start EclipseSelect windows-preferences-java-build path –class path variables(2) click new, the figure of new variable entry is shown.(3) name JUNIT_LIBselect file-选择JUnit 插件所对应的JAR文件所在地,在Eclipse的安装目录的plugins目录中2.JUNIT的组成框架其中,junit.framework 和junit.runner是两个核心包。
junit.framework 负责整个测试对象的框架junit.runner 负责测试驱动Junit的框架又可分为:A、被测试的对象。
B、对测试目标进行测试的方法与过程集合,可称为测试用例(TestCase)。
C、测试用例的集合,可容纳多个测试用例(TestCase),将其称作测试包(TestSuite)。
D、测试结果的描述与记录。
(TestResult) 。
E、每一个测试方法所发生的与预期不一致状况的描述,称其测试失败元素(TestFailure)F、JUnit Framework中的出错异常(AssertionFailedError)。
JUnit框架是一个典型的Composite模式:TestSuite可以容纳任何派生自Test 的对象;当调用TestSuite对象的run()方法是,会遍历自己容纳的对象,逐个调用它们的run()方法。
3.JUnit中常用的接口和类Test接口——运行测试和收集测试结果Test接口使用了Composite设计模式,是单独测试用例(TestCase),聚合测试模式(TestSuite)及测试扩展(TestDecorator)的共同接口。
它的public int countTestCases()方法,它来统计这次测试有多少个TestCase,另外一个方法就是public void run(TestResult ),TestResult是实例接受测试结果,run方法执行本次测试。
黑箱方法--又称“黑箱系统辨识法”

⿊箱⽅法--⼜称“⿊箱系统辨识法”⿊箱⽅法标签: 暂⽆标签顶[0] 分享到发表评论(0) 编辑词条⿊箱⽅法,⼜称“⿊箱系统辨识法”,是通过考察系统的输⼊、输出及其动态过程,来定量或定性地认识系统的功能特性、⾏为⽅式,以及探索其内部结构和机理的⼀种控制论认识⽅法。
⿊箱⽅法注重整体和功能,兼有抽象⽅法和模型⽅法的特征。
⿊箱⽅法 - 简介⿊箱⽰意图⿊箱亦称“⿊盒”、“⿊匣”、“闭盒”。
它是控制论中的⼀个概念,指内部构造还不清楚,由于条件的限制,只能通过外部观测和试验去认识其功能和特性的系统。
例如⼈的⼤脑、地球、密封的仪器等,都可以看作是⿊箱。
⼈们把外部对⿊箱的影响称为⿊箱的输⼊,把⿊箱对外部的反应称为⿊箱的输出。
研究⿊箱主要有两种⽅法:第⼀种⽅法就是通过⼀定的⼿段进⼊研究对象的内部,直接观察其内部结构,直接控制它的内部运动。
⿊箱⽅法通常指第⼆种⽅法,也称“⿊箱系统辨认法”,就是通过对事物系统外部进⾏观测试验来找出输⼊和输出关系,并由此来研究事物的整体功能和特性或探索其内部结构和机理的⼀种特殊⽅法。
这个⽅法在运⽤过程中通常采⽤两个主要的⼿段:输⼊和输出。
⼈们把从外部对⿊箱进⾏影响称为⿊箱的输⼊,把⿊箱对外部输⼊的反应称为⿊箱的输出。
[1]⿊箱⽅法 - 历史⿊箱⽅法可以说古已有之,例如中国的中医看病,通常是通过“望、闻、问、切”等外部观测来诊断病情,并不进⾏开⼑解剖,这就是典型的⿊箱⽅法。
作为⼀种现代的科学⽅法,是从20世纪50年代开始的。
1956年,艾什⽐在他所写的《控制论等论》中对⿊箱⽅法作了⽐较系统的阐述。
⾸先他明确了什么是⿊箱问题。
他认为;“⿊箱问题是在电机⼯程中出现的。
给电机师⼀个密封箱,上⾯有些输⼊接头、可以随意通上多少电压、电击或任何别的⼲扰;此外有些输出接头,可以借此作他所能作的观察。
”艾什⽐进⼀步指出,“⿊箱问题在各门科学中都是普遍存在的。
在神经⽣理学中,⼈们通过观察对动物的刺激和反应来推断其内部神经结构;在⽇常⽣活中⿊箱也普遍的存在。
黑箱法文档

黑箱法1. 简介黑箱法是一种在软件开发中常用的测试方法,也称为黑盒测试或功能测试。
它是一种针对软件系统进行测试的方法,通过只观察输入和输出,而忽略内部处理过程,来评估系统的正确性和可靠性。
黑箱法主要关注系统对于特定输入的预期输出是否符合要求,而不关注系统内部如何实现这个功能。
2. 测试原则在进行黑箱法测试时,有以下几个原则需要遵守:2.1 等价类划分等价类划分是黑箱法测试中最常用的方法之一。
它将输入数据划分为若干个等价类,只要选择一个代表性的输入数据来进行测试,就可以覆盖整个等价类。
这样可以减少测试的工作量,提高测试效率。
等价类划分的原则有:•有效等价类:包含有效输入数据的等价类,即有效输入数据应该被系统接受。
•无效等价类:包含无效输入数据的等价类,即无效输入数据应该被系统拒绝。
•边界等价类:在有效和无效等价类中,寻找边界测试点来测试系统对边界条件的处理。
2.2 边界值分析边界值分析是黑箱法测试中另一个重要的测试方法。
它通过选择接近边界值的测试数据来进行测试,以检测系统对边界条件的处理是否正确。
边界值分析的原则有:•对输入的上下边界值进行测试,包括等于边界值和不等于边界值的情况。
•对输出的上下边界值进行测试,验证系统是否正确处理边界条件。
2.3 错误推测错误推测是黑箱法测试中的一种思维方法,即基于对系统的错误行为的推断来设计测试用例。
通过假设系统可能出现的错误行为,设计相应的测试用例进行测试,以验证系统是否能正确处理错误情况。
2.4 接口测试接口测试是黑箱法测试中的一种重要方法。
在系统开发过程中,不同模块之间通过接口进行数据传递和交互。
因此,需要对系统的接口进行测试,以验证接口的正确性和稳定性。
3. 测试步骤进行黑箱法测试时,可以按照以下步骤进行:3.1 确定测试需求在进行黑箱法测试之前,首先需要明确系统的功能需求和测试目标。
根据功能需求,确定要测试的功能模块和相应的测试用例。
3.2 设计测试用例根据等价类划分和边界值分析的原则,设计相应的测试用例。
基于软件黑匣子的集成软件故障诊断模型

先 , 目标 软 件 发 布用 户使 用前 , 析 诊 断 人 员 对 其 源代 码 在 分
进 行 分 析 、 源 代 码 中 植 入 嵌 入 式 软 件 黑 匣 子 ( m edd 在 E bde
adC r cv co yt S R C S [ 和 IE n o eteA tnSsm, F A A ) 1 E E的 软 件 异 ri i e 2 常分 类 标 准 在 集 成 模 型 中 引 入 了软 件 故 障 管 理 模 型【I 34 . J 并且 , 根据 I D —S B采 用 以 体 系 结 构 为 中心 的 软 件 开 S M F B 发方 法 , 用 VsaC+ 60开 发 了 “SD —S B ” 利 il u + . IF S B ) .
火力 控 制 系 统 等 系 统 . 着 众 多 装 备 的 软 件 密 集 化 , 件 随 软 故 障 ( 效 ) 装 备 的影 响 也 越 来 越 严 重 . 些 软 件 大 多 功 失 对 这 能复 杂、 时性 强 , 实 目前 主 要 依 靠 个 人 经 验 进 行 调 试 ( 诊
断 ) 缺乏 通 用 的诊 断 方 法 与 工 具 . , 软件 故 障 诊 断 已经 逐 渐
随着 信 息 技 术 的发 展 , 现在 大 量 的软 件 密 集 系 统 ( f o — St
w r It s eS s m, I) 始 装 备 部 队 , 指 挥 控 制 系 统 、 a e i yt S 开 ቤተ መጻሕፍቲ ባይዱ n nv e S 如
1 1 IF . S DM—S B用例 视 图 B
首先 , 者 定 义 了 如 下几 个 参 与者 ( c r: 笔 A t ) o 1 )目标 软 件 : 行 于 软 件 密 集 系 统 (i) 的 、 分 析 运 ss 中 待 ( 诊断) 或 的软 件 ;
一种测试系统自动测试软件的配置方法[发明专利]
![一种测试系统自动测试软件的配置方法[发明专利]](https://img.taocdn.com/s3/m/72731b8ef5335a8103d22041.png)
专利名称:一种测试系统自动测试软件的配置方法专利类型:发明专利
发明人:王道金,石海英
申请号:CN202010446177.X
申请日:20200525
公开号:CN111723005A
公开日:
20200929
专利内容由知识产权出版社提供
摘要:本发明公开了一种测试系统自动测试软件的配置方法,包括以下步骤:S1:将自动测试配置数据存储在配置文件中,将配置文件保存在预设存储区,自动测试配置数据包括按照预设顺序排列的测试步骤、每个测试步骤的设置参数以及每个测试步骤的测试时间;S2:启动自动测试软件时,从预设存储区读取配置文件,加载配置文件中的自动测试配置数据;S3:运行自动测试软件时,按照每个测试步骤的顺序自动根据每个测试步骤的设置参数设置对应的测试设备并持续测试时间。
其中,将每个测试步骤的测试结果以不同的命名分别进行存储;如果自动测试配置数据包含循环测试值,则间隔预定时间循环测试。
本发明能够提高软件的通用性,减少软件的二次开发成本。
申请人:四川九洲电器集团有限责任公司
地址:621000 四川省绵阳市科创园区九华路6号
国籍:CN
代理机构:成都九鼎天元知识产权代理有限公司
代理人:胡川
更多信息请下载全文后查看。
基于深度学习的自动化软件测试与质量评估

基于深度学习的自动化软件测试与质量评估自动化软件测试是现代软件开发中至关重要的一环。
传统的软件测试方法需要大量人力和时间投入,而且容易出现遗漏和错误。
随着深度学习技术的发展,基于深度学习的自动化软件测试与质量评估成为了一种新的解决方案。
本文将探讨这种方法的原理、应用和优势。
深度学习是一种机器学习算法,它可以通过大量数据和计算来训练出具有高度抽象能力的模型。
然后,这些模型可以用来解决各种领域的问题,包括图像识别、语音识别和自然语言处理等。
在自动化软件测试中,深度学习可以用来构建模型,从而能够自动化地检测和评估软件质量。
深度学习的自动化软件测试方法通常包括以下几个步骤:首先,需要准备大量的软件测试数据集。
这些数据集可以包括软件的输入、输出和预期结果等信息。
然后,使用深度学习模型对这些数据进行训练,从而能够识别和预测软件的异常行为和错误。
接下来,将训练好的深度学习模型应用到实际的软件测试中,通过输入软件的各种输入数据,评估软件的质量。
最后,根据评估结果,提供相应的反馈和建议来帮助软件开发人员改进软件的质量。
基于深度学习的自动化软件测试与质量评估方法有许多优势。
首先,它可以极大地节省测试人力和时间。
传统的软件测试方法需要大量的人力来编写测试用例和执行测试,而基于深度学习的方法可以自动化地生成测试用例,从而节省了大量的时间和人力。
其次,它可以提高软件测试的覆盖率和效果。
深度学习模型可以通过大量的数据训练和学习,从而能够检测和预测各种不同类型的软件错误,提高软件测试的覆盖率和效果。
此外,基于深度学习的方法还可以发现传统软件测试方法无法发现的隐性错误和异常行为,从而进一步提高软件的质量。
然而,基于深度学习的自动化软件测试与质量评估方法也存在一些挑战和限制。
首先,深度学习模型的训练需要大量的数据和计算资源。
这对于一些小规模的软件开发团队来说可能是一个挑战。
其次,深度学习模型的性能和准确性受到训练数据的质量和规模的影响。
《2024年自动化软件测试技术研究》范文

《自动化软件测试技术研究》篇一一、引言随着信息技术的高速发展,软件系统日益复杂,对软件的质量和效率要求也越来越高。
在这样的背景下,自动化软件测试技术逐渐成为了软件工程领域的研究热点。
自动化软件测试技术不仅可以提高软件测试的效率和准确性,还可以降低人力成本,提高软件质量。
本文将对自动化软件测试技术进行深入研究,探讨其原理、方法及应用。
二、自动化软件测试技术概述自动化软件测试是指通过自动化测试工具或脚本,模拟用户操作,对软件系统进行测试的一种方法。
与传统的手动测试相比,自动化测试具有以下优点:1. 提高测试效率:自动化测试可以快速、准确地执行大量测试用例,减少人力成本。
2. 保证测试质量:自动化测试可以减少人为因素导致的错误,提高测试的准确性和可靠性。
3. 易于回归测试:对于经常需要修改的代码,自动化测试可以快速地进行回归测试,确保修改后的代码不会引入新的问题。
三、自动化软件测试技术原理及方法自动化软件测试技术主要基于测试用例和测试脚本。
其原理是通过模拟用户操作,对软件系统进行输入、执行和验证,从而发现软件中的缺陷。
常用的自动化软件测试方法包括:1. 单元测试:针对软件中的最小可测试单元进行测试,如函数、类等。
常用的单元测试框架包括JUnit、TestNG等。
2. 集成测试:将多个单元组合在一起进行测试,验证各个单元之间的接口是否正确。
3. 性能测试:通过模拟多用户并发访问,对软件的性能进行测试,如响应时间、吞吐量等。
4. 自动化功能测试:通过自动化测试工具或脚本,模拟用户操作,对软件的功能进行测试。
5. 兼容性测试:针对不同操作系统、浏览器、设备等进行测试,验证软件的兼容性。
四、自动化软件测试技术应用自动化软件测试技术在多个领域得到了广泛应用,如金融、医疗、电商等。
以下是几个典型的应用场景:1. 金融领域:在金融系统中应用自动化软件测试技术,可以快速发现系统中的问题,保障金融交易的安全和稳定。
2. 医疗领域:在医疗系统中应用自动化软件测试技术,可以提高医疗服务的效率和质量,保障患者的安全和健康。
软件测试自动化技术在质量保障中的应用研究

软件测试自动化技术在质量保障中的应用研究第一章:引言在当今软件开发领域,质量保障是至关重要的一环。
随着软件规模和复杂性的不断增加,传统的手工测试方法已经无法满足快速、可靠地验证软件质量的需求。
因此,软件测试自动化技术的应用成为解决质量保障挑战的热点话题。
本文将研究软件测试自动化技术在质量保障中的应用,并分析其优势和局限性。
第二章:软件测试自动化技术概述2.1 自动化测试的定义与原理自动化测试是指使用自动化脚本或工具来执行软件测试活动的过程。
其原理在于通过预先编写的测试脚本自动执行测试用例,收集关键指标并进行结果分析。
相对于手工测试,自动化测试可以提高测试效率、提升测试覆盖率、减少人为错误,并支持持续集成与迭代开发。
2.2 软件测试自动化技术的分类软件测试自动化技术主要包括单元测试自动化、接口测试自动化、功能测试自动化、性能测试自动化等。
其中,单元测试自动化主要针对软件的最小可测试单元进行测试;接口测试自动化则关注于不同模块之间的接口正确性;功能测试自动化则通过对软件的功能需求进行验证;性能测试自动化则着眼于软件在各种负载情况下的性能指标等。
第三章:软件测试自动化技术的应用案例3.1 单元测试自动化的案例研究和应用在软件开发的过程中,单元测试是最基础也是最重要的一环。
通过利用自动化单元测试技术,可以高效地对软件的代码逻辑进行验证,减少人工出错的风险。
本节将介绍实际案例,并分析自动化单元测试的应用效果。
3.2 接口测试自动化的案例研究和应用接口测试是保证软件模块间交互正确性的重要环节。
通过自动化接口测试技术,可以快速检测接口是否按照规范正确实现,并减少测试时间和成本。
本节将介绍接口测试自动化的案例,并分析其优点和挑战。
3.3 功能测试自动化的案例研究和应用功能测试是对软件功能需求进行验证的关键环节。
通过功能测试自动化技术,可以提高测试效率、降低测试成本,并更好地适应敏捷开发的需求。
本节将介绍功能测试自动化的案例研究,并探讨自动化技术在功能测试中的应用限制。
基于关键字驱动脚本的安全软件自动测试系统

基于关键字驱动脚本的安全软件自动测试系统
王铁江;郦萌
【期刊名称】《同济大学学报(自然科学版)》
【年(卷),期】2002(030)006
【摘要】提出并阐述了一种基于关键字驱动脚本的安全软件自动测试系统设计方法.使用关键字驱动脚本欲将大量有效测试案例形式化,建立测试案例专家知识库,并开发能够实现复杂测试案例自动生成、自动测试和自动结果比较的新一代安全软件自动测试系统.此系统可进一步提高铁路车站计算机联锁软件测试自动化水平和测试效率.
【总页数】4页(P719-722)
【作者】王铁江;郦萌
【作者单位】同济大学计算机科学与工程系,上海,200092;同济大学计算机科学与工程系,上海,200092
【正文语种】中文
【中图分类】TP311.5
【相关文献】
1.基于脚本的通用自动测试系统设计与实现 [J], 朱望纯;王丽;张大伟
2.自动化测试中的关键字驱动脚本技术 [J], 侯勇;张海林
3.关键字驱动脚本技术的应用 [J], 宋群;朱怡安;袁文成
4.基于关键字驱动的Web功能自动化测试方法与实现方式 [J], 陈诚
5.基于关键字驱动的APP自动化测试方案的研究与实现 [J], 袁鸢;李成奇;付文豪
因版权原因,仅展示原文概要,查看原文内容请购买。
【CN110046099A】智能化软件测试系统及方法【专利】

(19)中华人民共和国国家知识产权局(12)发明专利申请(10)申请公布号 (43)申请公布日 (21)申请号 201910289971.5(22)申请日 2019.04.11(71)申请人 艾伯资讯(深圳)有限公司地址 518000 广东省深圳市南山区高新区北区朗山路13号清华紫光科技园4层C401-C405(72)发明人 杨晨 王思嘉 (74)专利代理机构 深圳市壹壹壹知识产权代理事务所(普通合伙) 44521代理人 陈振楔(51)Int.Cl.G06F 11/36(2006.01)(54)发明名称智能化软件测试系统及方法(57)摘要本发明实施例公开了一种智能化软件测试系统及方法,所述软件测试系统包括控制中心、单元测试系统、静态代码分析系统、冒烟测试和功能测试系统及性能测试系统,其中,控制中心包括项目提取模块、功能调用模块及任务队列;单元测试系统包括用例生成模块、用例执行模块A,单元测试插件及报告生成模块A;静态代码分析系统包括代码分析模块、代码分析插件及报告生成模块B;冒烟测试和功能测试系统包括接口文档读取模块、接口文档解析模块、数据组装模块、接口请求模块及报告生成模块C;性能测试系统包括用例执行模块B和报告生成模块D。
本发明提供了自动化和智能化软件测试的能力,有效减少了人工参与,进而降低了成本。
权利要求书2页 说明书5页 附图3页CN 110046099 A 2019.07.23C N 110046099A1.一种智能化软件测试系统,其特征在于,包括控制中心、单元测试系统、静态代码分析系统、冒烟测试和功能测试系统及性能测试系统,其中,控制中心用于项目提取、系统与工具调用及任务调度,控制中心包括项目提取模块、功能调用模块及任务队列,其中,项目提取模块用于从版本控制系统提取软件项目源代码及相关文档;功能调用模块用于调用所述四个测试系统及工程管理工具;任务队列负责调度所需执行的任务;单元测试系统用于对软件源代码进行单元测试,单元测试系统包括用例生成模块、用例执行模块A、单元测试插件及报告生成模块A,其中,用例生成模块根据软件代码自动化生成测试用例;用例执行模块A自动化执行测试用例;单元测试插件用于在集成开发环境中自动化执行测试用例;报告生成模块A用于自动化地生成单元测试报告;静态代码分析系统用于对软件源代码进行分析,包括代码分析模块、代码分析插件及报告生成模块B,其中,代码分析模块用于对控制中心提取的代码进行分析;代码分析插件用于在集成开发环境中对代码进行分析;报告生成模块B负责自动化地生成代码分析报告;冒烟测试和功能测试系统用于对软件项目进行冒烟测试和功能测试,包括接口文档读取模块、接口文档解析模块、数据组装模块、接口请求模块及报告生成模块C,其中,接口文档读取模块用于读取项目接口文档;接口文档分析模块用于分析读取的接口文档;数据组装模块负责组装生成接口请求;接口请求模块负责执行生成的接口请求;报告生成模块C用于自动化地生成冒烟测试或功能测试报告;性能测试系统用于测试软件的性能,包括用例执行模块B和报告生成模块D,其中,用例执行模块B用于自动化执行测试用例;报告生成模块D负责自动化地生成性能测试报告。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
收稿日期:2002-05-30基金项目:铁道部科技研究开发计划资助项目(2001-X-005)作者简介:王铁江(1976-),男,河南郑州人,博士生.基于黑箱的自动软件测试工具的质量保障方法王铁江,郦 萌(同济大学计算机科学与工程系,上海 200092)摘要:软件测试需要合适的自动测试工具的有效支持,此时保障测试工具质量的问题显得尤其重要.介绍了两种针对基于黑箱的自动软件测试工具的质量保障方法,并详细讨论了软件故障注入方法.长期测试实践证明了这些方法对保障铁路计算机联锁软件测试评估平台的检测能力和可靠性是非常有效的.关键词:故障注入;质量保障;测试工具;软件测试中图分类号:T P 311.5 文献标识码:A 文章编号:0253-374X(2002)10-1249-04Approaches for Guaranteeing Quality of AutomaticSoftware Test Tools Based on Black BoxWANG Tie -j iang,L I Meng(Department of Computer Scien ce and Engineering,Tongji University,S hanghai 200092,Ch i na)Abstract :Softw are testing needs effective support from appropriate automatic test tools.And the problem of g uaranteeing the quality of test tools is of more importance.Tw o methods of guaranteeing the quality of auto -matic softw are test tools based on black box are introduced,and the approach for softw are fault injection is discussed in detail.These approaches prove to be very effective by long -term test practices w hen guaranteeing the testing ability and reliability of the Railway Computer Interlocking Softw are Testing and Evaluation Plat -form.Key words :fault injection;quality guarantee;test tool;softw are testing软件测试是软件质量保证的关键技术,在软件生命周期中占有重要的位置.不管专业技术人员采用多好的研发和管理技术来保证软件质量,都不能代替软件测试.测试过程是软件开发过程中一个单调、复杂和耗时的质量保障环节.激烈的商业竞争要求它必须借助于有效的自动软件测试工具代替繁重的手工测试工作来提高测试效率,缩短开发周期和减少资金投入.近几年来国内软件测试工具的开发和研究[1~4]取得了很大进展,其中,铁路计算机联锁软件测试评估平台(以下简称测试平台)是一种针对一类安全软件)))铁路车站计算机联锁软件的专业性自动测试工具.既然作为一种对安全性完善度要求最高的安全软件的自动测试工具,测试案例的自动生成、自动执行和测试结果自动判定的正确性以及工具本身的可靠性对于测试的有效性也就显得至关重要.在测试平台质量保障过程中,作者使用两种方法来保证基于黑箱的自动软件测试工具的高可用性和高可靠性:¹通过模拟被测软件,支持测试平台的开发和调试[4];º使用故障注入验证自动测试案例集的有效性.本文将简要介绍前一种方法,并详细阐述使用故障注入来验证案例集的实现原理,且通过长期的测试实践证明了故障注入在保障测试工具质量中取得的良好效果.1 基于动态判定的黑箱测试平台基于黑箱的测试平台适用于由开发商和用户以外的第三方来进行软件的可靠性、安全性评估.图1所第30卷第10期2002年10月同 济 大 学 学 报JOURNAL OF T ONGJI UN IVERSIT Y Vol.30No.10 Oct.2002图1 测试平台的框架结构Fig.1 Framework of thetesting platform 示为一种基于动态判定的黑箱测试平台的框架结构.主控机根据软件按照被测软件的需求规格说明自动生成和执行测试案例,同时对仿真机的仿真环境进行故障设置,然后主控机的动态判定系统把被测软件的输出和期望输出进行比较和判定,完成对被测软件的安全性测试,其间的测试结果由数据库机实时记录[2~4].2 质量保障方法2.1 模拟被测软件被测软件相对于测试方完全是/黑箱0,并且测试方在开发过程中很难获得大量实际被测对象,因此需要模拟被测软件支持测试平台的开发,对测试用数据和各个子系统的正确性、可用性和可靠性进行检验.模拟被测软件按照被测软件的需求规格说明实现自动测试需要检验的各种功能,并在不同的操作方式和不同的数据驱动下,保持很高的通用性,最终把黑箱测试条件转化为虚拟/白箱0测试条件,降低软件开发难度.2.2 故障注入故障注入是指按照特定的故障模型,用人为的方法有意识地产生故障并施加于运行特定工作负载的目标系统中,以加速该系统的错误和失效的发生,同时观测和回收系统对所注故障的回应信息,通过分析,对系统进行验证和评价的过程.故障注入有三种实现方法:¹硬件实现的故障注入[5];º软件实现的故障注入[6];»用重离子辐射实现的故障注入[7].其中软件实现的故障注入具有成本低、无损害、易于控制等优点.安全软件的无故障间隔时间(M TBF)相当长,所以在测试平台开发阶段,不可能根据它的实际失效来验证测试案例集的有效性.事实上,在用模拟目标软件代替实际被测软件进行开发的基础上,能够使用故障注入加速模拟目标软件失效,然后来验证测试案例集的有效性和评价其测试覆盖度.3 故障注入质量保障方法3.1 故障模式的选择故障模式的选择需要考虑试验的目的,即对哪些类别和功能的自动测试案例集进行验证.选择的故障模式越接近并尽可能覆盖系统真实运行期间所发生的故障,验证的效果就越好.一般而言,软件实现的故障注入所选用的故障模式应该包括以下几方面特性:类型、作用时刻、持续时间和位置.故障空间是这几种特性取值的笛卡儿乘积.穷尽注入故障集进行验证因耗时而无法实现,故采用一定的策略选择可能发生的和可以注入的故障的一个子集进行故障注入研究.自动验证测试案例集,关键不在于故障的原因,而在于区分各种故障原因在被测试软件上表现出的故障行为是否相同,即以不同的故障行为来建立被测软件的故障模型.基于这一思想进行的设计可以大大简化故障注入器的复杂程度.一种可行的方案是:根据软件需求规格说明和自动测试预先声明的能够检测到的故障模式,分析造成软件失效的故障特征,归纳故障行为并建立故障模式库.故障模式库提供被测软件的通用故障模式,使故障注入器能够选择不同的故障模式注入故障,对自动测试案例集的揭错能力进行验证.3.2 注入故障效果的分析注入故障的选择与验证效果关系密切,一方面要求注入故障的准确性.越接近实际运行期间所发生的故障,验证工作越有意义;另一方面要求注入故障的针对性.尽管采用自动测试代替人的繁重劳动,但不能实现所有案例的穷尽自动测试,因此故障应针对已实现的自动测试案例集来注入,选择注入的故障模式应尽可能接近测试案例集包含的故障模式.于是,注入的故障集F f 与测试平台预先声明能够自动检验出的故障集F c 存在着以下几种关系.(1)若F f X ª,F c X ª,F f H F c =ª,说明注入故障完全落在检验能力范围之外,无法自动检验出注入1250 同 济 大 学 学 报第30卷的故障,主要因为注入故障时没有考虑到当前运行的自动测试案例而导致故障注入偏离了验证目的,当然也不排除因为检验能力不足而引起的.这种情况在实际过程中出现较少.(2)若F f X ª,F c X ª,F f H F c X ª,F f ¤F c ,F c ¤F f ,说明能够检测出部分注入的故障,验证过程中经常出现这种情况.对没有被检测出来的故障存在以下两种原因需要进一步分析.主要原因是案例的自动生成和结果动态判定仍需要完善,没有检测到要求发现的软件故障;另外也可能存在着注入的故障不在自动检验范围之内的可能性.(3)若F f X ª,F c X ª,F f =F c ,这是目标结果,因为已发现的故障集合等于自动检验预先声明能够发现的故障集合,而没有被检测出的故障说明不在自动检验预先声明的能够检验到的故障集之内,并且不要求通过自动检验来发现没有被检测出的故障.如果没有被检测到的故障在F c 之外,且通过完善测试工具仍能够发现这些故障,则需要扩充F c 来提高检验能力.(4)若F f X ª,F c X ª,F f A F c ,说明注入的故障都能够被发现,不存在没有被发现的故障.这种情况主要是因为注入的故障类型太少,不能全面暴露测试案例的缺陷和不足,因而需要扩充故障模型库直至达到目标结果为止.总之,为了保证动态判定系统既不会错判也不会漏判,对测试案例集的有效性进行验证需要通过以下两个方面来保证测试案例集的揭错能力:¹对测试平台预先声明某个案例能够自动检验出的故障集F c 的验证,即当注入的故障是F c 中的故障,验证注入的故障是否能够被发现;º注入的故障在F c 之外,可以发现那些自动检验本来能够发现的故障但是由于设计缺陷没有纳入F c 中,这样可以减少漏判的可能性.3.3 使用变异算子实现故障注入首先假定模拟被测软件P 是近似正确的,即在不使用故障注入技术的情况下,测试平台的自动测试不能继续发现它的软件缺陷.此时P 在变异算子的作用下变异成含有软件缺陷的变异体P c ,并在一定输入数据驱动下表现出一种期望的故障行为,即完成了对P 的故障注入.尽管诱使程序具有一种特定的故障特征的原因可能很多,但是这里只关心表现出的故障行为是否相同,故可以选择最明显和简单的原因作为变异算子.常见的错误与变异算子有:¹引用错误的程序数据或关键参数;º使用错误的输入参数变量;»在变量状态空间内,给变量错误赋值;¼错误的布尔表达式;½把语句用T rap 语句代替,而T rap 语句使程序终止且输出一个与任何输出都不同的结果;¾激活含有错误的模块代替正常运行的模块.有时可通过后两种方式改变程序运行路径.在自动测试中,通过故障注入器的人机接口向程序P 中注入故障,包括选择故障的类型、对象、位置、时刻和持续时间等参数.程序P 和P c 在一个自动测试案例T 的输入上,动态判定对P 的计算结果产生了不同的输出判断值,说明变异体P c 被杀死了,即该测试案例能有效地发现所注入的故障,记录为1,否则记录为0.图2 故障注入提高自动检验能力的过程Fig.2 Process of improving the automatic testing ability by using fault injection 在故障注入试验中,试验者必须全面监视软件行为,详细做好试验记录.典型的系统行为包括故障是否有效注入;故障是否被激活;故障是否被检测到;软件是否成功恢复;注入故障后软件的运行轨迹等.试验者分析实验结果,并根据F f 与F c 的关系,确定故障注入验证测试案例集揭错能力的效果,评价测试案例集的测试检测率和测试覆盖度,并对测试案例集的完善提供改进建议.4 结束语在软件测试工具开发阶段,故障注入技术加速模拟目标软件失效,对基于黑箱的自动测试工具)))测试平台的检测能力进行评价是一种能反映软件的相对真实性且易于实现的一种评价方法.如图2所示,经过多次循环验证和反馈优化,故障注入在验证测试案例集的有效性的同时,提高了自动检验能力并保障测试工具质量.为了提高测试效率,将先前的手工测试案例形式化后实现其自动测试,故障注入也是对改进1251 第10期王铁江,等:基于黑箱的自动软件测试工具的质量保障方法1252同济大学学报第30卷型测试平台的测试案例集的有效性进行验证的一种有效方法.事实上,在测试平台的多次改进优化中,模拟被测软件和故障注入技术在保障测试平台的检测能力和可靠性时确实发挥了重要作用,然而也只有得到质量保障的测试工具才能取得令人满意的测试结果.自1997年以来,设在同济大学的/铁路车站计算机联锁检验站0利用自行开发的计算机联锁软件测试平台对10多个不同规模的实际车站和4个不同制式的标准站的计算机联锁软件进行安全性测试,总共测出软件缺陷550个,其中致险缺陷占30%~40%.测试平台能够使用有效的测试案例准确发现被测软件的潜在缺陷,以及测试平台在测试过程中的稳定可靠运行,都说明了保障质量方法的合理性和有效性.参考文献:[1]孙昌爱,金茂忠.基于场景的软件测试工具系列的设计与实现[J].计算机工程与应用,2001,37(12):49-53.[2]W U Fang-mei,LI M eng.Railway signaling safety testing based on dynamic decision table[A].Proceeding of the Eighth Asian Test S ym po-sium[C].Shanghai:IEE E Computer Society,1999.247-250.[3]LI Wei-w ei,XU Zhong-w ei,JIN Yan.An approach for tes ting safety-critical software[A].9th Great Lakes Sym posium on VLSI,AnnArbor[C].M ichigan:IEEE Com puter Society Press,1999.180-183.[4]王铁江,吴芳美.面向软件测试的虚拟计算机联锁软件的设计和实现[J].测试技术学报,2000,14:388-393.[5]W ang J Y,S un J Z,Li Y C,et al.T he implementation of FT T-1:A hardw are-based fault i njector[A].Proc IEEE Internati onal Workshopon Computer-Aided Design,T est and Evaluation for Dependabi lity[C].Beiji ng:IEEE Com puter Society,1996.170-174.[6]Karlsson J,Liden P,Dahlgren P,et ing heavy-lon radi ation to validate fault-handling mechanisms[J].IEEE M icro,1994,14(1):8-32.[7]Kanaw ati G A,Kanaw ati N A,Abraham J A.A flexi ble software-based fault and error injection system[J].IEEE T rans Computer,1995,44(2):248-260.#下期文章摘要预报#市场比较法及其在农地价格评估中的应用单胜道,尤建新市场比较法的应用基础是发达的土地市场和大量的交易案例.目前我国农地市场刚起步,交易案例极少,评估方法极不完善,有关农地价格数据也极不齐全,因此,在应用市场比较法时必须拓宽思路,灵活运用.通过案例分析,对市场比较法及其拓展方法的应用作了较为全面的探讨,并就市场比较法方法本身作了客观的评价.支持产品创新的分散网络化制造马淑梅阐述了产品创新对企业赢得竞争的重要性,分析了产品快速开发的支撑技术,并通过实例描述了分散网络化制造的全过程,这种网络联盟企业将对我国制造业提高产品创新能力,缩短新产品上市周期,提高产品开发质量,快速响应市场产生显著的效果.。