优化遗传算法在软件测试用例方面的应用

2015-06-02 02:33李华等
科技创新导报 2015年8期
关键词:技术研究软件测试遗传算法

李华等

摘 要:计算机软件测试的重要手段是测试用例的自动生成,关键问题是路径搜索。遗传算法技术是一种高效的搜索巡游算法,在软件测试用例中广泛应用。将遗传算法进行优化改进,使它有能力处理输入的庞大数据,均衡搜索能力,从而设计出最优测试数据。

关键词:遗传算法 软件测试 技术研究

中图分类号:TP311.52 文献标识码:A 文章编号:1674-098X(2015)03(b)-0050-01

软件测试过程中,可以用搜索问题的思想对测试数据的生成问题进行转化。遗传算法是美国学者提出的,是指通过对生物遗传和进化机制的模仿,对问题进行最优化,它将遗传基因中的某些行为,借鉴应用到算法求解的过程中。作为一种高效的搜索寻优算法,遗传算法在解决现实中很多复杂问题上起到了很大的作用。近些年,人们又尝试在软件测试中运用遗传算法,取得了一定的研究成果。但是在应用过程中也存在很多缺陷,优化遗传算法在软件测试方面的应用是目前需要研究的重要课题。

1 基于遗传算法的软件测试用例优化技术研究

1.1 遗传算法技术介紹

遗传算法产生于20世纪六七十年代,后来,国外有科学家首次将遗传算法应用到机器学领域,并研制出分类器系统。近些年,对遗传算法的研究更多,作为一种简单、实用、高效的优化技术,得到迅速发展。

1.2 遗传算法的应用

遗传算法的应用领域比较广泛,如自动化工程中自适应控制、车间调度、优化设计等。遗传算法主要包括可编码设计、评价函数设计、选择路径、自适应控制、计算机模拟等等。遗传算法现已应用于许多学科,目前已在生物科学术及计算机软件工程等学科得到广泛应用,并且发展成为了一种综合性技术。

1.3 遗传算法在计算机软件测试用例中的应用

遗传算法进行软件测试用例优化的关键在于选择恰当的评价函数,用户在设计评价函数时应与求解问题本身的要求相结合。我们知道软件测试用例选择的好坏直接影响测试结果,从而影响计算机软件质量。因此在软件测试中对测试用例进行优化是重中这重,目前软件测试用例优化技术包括三种,一是测试用例序列化技术、测试用例最优排序技术及测试用例集合最少技术。

2 遗传算法与构件化软件测试技术相结合

软件开发是一个多人参与的复杂过程,在开发中出现错误的情况难以避免。随着软件需求的不断增多和软件规模的不断扩大,错误发生的可能性也就越大,对软件进行有效测试的问题也急需解决。在构建和软件测试中,需要利用改进的算法来对最初生成的测试用例进行优化。遗传算法从串集开始搜索,覆盖面大,利于全局择优,同时具有基于领域交叉的交叉操作技术,在实际操作中显示了其独特的优势。

2.1 构件化软件测试用例技术

目前的构件化软件测试用例生成技术是在传统的软件测试技术基础上发展来的,相较于传统技术而言,增设了对构件源代码不可见性问题的研究,但是由于其自身的存在缺陷,也导致了一系列软件测试问题。在软件测试中需要评判测试用例的有效性问题,这就需要具体的软件测试充分准则。

测试准则可以用一个定性的函数C(p,s,t)=true来表示。在这个公式中,p为代表程序、s代表规格说明、t是测试集。函数结果为true时,则意味着在程序p运行的情况下,规格说明s所产生的测试用例集t符合测试充分准则。

2.2 构件化软件测试用例生成技术中应用遗传算法研究

在进行搜索中,遗传算法基本不需要利用外部信息,仅依据评价函数,它用来判断群体中的个体的优劣程度的指标,因此,在利用遗传算法进行构件化软件测试中,关键是要选取恰当的评估函数,进而找到遗传算法的最优解。对于优化的遗传算法而言,不需要了解所需解决问题的实质,问题解决好坏的关键取决于适应度函数的构造是否合理。

对于构件化软件而言,构造适度函数首先要对构件化软件的每个构件建立标记函数,此标记函数用作唯一的标识,并对相应构件加以识别。假设某构件化软件的构件组成是m件,每个构件接口为n个,则每个构件标记函数可记为:

K1=f1(x1,x2,…,xn)

K2=f2(x1,x2,…,xn)

Km=fm(x1,x2,…,xn)

在构建软件结束处插入的适度函数为:

F=U(K1)+U(K2)+……+U(Km),其中,x>0。

3 软件测试用例生成技术中应用蚁群算法的研究

3.1 遗传算法和蚁群算法

遗传算法和蚁群算法均是模拟自然生物系统的仿生算法体系,是指通过正反馈、分布式协作来寻找最优路径,从而优化生存状态,是一种仿生智能算法。遗传算法和蚁群算法两种算法间既有共同之处,又存在明显差异。其相同点为两种均属概率型的全局优化算法,具有组织性进化型,均属于智能控制算法等。但是,两种算法也有很多不同之处,如算法原理和实现形式等方面。

遗传算法和蚁群算法在科学研究中很多领域都有广泛研究,但是在软件测试方面研究较少,尤其是蚁群算法。如果将蚁群算法的思想融入遗传算法之中,将两种算法进行优势互补,合为遗传蚁群算法,这对其在软件测试方面的具有极大的研究价值。

3.2 改进遗传算法后测试用例自动生成技术

基于遗传蚁群算法的软件测试用例自动生成的方法,比单一的遗传算法和蚁群算法更具优势。要充分发挥其优势,需要对具体的遗传蚁群核算方法进行研究,不仅需要对模型方法进行模型构建,还要对适度函数进行适当改进。具体的算法流程包括建立蚁群网、蚁群和控制参数的初始化设计,随后利用建构的初始化网络进行信息的搜索,并根据蚂蚁移动规律更新信息,设计计算的最佳路径,最后对信息的发挥作用进行动态控制,同时对路径随机变异进行调控分析,最后找到最优路径。

遗传蚁群算法中,对软件测试数据生成,对参数编码、信息、适度函数和蚂蚁路径都做出了很多改进,强化了混合算法的搜索能力。在软件测试的具体应用中取得了良好成效。

4 结语

综上所述,软件测试是软件开发利用工程的一个重要环节,当今社会,软件系统开发规模不断扩大,软件测试对软件质量检测的意义重大。探索适合软件测试的方法,对软件的可行性与准确性进行科学有效测试,是当今社会发展中探究解决的课题。在今后的研究中应进一步加大对遗传蚁群算法应用于软件测试用例生成的研究,为软件开发提供科学参考。

参考文献

[1] 祁金佺.直觉模糊遗传算法在软件测试中的应用[J].自动化与仪器仪表,2013,5(12):98-100.

[2] 苗亮亮.基于遗传算法软件测试用例自动生成分析与研究[D].兰州交通大学,2013.

猜你喜欢
技术研究软件测试遗传算法
基于OBE的软件测试课程教学改革探索
EXCEL和VBA实现软件测试记录管理
关于软件测试技术应用与发展趋势研究
基于自适应遗传算法的CSAMT一维反演
一种基于遗传算法的聚类分析方法在DNA序列比较中的应用
基于遗传算法和LS-SVM的财务危机预测
软件测试工程化模型及应用研究
基于改进的遗传算法的模糊聚类算法