?

基于LDA模型的測試用例復用方法*

2021-03-16 09:22
艦船電子工程 2021年2期
關鍵詞:測試用例語義矩陣

(江蘇自動化研究所 連云港 222061)

1 引言

軍用軟件大多采用基于構件的設計方法,同一類型的軍用軟件具有很大的相似性,彼此之間具有很高的關聯性和繼承性[1~6]。因此,針對當前軍用軟件測試存在的困難,可以從對測試用例的復用方面進行考慮[7]。測試用例的復用不僅解決了測試人員經驗不足的問題,又能節省測試用例開發的時間、精力和財力,從而能夠最大限度的提高測試用例的使用效率,降低測試時間,提高測試效率。

文獻[8]提出一種根據用戶行為計算已有測試用例的復用能力方法。張娟等提出了一種基于測試用例套的復用度量計算方法,并實現計算過程的自動化[9]。路曉麗等構建了一個支持測試用例共享和復用的測試用例資產庫[10]。陳平等提出一種從軟件測試需求層面提取測試用例的方法[11]。文獻[12]和[13]提出基于案例推理的測試用例復用機制,并使用類比推理的方法進行測試用例的復用。以上文獻有關軟件測試用例復用的研究主要局限在某一個方面,缺乏復用過程的系統研究,而且,測試用例復用的準確率不高?;谶@些局限和軍用軟件系統的特點,本文研究潛在語義的測評文檔生成算法,并在此基礎上提出一種系統的測試用例復用策略,從語義層次對測試用例進行檢索復用。

2 被測軟件及測試用例的描述模型

2.1 被測軟件的描述模型

本文從軍用軟件的描述、所屬行業、所屬領域、運行平臺、開發語言、測試需求及需求對應的測試用例角度對被測軟件進行形式化描述。為了方便測試用例的復用,本文建立測試需求和測試用例的映射關系。在測試用例復用時,可以根據軟件之間測試需求的相似度而計算出測試用例的可復用性,從而建立從軟件到測試需求,從測試需求到測試用例的復用關系。

在表1列出的軍用軟件屬性信息集合中,軟件概述和查詢索引是測試復用階段較為重要的兩個信息。其中,軟件概述主要是對軍用軟件的功能、目標等進行描述。本文用軟件體系結構中提到的REBOOT模型對軟件概述進行抽象描述[14]。該模型用有限維信息空間的術語組合從若干刻面的綜合角度來刻畫一個軟件。查詢索引主要使用軟件的標簽或能表示軟件的關鍵字。本文用一個五元組(標簽1,標簽2,標簽3,標簽4,標簽5)來描述軟件的查詢索引。另外,附件信息描述了軟件所對應的測試說明文檔的路徑。如果在測試用例復用階段,有相似度極高的軟件,可以直接進行測試說明文檔復用。這樣,既節省了復用的時間,而且復用程度極高。

表1 典型軍用軟件屬性信息集合

2.2 測試用例的描述模型

對已存在軍用軟件測試用例描述時,將軍用軟件的功能進行細化,這樣有利于功能點對應的測試用例的充分表示。本文首先從軍用軟件到配置項,從配置項到功能模塊的思路對軍用軟件的功能進行細分。每一個功能可以表示為多個功能點。為了提高測試用例復用的準確率及效率,本文將功能點用通用的自然語言進行規范化描述,從而使每一個功能點均能準確、完整地表示出軟件的功能,這樣,也有利于提高測試需求到測試用例的匹配。在實際軟件測試過程中,一個功能點對應多個測試用例,一個測試用例也可以對應多個功能點,在測試用例規范化時,盡量保證可復用測試用例之間的獨立性。這樣,有利于提高測試的復用程度。對測試用例進行規范化時,一個可復用測試用例按照表2所列的測試用例數據屬性描述。功能點描述和查詢索引是測試用例檢索機制重要的兩個信息。在對軍用軟件的功能點進行描述時,本文通過一個三元組(所屬軟件,功能模塊,功能點)來描述功能點。查詢索引主要使用相關軟件功能點的關鍵詞來表示,也可以說是相關軟件的標簽。本文用一個多元組(標簽1,標簽2,標簽3,標簽4……標簽n)來描述查詢索引,這樣,在測試用例復用時,可根據功能點描述與查詢索引相結合進行測試用例匹配。

表2 測試用例數據屬性信息

3 基于潛在語義的測試用例復用

3.1 測試用例復用文本的預處理

在測試用例復用前,需要對測試文本進行預處理。在預處理階段,首先將測試文本轉化為測試文本-關鍵詞矩陣。在采用中科院分詞系統ICTCLAS進行分詞時,在用戶詞典中添加一些測試相關術語、專業性詞語等。當測試文本經過分詞程序時,就會去除相關的停用詞,然后統計各個關鍵詞的詞頻并進行相關計算,最終將被測軟件的測試需求向量 可 表 示 為R=R(T1,W1;T2,W2…Ti,Wi;… ;Tn,Wn),可簡記為R=R(W1,W2…Wi…,Wn),其中1<i<n,Ti是被測軟件的測試需求文本中第i個特征項,Wi為Ti的權重;可復用測試用例的測試需求向量可表示為CR=CR(T1,W1;T2,W2…Ti,Wi;…;Tn,Wn),其中1<i<n,Ti是可復用測試用例測試需求文本中第i個特征項,Wi為Ti的權重;可復用測試用例的查詢索引向量可表示為CK=CK(T1,W1;T2,W2…Ti,Wi;…;Tn,Wn) ,其中1<i<n,Ti是可復用測試用例的查詢索引中第i個特征項,Wi為Ti的權重?;谔卣髟~的測試文本相似度計算公式見式(1)。

其中,α,β為調和參數,SimVSM(R,C)為被測軟件的某一測試需求與測試用例基于關鍵字的相似度,SimVSM(R,CR)為被測軟件的某一測試需求與可復用測試用例對應的功能點描述基于關鍵字的相似度,SimVSM(R,CK)為被測軟件的某一測試需求與可復用測試用例查詢索引基于關鍵字的相似度。

其次,將被測軟件的測試需求文本-關鍵詞矩陣、可復用測試用例的測試功能點描述文本-關鍵詞矩陣及查詢索引-關鍵詞矩陣轉化為被測軟件的測試需求文本-主題矩陣、可復用測試用例的功能點描述文本-主題矩陣及查詢索引-主題矩陣。本文主要利用測試文本的潛在語義進行相似度計算,所以,首要目標就是進行LDA建模。而LDA主題模型是一個分層的貝葉斯模型,其包含文本、主題和關鍵詞三個層次結構,同時也是一種生成主題概率模型[15]。

在LDA建模時,LDA主題模型生成一個測試文本的算法如下。

Step1:針對測試數據集中的文本,根據Dirichlet分布Dir(α)得到文本中特征詞對應主題的多項式分布參數θ;

Step2:根據泊松分布計算每篇測試文本中包含的特征詞數量N=Poisson(ξ);

Step3:對于每一個主題z,根據Dirichlet分布Dir(β)的到主題對應的多項式分布參數φ~Dir(β);

Step4:針對數據集中每個文本中的特征詞w:

1)根據多項式分布Multi(θ)得到特征詞對應的主題zi;

2)根據多項式分布Multi(φ)生成單詞w。

通過潛在語義分析,被測軟件的測試需求主題向量可表示為RT=RT(t1,t2,…ti…,tn),其中1<i<n,ti是被測軟件的測試需求文本對應的第i個主題;可復用測試用例的測試需求主題向量可表示為CRT=CRT(t1,t2,…ti…,tn),其中1<i<n,ti是可復用測試用例的測試需求文本對應的第i個主題;可復用測試用例的查詢索引向量可表示為CKT=CKT(t1,t2,…ti…,tn),其中,ti是可復用測試用例的查詢索引對應的第1<i<n i個主題?;谥黝}的測試文本相似度計算公式見式(2)。

其中,χ,φ為調和參數,SimLDA(R,C)為被測軟件的某一測試需求與測試用例的主題相似度,SimLDA(R,CR)為被測軟件的某一測試需求與可復用測試用例對應的功能點的主題相似度,SimLDA(R,CK)為被測軟件的某一測試需求與可復用測試用例查詢索引的主題相似度。

3.2 基于潛在語義的測試用例復用方法

基于潛在語義的測試用例復用框架如圖1所示。使用2.1節被測軟件描述模型及2.2節測試用例的描述模型對已測試的軟件及其對應的測試用例進行規范化處理,并將這些數據收集到測試用例庫,進行合理的分類、管理和維護。然后,依據測試用例庫,采用測試用例復用檢索機制層層遞近,從總體到局部的策略進行測試用例復用。具體算法如下。

圖1 測試用例復用框架

輸入參數集:{被測軟件的所屬行業、所屬領域、運行環境信息、被測軟件查詢索引、測試類型、被測軟件的功能點描述、m、a、n、μ},其中m為可復用軟件集1中的軟件數量閾值,n為備選可復用測試用例的個數;

輸出結果集:{被測軟件測試需求對應的備選可復用測試用例}。

Step1:根據被測軟件的所屬行業、所屬領域、運行環境過濾、生成已存在的可復用軟件集合,其中所屬行業、所屬領域、運行環境的表示比較固定,匹配過程中采用字符串匹配技術即利用字符串的Contains(String str)方法。如果所屬行業、所屬領域、運行環境中至少兩個匹配成功,就可以將可復用軟件放到備選可復用軟件集1中;

Step2:針對備選可復用軟件集合1,根據被測軟件的查詢索引,將每一個軟件的查詢索引轉化為矩陣表示,即軟件-關鍵詞矩陣,定義閾值a,然后利用余弦相似度公式計算被測軟件與備選可復用軟件的相似度,將相似度大于給定閾值的可復用軟件放到備選可復用軟件集2中;

Step3:針對備選可復用軟件集2的每一個軟件,根據被測軟件所要復用的測試用例的測試類型,對每一個軟件對應的測試用例進行過濾,得到可復用測試用例集1;

Step4:首先將被測軟件的測試需求和可復用測試用例集1的每一個測試用例的功能點描述文本通過中文分詞工具進行預處理,經過特征提取后構建特征空間即將測試需求文本和功能點描述轉化為特征向量,其次將可復用測試用例集1的每一個測試用例的查詢索引都轉化為矩陣表示,即測試用例-關鍵詞矩陣;

Step5:利用3.1節LDA主題模型測試文本生成算法,將被測軟件的測試需求文本-關鍵詞矩陣、可復用測試用例的測試功能點描述文本-關鍵詞矩陣及查詢索引-關鍵詞矩陣轉化為被測軟件的測試需求文本-主題矩陣、可復用測試用例的功能點描述文本-主題矩陣及查詢索引-主題矩陣。然后利用式(1)和式(2)相結合計算被測軟件的測試需求與可復用測試用例的相似度,公式見式(3):

其中,η,γ為調和參數,Sim(R,C)為被測軟件的某一測試需求與測試用例的相似度,SimVSM(R,C)為被測軟件的某一測試需求與可復用測試用例基于關鍵字的相似度,SimLDA(R,C)為被測軟件的某一測試需求與可復用測試用例的主題相似度;

Step6:針對計算得到的被測軟件測試需求與可復用測試用例的相似度值,采用選擇排序算法對可復用測試用例進行排序。由于一個測試需求可能對應若干個測試用例,此時需要將排序前Top n的測試用例放到備選可復用測試用例集中,形成被測軟件測試需求-備選可復用測試用例矩陣。通過測試用例復用檢索算法得到被測軟件測試需求-備選可復用測試用例矩陣后,然后,從被測軟件需求對應的備選測試用例集人工選擇相應測試用例,然后根據測試用例模板生成相應的測試用例。

4 實驗及結果分析

4.1 實驗評價方法

在測試用例復用過程中,根據被測軟件的測試需求及查詢索引,從測試用例庫中選擇相應的測試用例。而評價測試用例復用效果的是復用的準確率,即測試需求對應測試用例的有效性。所以本實驗主要關注測試用例復用的準確率。

假設某一個軟件有N個測試需求,如果在用例復用時,復用得到的總用例數為M個,第i個測試需求匹配到正確的用例數為ni個,則測試復用的準確率為

4.2 實驗內容及結果分析

本文利用3.2節的基于潛在語義的測試用例復用方法進行仿真實驗,實驗的數據為已完成測評的相對獨立的軟件,分別為某專用網管系統、某作戰指揮系統、某數字集群系統及某多功能航行器軟件,每個軟件對應的測試用例如表3所示。

表3 軟件對應的測試用例數

本實驗利用基于VSM的測試用例復用方法和本文提出的基于潛在語義的測試用例復用方法進行仿真實驗。為了保證實驗的一致性,所有參數設置一致。分別將某專用網管系統、某作戰指揮系統、某數字集群系統及某多功能航行器軟件作為被測對象作用在兩種測試用例復用方法上,實驗結果如表4所示。

表4 對比實驗結果

通過表4列出的實驗結果和式(4)計算出兩種方法在不同實驗對象上的準確率,如圖2所示。通過兩種復用方法的對比試驗,本文提出的方法的準確率明顯高于傳統的基于VSM的測試用例復用方法,而且通過表4可以看出,在測試用例召回數量方面,本文提出的基于潛在語義的測試用例復用方法比傳統的基于VSM的測試用例復用方法分別多出354個、300個、269個、752個。通過實驗結果驗證了本文提出的測試用例復用方法在準確率和測試用例召回數量方面的有效性。

圖2 不同測試用例復用方法匹配測試用例的準確率

5 結語

本文通過構建被測軟件與測試用例的模型,建立測試需求與測試用例的關聯性,從潛在語義的層面對測試需求和測試用例進行建模、解析,從而達到測試用例復用的目的,并通過仿真實驗驗證了本文提出的基于潛在語義的測試用例復用方法的有效性??傊?,本文的研究在理論上具有創新性,在實際測試項目中具有可行性。但隨著測試用例的積累,測試用例的數量級驚人,下一步考慮引入數據挖掘技術優化測試用例檢索時間。

猜你喜歡
測試用例語義矩陣
真實場景水下語義分割方法及數據集
Evosuite和Randoop單元測試用例生成工具覆蓋率對比分析①
多項式理論在矩陣求逆中的應用
“吃+NP”的語義生成機制研究
矩陣
矩陣
矩陣
漢語依憑介詞的語義范疇
測試用例集的優化技術分析與改進
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合