Linux的鲁棒性度量详解及鲁棒性关联测试分析

来源:
导读 大家好,我是本期栏目编辑小友,现在为大家讲解 Linux的鲁棒性度量详解及鲁棒性关联测试分析问题。 软件(或软

大家好,我是本期栏目编辑小友,现在为大家讲解 Linux的鲁棒性度量详解及鲁棒性关联测试分析问题。

软件(或软件组件)的健壮性是衡量软件在异常输入和压力环境下保持正常工作的能力。健壮性测试主要用于测试操作系统、应用程序、COTS软件、组件和服务协议等软件和协议的可靠性和健壮性。测试一些重要的软件,如操作系统和安全关键软件尤为重要。通常,有基于测量的方法和基于故障注入的方法来评估系统的鲁棒性。近年来,稳健性基准测试被提出[1]。健壮性基准测试由一组健壮性测试用例组成。

软件健壮性测试的目的是发现被测代码的薄弱环节,消除或增强抵抗异常情况的能力。增强代码鲁棒性的过程包括:(1)确定软件激励鲁棒性失效的异常值参数并进行测试;(2)分析测试结果,找出故障原因;(3)写保护码屏蔽导致故障的异常值;(4)将保护代码与软件模块连接[3]。

1 Linux内核功能测试。

Linux操作系统架构从下到上的顺序是:内核(包括内核函数)、系统调用、内置程序(操作系统命令)。内核函数是内核代码不可分割的一部分,其调用程序直接在内核空间运行。一旦内核功能出现异常,会立即影响整个操作系统。系统调用通常将内核函数封装为内核和用户空间之间的接口。当用户程序使用系统调用时,它将进入内核空间,然后在调用后返回用户空间。内核函数的测试结果一般分为:函数错误码返回、异常、内核挂起、工作负载中止、工作负载结果不正确、工作负载完成[1]。

Linux内核功能健壮性测试的最终目的是提高系统的健壮性,需要根据测试结果生成相应的保护代码。这一领域的研究还处于起步阶段。

2稳健性维度分析。

典型的健壮性测试包括模块化基准测试和分层测试。模块化基准测试是对系统的分离测试。它将一个独立的系统视为组件的集合,如文件系统、内存系统、外部交互系统、锁定机制和多程序操作等。此外,它通过监控程序监控和收集测试结果。分层测试通过定义一个清晰的交互层,将测试与测试各种模块的执行细节分开。一些测试可能适用于所有模块,而其他测试可能仅适用于模块的子集。使用层次结构是分解系统的好方法。通过层次测试操作系统可以得到更好的结果[2]。

无论是采用模块化基准测试还是分层方法,操作系统接口功能都采用参数组合测试。分析健壮性测试结果的一种方法是使用降维模型。维度有两种定义:(1)参数维度,指模块中的参数个数。对于软件模块,参数维数定义为变量的个数;(2)稳健性失效维度。对于一组导致鲁棒性失效的特殊参数,真正导致失效的参数个数定义为鲁棒性失效维数。

2.1尺寸故障。

尺寸失效分为一维失效和多维失效。多维失效参数必须是合格系统能够识别的值。一维失效和多维失效的原因是不同的。一维失效是非法参数,多维失效是非法参数组合(每个参数都是合法的)。当一维失效案例受到保护和屏蔽时,是否会跳转到多维失效,取决于其参数是否构成组合关系。从其参数的组合关系判断,可以判断失效案例是真维失效案例还是变维失效案例[3]。

在基于低维度优先级的维度模型中,无效维度不能超过参数维度。可能是一维失效,也可能是高维失效。在这种情况下,这种故障通常被视为低维故障。同时,激发软件健壮性失效需要考虑的最少因素取决于健壮性失效维度。当参数维度为失效维度时,对测试结果的观察最为直观。当参数维数大于失效维数时,对试验结果的观察不是很直观。失效维度也可以通过观察稳健性测试的响应模式得到。

2.2故障状态分析。

维度故障状态分为三类。(1)真维失效是指状态失效条件被掩盖后,测试用例跳转到正常状态;(2)同尺寸失效是指状态失效条件被掩盖后失效尺寸保持不变;(3)变维失效是指在同等条件下失效尺寸的增加。由于低维优先的原则,从高维到低维的故障转移是不可能的[3]。健壮测试用例的失败维度状态转换如图1所示。

以Linux系统函数read(fd、buf、count)为例,说明上述不同失效维度之间的转换。该函数三个参数的值如表1所示。

12下一页全文。

导航第一页:详细说明健壮性度量和分析Linux的健壮性关联测试第二页:健壮性关联测试。

标签:

版权声明:转载此文是出于传递更多信息之目的。若有来源标注错误或侵犯了您的合法权益,请作者持权属证明与本网联系,我们将及时更正、删除,谢谢您的支持与理解。