APP下载

软件错误注入测试技术研究

2017-03-30叶鑫

科教导刊·电子版 2017年6期
关键词:软件测试

叶鑫

摘 要 本文主要介绍了一种先进的软件错误注入测试技术在现代的高可靠性系统中的应用,首先需要对于该技术的原理和方法有深入的认识,这是了解这项技术的基础,然后才能清楚地知道该技术在提高软件质量,增强系统稳定性等各个方面起到的至关重要的作用。系统在运行的过程中会受到诸多因素的影响,比如环境异常以及外部攻击等等,可以通过函数的封装以及虚拟的模拟技术来有效的模拟出各种不同的错误类型,因此就可以更加清楚的知道系统的安全性以及稳定性,使得系统的测试效果达到最佳,覆盖率更加的广泛。

关键词 软件测试 错误注入 软件错误注入测试

中图分类号:TP311 文献标识码:A

随着互联网时代的不断发展,软件在现实生活中的应用越来越广泛,规模正在不断地扩大,各种软件的设计复杂程度也会不断提升来估计到更多的不确定因素,在这种复杂性的开发过程中,难免会出现一些错误和漏洞。这些软件的用户对于软件质量的要求也是越来越高了,软件行业的竞争也是不断增强,尤其是在安全核心系统以及高稳定性系统,例如一些航空或者军事的应用中,一个小小的错误造成的后果是难以预测的,因此人们对于软件的质量的关注也是更甚从前。软件质量的测试是一种常用的并且非常有效的保证软件质量的手段,软件管理的相关部门和软件的开发公司的重视度也是持续上升。

通过大量的数据分析可以知道,发现软件中存在的问题的时间越早,在整个软件开发的过程中花费的成本费用越低。利用相关的公式计算可以得到,代码完成之后进行的修改话费的成本价格一般是代码编写前的10倍左右,产品上线之后进行的软件问题修改花费的金额也是上线之前花费金额的近10倍左右。在典型的软件开发中,软件测试的工作量是非常大的,一般大概会占到总工作量的45%左右,而软件测试所需的费用大概是软件开发中总开銷的40%左右。

软件测试技术有多种的分类方式,如静态测试和动态测试就是根据是否执行测试软件来进行分类的,静态测试并不会运行整个程序,只是对于其中的结构以及代码进行分析检查,通过这种形式来保证逻辑结构是否满足要求。动态测试就是正常的运行被开发的程序,根据系统指定的测试形式来验证软件的行为和结果。动态测试又可以分为软件错误注入测试和黑盒测试,黑盒测试相当于功能测试,主要考虑的是软件的功能,而软件错误测试主要在被测系统中引入错误,发现软件无法解决的问题,以此来评估软件的稳定性以及安全性。

1软件错误注入测试技术概述

错误注入技术需要人为的向目标系统中注入特定形式的故障,让系统在该故障的环境下运行,发现可能产生的错误,系统是否失效等等,同时还要得到系统中对于该故障做出的反应信息,这样就可以通过这些信息来分析目标系统的错误容忍能力和处理能力,以此来判断系统的稳定性以及安全性。

软件错误注入测试主要借助于软件的方法,实现错误的注入,进行检测的技术。该技术的前身应该是错误种子技术,是美国IBM公司的一名员工最早提出来的,后来经过不断地变更就形成了现代的软件错误注入测试技术。对比于传统的软件错误测试技术,该技术主要存在以下的一些优点:

(1)软件测试灵活性得到很大程度的提升,通过该技术建立起不同的外部环境以及参数,实现软件接口的高灵活度,因此就可以非常方便的进行各种类型的测试。

(2)软件错误的发生时间大大缩短,比如该技术可以最快的模拟出计算机资源耗尽的情景以及外部环境异常等等可能存在的问题,相比传统的测试技术可以节约大量的时间来完成其他的工作。

(3)对于商用产品软件也是有效的,一般的商用软件是不会公开源代码的,软件错误注入技术通过接口注入错误,并不需要了解整个系统的代码结构,一般来说,传统的测试方法是无法做到的。

(4)软件测试的范围大大增强,软件错误注入测试可以在一些小概率错误上也起到很好的覆盖,有些无法达到的路径也会被很好的检测到,发现其中可能存在的问题,相比传统的软件测试方法,更具有说服力。

(5)大大增加软件的安全稳定性,模拟出各种不同的网络攻击,信息攻击等等,这些不同的问题必定会不断地巩固系统的安全稳定性,这是传统的软件测试技术无法达到的。

我们常说的软件系统一般是应用程序加上运行环境,应用程序就是在计算机的操作系统上实现某些功能的逻辑代码,而其他的配置文件,注册表,文件系统等等都是属于应用程序的运行环境。根据软件系统的分类,我们将软件错误技术也可以分成程序错误注入和环境错误注入,因此错误是可以注入到不同的地方的。

程序错误注册模拟的是开发人员形成的错误,在该基础上来检测软件的一些异常行为,现在比较常见的一些程序上面的错误主要有内存错误,进程死锁,信号异常处理等等。被测试的软件在硬件系统异常的情况下,是否存在一定的容错能力,进行自我的调节,这是程序错误注入技术所要检测的。

环境错误注入主要是在软件运行中进行的工作,主要就是将错误注入到软件和操作系统交流的环境中,这些环境实体包含多种,因此环境错误注入测试主要就是测试软件在恶劣的运行环境下的应对能力以及自我保护能力,这就需要软件有非常强大的外部适应能力。

软件错误注入测试测流程如下:首先分析被测试的软件系统,以及来确定需要进行测试的方法以及步骤,然后确定出错误如何注入以及编写相应的错误注入代码,紧接着会有两种测试过程来进行选择,分别是需要修改被测试的程序以及不修改被测试程序的方法,这两种方法在平常的使用中根据具体的情况来定,运行好了之后触发错误的生成,根据被测试软件的反应来进行具体的分析,评价被测试软件系统的安全稳定性。

2程序错误注入测试分析

通过修改软件的函数返回值,内存变量,程序分支,错误格式等等方法来进行程序错误注入测试,以此来确定软件在诸多的不确定因素下是否可以采取自我保护措施,程序自己转向可控的异常处理部分,让软件可以继续的运行下去。下面就以异常信号处理作为例子来进行分析

2.1测试背景以及目标

在这个例子中,我们选取的对象是Unix环境下的实时指挥信息系统,这个系统的构架主要是分层的软件体系,主要有以下四层:核心业务层,基础层,业务展现层以及共性平台层。

共性平台层为核心业务层和业务展现层提供良好的运行环境,核心业务层和业务展现层完成具体的业务处理以及界面的完美展示。共性平台层来负责整个系统的管理和维护。测试的目标就是当核心业务层和业务展现层中的某个软件出现运行异常时,系统能不能获取到该信号并且跳出异常处理函数,让整个系统继续的运行着。

2.2测试方法和过程分析

前期的准备工作就是了解该软件的工作模式,核心业务层以及业务展现层的软件处于的状态,当接收到人机交互界面请求或者信号打断,软件系统发出相应的响应,信号中断进入到错误处理,处理的程序也可能因为多种原因出现异常,软件错误的植入就是需要研究这种异常来进行相应的错误注入来测试软件的安全稳定性。程序的错误植入有两种,根据具体的情况选择合适的方法,更好的测试。

2.3测试结果分析

通过对于软件运行过程的观察,可以知道软件是否退出或者继续的运行,因此就可以知道其中有没有加入异常的保护措施,软件的鲁棒性就会得到验证。如果该软件具有一定的异常处理能力,当异常出现的时候,该信号必定会被捕捉到,强制的跳出该次的正常运行过程,记录异常的信息,通过这个机制,系统在下次遇到这样的情况就会容易进行相应的处理,节约系统的运行时间。如果软件系统无法达到上面的情况,说明该软件系统缺少适当的容错能力,需要进行适当的完善来增强系统的安全稳定性。

3环境错误注入测试分析

严格的来说,没有运行环境的软件系统是不完整的,软件的正常运行需要依据很多的外部环境,所以在进行开发的时候,我们想到的运行环境都是正常的,可是实际的情况并不是这样的,运行的环境也会出现各种各样的问题,所以环境错误的注入也是非常有必要的。由于环境错误对于软件程序的影响可以分为两种形式,所以一般将环境错误注入分为两种,间接环境错误注入和直接环境错误注入。

间接的环境错误注入是在应用程序需要用户向其中输入信息的时候进行错误的输入,这样就可以向应用程序的内部注入错误的变量参数等等。直接环境错误注入是在程序访问运行环境时完成的,向环境实体中注入错误来拒绝程序访问环境实体,用此方法来实现对于程序注入错误的目的。

3.1测试背景和目标

该测试的对象还是前面提到的那个系统,通过直接环境错误注入和间接环境错误注入两种方式来进行,主要就是验证异常的运行环境下系统软件的应对能力。

3.2测试方法和过程分析

间接环境错误注入测试过程如下:间接环境错误有各种各样的类型,这里只需要选取其中的一种进行测试和介绍。首先编写一个基于TCP网络协议的简易程序,该程序模拟的是外部输入,向被测试系统之间进行信息的交互。然后就需要对于该系统的外部接口报文格式进行分析,针对格式来做出合适的错误注入方法。通常情况下软件系统是会对外部环境建立一定的排错机制,收到一些异常信息时可以进行自我的保护措施。

直接环境错误注入的测试方法如下:直接环境错误注入主要会涉及到计算机硬件资源以及操作系统环境变量,外部的程序修改可以使得计算机的CPU被耗尽,被测试的软件就会无法访问相应的文件,这样就会实现环境错误的注入。

3.3测试结果分析

通过对于软件系统的反应分析,确定该软件是否对于外部环境建立异常保护机制。当然软件系统的自我调节能力和适应能力毕竟是有限的,计算机资源长时间被耗尽的情况下,软件系统必定不可能继续长时间的运行,所以环境错误的注入测试只能在一定的程度上来说明软件系统的安全稳定性。

4.结束语

软件错误注入测试技术作为一种新型的检测技术,必定会得到更加广泛的应用,在软件开发过程中为技术人员提供强大的检测能力,节约一定的时间和成本。目前,软件错误注入检测技术在每个单位之间还没有统一的标准,因此想要实现大面积的普及还是存在一定的困难需要解决。但是随着这种检测技术在技术层面上面的进步,未来的检测技术将会更加的方便,为软件工程专业提供更好的发展前景。

参考文献

[1] 软件测试有效性度量指标体系研究[J]. 杨玲萍,蔡东华,王建强. 指挥信息系统与技术. 2010(06)

[2] 一种基于EAI模型的错误注入测试方法[J]. 鲁军,罗扬,李新洲. 工业控制计算机. 2011(04)

[3] 综合网管系统软件测试模型的研究与实现[J]. 陈良臣,张朔. 计算机与数字工程. 2014(04)

[4] 基于程序谱概念格的软件错误定位技術[J]. 文万志,陈翔,孙小兵. 四川大学学报(工程科学版). 2014(02)

[5] 基于马尔可夫模型的软件错误定位方法[J]. 张云乾,郑征,季晓慧,张文博,张震宇. 计算机学报. 2013(02)

猜你喜欢

软件测试
基于OBE的软件测试课程教学改革探索
基于MBD模型自动生成测试用例的软件测试方法
计算机软件测试方法的研究
EXCEL和VBA实现软件测试记录管理
关于软件测试技术应用与发展趋势研究
一种航空机载软件测试项目的进度改进模型
军用软件测试文档生成设计与实现
软件测试工程化模型及应用研究
智能电能表软件测试技术概述
《软件测试》课程教学策略研究