CN111352834B - 一种基于局部敏感哈希的自适应随机测试方法 - Google Patents
一种基于局部敏感哈希的自适应随机测试方法 Download PDFInfo
- Publication number
- CN111352834B CN111352834B CN202010115077.9A CN202010115077A CN111352834B CN 111352834 B CN111352834 B CN 111352834B CN 202010115077 A CN202010115077 A CN 202010115077A CN 111352834 B CN111352834 B CN 111352834B
- Authority
- CN
- China
- Prior art keywords
- test case
- test
- candidate
- dimension
- hash
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000010998 test method Methods 0.000 title claims abstract description 15
- 238000012360 testing method Methods 0.000 claims abstract description 245
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 24
- 238000000034 method Methods 0.000 claims description 45
- 238000009826 distribution Methods 0.000 claims description 26
- 230000008569 process Effects 0.000 claims description 17
- 230000003044 adaptive effect Effects 0.000 claims description 7
- 238000005259 measurement Methods 0.000 claims description 5
- 241000222120 Candida <Saccharomycetales> Species 0.000 claims description 4
- 239000004744 fabric Substances 0.000 claims 1
- 238000004364 calculation method Methods 0.000 description 6
- 238000002474 experimental method Methods 0.000 description 5
- 238000013522 software testing Methods 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000010845 search algorithm Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000009827 uniform distribution Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于局部敏感哈希的自适应随机测试方法,包括:1、确定输入域范围;2、在输入域中随机生成第一个测试用例并执行;3、随机生成k个候选测试用例构成候选测试用例集;4、采用FSCS‑ART选出下一个测试用例,执行并将其插入哈希树;5、重复执行3、4,直到得到已执行m个测试用例或找到错误。6、随机生成k个候选测试用例构成候选测试用例集;7、采用改进的局部敏感哈希算法选出下一个测试用例,执行并将其插入哈希树中。重复6、7直到找到程序错误。本发明的LSH‑ART与现有FSCS‑ART相比,在性能上,低维下LSH‑ART比FSCS‑ART略差一点,但高维下LSH‑ART比FSCS‑ART好;在时间开销上,无论是低维还是高维,LSH‑ART都比FSCS‑ART少,尤其在低失效率下,LSH‑ART的时间开销甚至不到FSCS‑ART的10%。
Description
技术领域
本发明提出了一种基于局部敏感哈希的自适应随机测试方法,用于提升传统FSCS-ART技术在高维的性能,降低传统FSCS-ART技术的时间开销,属于软件测试自动化的技术领域。
背景技术
随着软件市场的不断扩大,导致软件规模日趋增大,软件功能日益复杂,如何确保软件产品的质量成为了一个重要的研究热点,而软件测试无疑成为了确保软件质量的重要环节。针对软件测试,科研人员提出了许多软件测试技术,而其中,随机测试由于其概念简单且可自动化,受到了越来越多的关注。
随机测试可以检测出人们无法预料到的错误(而这种错误的检测看起来只能由随机测试做到),但是,对于随机测试的争议自始至终存在,而这种争议主要是由于,随机测试只是盲目的随机产生测试用例,从不考虑已经执行过的测试用例的信息,所以,科研人员对于随机测试的效能产生了极大的争议性。
同时,Chan等人发现,软件测试的表现受软件失效模式的影响,所谓失效模式就是指软件失效区域的分布模式。他们发现,软件失效区域往往呈现连续型分布。Chan等人总结提出了三种失效模式:(i)块状模式,如图1-(a)所示。(ii)条状模式,如图1-(b)所示。(iii)点状模式,如图1-(c)所示。同时,他们指出,块状和条状模式比点状模式更为普遍。
由于,失效区域是连续性的,有理由相信,不是失效区域的区域也应该是连续性的,所以,这给了科研人员很大的启发:当测试用例均匀分布,会增大测试用例找到失效区域的机会。基于这种启发,Chan等人提出了ART(自适应随机测试)方法。
传统的FSCS-ART(固定大小候选集的自适应随机测试)方法,通过不断计算距离,来达到测试用例的均匀分布,但是这种方法有很大的时间开销。时间开销主要来源于每个候选测试用例与每个已执行测试用例之间距离的计算,随着已执行的测试用例数量增长,计算开销快速增长。计算距离的过程,实质是计算每个候选测试用例与已执行测试用例的相似性的过程,最后得到每个测试用例与其相似性最小的已执行测试用例之间的距离,于是采用其他的效率较高的相似性求解算法来处理这个过程,从而提高自适应随机测试的性能与效率。为此,本发明提出来一种基于局部敏感哈希(Locality-Sensitive Hashing,LSH)的自适应随机测试方法。
最初人们通过查找查询对象的最近邻(Nearest Neighbor,NN)来解决相似性搜索问题,提出了一系列在低维数据空间表现良好的分支界限算法。但是当数据的维度增加时,这类算法的时间效率会下降到接近线性查找的程度,也就是所谓的“维度灾害”。一部分研究人员提出可以使用最近邻查询来解决相似性搜索问题,因为在大部分的应用场景下,使用近似结果一样可以很好满足应用需求。局部敏感哈希是近似最近邻搜索算法中最流行的一种,它有坚实的理论依据并且在高维数据空间中表现优异。
LSH是一种哈希算法,最早在1998年由Indyk提出。不同于在数据结构教材中对哈希算法的认识,哈希最开始是为了方便快速增删改查,冲突需要尽可能被消灭,而在这里LSH恰恰相反,它利用的正式哈希冲突加速检索,并且效果极其明显。LSH的基本思想就是用随机的哈希函数值保证相似的数据点以很高的概率发生冲突而能够被检测到。最初的LSH应用在海明空间,后来将其扩展到欧氏空间。欧氏局部敏感哈希(E2LSH,Exact Euclideanlocality sensitive Hashing)是位置LSH在欧氏空间的一种随机化实现方法,其基本原理是:利用基于p-稳定分布的位置敏感函数对高维数据进行降维映射,使原始空间中距离很近的两个点经映射操作后依然很近。如图2所示,三维空间中很近的点(圆球)投影到某个平面上它们的距离仍然很近,三维空间中距离很远的正方体投影到平面上距离仍然很远。
p-稳定分布的定义如下,对于一个实数集R上的分布D,如果存在P>=0,对任何n个实数v1,…,vn和n个满足D分布的变量X1,…,Xn,随机变量∑iviXi和(∑i|vi|p)1/pX有相同的分布,其中X是服从D分布的一个随机变量,则称D为一个p-稳定分布。可见p-稳定分布不是具体的分布,而是满足某条件的分布族。当p=1时,代表是标准柯西分布,密度函数为当p=2时,代表是标准正态分布(高斯分布),密度函数为
每个局部敏感哈希函数形式化定义为如下格式,ha,b(v):Rd→N,映射一个高维数据v(即一个测试用例)到一个整数集,其中a为一个d维特征向量,每一维都是独立的,随机的从p-稳定分布中选取的一个变量,b为从[0,w]范围内随机选取的一个变量,对于给定的a,b,设置哈希函数:
在上面LSH函数的形式化定义中,w被称为桶宽,对于确定的输入域,w能决定这个LSH函数最终分出的桶数量。当只对输入域生成一个LSH函数进行计算时,如果w的取值过小,LSH得出的结果可能很不准确,且甚至无法得到结果;如果w取值很大,则可能导致只能分为一个桶,使算法沦为传统FACS_ART,降低算法效率;此外,即使一开始w取得很合适,但是当已执行测试用例很多时,每个桶中的已执行测试用例个数也会很多,使得算法效率得不到足够提升。因此需要对算法进行改进。
随机选取一个哈希函数ha,b(v),则特征向量v1和v2落在同一桶中的概率该如何计算呢?首先定义c=||v1-v2||p,fp(t)为p-稳定分布的概率密度函数的绝对值,那么特征向量v1和v2映射到一个随机向量a上的距离是|a·v1-a·v2|<w,即|(v1-v2)a|<w,根据p-稳定分布的特性,||v1-v2||pX=|cX|<w,其中随机变量X满足p-稳定分布。可得其碰撞概率式中 表示特征向量v1和v2对应的哈希值相等的概率。当t∈[-w,0]时,概率与[0,w]一致,所以乘以2;其他范围概率均为0。p(c,w)只有在p=1(即曼哈顿距离,f(t)为标准柯西分布的概率密度函数)和2(即欧式距离,f(t)为标准正态分布的概率密度函数)时有解析解,本发明只关心欧氏空间,此时
发明内容
为了能够有效地提高随机测试方法的效率,本发明提出了一种基于局部敏感哈希的自适应随机测试方法。本发明对确定的输入域生成了多个LSH函数进行计算,多个LSH函数和分成的桶形成一棵哈希树,如图3所示,图中圆代表超级桶,正方形表示普通桶。具体做法是先根据输入域的维度个数和各个维度的范围计算出一个足够大的w(即桶宽),使得所有的输入域内的测试用例都尽可能分到一个桶中。具体方法为:根据输入域范围计算出输入域中两个最远测试用例间的欧氏距离(假设一个d维输入域每个维度的范围为r1,…,rd,则所求距离为(∑i|ri|2)1/2),令上面碰撞概率公式p(c,w)中c等于这个距离,并令碰撞概率尽可能等于1(不可能取到1,实际程序令其等于0.95),最后根据碰撞概率公式反解出w。使用这个w生成第一个LSH函数,并将此LSH作为树根结点,树根结点对应一个超级桶。后续已执行测试用例通过这个函数计算出哈希值,存到相应的桶中,这些桶作为根结点的孩子结点插到树上,同时使用w/2生成新的LSH函数放到每个孩子结点中。当有桶中已执行测试用例个数达到一个阈值时,则将这个桶升级为超级桶,该桶中的测试用例根据结点中的LSH重新计算哈希值,存入到下一层的结点中。
另外,本发明还与FSCS-ART方法进行了比较,验证了提出方法的有效性和先进性。
本发明的技术方案包括如下步骤:
步骤1,根据被测程序,确定输入域的维度和范围,初始化哈希树(其实质为已执行测试用例集)及Candidate(候选测试用例)数组;
步骤2,在输入域范围内随机生成第一个测试用例,如果测试用例检测到程序错误,测试结束,并反馈相关信息,否则将该测试用例插入哈希树并转到步骤3;
步骤3,随机生成10个候选测试用例,保存进候选测试用例集;
步骤4,计算每个候选测试用例与已执行测试用例的相似性。选择相似性最低的候选测试用例作为下一个测试用例,执行该测试用例,如果测试用例检测到程序错误,测试结束,并反馈相关信息,否则将该测试用例插入哈希树并转到步骤5;
步骤5,若已执行测试个数大于m,则转到步骤6,否则转到步骤3;
步骤6,随机生成10个候选测试用例,保存进候选测试用例集;
步骤7,计算每个候选测试用例与所在桶的已执行测试用例的相似性。选择相似性最低的候选测试用例作为下一个测试用例,执行该测试用例,如果测试用例检测到程序错误,测试结束,并反馈相关信息,否则将该测试用例插入哈希树并转到步骤6。
进一步,所述步骤1的具体过程如下:
步骤1.1,根据前期的软件设计文档,确定软件的输入域范围(即具有合理输入的集合);
步骤1.2,根据步骤1.1确定的输入域,确定软件的维度,维度和输入域相关,当输入域的参数个数为d,输入域的维度为d;
步骤1.3,根据输入域维度与输入域范围,令c等于输入域中两个最远测试用例v1和v2间的欧氏距离,令碰撞概率为0.95,根据公式 求出哈希函数的参数w,式中P(c,w)表示这是一个关于c和w的函数,表示v1和v2落到一个桶中的概率,fp(t)表示标准正态分布的概率密度函数;随机生成一个维度与输入域维度相同且各维度相互独立同分布的向量a,随机生成一个属于0~w的数b,得到根结点的LSH函数:然后创建哈希树的根结点,使用这个结点作为参数声明一个哈希树对象实现初始化哈希树;声明一个空的ArrayList对象实现初始化Candidate数组,大小固定为10。
进一步,所述步骤2的具体过程如下:
步骤2.1,根据输入域的维度和每个维度的范围值,随机产生第一个测试用例;
步骤2.2,将该测试用例测试软件,如果实际输出结果与预期输出结果一致,认为没有发现软件错误,转到步骤2.3,如果不一致,认为软件存在错误,测试结束;
步骤2.3,根据根结点中的LSH函数计算出该测试用例的哈希函数值,在子结点中找到哈希值与之相等的桶,若未找到有哈希值与其相等的结点,则转到步骤2.4,否则转到2.5;
步骤2.4,此时需要新建一个结点作为前述根结点的子结点插入哈希树中,取根节点LSH函数中的w/2作为新的LSH函数的w,随机生成一个维度与输入域维度相同且各维度相互独立同分布的向量a,随机生成一个属于0~w的数b,得到新结点的LSH函数,哈希值为该测试用例利用根节点的LSH函数计算得到的哈希值,将该测试用例存入该结点的数据域中,结束步骤2;
步骤2.5,判断找到的结点是否为超级桶,如果是超级桶,则将该结点作为根结点,转到步骤2.3,如不是则将该测试用例存入该桶,并判断该桶中测试用例个数是否会等于m(m为一个阈值,当一个桶中测试用例数量超过这个值则需要将这个桶升级为超级桶),若不会则结束步骤2,否则转到步骤2.6;
步骤2.6,将普通桶升级为超级桶的实质为从这个桶中取出所有测试用例,将每个测试用例插入到以本结点为根结点的子树中。
经实证研究分析,考虑算法性能与时间开销,在m=60时,综合性能最佳。以上步骤2.3~2.6便是将一个测试用例存入以某个结点为根结点的哈希树中的过程,步骤4与步骤6中的测试用例存入哈希树的过程与此相同。
进一步,所述步骤4的具体过程如下:
步骤4.1,本发明选用相似性度量为欧式距离,即距离越近,相似性越高。可根据实际程序选用合适的度量;
步骤4.2,计算每个候选测试用例与每个已执行测试用例的距离,选择最小距离为该候选测试用例的相似性值,选择候选测试用例中相似性值最低(最小距离最大)的测试用例为待测用例。
进一步,所述步骤7的具体过程如下:
步骤7.1,对每个候选测试用例从哈希树的根结点开始计算其哈希值,定位到下一层的哈希值与其相同的桶中,算法将桶分为普通桶(桶中已执行测试用例个数小于m)和超级桶(桶中已执行测试用例个数大于等于m)。若该桶不为普通桶(即为超级桶)则再用该结点的LSH函数计算哈希值,继续向下追溯,直到找到这个测试用例所属的普通桶(简称为该测试用例的“所属桶”);
步骤7.2,用与步骤4相同的度量计算出每个候选测试用例与其所属桶中每个已执行测试用例的距离,选择最小距离为该候选测试用例的相似性值,选择候选测试用例中相似性值最低(最小距离最大)的测试用例为待测用例。
本发明的有益效果:
本发明构建了一种基于局部敏感哈希的自适应随机测试方法,用于提升FSCS-ART在高维下的算法性能,减少FSCS-ART算法计算候选测试用例与已执行测试用例相似性的计算开销。该方法的时间开销相比于FSCS-ART有很大的降低,且在高维下性能明显优于FSCS-ART。
附图说明
图1是三种失效模式;
图2是三维空间中的点投影到某平面上的示意图;
图3是多LSH函数示意图;
图4是FSCS-ART方法的流程图;
图5是本发明方法的流程图。
具体实施方式
本发明提出了一种基于局部敏感哈希(Locality-Sensitive Hashing,LSH)的自适应随机测试方法,通过使用局部敏感哈希算法,把已执行的测试用例放到一棵哈希树中,树的每个结点对应一个“桶”,在计算候选集中每个测试用例与已执行测试用例的最小距离时将计算范围缩小到一个“桶”中,降低了自适应随机测试中候选测试用例与已执行测试用例之间的计算开销,提高自适应随机测试的时间性能。本发明主要包括:1、确定输入域的范围;2、在输入域中随机生成第一个测试用例并执行之;3、随机生成k个候选测试用例构成候选测试用例集;4、采用FSCS-ART算法选出下一个测试用例,执行之并将其插入哈希树中;5、重复执行3、4,直到得到m个已执行测试用例或找到程序错误。6、随机生成k个候选测试用例构成候选测试用例集;7、采用改进的局部敏感哈希算法选出下一个测试用例,执行之并将其插入哈希树中。重复6、7,直到找到程序错误。通过实验验证,本发明的方法与FSCS-ART相比,就性能而言,低维下LSH-ART比FSCS-ART略差一点,但高维下LSH-ART要比FSCS-ART好;就时间开销而言,无论是低维还是高维,LSH-ART都比FSCS-ART少,尤其是在低失效率下,LSH-ART的时间开销甚至不到FSCS-ART的10%。
下面结合附图和实施案例对本发明作进一步说明,应指出的是,所描述的实施案例仅旨在便于对本发明的理解,而对其不起任何限定作用。
本发明以降低FSCS-ART方法时间开销为目的,提供一种基于局部敏感哈希的自适应随机测试方法,同时尽可能提高原算法高性能,有效地检测软件bug。为此验证本发明的方法,采用2维和10维仿真实验对其进行说明。
如图5所示,本发明提出的算法包含如下步骤:
步骤1,生成2维/10维作为输入域,其中每个维度的范围为(0-1),同时生成失效率为θ(通过实验预先设置)的正方形失效区域,生成第一个LSH函数并初始化哈希树和候选测试用例数组;
步骤2,在输入域范围内随机生成第一个测试用例,如果测试用例检测到程序错误,测试结束,并反馈相关信息,否则将该测试用例存入哈希树,然后转到步骤3;
步骤3,随机生成10个候选测试用例,保存进候选测试用例集;
步骤4,计算每个候选测试用例与已执行测试用例的相似性。选择相似性最低的候选测试用例作为下一个测试用例,执行该测试用例,如果测试用例检测到程序错误,测试结束,并反馈相关信息,否则将该测试用例存入哈希树,然后转到步骤5;
步骤5,若已执行测试个数大于m,则转到步骤6,否则转到步骤3;
步骤6,随机生成10个候选测试用例,保存进候选测试用例集;
步骤7,计算每个候选测试用例与所在桶的已执行测试用例的相似性。选择相似性最低的候选测试用例作为下一个测试用例,执行该测试用例,如果测试用例检测到程序错误,测试结束,并反馈相关信息,否则将该测试用例插入哈希树并转到步骤6。
上述步骤中步骤4、5实质是FSCS-ART的过程,本发明提出的LSH-ART算法需要先有一定数量的已执行测试用例(即使用第一个LSH函数计算后分出的每个桶中至少需要含有一个已测试用例),这些测试用例在最开始的时候使用FSCS-ART计算得出。需要使用FSCS-ART计算得到的已执行测试用例数量为m,在大多数情况m远小于仅仅使用FSCS-ART算法计算时发现第一个错误所需的测试用例数量,因此这对LSH-ART的效率影响并不大。
上述步骤1的具体步骤如下:
步骤1.1,根据前期的软件设计文档,确定软件的输入域范围(即具有合理输入的集合),在该实例中,产生一个2维/10维的输入域,输入域在每个维度上的范围都为(0-1);
步骤1.2,根据步骤1.1确定的输入域,确定软件的维度,维度和输入域相关,由于该输入域涉及两个或者十个参数,所以维度为2或者10;
步骤1.3,根据步骤1.1产生的输入域,求得输入域的面积(设为S),在输入域中随机产生一个正方形的、面积为θ*S的失效域。
步骤1.4,根据输入域维度与输入域范围,反求出符合要求的哈希函数参数w,随机生成一个维度与输入域维度相同且各维度相互独立的向量a,随机生成一个属于0~w的数b,得到根结点的LSH函数:其中v表示输入域中的一个测试用例,然后创建哈希树的根结点,初始化哈希树;初始化Candidate数组,大小固定为10。
上述步骤2的具体步骤如下:
步骤2.1,根据输入域的维度和每个维度的范围值,随机产生第一个测试用例;
步骤2.2,判断该测试用例是否在失效区域中,如果不在失效区域中,认为没有发现错误,转到步骤2.3,如果位于失效区域中,认为存在错误,测试结束;
步骤2.3,根据根结点中的LSH函数计算出该测试用例的哈希值,在子结点中找到哈希值与之相等的桶,若未找到有哈希值与其相等的结点,则转到步骤2.4,否则转到2.5;
步骤2.4,此时需要新建一个结点作为前述根结点的子结点插入哈希树中,取根节点LSH函数中的w/2作为新的LSH函数的w,随机生成一个维度与输入域维度相同且各维度相互独立的向量a,随机生成一个属于0~w的数b,得到新结点的LSH函数,新结点的哈希值为该测试用例利用根节点的LSH函数计算得到的哈希值,将该测试用例存入该结点的数据域中,结束步骤2;
步骤2.5,判断找到的结点是否为超级桶,如果是超级桶,则将该结点作为根结点,转到步骤2.3,如不是则将该测试用例存入该桶,并判断该桶中测试用例个数是否会等于m,若不会则结束步骤2,否则转到步骤2.6;
步骤2.6,将普通桶升级为超级桶的实质为从这个桶中取出所有测试用例,将每个测试用例插入到以本结点为根结点的子树中。
经实证研究分析,考虑算法性能与时间开销,在m=60时,综合性能最佳。以上步骤2.3~2.6便是将一个测试用例存入以某个结点为根结点的哈希树中的过程,步骤4与步骤6中的将一个测试用例存入哈希树中的过程与此相同。
上述步骤4的具体步骤如下:
步骤4.1,本发明选用相似性度量为欧式距离,即距离越近,相似性越高;
步骤4.2,计算每个候选测试用例与每个已执行测试用例的距离,选择最小距离为该候选测试用例的相似性值,选择候选测试用例中相似性值最低(最小距离最大)的测试用例为待测用例。
上述步骤7的具体步骤如下:
步骤7.1,对每个候选测试用例从哈希树的根结点开始计算其哈希值,定位到下一层的哈希值与其相同的桶中,若该桶不为普通桶(即为超级桶)则再用该结点的LSH函数计算哈希值,继续向下追溯,直到找到这个测试用例所属的普通桶(简称为该测试用例的“所属桶”);
步骤7.2,计算出每个候选测试用例与其所属桶中每个已执行测试用例的欧式距离,选择最小距离为该候选测试用例的相似性值,选择候选测试用例中相似性值最低(最小距离最大)的测试用例为待测用例。
本发明旨在保证并提高测试效率的基础上,减少测试用例生成的时间,在实际的软件测试过程中,测试人员往往在发现第一个bug时,就开始了程序修复,所以,将发现第一个错误所需的测试用例数量作为检查标准就具有重要的实际意义。将测试过程中发现第一个错误所需要的测试用例的平均值作为衡量标准,称之为F-measure,同样,将测试过程中发现第一个错误所需要的测试用例的平均时间作为衡量标准,称之为F-time,此外,ART的另一个度量(称为F-ratio)可以进一步定义为:F-ratio=FART/FRT,其中FART和FRT分别是ART方法和RT方法的F-measure。对于本发明的方法,采用5%的准确率和95%的置信水平,根据中心极限定理,所需实验次数至少为3000次。
结果分析
本发明在2维和10维下进行了块状失效区域的仿真实验,选取失效率θ分别为0.005、0.001、0.000、0.0001,并设置了FSCS_ART的对照实验,FSCS_ART算法流程如图4所示。得到的F-ratio结果见表1,同时在2维情况下,对于两种算法的时间开销情况进行了比较,结果见表2。
表1F-ratio实验结果对比
表2F-time实验结果对比
最终的实验结果显示,同比FSCS-ART方法,就性能而言,低维下LSH-ART比FSCS-ART略差一点,但高维下LSH-ART要比FSCS-ART好;就时间开销而言,无论是低维还是高维,LSH-ART都比FSCS-ART少,尤其是在低失效率下,LSH-ART的时间开销甚至不到FSCS-ART的10%。
上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技术所创的等效方式或变更均应包含在本发明的保护范围之内。
Claims (5)
1.一种基于局部敏感哈希的自适应随机测试方法,其特征在于,包括如下步骤:
步骤1,根据被测程序,确定输入域的维度和范围,初始化哈希树,即已执行测试用例集,以及初始化Candidate数组,即候选测试用例集;
具体过程如下:
步骤1.1,根据前期的软件设计文档,确定软件的输入域范围,即具有合理输入的集合;
步骤1.2,根据步骤1.1确定的输入域,确定软件的维度,维度和输入域相关,当输入域的参数为d,输入域的维度为d;
步骤1.3,根据输入域维度与输入域范围,求出哈希函数的参数w,随机生成一个维度与输入域维度相同且各维度相互独立同分布的向量a,随机生成一个属于0~w的数b,得到根结点的LSH函数:其中v表示输入域中的一个测试用例,然后创建哈希树的根结点,初始化哈希树;初始化Candidate数组;
所述步骤1.3中求出根结点哈希函数的参数w的方法为:
根据输入域范围计算出输入域中两个最远测试用例间的欧氏距离,假设一个d维输入域每个维度的范围为r1,…,rd,则所求距离为(∑i|ri|2)1/2,令碰撞概率公式p(c,w)中c等于这个距离,并令碰撞概率等于1,最后根据碰撞概率公式 求出哈希函数的参数w;
所述步骤1.3中初始化哈希树、初始化Candidate数组的方法为:
随机生成一个维度与输入域维度相同且各维度相互独立同分布的向量a,随机生成一个属于0~w的数b,得到根结点的LSH函数:式中v表示输入域中的一个向量(即测试用例),然后创建哈希树的根结点,使用这个结点作为参数声明一个哈希树对象实现初始化哈希树;声明一个空的ArrayList对象实现初始化Candidate数组,数组大小固定为10;
步骤2,在输入域范围内随机生成第一个测试用例,如果测试用例检测到程序错误,测试结束,并反馈相关信息,否则将该测试用例插入哈希树并转到步骤3;
具体过程如下:
步骤2.1,根据输入域的维度和每个维度的范围值,随机产生第一个测试用例;
步骤2.2,将该测试用例测试软件,如果实际输出结果与预期输出结果一致,认为没有发现软件错误,转到步骤2.3,如果不一致,认为软件存在错误,测试结束;
步骤2.3,根据根结点中的LSH函数计算出该测试用例的哈希值,在子结点中找到哈希值与之相等的桶,若未找到有哈希值与其相等的结点,则转到步骤2.4,否则转到2.5;
步骤2.4,新建一个结点作为前述根结点的子结点插入哈希树中,取根节点LSH函数中的w/2作为新的LSH函数的w,随机生成一个维度与输入域维度相同且各维度相互独立同分布的向量a,随机生成一个属于0~w的数b,得到新结点的LSH函数,哈希值为该测试用例利用根节点的LSH函数计算得到的哈希值,将该测试用例存入该结点的数据域中,结束步骤2;
步骤2.5,判断找到的结点是否为超级桶,如果是超级桶,则将该结点作为根结点,转到步骤2.3,如不是则将该测试用例存入该桶,并判断该桶中测试用例个数是否等于m,若不等于则结束步骤2,否则转到步骤2.6;m为一个阈值,当一个桶中测试用例数量超过这个值则需要将这个桶升级为超级桶;
步骤2.6,将普通桶升级为超级桶的方法为从这个桶中取出所有测试用例,将每个测试用例插入到以本结点为根结点的子树中;
步骤3,随机生成k个候选测试用例,保存进候选测试用例集;
步骤4,计算每个候选测试用例与已执行测试用例的相似性,选择相似性最低的候选测试用例作为下一个测试用例,执行该测试用例,如果测试用例检测到程序错误,测试结束,并反馈相关信息,否则将该测试用例插入哈希树并转到步骤5;
步骤5,若已执行测试用例个数大于m,则转到步骤6,否则转到步骤3;
步骤6,随机生成k个候选测试用例,保存进候选测试用例集;
步骤7,计算每个候选测试用例与所在桶的已执行测试用例的相似性,选择相似性最低的候选测试用例作为下一个测试用例,执行该测试用例,如果测试用例检测到程序错误,测试结束,并反馈相关信息,否则将该测试用例插入哈希树并转到步骤6。
2.根据权利要求1所述的一种基于局部敏感哈希的自适应随机测试方法,其特征在于,m的数值设置为60,k的数值设置为10。
3.根据权利要求1所述的一种基于局部敏感哈希的自适应随机测试方法,其特征在于,所述步骤4的具体过程如下:
步骤4.1,选择相似性度量为欧式距离,距离越近,相似性越高;
步骤4.2,计算每个候选测试用例与每个已执行测试用例的距离,选择最小距离为该候选测试用例的相似性值,选择候选测试用例中相似性值最低的测试用例为待测用例。
4.根据权利要求1所述的一种基于局部敏感哈希的自适应随机测试方法,其特征在于,所述步骤7的具体过程如下:
步骤7.1,对每个候选测试用例从哈希树的根结点开始计算其哈希值,定位到下一层的哈希值与其相同的桶中,算法将桶分为普通桶和超级桶;若该桶不为普通桶,则再用该结点的LSH函数计算哈希值,继续向下追溯,直到找到这个测试用例所属的普通桶;
步骤7.2,用与步骤4相同的度量计算出每个候选测试用例与其所属桶中每个已执行测试用例的距离,选择最小距离为该候选测试用例的相似性值,选择候选测试用例中相似性值最低(最小距离最大)的测试用例为待测用例。
5.根据权利要求4所述的一种基于局部敏感哈希的自适应随机测试方法,其特征在于,所述普通桶是指桶中已执行测试用例个数小于m,所述超级桶是指桶中已执行测试用例个数大于等于m。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010115077.9A CN111352834B (zh) | 2020-02-25 | 2020-02-25 | 一种基于局部敏感哈希的自适应随机测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010115077.9A CN111352834B (zh) | 2020-02-25 | 2020-02-25 | 一种基于局部敏感哈希的自适应随机测试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111352834A CN111352834A (zh) | 2020-06-30 |
CN111352834B true CN111352834B (zh) | 2023-06-09 |
Family
ID=71192365
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010115077.9A Active CN111352834B (zh) | 2020-02-25 | 2020-02-25 | 一种基于局部敏感哈希的自适应随机测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111352834B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112148592B (zh) * | 2020-08-31 | 2024-05-14 | 江苏大学 | 一种基于有利点树划分多维输入域空间的自适应随机测试方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009149815A1 (fr) * | 2008-05-19 | 2009-12-17 | Johnson Controls Technology Company | Procede d'elaboration automatique de cas de test pour la verification d'au moins une partie d'un logiciel |
CN104035949B (zh) * | 2013-12-10 | 2017-05-10 | 南京信息工程大学 | 一种基于局部敏感哈希改进算法的相似性数据检索方法 |
CN107992404A (zh) * | 2016-10-26 | 2018-05-04 | 中兴通讯股份有限公司 | 一种软件自动测试方法及装置 |
CN109359439B (zh) * | 2018-10-26 | 2019-12-13 | 北京天融信网络安全技术有限公司 | 软件检测方法、装置、设备及存储介质 |
-
2020
- 2020-02-25 CN CN202010115077.9A patent/CN111352834B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN111352834A (zh) | 2020-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108932301B (zh) | 数据填充方法及装置 | |
CN107169557A (zh) | 一种对布谷鸟优化算法进行改进的方法 | |
CN110221957B (zh) | 一种基于迭代区域均分与定位的自适应随机测试方法 | |
KR20110096236A (ko) | 클러스터 간 상호정보를 이용한 클러스터링 장치 및 방법 | |
CN111352834B (zh) | 一种基于局部敏感哈希的自适应随机测试方法 | |
CN109872330A (zh) | 一种改进狮群优化的二维Otsu快速图像分割方法 | |
CN111143195B (zh) | 一种基于候选测试用例集迭代的自适应随机测试方法 | |
CN115390565A (zh) | 一种基于改进d星算法的无人艇动态路径规划方法与系统 | |
CN110415339B (zh) | 计算输入三维形体间的匹配关系的方法和装置 | |
CN115859805A (zh) | 基于混合加点准则的自适应序贯试验设计方法和装置 | |
CN118036678B (zh) | 自动化注意力稀疏化方法、装置、电子设备及存储介质 | |
CN115438081A (zh) | 一种海量船舶位置点云多级聚合与实时更新方法 | |
CN109074348A (zh) | 用于对输入数据集进行迭代聚类的设备和迭代方法 | |
CN113094899B (zh) | 一种随机潮流计算方法、装置、电子设备及存储介质 | |
CN103336963A (zh) | 一种图像特征提取的方法及装置 | |
CN110146841B (zh) | 一种提高阵列波达方向估计性能的优化方法 | |
Koh et al. | An efficient approach for mining fault-tolerant frequent patterns based on bit vector representations | |
CN110309139B (zh) | 高维近邻对搜索方法和系统 | |
CN112132286B (zh) | 基于Grover算法的大数据集搜索多个目标项的方法 | |
CN105787107A (zh) | 一种大数据冗余检测方法 | |
Zhang et al. | Experimental Comparison of Graph Edit Distance Computation Methods | |
CN116051591B (zh) | 一种基于改进布谷鸟搜索算法的带钢图像阈值分割方法 | |
CN116089317B (zh) | 基于路径相似表与个体迁移的多路径测试方法与系统 | |
CN113345538B (zh) | 一种基于动态选取训练集的材料性能预测方法 | |
US11620269B2 (en) | Method, electronic device, and computer program product for data indexing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |