一種基于模糊聚類的多錯(cuò)誤定位方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于計(jì)算機(jī)技術(shù)領(lǐng)域,涉及軟件測(cè)試技術(shù)中的錯(cuò)誤定位,尤其是一次性對(duì) 多個(gè)錯(cuò)誤進(jìn)行定位,為一種基于模糊聚類的多錯(cuò)誤定位方法。
【背景技術(shù)】
[0002] 在軟件的測(cè)試過(guò)程中為了找出軟件中的錯(cuò)誤,有時(shí)候開(kāi)發(fā)者要人工審查大量的測(cè) 試用例,判斷其是否執(zhí)行失敗。然后通過(guò)審查執(zhí)行失敗的測(cè)試用例幫助找到軟件中出錯(cuò)根 源,這個(gè)過(guò)程叫做錯(cuò)誤定位。事實(shí)上,錯(cuò)誤定位的過(guò)程是軟件測(cè)試當(dāng)中最消耗時(shí)間的環(huán)節(jié)之 〇
[0003] 在過(guò)去的十年當(dāng)中,很多技術(shù)被引入到錯(cuò)誤定位領(lǐng)域,針對(duì)錯(cuò)誤定位方法的研究 取得了巨大的進(jìn)展,其中最為廣泛使用并且效果最好的方法是聚類分析程序執(zhí)行剖面。
[0004] 聚類分析是一種大量的對(duì)象發(fā)現(xiàn)集群的多元分析方法,如一組執(zhí)行剖面。每個(gè)執(zhí) 行剖面的特征被一個(gè)屬性值向量所標(biāo)記。聚類分析的目的是劃分具有很高的相似性的對(duì)象 在同一集群的集群,而差異性大的對(duì)象被放置在不同的集群。
[0005] 不足的是,許多錯(cuò)誤定位技術(shù)都是基于一個(gè)不可靠的假設(shè):程序中只有一個(gè)錯(cuò)誤。 在實(shí)際情況中,多個(gè)錯(cuò)誤導(dǎo)致一個(gè)測(cè)試用例的失敗的例子經(jīng)常發(fā)生,這意味著一個(gè)測(cè)試用 例可以定位多個(gè)錯(cuò)誤?,F(xiàn)有技術(shù)提到的應(yīng)用在錯(cuò)誤定位上的聚類技術(shù)都是"硬聚類",每個(gè) 元素只屬于一個(gè)類簇,不僅無(wú)法對(duì)多個(gè)錯(cuò)誤進(jìn)行準(zhǔn)確定位,而且會(huì)給錯(cuò)誤定位結(jié)果帶來(lái)誤 差,使得結(jié)果不準(zhǔn)確或者遺漏錯(cuò)誤。事實(shí)上,在多個(gè)錯(cuò)誤存在時(shí),"硬類聚"是不可行的。軟 件測(cè)試人員無(wú)法分析這種情況。傳統(tǒng)的單錯(cuò)誤定位方法有很大的局限性,軟件測(cè)試當(dāng)中非 常需要一種針對(duì)多錯(cuò)誤程序來(lái)進(jìn)行錯(cuò)誤定位的新方法。
【發(fā)明內(nèi)容】
[0006] 本發(fā)明要解決的問(wèn)題是:在程序有多個(gè)錯(cuò)誤的時(shí)候,傳統(tǒng)意義上的錯(cuò)誤定位技術(shù) 失效,定位結(jié)果不準(zhǔn)確。然而,在實(shí)際應(yīng)用當(dāng)中,經(jīng)常遇到多個(gè)錯(cuò)誤包含在一個(gè)程序當(dāng)中的 情況,這樣的情況無(wú)法用傳統(tǒng)的錯(cuò)誤定位技術(shù)來(lái)定位錯(cuò)誤。本發(fā)明要解決的就是在多錯(cuò)誤 的情況下如何進(jìn)行準(zhǔn)確的錯(cuò)誤定位。
[0007] 本發(fā)明的技術(shù)方案為:一種基于模糊聚類的多錯(cuò)誤定位方法,程序當(dāng)中存在至少 一個(gè)錯(cuò)誤,使用模糊聚類技術(shù)對(duì)程序特征信息進(jìn)行聚類,然后結(jié)合缺陷定位技術(shù),依據(jù)聚類 結(jié)果對(duì)程序錯(cuò)誤進(jìn)行定位,包括以下步驟:
[0008] 1)對(duì)程序運(yùn)行所有測(cè)試用例,收集執(zhí)行剖面,執(zhí)行剖面中的每一個(gè)屬性都代表程 序當(dāng)中的一個(gè)函數(shù),將執(zhí)行剖面用向量來(lái)表示,向量中的數(shù)值代表屬性對(duì)應(yīng)的函數(shù)是否被 調(diào)用;
[0009] 2)模糊聚類,采用FCM聚類方法,輸入為由執(zhí)行剖面得到的向量集合X、設(shè)定的類 簇?cái)?shù)量c和距離函數(shù),距離函數(shù)采用歐式距離;聚類算法最終返回一個(gè)關(guān)系矩陣,所述關(guān)系 矩陣的行表示某個(gè)執(zhí)行剖面分別屬于c個(gè)類簇的可能性,如果可能性大于設(shè)定的閾值,就 認(rèn)為執(zhí)行剖面屬于這個(gè)類簇,一個(gè)執(zhí)行剖面可以屬于多個(gè)類簇;
[0010] 3)錯(cuò)誤定位,使用Spectrum-Based錯(cuò)誤定位技術(shù)來(lái)測(cè)試各個(gè)類簇,根據(jù)和測(cè)試用 例相關(guān)的函數(shù)的四個(gè)覆蓋參數(shù)來(lái)進(jìn)行計(jì)算,四個(gè)覆蓋參數(shù)分別是
[0011] anp:沒(méi)有執(zhí)行這個(gè)函數(shù)并且通過(guò)的測(cè)試用例個(gè)數(shù);
[0012] anf:沒(méi)有執(zhí)行這個(gè)函數(shù)并且失效的測(cè)試用例個(gè)數(shù);
[0013] aep:執(zhí)行這個(gè)函數(shù)并且通過(guò)的測(cè)試用例個(gè)數(shù);
[0014] aef:執(zhí)行這個(gè)函數(shù)并且失效的測(cè)試用例個(gè)數(shù);
[0015] 四個(gè)參數(shù)之和等于測(cè)試用例集的大小,根據(jù)采用的排序指標(biāo)為每一個(gè)函數(shù)計(jì)算權(quán) 重,所述權(quán)重代表了函數(shù)出錯(cuò)可能性的大小,按照函數(shù)出錯(cuò)可能性從大到小排列,獲取風(fēng)險(xiǎn) 排列表,找出最有可能出錯(cuò)的位置。
[0016] 在軟件錯(cuò)誤定位領(lǐng)域的研究中,研究人員都假設(shè)程序只有一個(gè)錯(cuò)誤,在此前提下 進(jìn)行錯(cuò)誤定位。這樣的假設(shè)有助于定位方法的簡(jiǎn)化,容易得出結(jié)果。然而,實(shí)際情況是,在 工業(yè)界中,當(dāng)程序包含多個(gè)錯(cuò)誤的時(shí)候,錯(cuò)誤之間會(huì)對(duì)彼此產(chǎn)生影響,使用傳統(tǒng)的單錯(cuò)誤定 位方法來(lái)定位包含多個(gè)錯(cuò)誤的程序,會(huì)產(chǎn)生遺漏,造成錯(cuò)誤定位的結(jié)果不準(zhǔn)確,使得軟件測(cè) 試效率低下??梢?jiàn)基于程序只有一個(gè)錯(cuò)誤這個(gè)不符合實(shí)際的假設(shè)的方法并沒(méi)有給程序測(cè)試 人員帶來(lái)實(shí)際的幫助。本發(fā)明在現(xiàn)有技術(shù)基礎(chǔ)上打破了現(xiàn)有錯(cuò)誤定位方法的單錯(cuò)誤假設(shè), 采用FCM模糊聚類方法,沒(méi)有把一個(gè)執(zhí)行剖面歸于某個(gè)特定的類簇,而是認(rèn)為一個(gè)執(zhí)行剖 面與很多類簇都有關(guān)系,在實(shí)現(xiàn)中用概率來(lái)表示這個(gè)關(guān)系的大小。多個(gè)類簇表征了程序中 的多個(gè)錯(cuò)誤,這些錯(cuò)誤互相影響,使得一個(gè)執(zhí)行剖面可能屬于多個(gè)類簇,因此,本發(fā)明方法 針對(duì)多錯(cuò)誤互相影響的問(wèn)題,設(shè)計(jì)了用于多錯(cuò)誤定位的方法,而不會(huì)產(chǎn)生現(xiàn)有技術(shù)的一個(gè) 執(zhí)行剖面只與一個(gè)錯(cuò)誤相關(guān)的缺陷。軟件測(cè)試人員可以借助本發(fā)明方法同時(shí)有效的自動(dòng)定 位多個(gè)錯(cuò)誤。本發(fā)明方法更適用于當(dāng)前軟件測(cè)試的實(shí)際情況,具有良好的實(shí)用性和定位精 度。
【附圖說(shuō)明】
[0017] 圖1為本發(fā)明的方法框架示意圖。
[0018] 圖2為本發(fā)明基于模糊聚類的多錯(cuò)誤定位技術(shù)和現(xiàn)有技術(shù)的基于硬聚類的錯(cuò)誤 定位技術(shù)實(shí)驗(yàn)效果對(duì)比圖。
【具體實(shí)施方式】
[0019] 本發(fā)明使用的主要技術(shù)有:fuzzy c-means(FCM)聚類算法,錯(cuò)誤定位(fault localization)技術(shù)和對(duì)于聚類結(jié)果的評(píng)估技術(shù)(Evaluation Metric)。下面介紹方法的 流程并具體說(shuō)明本發(fā)明所使用的各項(xiàng)技術(shù)的實(shí)施方式。
[0020] 首先,收集頻譜信息。本發(fā)明使用的錯(cuò)誤定位技術(shù)主要是基于頻譜的錯(cuò)誤定位技 術(shù)。在使用此技術(shù)之前,首先需要收集程序執(zhí)行頻譜。將測(cè)試用例集輸入到程序中,對(duì)程序 運(yùn)行所有測(cè)試用例,同時(shí)記錄程序執(zhí)行過(guò)程中的函數(shù)調(diào)用情況以及執(zhí)行結(jié)果,收集得到執(zhí) 行剖面,執(zhí)行剖面中的每一個(gè)屬性都代表程序當(dāng)中的一個(gè)函數(shù),將執(zhí)行剖面用向量來(lái)表示, 向量中的數(shù)值代表屬性對(duì)應(yīng)的函數(shù)是否被調(diào)用。在本發(fā)明實(shí)施例中,設(shè)在某一次程序執(zhí)行 過(guò)程中,某個(gè)函數(shù)調(diào)用則對(duì)應(yīng)向量位取值為1,沒(méi)有調(diào)用則取值為0。
[0021] 然后使用模糊聚類技術(shù)對(duì)程序特征信息進(jìn)行聚類,最后結(jié)合缺陷定位技術(shù),依據(jù) 聚類結(jié)果對(duì)程序錯(cuò)誤進(jìn)行定位。
[0022] 1.FCM聚類算法
[0023] FCM聚類算法是一種使用最廣泛的模糊聚類算法,由Bezdek于1981年提出。
[0024] 算法流程如下:
[0025] 1)FCM算法的輸入:
[0026] A、類簇的數(shù)量c;
[0027] B、一個(gè)指定的模糊參數(shù)(fuzziness parameter)m,m>l,m的取值影響聚類的精確 度,但怎樣取得最優(yōu)值不在本發(fā)明討論范圍之內(nèi),一般根據(jù)經(jīng)驗(yàn)取一個(gè)合適的值即可;
[0028] C、一組要被聚類的向量集合,設(shè)集合的大小為n ;
[0029]D、一個(gè)計(jì)算兩個(gè)向量之間距離的函數(shù)| |. | |。
[0030] 這里的向量集合也就是由執(zhí)行剖面得到的向量集合X,距離函數(shù)采用歐式距離。在 設(shè)定類簇?cái)?shù)量時(shí)需注意,太多的聚類會(huì)導(dǎo)致很相似的執(zhí)行剖面被分到不同的類簇,太少的 聚類會(huì)導(dǎo)致類簇內(nèi)部的執(zhí)行剖面差異較大,難以分辨。實(shí)施時(shí)可調(diào)試確定類簇?cái)?shù)量。
[0031] 2)初始化,隨機(jī)選擇c個(gè)向量作為簇中心,組成類簇中心向量集合V。
[0032] 3)使用如下公式來(lái)計(jì)算一個(gè)n*c的關(guān)系矩陣u:
【主權(quán)項(xiàng)】
1. 一種基于模糊聚類的多錯(cuò)誤定位方法,其特征是程序當(dāng)中存在至少一個(gè)錯(cuò)誤,使用 模糊聚類技術(shù)對(duì)程序特征信息進(jìn)行聚類,然后結(jié)合缺陷定位技術(shù),依據(jù)聚類結(jié)果對(duì)程序錯(cuò) 誤進(jìn)行定位,包括以下步驟: 1) 對(duì)程序運(yùn)行所有測(cè)試用例,收集執(zhí)行剖面,執(zhí)行剖面中的每一個(gè)屬性都代表程序 當(dāng)中的一個(gè)函數(shù),將執(zhí)行剖面用向量來(lái)表示,向量中的數(shù)值代表屬性對(duì)應(yīng)的函數(shù)是否被調(diào) 用; 2) 模糊聚類,采用FCM聚類方法,輸入為由執(zhí)行剖面得到的向量集合X、設(shè)定的類簇?cái)?shù) 量c和距離函數(shù),距離函數(shù)采用歐式距離;聚類算法最終返回一個(gè)關(guān)系矩陣,所述關(guān)系矩陣 的行表示某個(gè)執(zhí)行剖面分別屬于c個(gè)類簇的可能性,如果可能性大于設(shè)定的閾值,就認(rèn)為 執(zhí)行剖面屬于這個(gè)類簇,一個(gè)執(zhí)行剖面可以屬于多個(gè)類簇; 3) 錯(cuò)誤定位,使用Spectrum-Based錯(cuò)誤定位技術(shù)來(lái)測(cè)試各個(gè)類簇,根據(jù)和測(cè)試用例相 關(guān)的函數(shù)的四個(gè)覆蓋參數(shù)來(lái)進(jìn)行計(jì)算,四個(gè)覆蓋參數(shù)分別是 anp:沒(méi)有執(zhí)行這個(gè)函數(shù)并且通過(guò)的測(cè)試用例個(gè)數(shù); anf:沒(méi)有執(zhí)行這個(gè)函數(shù)并且失效的測(cè)試用例個(gè)數(shù); aep:執(zhí)行這個(gè)函數(shù)并且通過(guò)的測(cè)試用例個(gè)數(shù); arf:執(zhí)行這個(gè)函數(shù)并且失效的測(cè)試用例個(gè)數(shù); 四個(gè)參數(shù)之和等于測(cè)試用例集的大小,根據(jù)采用的排序指標(biāo)為每一個(gè)函數(shù)計(jì)算權(quán)重, 所述權(quán)重代表了函數(shù)出錯(cuò)可能性的大小,按照函數(shù)出錯(cuò)可能性從大到小排列,獲取風(fēng)險(xiǎn)排 列表,找出最有可能出錯(cuò)的位置。
2. 根據(jù)權(quán)利要求1所述的一種基于模糊聚類的多錯(cuò)誤定位方法,其特征是步驟3)中采 用以下三種方法之一來(lái)計(jì)算權(quán)重: 1. Tarantula : 函數(shù)ft的權(quán)重=
2. Naish2 : 函數(shù)ft的權(quán)重=
函數(shù)ft的權(quán)重=
其中,Step:執(zhí)行了函數(shù)ft且 通過(guò)了的測(cè)試用例個(gè)數(shù); aV:執(zhí)行了函數(shù)ft但是結(jié)果為失敗的測(cè)試用例個(gè)數(shù); alp:沒(méi)有執(zhí)行函數(shù)&結(jié)果為通過(guò)的測(cè)試用例個(gè)數(shù); Waf:沒(méi)有執(zhí)行函數(shù)&結(jié)果為失敗的測(cè)試用例個(gè)數(shù); t為函數(shù)的標(biāo)號(hào),表示第t個(gè)函數(shù)。
【專利摘要】一種基于模糊聚類的多錯(cuò)誤定位方法,程序當(dāng)中存在至少一個(gè)錯(cuò)誤,使用模糊聚類技術(shù)對(duì)程序特征信息進(jìn)行聚類,然后結(jié)合缺陷定位技術(shù),依據(jù)聚類結(jié)果對(duì)程序錯(cuò)誤進(jìn)行定位。本發(fā)明開(kāi)創(chuàng)性地提出了在多錯(cuò)誤環(huán)境下的錯(cuò)誤分離技術(shù),同時(shí)通過(guò)該技術(shù)在傳統(tǒng)的錯(cuò)誤定位技術(shù)上改進(jìn),提升了錯(cuò)誤定位技術(shù)的實(shí)用性和定位精度。通過(guò)實(shí)驗(yàn)證明,本發(fā)明能夠較好的提升多錯(cuò)誤環(huán)境下的錯(cuò)誤定位精度。
【IPC分類】G06F11-36
【公開(kāi)號(hào)】CN104536879
【申請(qǐng)?zhí)枴緾N201410710127
【發(fā)明人】陳振宇, 馮洋, 王晨, 楊浩宇, 張智軼
【申請(qǐng)人】南京慕測(cè)信息科技有限公司
【公開(kāi)日】2015年4月22日
【申請(qǐng)日】2014年11月28日