资料介绍
软件(或软件构件)鲁棒性是衡量软件在异常输入和应力环境条件下保持正常工作能力的一种度量。鲁棒性测试主要用于测试操作系统、应用程序、COTS软件、构件及服务协议等软件和协议的可靠性及健壮性。在操作系统和安全关键软件等一些重要软件的测试上尤为重要。对于系统鲁棒性的评价一般有基于测量的方法和基于故障注入的方法,近年来提出了鲁棒性基准程序方法(Robustness Benchmarking)[1]。鲁棒性基准程序(Robustness Benchmark)由一组健壮性测试用例组成。
实施软件鲁棒性测试的目的是发现所测代码的健壮性薄弱环节,并予以消除或增强抵抗异常情况的能力。增强代码健壮性的过程包括:(1)确定软件的激发健壮性失效的异常值参数,并进行测试;(2)分析测试结果,找出失效原因;(3)写保护代码屏蔽导致失效的异常值;(4)把保护代码与软件模块相连接[3]。
1 Linux内核函数测试
Linux操作系统体系结构从底层到顶部的顺序依次是:内核(包含内核函数)、系统调用、内建程序(操作系统的命令)。内核函数是内核代码的组成部分,其调用程序直接运行在内核空间。内核函数一旦出现异常,将立刻对整个操作系统产生影响。系统调用一般对内核函数进行封装,以此作为内核与用户空间的接口。当用户程序使用系统调用时会转到内核空间,调用结束后又会返回用户空间。内核函数的测试结果一般分类为:函数错误码返回、异常、内核挂起、工作负载夭折、工作负载结果不正确、工作负载完成[1]。
Linux内核函数鲁棒性测试的最终目的是要提高系统的健壮性,需要根据测试结果生成相应的保护代码。这方面的研究目前处于初期阶段。
2 鲁棒性维度分析
典型的鲁棒性测试包括模块化基准测试和层次化测试两种主要方法。模块化基准测试是对一个系统进行分离测试。它把一个独立的系统看作是一系列组件的集合,如文件系统、内存系统、外部交互系统、锁机制和多道程序运作等,另外还通过一个监视器程序来监视和收集测试的结果。而层次化测试是通过定义一个清晰的交互层,使测试和对各种模块进行测试的执行细节相分离。一些测试可以适用于所有模块,而另一些可能只适合一个模块子集。使用层次性结构是分解系统的好方法。通过层次化来对操作系统进行测试可以收到较好的效果[2]。
无论采用模块化基准测试还是层次化方法,最终都是对操作系统接口函数采用参数的组合测试。对鲁棒性测试结果进行分析的一种方法是使用维度(Dimensionality)模型。维度有两种定义:(1)参数维度,它指的是模块中参数的个数,对于一个软件模块而言,参数维度被定义为其变量的个数;(2)鲁棒性失效维度,对于引起鲁棒性失效的一组特殊参数,那些确实引起失效的参数的个数被定义为鲁棒性失效维数。
2.1 维度失效
维度失效分一维失效和多维失效。多维失效的参数一定都是符合条件的系统能够识别的值。一维失效和多维失效所引发的原因不同,一维失效是参数非法,多维失效是参数组合非法(每个参数都是合法的)。当一维失效用例被保护和屏蔽后,会不会跳转为多维失效,关键是看其参数是否构成组合关系。从对其参数的组合关系的判定上,可以判断该失效用例是真维失效用例还是变维失效用例[3]。
基于低维度优先的维度模型中失效维度不可能超过参数维度。可能属于一维失效的某个失效,同时也可能属于高维失效。对于这种情况,一般把这个失效作为低维失效来对待。同时激发软件鲁棒性失效所需考虑的最少因素取决于鲁棒性失效维数,当参数维度为失效维度时,测试结果的观察最为直观;当参数维度大于失效维度,测试结果的观察就不太直观了。失效维度也可以通过观察鲁棒性测试的响应模式得到。
2.2 失效状态分析
维度失效状态分为三类。(1)真维失效指状态失效条件被屏蔽后,测试用例跳转到正常状态;(2)同维失效指状态失效条件被屏蔽后,失效维度保持不变;(3)变维失效指相同条件下产生失效维度升高。由于基于低维度优先原则,所以由高维度向低维度的失效跃迁跳变不可能发生[3]。鲁棒性测试用例的失效维度状态转变如图1所示。
现以Linux系统函数read(fd, buf,count)为实例进行分析,说明上述不同失效维度之间的转变问题。函数的三个参数取值如表1所示。
假设当参数fd取值errno file,buf取值 Null时,均会产生一维失效。当fd取合法的值,并且buf分配空间小于count时产生一个二维失效。此时,对参数fd取值empty file进行保护屏蔽,则一些测试用例将会通过测试,如read(empty file,8,1);而另一些用例则维持一维失效不变,如read(empty file,Null,1024);还有一些用例将转化为多维(维度≥2)失效,如read(empty file,1,8)。
实施软件鲁棒性测试的目的是发现所测代码的健壮性薄弱环节,并予以消除或增强抵抗异常情况的能力。增强代码健壮性的过程包括:(1)确定软件的激发健壮性失效的异常值参数,并进行测试;(2)分析测试结果,找出失效原因;(3)写保护代码屏蔽导致失效的异常值;(4)把保护代码与软件模块相连接[3]。
1 Linux内核函数测试
Linux操作系统体系结构从底层到顶部的顺序依次是:内核(包含内核函数)、系统调用、内建程序(操作系统的命令)。内核函数是内核代码的组成部分,其调用程序直接运行在内核空间。内核函数一旦出现异常,将立刻对整个操作系统产生影响。系统调用一般对内核函数进行封装,以此作为内核与用户空间的接口。当用户程序使用系统调用时会转到内核空间,调用结束后又会返回用户空间。内核函数的测试结果一般分类为:函数错误码返回、异常、内核挂起、工作负载夭折、工作负载结果不正确、工作负载完成[1]。
Linux内核函数鲁棒性测试的最终目的是要提高系统的健壮性,需要根据测试结果生成相应的保护代码。这方面的研究目前处于初期阶段。
2 鲁棒性维度分析
典型的鲁棒性测试包括模块化基准测试和层次化测试两种主要方法。模块化基准测试是对一个系统进行分离测试。它把一个独立的系统看作是一系列组件的集合,如文件系统、内存系统、外部交互系统、锁机制和多道程序运作等,另外还通过一个监视器程序来监视和收集测试的结果。而层次化测试是通过定义一个清晰的交互层,使测试和对各种模块进行测试的执行细节相分离。一些测试可以适用于所有模块,而另一些可能只适合一个模块子集。使用层次性结构是分解系统的好方法。通过层次化来对操作系统进行测试可以收到较好的效果[2]。
无论采用模块化基准测试还是层次化方法,最终都是对操作系统接口函数采用参数的组合测试。对鲁棒性测试结果进行分析的一种方法是使用维度(Dimensionality)模型。维度有两种定义:(1)参数维度,它指的是模块中参数的个数,对于一个软件模块而言,参数维度被定义为其变量的个数;(2)鲁棒性失效维度,对于引起鲁棒性失效的一组特殊参数,那些确实引起失效的参数的个数被定义为鲁棒性失效维数。
2.1 维度失效
维度失效分一维失效和多维失效。多维失效的参数一定都是符合条件的系统能够识别的值。一维失效和多维失效所引发的原因不同,一维失效是参数非法,多维失效是参数组合非法(每个参数都是合法的)。当一维失效用例被保护和屏蔽后,会不会跳转为多维失效,关键是看其参数是否构成组合关系。从对其参数的组合关系的判定上,可以判断该失效用例是真维失效用例还是变维失效用例[3]。
基于低维度优先的维度模型中失效维度不可能超过参数维度。可能属于一维失效的某个失效,同时也可能属于高维失效。对于这种情况,一般把这个失效作为低维失效来对待。同时激发软件鲁棒性失效所需考虑的最少因素取决于鲁棒性失效维数,当参数维度为失效维度时,测试结果的观察最为直观;当参数维度大于失效维度,测试结果的观察就不太直观了。失效维度也可以通过观察鲁棒性测试的响应模式得到。
2.2 失效状态分析
维度失效状态分为三类。(1)真维失效指状态失效条件被屏蔽后,测试用例跳转到正常状态;(2)同维失效指状态失效条件被屏蔽后,失效维度保持不变;(3)变维失效指相同条件下产生失效维度升高。由于基于低维度优先原则,所以由高维度向低维度的失效跃迁跳变不可能发生[3]。鲁棒性测试用例的失效维度状态转变如图1所示。
现以Linux系统函数read(fd, buf,count)为实例进行分析,说明上述不同失效维度之间的转变问题。函数的三个参数取值如表1所示。
假设当参数fd取值errno file,buf取值 Null时,均会产生一维失效。当fd取合法的值,并且buf分配空间小于count时产生一个二维失效。此时,对参数fd取值empty file进行保护屏蔽,则一些测试用例将会通过测试,如read(empty file,8,1);而另一些用例则维持一维失效不变,如read(empty file,Null,1024);还有一些用例将转化为多维(维度≥2)失效,如read(empty file,1,8)。
下载该资料的人也在下载
下载该资料的人还在阅读
更多 >
- 含风电并网系统的鲁棒区间优化调度模型 11次下载
- 开源软件关键开发者类型及协作网络鲁棒性综述 4次下载
- 一种针对鲁棒水印问题的伪造边信息攻击手段 2次下载
- 一种可消除噪声数据影响的鲁棒SVM算法 12次下载
- Linux内核GPIO操作函数的详解分析 28次下载
- 使用光照鲁棒实现图像匹配的方法详细概述 7次下载
- 鲁棒PID控制器设计和仿真研究分析资料说明 14次下载
- 鲁棒优化的风储联合配置 2次下载
- 电力系统的鲁棒性评估 6次下载
- 稳定性与鲁棒性的理论基础 0次下载
- 基于系统辨识的神经网络鲁棒性研究
- 种提高数字水印鲁棒性的算法研究
- 鲁棒自适应控制综述A survey of robust ad
- 提高加热炉温度控制鲁棒性的研究
- 使用频域LSB水印算法的鲁棒性分析
- Linux内核自解压过程分析 955次阅读
- 基于鲁棒神经架构的设计 501次阅读
- 均匀B样条采样从LiDAR数据中快速且鲁棒地估计地平面 668次阅读
- Linux内核的安全性对Android的影响 1306次阅读
- Linux内核系统调用概述及实现原理 2244次阅读
- Linux:QEMU调试内核的步骤 3172次阅读
- 嵌入式Linux内核的驱动程序开发是怎样的 1521次阅读
- 通过联锁栅极驱动器来提高三相逆变器的鲁棒性 1461次阅读
- Linux内核与Android的关系 4606次阅读
- 基于Linux2.6内核的实时性增强方案设计 1021次阅读
- Linux内核地址映射模型与Linux内核高端内存详解 3474次阅读
- 鲁棒性和稳定性的区别 24.6w次阅读
- 鲁棒性是什么意思_Robust为什么翻译成鲁棒性 12.7w次阅读
- 基于Android的Linux内核的电源管理:概述 974次阅读
- 影响电路鲁棒性的设计因素思考 4350次阅读
下载排行
本周
- 1AN158 GD32VW553 Wi-Fi开发指南
- 1.51MB | 2次下载 | 免费
- 2嵌入式软件开发符合ISO 26262 功能安全标准
- 1.61 MB | 1次下载 | 免费
- 3AN148 GD32VW553射频硬件开发指南
- 2.07MB | 1次下载 | 免费
- 4PZT驱动开关电路
- 0.09 MB | 1次下载 | 免费
- 5模拟电路仿真实现
- 2.94MB | 1次下载 | 免费
- 6PCB绘制基础知识
- 2.44MB | 1次下载 | 免费
- 7EE-38:ADSP-2181 IDMA端口-周期窃取时序
- 75.0KB | 次下载 | 免费
- 8EE-82:使用ADSP-2181 DSP的IO空间对另一个ADSP-2181进行IDMA引导
- 86.86KB | 次下载 | 免费
本月
- 1ADI高性能电源管理解决方案
- 2.43 MB | 452次下载 | 免费
- 2免费开源CC3D飞控资料(电路图&PCB源文件、BOM、
- 5.67 MB | 139次下载 | 1 积分
- 3基于STM32单片机智能手环心率计步器体温显示设计
- 0.10 MB | 132次下载 | 免费
- 4美的电磁炉维修手册大全
- 1.56 MB | 24次下载 | 5 积分
- 5如何正确测试电源的纹波
- 0.36 MB | 19次下载 | 免费
- 6感应笔电路图
- 0.06 MB | 10次下载 | 免费
- 7LZC3106G高性能谐振控制器中文手册
- 1.29 MB | 9次下载 | 1 积分
- 8万用表UT58A原理图
- 0.09 MB | 9次下载 | 5 积分
总榜
- 1matlab软件下载入口
- 未知 | 935121次下载 | 10 积分
- 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
- 1.48MB | 420062次下载 | 10 积分
- 3Altium DXP2002下载入口
- 未知 | 233088次下载 | 10 积分
- 4电路仿真软件multisim 10.0免费下载
- 340992 | 191367次下载 | 10 积分
- 5十天学会AVR单片机与C语言视频教程 下载
- 158M | 183335次下载 | 10 积分
- 6labview8.5下载
- 未知 | 81581次下载 | 10 积分
- 7Keil工具MDK-Arm免费下载
- 0.02 MB | 73810次下载 | 10 积分
- 8LabVIEW 8.6下载
- 未知 | 65988次下载 | 10 积分
评论
查看更多