李 昊, 柳 溪
(南京電子技術(shù)研究所,江蘇 南京 210039)
對雷達軟件測試歷史記錄進行整理,可以構(gòu)建雷達軟件測試用例復用庫。軟件測試人員使用雷達軟件用例復用庫進行測試用例輔助設(shè)計,能夠有效提高雷達軟件的測試質(zhì)量、節(jié)約軟件測試設(shè)計時間成本并改善測試人員專業(yè)背景經(jīng)驗不足的情況。對于新的待測雷達軟件,通過將其軟件需求與復用庫中類似項目的軟件需求進行匹配篩選,檢索建立原始復用測試用例集,再經(jīng)適用性修改完善后即可快速生成該軟件的測試用例集,從而大幅提高雷達軟件測試人員用例設(shè)計和開發(fā)的效率。測試用例復用研究的重點是用例的匹配檢索。傳統(tǒng)的復用用例檢索大多采用描述語句信息匹配的方法,文獻[1]根據(jù)測試用例本體屬性描述的特點給出了一種基于用戶復用行為的匹配度計算方法,并使用該方法進行用例檢索。文獻[2]以改進的K最近鄰算法為基礎(chǔ)設(shè)計了測試用例檢索算法,提出了一種基于測試用例推理的測試用例復用方法。文獻[3]提出了一種基于本體的構(gòu)件檢索算法。該匹配算法實現(xiàn)了與布爾無關(guān)的執(zhí)行過程,使算法復雜度由原來的指數(shù)級降低到多項式級。文獻[4]通過構(gòu)建測試用例索引樹開展測試用例的檢索,并在測試用例索引樹和樹匹配模型思想的基礎(chǔ)上,提出了面向不同數(shù)據(jù)模式的測試用例檢索方法。雖然這些研究通過構(gòu)建測試用例本體等方法改進了復用用例的檢索算法,但大都僅從用例自身復用檢索角度進行設(shè)計,沒有充分考慮專業(yè)領(lǐng)域用例本體與其他知識本體的關(guān)系,降低了對具體項目的針對性和適用性,影響了在工程實際應(yīng)用中的效果。同時,由于傳統(tǒng)的軟件測試用例復用庫大多采用關(guān)系型數(shù)據(jù)庫作為底層數(shù)據(jù)存儲,當被測軟件項目數(shù)量快速增加時,使用傳統(tǒng)的復用庫設(shè)計架構(gòu)已逐漸無法滿足清晰描述這些不同項目間知識關(guān)聯(lián)關(guān)系的要求。此外,快捷高效地從其他類似產(chǎn)品獲得軟件測試知識資產(chǎn)復用的能力也是卓越型測試團隊建設(shè)的一項重要內(nèi)容。這就涉及到更加復雜的測試知識關(guān)系查詢需求,因此對整個軟件測試資產(chǎn)庫的數(shù)據(jù)檢索效率提出了更高的要求。
知識圖譜(Knowledge Graph)[5]相關(guān)技術(shù)已被廣泛應(yīng)用于各專業(yè)領(lǐng)域,其在軟件工程領(lǐng)域的典型應(yīng)用包括構(gòu)建領(lǐng)域知識庫管理系統(tǒng)、設(shè)計和開發(fā)軟件工程項目庫,以及軟件構(gòu)建檢索等。為了彌補傳統(tǒng)雷達軟件測試知識管理工具的不足,進一步優(yōu)化雷達軟件測試用例復用檢索,提高測試用例復用設(shè)計質(zhì)量,本文在軟件測試用例復用設(shè)計中引入了知識圖譜相關(guān)技術(shù)。根據(jù)構(gòu)建的雷達軟件測試本體關(guān)系模型,依托現(xiàn)有的雷達軟件測試管理系統(tǒng)軟硬件平臺,快速構(gòu)建雷達軟件測試知識圖譜,設(shè)計了一種以實體特征屬性文本和關(guān)聯(lián)節(jié)點快速相似度計算為基礎(chǔ)的軟件測試知識匹配方法,并利用知識檢索和協(xié)同過濾推薦等技術(shù)手段開展基于知識圖譜的雷達軟件測試用例復用應(yīng)用。該方法充分發(fā)揮了圖形數(shù)據(jù)庫在關(guān)系檢索性能上的優(yōu)勢,能夠有效降低測試知識庫的更新復雜度,將測評項目的軟件需求、測試用例和軟件缺陷等知識和它們之間的關(guān)聯(lián)關(guān)系,以及相關(guān)人員的測試工作檔案以圖譜形式直觀展示,從而為雷達軟件測試用例復用應(yīng)用的進一步研究提供了新的解決思路。
本文構(gòu)建的雷達軟件測試知識圖譜屬于領(lǐng)域知識圖譜(Domain-Specific Knowledge Graph),其以測試用例復用為業(yè)務(wù)核心,采用屬性圖模型[6]構(gòu)建,其本體關(guān)系模型如圖1所示。
圖1 雷達軟件測試本體關(guān)系模型
圖譜根據(jù)雷達設(shè)備的應(yīng)用領(lǐng)域?qū)a(chǎn)品軟件分為國土防空、機載火控、精密測控、艦載預警等多個子圖譜,覆蓋了雷達軟件配置項測試和系統(tǒng)測試中的功能、人機交互界面、性能、安全性、強度等多個動態(tài)測試類型,并將每個雷達軟件需求分解為若干測試項,同時使用等價類、邊界值和因果圖等測試用例設(shè)計方法設(shè)計具體的雷達軟件測試用例。圖譜將各種雷達軟件歷史缺陷知識與其對應(yīng)的執(zhí)行用例建立屬性關(guān)聯(lián),通過研究這些雷達缺陷的激勵條件以及其在輸出故障時的表現(xiàn)形式,得到相對獨立于被測雷達軟件項目的缺陷失效行為模式數(shù)據(jù)。此外,每個軟件涉及軟件編碼人員、測試用例設(shè)計人員、缺陷檢測人員和缺陷的修復人員等多個角色,這些角色在不同項目中可能會由相同人員交叉擔任。
雷達軟件測試知識圖譜將雷達軟件測試資產(chǎn)庫中所有歷史測試用例及其關(guān)聯(lián)知識通過圖形數(shù)據(jù)庫,以復雜的語義網(wǎng)絡(luò)圖形式重新進行存儲,方便軟件測試人員從“關(guān)系”可視化的角度去訪問雷達軟件測試知識。
與一般的知識圖譜構(gòu)建流程類似[7-9],本文構(gòu)建的雷達軟件測試知識圖譜的基本技術(shù)框架主要包括原始數(shù)據(jù)、知識抽取、知識融合、知識加工和知識應(yīng)用五層結(jié)構(gòu),如圖2所示。
圖2 雷達軟件測試知識圖譜框架
本文使用現(xiàn)有雷達軟件測試管理系統(tǒng)數(shù)據(jù)庫中存儲的歷史用例及其關(guān)聯(lián)數(shù)據(jù)作為知識圖譜原始數(shù)據(jù)的主要來源。各種雷達測試實體、屬性和關(guān)系數(shù)據(jù)經(jīng)知識抽取模塊提取后,提交知識融合層采用基于加權(quán)的語義相似度計算模型進行實體消歧和共指消解處理用以建立雷達軟件測試知識圖譜語義網(wǎng)絡(luò)。知識加工模塊動態(tài)更新軟件測試知識圖譜內(nèi)容,持續(xù)評估并不斷完善已有測試知識的質(zhì)量和應(yīng)用效果。知識應(yīng)用層利用圖形化的人機交互界面提供各種雷達軟件測試知識檢索和質(zhì)量數(shù)據(jù)統(tǒng)計分析的應(yīng)用實現(xiàn)。
本文選擇Neo4j[10]圖形數(shù)據(jù)庫存儲雷達軟件測試知識圖譜,通過Cypher數(shù)據(jù)查詢語言進行數(shù)據(jù)訪問。知識圖譜的應(yīng)用系統(tǒng)設(shè)計為B/S架構(gòu)并使用Python語言編程實現(xiàn),其后端的Web服務(wù)采用Flask框架構(gòu)建,前端利用ECharts和HTML5相關(guān)技術(shù)進行可視化展示[11-12],其顯示效果如圖3所示。
圖3 雷達軟件測試知識圖譜展示
1.3.1 構(gòu)建本體和知識抽取
借助雷達軟件測試領(lǐng)域?qū)<业慕?jīng)驗構(gòu)建知識圖譜標識模型并采用“由上至下”的模式開展概念圖譜的層級體系分析設(shè)計。充分考慮軟件質(zhì)量管控工作和測試用例復用設(shè)計的實際應(yīng)用需求[13],以雷達軟件測試用例為中心組織實體、屬性素材和定義關(guān)系路徑,完成雷達軟件測試知識圖譜核心模式(本體)層定義和構(gòu)建。利用現(xiàn)有測試管理平臺提供的OTA(Open Test Architecture)開放接口,根據(jù)構(gòu)建的雷達軟件測試本體模型建立軟件測試用例相關(guān)知識映射,實現(xiàn)基礎(chǔ)數(shù)據(jù)集的原始知識數(shù)據(jù)查詢和轉(zhuǎn)換,完成包括實體、關(guān)系和屬性等候選知識單元的自動抽取。本文對現(xiàn)有測試管理系統(tǒng)中的400余個歷史測試項目記錄數(shù)據(jù)進行知識抽取,建立的雷達軟件測試知識圖譜覆蓋了28萬余個知識實體。
1.3.2 知識融合
新的知識加入雷達軟件測試知識圖譜前,需要進行知識圖譜的實體匹配(Entity Matching),完成對相同語義實體的共指消解和消歧。
知識圖譜的匹配方法一般分為基于快速相似度計算、基于規(guī)則和基于分治3種方法[14]??紤]到現(xiàn)有雷達軟件測試知識圖譜的規(guī)模和特點,本文在實體屬性類型分塊的基礎(chǔ)上選擇了一種基于加權(quán)的實體特征屬性文本的CBOW(Continuous Bag-of-Words)模型自然語言處理(Natural Language Processing,NLP)算法[15-18],快速開展各種軟件測試知識實體匹配。
CBOW模型經(jīng)過充分訓練后,能夠以指定的當前詞及其上下文為輸入,預測該詞出現(xiàn)的概率。本文在利用Python進行算法編程實現(xiàn)時,選用了Gensim庫提供的Word2Vec工具包。其結(jié)構(gòu)網(wǎng)絡(luò)示意圖如圖4所示。
圖4 Word2Vec的CBOW模型網(wǎng)絡(luò)結(jié)構(gòu)示意圖
圖4中Word2Vec的CBOW模型網(wǎng)絡(luò)包括輸入層、投影層和輸出層(Softmax層)。其對神經(jīng)概率模型中存在的大規(guī)模矩陣運算和Softmax歸一運算進行了優(yōu)化,采用對所有輸入詞向量簡單求和的方法替代了傳統(tǒng)神經(jīng)網(wǎng)絡(luò)的線性變換加激活函數(shù)的復雜實現(xiàn),同時采用霍夫曼樹實現(xiàn)從神經(jīng)網(wǎng)絡(luò)詞向量語言模型的投射層到輸出Softmax層的映射。對于輸入的詞ω,定義
(1)
其輸出對數(shù)似然函數(shù)為
(2)
式中,C為語料庫中所有詞匯的集合;Context(ω)為與詞ω前后緊鄰的相關(guān)詞;P(ω|Context(ω))為ω的條件概率。
在正式使用CBOW模型前,需要對其進行訓練。本文使用的訓練輸入語料為累計萬頁規(guī)模的歷史項目中的雷達軟件需求和設(shè)計文檔。在訓練之前,需要借助停用詞詞典和雷達軟件測試知識切詞字典對語料文本進行停用詞去除和低頻詞刪除處理,刪除沒有意義的特征詞,提取語義關(guān)鍵詞。利用“雷達專業(yè)術(shù)語詞典”對英文縮略語關(guān)鍵詞進行翻譯,實現(xiàn)訓練語料優(yōu)化。通過訓練,實現(xiàn)語料庫中每個詞語的目標輸出詞的Softmax概率最大化。
對于輸入語義文本,經(jīng)語義關(guān)鍵詞提取和英文縮略語翻譯后,得到該語句的中文關(guān)鍵詞序列S={ω1,ω2,…,ωn},利用CBOW模型的訓練輸出文件可以獲得每個關(guān)鍵詞的詞向量值,再將句子中的所有詞向量求均值后即得到該屬性文本的句子向量vec(S)。
給定兩個待匹配的實體u和v,兩者具有相同的文本屬性集合A={A1,A2,…,An},通過計算u,v共同屬性Aj(1≤j≤n)描述文本的句子向量Su,j和Sv,j間的余弦值(式(4)),得到實體u和v在該屬性Aj上的相似度simattr(uj,vj):
(3)
式(3)只適用于字符串型屬性值的相似度計算,對于枚舉型特征屬性的相似度可以直接通過內(nèi)容相同比較進行布爾值判斷??紤]到不同實體特征屬性值對相似度計算結(jié)果的影響程度不同,為每個特征屬性的匹配計算結(jié)果設(shè)置不同的影響因子Dj并進行綜合加權(quán)修正后求平均,最終得到實體u和v的屬性綜合相似度。
(4)
1.3.3 知識加工和應(yīng)用
知識加工主要完成新雷達測試知識的添加和原有知識的更新。對其可信度進行量化分析和動態(tài)評估,并根據(jù)分析評估結(jié)果依據(jù)“自動為主、人工輔助”的原則對較低置信度測試知識進行修改和完善。主要內(nèi)容包括使用基于知識表達的關(guān)系推薦技術(shù)完成歷史測試項目殘缺知識的發(fā)現(xiàn)和推理,對語言描述質(zhì)量不高的實體特征屬性文本進行修訂,以及修正原有知識圖譜中的錯誤測試知識實體相似度關(guān)系匹配等。
雷達軟件測評部門利用構(gòu)建的雷達軟件測試知識圖譜可以方便地搭建適合自身專業(yè)特點的軟件測試設(shè)計和質(zhì)量綜合管理平臺,有效融合各領(lǐng)域產(chǎn)品的軟件測試關(guān)聯(lián)信息,開展雷達軟件測試知識智能檢索、缺陷預測和產(chǎn)品軟件質(zhì)量評估等更多擴展研究,為軟件質(zhì)量管理的決策分析提供可解釋依據(jù),并為雷達產(chǎn)品軟件質(zhì)量管控和軟件研制過程改進提供重要的基礎(chǔ)數(shù)據(jù)支撐,其知識查詢應(yīng)用界面如圖5所示。
圖5 雷達軟件測試知識檢索界面
雷達軟件的測試復用包括各種軟、硬件雷達軟件測試資源和測試環(huán)境的復用、測試執(zhí)行策略和雷達軟件測試流程的復用、雷達軟件測試用例方法復用、測試用例的復用等多項內(nèi)容。其中,測試用例復用是指通過對雷達軟件測試歷史用例進行直接調(diào)用或進行適用性修改后,將其重新應(yīng)用于該軟件新的測試階段或其他雷達軟件的測試活動中。高質(zhì)量的雷達軟件測試復用用例至少應(yīng)具有通用性、有效性、獨立性、規(guī)范性和易用性等:通用性要求設(shè)計的雷達軟件測試用例不過分依賴被測軟件的周境,對測試用例不經(jīng)修改或稍加修改后,就可以在相同或相似雷達產(chǎn)品的軟件測試活動中廣泛使用;有效性要求復用的測試用例能夠被測試人員順利、可靠且高效地執(zhí)行,并能發(fā)現(xiàn)被測軟件中的軟件缺陷;獨立性要求復用測試用例能夠在被測雷達軟件活動中獨立運行,測試用例彼此之間不存在依賴關(guān)系,并且用例的運行環(huán)境與其他測試用例的執(zhí)行狀態(tài)也沒有關(guān)聯(lián);規(guī)范性要求用例描述格式或結(jié)構(gòu)的標準化和屬性要素內(nèi)容應(yīng)完整;易用性要求設(shè)計的用例易于理解,可以靈活檢索和獲取,方便軟件測試人員使用。
本文挖掘雷達軟件測試知識圖譜中已有歷史項目軟件測試知識信息,利用知識檢索和知識推薦等相關(guān)技術(shù),有效實現(xiàn)了軟件測試復用用例的各項特性需求。為了保證用例的通用性,在新建測試用例知識時,通過規(guī)定在用例描述和測試步驟等文本屬性鍵值中統(tǒng)一使用“最大值”“最小值”“典型值”“輸入?yún)?shù)值N”“輸出值N”等通用的抽象概念詞匯代替具體的參數(shù)值。而這些參數(shù)數(shù)據(jù)的實例化則是通過另外定義的測試剖面屬性鍵來賦值,從而有效實現(xiàn)了用例被復用的修改最小化。由于圖譜中的所有知識來源為歷史雷達軟件測試項目,復用用例的有效性和可執(zhí)行性已經(jīng)過實際測試執(zhí)行驗證,因此能夠更加可靠和高效地被執(zhí)行。本文通過制定雷達測試用例屬性文本描述編寫規(guī)范對知識測試用例描述格式進行結(jié)構(gòu)化約束,并建立雷達軟件用例描述標簽詞典,充分滿足了測試用例描述格式或結(jié)構(gòu)的標準化需求。同時,利用雷達知識圖譜的強大知識關(guān)系檢索能力,可以靈活獲取用例及其關(guān)聯(lián)知識,更加易于理解和方便使用。此外,考慮到雷達軟件作為高度復雜的嵌入式軟件,普遍具有較高的安全性需求,因此在利用測試知識圖譜構(gòu)建雷達用例復用策略時,不僅能從文檔化的軟件需求覆蓋性角度提供用例設(shè)計檢索覆蓋,而且能從故障模式的安全性角度進行復用用例設(shè)計補充推薦。
復用用例的匹配檢索和智能推薦是測試用例復用研究的重點和難點。不同于傳統(tǒng)的用例搜索方式,采用用例推薦技術(shù)可以輔助用戶找尋感興趣的用例信息,并自動將期望展現(xiàn)的關(guān)聯(lián)知識實體更加精準地推送給用戶。常用的個性化推薦方法包括:內(nèi)容推薦、協(xié)同過濾推薦、基于知識推薦、基于關(guān)聯(lián)規(guī)則推薦和組合推薦等[19]。實際應(yīng)用中由于考慮到這些推薦方法各有優(yōu)缺點,通常會綜合使用多種推薦方法開展測試用例推薦應(yīng)用。本文利用測試用例本體構(gòu)建和知識圖譜實體匹配相關(guān)技術(shù),結(jié)合已構(gòu)建的雷達測試用例知識圖譜,將軟件、需求、缺陷、角色等關(guān)聯(lián)知識的影響也考慮進相似度計算過程,在集體實體對齊算法[20]基礎(chǔ)上,設(shè)計了一種基于知識匹配的雷達軟件測試用例復用(Knowledge Matching-Test Case Reusing,KM-TCR)推薦模型,利用實體匹配和知識推薦等技術(shù)開展測試用例復用優(yōu)化設(shè)計,并在工程中進行了較好的應(yīng)用。
根據(jù)不同應(yīng)用場景,KM-TCR推薦模型分為基于需求知識集體匹配的復用用例推薦和基于缺陷知識檢索的復用用例推薦兩部分。前者以需求覆蓋為導向,適用于常規(guī)軟件測評項目的測試用例復用設(shè)計。而后者以問題發(fā)現(xiàn)為導向,更加適用于敏捷測試項目的復用用例設(shè)計。
2.2.1 基于需求知識集體匹配的復用用例推薦
通常,軟件測試人員利用測試用例與雷達軟件需求之間緊密的覆蓋和追溯關(guān)系,通過檢索與歷史項目相似軟件需求的關(guān)聯(lián)用例,可以實現(xiàn)測試用例的復用。但當知識庫中同時存在大量相似的雷達軟件需求知識時,需要進行更多擇優(yōu)處理。本文充分發(fā)揮知識圖譜在關(guān)系網(wǎng)絡(luò)解析上的優(yōu)勢,采用知識實體集體對齊的算法實現(xiàn)了這一過程的自動化。其以軟件需求知識為核心,構(gòu)建包括待測軟件需求及其關(guān)聯(lián)實體的知識子圖譜,并與雷達軟件測試知識圖譜網(wǎng)絡(luò)中的各相似子圖譜進行集體匹配,從而獲得了更優(yōu)的檢索輸出結(jié)果?;谛枨笾R匹配的復用用例檢索如圖6所示。
圖6 基于需求知識匹配的復用用例檢索
具體算法如下。
輸入:待測項目的軟件需求實體r和與它相關(guān)的被測軟件、雷達分系統(tǒng)和軟件開發(fā)人員等知識實體集合形成軟件需求知識子圖譜G。
輸出:復用測試用例集索引列表。
① 根據(jù)r的“領(lǐng)域”和“分系統(tǒng)”屬性鍵值,對軟件測試知識圖譜進行快速分區(qū),提取待匹配計算知識子圖譜G′。
(5)
⑥ 對輸出的測試用例經(jīng)實例化修改后,得到該項目的復用測試用例。
2.2.2 基于缺陷知識檢索的復用用例推薦
(1) 雷達軟件缺陷知識檢索和失效模式本體構(gòu)建。
知識圖譜中的缺陷知識可以通過采用需求知識集體匹配的方法檢索關(guān)聯(lián)缺陷間接獲取,或直接利用知識圖譜客戶端的缺陷知識檢索功能得到。主動復用與歷史缺陷相關(guān)聯(lián)的測試用例,開展軟件缺陷預防檢測,能夠有效避免類似軟件問題重復發(fā)生,并為軟件缺陷問題技術(shù)歸零中開展“舉一反三”工作提供技術(shù)參考。
為了更好地利用雷達軟件缺陷知識IPO(Input-Processing-Output)的失效傳遞機理對軟件缺陷進行數(shù)據(jù)分析,方便軟件測試人員從用戶輸入行為模式的角度開展軟件缺陷分類檢索,本文在知識圖譜中構(gòu)建了雷達軟件失效模式本體,并與缺陷知識建立關(guān)聯(lián),如表1所示。
表1 雷達軟件失效模式本體屬性描述
圖譜中的每個缺陷對應(yīng)一個失效模式,每個失效模式知識實體是一組相似缺陷記錄的集合。對現(xiàn)有雷達軟件測試知識圖譜中的9000余條缺陷記錄進行知識整理,累計提取出1451條雷達軟件缺陷失效模式知識實體,并以此為基礎(chǔ)進一步開展缺陷預測和產(chǎn)品軟件質(zhì)量評價等擴展工作,為軟件質(zhì)量管理的決策分析提供輸入。
(2) 基于用戶的協(xié)同過濾推薦。
軟件開發(fā)人員的思維定式和代碼的大量復用會導致類似的缺陷在不同產(chǎn)品中重復發(fā)生,即開發(fā)人員與缺陷產(chǎn)生之間存在著一定的“喜好”關(guān)聯(lián)??紤]到當前軟件測試知識圖譜缺陷的實體規(guī)模以及基于記憶的協(xié)同過濾算法具有簡單、合理、高效和穩(wěn)定等特點,在實際應(yīng)用中選用了基于用戶的協(xié)同過濾推薦(User-Based Collaborative Filtering,UserCF)算法[21],其核心思想是:以知識圖譜中各缺陷關(guān)聯(lián)的軟件開發(fā)人員為推薦系統(tǒng)的“用戶”,各種已發(fā)生的歷史軟件缺陷失效模式知識實體作為待推薦的“物品”,統(tǒng)計“用戶”與該失效模式“物品”的關(guān)聯(lián)缺陷數(shù)(缺陷出現(xiàn)的頻次)作為該“用戶”對該“物品”的評分,從而建立雷達軟件開發(fā)人員與歷史缺陷失效模式間的“用戶-物品”評分行為矩陣。通過尋找與目標用戶有類似關(guān)聯(lián)軟件失效模式行為的相似用戶,利用相似用戶對某特定缺陷失效模式的評分預測目標用戶對該特定失效模式的評分,以此獲得與相似用戶已建立關(guān)聯(lián),但與該目標用戶尚未有關(guān)聯(lián)關(guān)系的缺陷失效模式數(shù)據(jù)推薦。使用失效模式知識實體代替直接使用軟件缺陷作為推薦物品的好處是可以大幅改善評分行為矩陣的稀疏度,降低“空推薦”發(fā)生概率。其具體算法設(shè)計如下。
定義:知識圖譜中所有缺陷產(chǎn)生人員組成“用戶”集合U={u1,u2,…,un},ui∈U(1≤i≤n) 為缺陷產(chǎn)生人員;所有軟件失效模式組成“物品”集合I={i1,i2,…,im},ik∈I(1≤k≤m) 為軟件失效模式;以與ui關(guān)聯(lián)且失效模式為ik的缺陷數(shù)量ri,k作為評分,建立U和I的關(guān)系評分矩陣R,設(shè)定用戶相似度判定門限閾值為τ。
輸入:“人員-軟件失效模式”評分行為矩陣R。
輸出:推薦的測試復用用例集索引列表。
(6)
設(shè)定判定閾值τ,選擇相似度值高于該值的用戶,得到ui最近鄰缺陷產(chǎn)生人員集合KNN(ui)。
② 定義rj,k為用戶uj對物品Ik的評分,根據(jù)式(7):
(7)
③ 檢索預測評分最高前N個缺陷失效模式,生成Top-N預測失效模式推薦集,并按照評分大小進行排序。
④ 檢索知識圖譜中與預測失效模式相關(guān)聯(lián)的軟件需求知識并與待測軟件需求進行知識匹配篩選,提取關(guān)聯(lián)復用用例作為最后的推薦結(jié)果輸出。
(3)改進探索性測試會話生成。
文獻[22]在雷達軟件測試中使用探索性測試(Exploratory Testing)方法,通過建立腳本會話模型改善了由于軟件需求文檔質(zhì)量不高對軟件測試質(zhì)量的影響,但由于選擇初始會話腳本具有一定的隨機性,從而可能導致測試執(zhí)行效率的降低。
以UserCF為基礎(chǔ),改進了雷達軟件探索性測試中的腳本會話模型,利用已建立的雷達軟件測試知識圖譜,提出了一種基于缺陷失效模式知識的協(xié)同推薦的腳本會話模型。該模型利用項目間缺陷失效模式產(chǎn)生人員行為習慣間的相似性,預測待測軟件可能存在的其他未發(fā)現(xiàn)缺陷,并復用這些缺陷的關(guān)聯(lián)測試用例建立探索性測試的初始腳本會話,從而啟動探索性測試活動執(zhí)行,如圖7所示。
圖7 基于缺陷失效模式知識的協(xié)同推薦的會話模型
圖7中,在每一輪軟件探索性測試執(zhí)行前,測試人員首先依據(jù)項目背景知識采用基于用戶的協(xié)同過濾推薦方法獲得項目可能存在的尚未被檢出的缺陷失效模式及其關(guān)聯(lián)軟件缺陷的推薦列表,建立預測缺陷子圖譜,再結(jié)合被測項目的軟件需求輸入文檔,經(jīng)適用性篩選后得到測試復用用例推薦清單。測試執(zhí)行人員根據(jù)該清單建立起探索性測試初始會話開展探索性測試執(zhí)行。測試中新發(fā)現(xiàn)的軟件缺陷知識被用于更新測試知識圖譜,同時更新“缺陷產(chǎn)生人員-缺陷失效模式”評分矩陣,作為下一輪的測試用例協(xié)同推薦輸入,并利用推薦輸出結(jié)果建立新的初始會話。
利用雷達軟件測試知識圖譜開展的UserCF測試用例推薦復用,能夠方便地獲得類似項目的軟件缺陷及其關(guān)聯(lián)知識,改善了由于被測項目先驗知識不足對測試設(shè)計產(chǎn)生的影響,因此可以更好地在敏捷測試中進行應(yīng)用。
本文選取了10個典型雷達軟件配置項測試數(shù)據(jù)作為實驗輸入,評估CBOW模型在知識圖譜實體匹配算法檢索中的應(yīng)用性能,同時選用了編輯距離(Levenshtein Distance)計算、Jaccad系數(shù)計算、TF和TF-IDF[23-24]等幾種相似度計算常用算法進行效果比對。這些項目覆蓋了雷達顯控、數(shù)據(jù)處理、信號處理等多個分系統(tǒng),各測試項目主要實體數(shù)量和知識圖譜查詢時間數(shù)據(jù)如表2所示。
表2 項目驗證數(shù)據(jù)
根據(jù)式(4)將表2中各項目的所有實體與知識圖譜中其他項目的同類知識進行屬性相似度匹配,并由雷達領(lǐng)域?qū)<疫M行匹配結(jié)果人工確認,計算平均精確率P和平均召回率R,并對計算結(jié)果進行統(tǒng)計。
(8)
(9)
式中,NTP為系統(tǒng)成功匹配的軟件測試知識點對數(shù);NFP為系統(tǒng)錯誤匹配的軟件測試知識點對數(shù);NFN為系統(tǒng)未查找出來的軟件測試知識點對數(shù)。統(tǒng)計結(jié)果如圖8所示。
圖8 不同算法軟件測試實體相似度匹配性能
圖8表明,本文選用的CBOW綜合加權(quán)算法在提高匹配精度的同時,也獲得了較好的召回率,且無論是精確率還是召回率都要優(yōu)于其他幾種算法,能夠較好地滿足工程應(yīng)用需求。
以表2中的需求知識實體集合為輸入,分別選擇知識屬性相似度計算和知識集體相似度計算兩種算法進行實驗,其精確率和召回率如圖9所示。
圖9 不同θr值對應(yīng)的需求相似度匹配性能
由數(shù)據(jù)分析可見,隨著判斷門限θr的增加,兩者的精確率和召回率變化趨勢一致,相比僅使用知識屬性文本進行相似度計算,采用知識集體相似度計算可以獲得更高的精確率和召回率。
本文使用傳統(tǒng)的用戶協(xié)同過濾算法作為核心推薦算法。從雷達軟件測試知識圖譜中提取“人員-軟件失效模式”關(guān)系數(shù)據(jù)進行用戶協(xié)同推薦算法效果驗證實驗,實驗數(shù)據(jù)集包括651個失效模式實體和77個缺陷產(chǎn)生人員信息。同時,選取美國明尼蘇達大學Group Lens 項目研究組公布的經(jīng)典的MovieLens 1M數(shù)據(jù)集做比對參考,該數(shù)據(jù)集包含有943個用戶對1682部電影的10萬多條評分。
實驗時,將兩個數(shù)據(jù)集分別按照4∶1的比例分為訓練集和測試集兩部分,利用訓練集輸出推薦結(jié)果,并使用測試集對實驗結(jié)果進行驗證。使用式(10)計算平均絕對誤差(MAE),對推薦結(jié)果進行性能統(tǒng)計。
(10)
式中,ri,k為用戶ui對物品ik的真實評分;τ為推薦的物品。統(tǒng)計結(jié)果如圖10所示。
圖10 協(xié)同推薦性能評估
圖10中的橫坐標為最近鄰缺陷產(chǎn)生人員個數(shù),隨著其值的增加,MAE值呈下降趨勢。與MovieLens 1M數(shù)據(jù)集相比,其對缺陷失效模式的推薦性能有所下降,這主要是由兩個數(shù)據(jù)源的稀疏度差異造成的。
本文設(shè)計了一種基于知識圖譜的雷達軟件測試用例復用方法,利用原有雷達軟件測試管理系統(tǒng)中的大量歷史測試數(shù)據(jù)建立雷達軟件測試知識圖譜。通過知識圖譜語義網(wǎng)絡(luò)的知識實體匹配技術(shù)實現(xiàn)了對雷達軟件測試復用用例的高效檢索,不僅提高了一般雷達軟件測試活動的開發(fā)效率,也可以應(yīng)用在雷達軟件探索性測試中,更好地發(fā)揮出敏捷測試的優(yōu)勢。通過對所在單位近期使用基于雷達軟件測試知識圖譜開展用例復用設(shè)計的67個測試項目進行復用情況統(tǒng)計,平均用例復用率達到了81%,累計節(jié)約測試用例設(shè)計開銷時間約為63%。
由于本文用于構(gòu)建知識圖譜的大量基礎(chǔ)數(shù)據(jù)在測試管理平臺中已進行了結(jié)構(gòu)化存儲,因此知識的抽取工作相對簡化,實際中還有大量來源于測試設(shè)計文檔和缺陷報告等半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)可被利用,對這些數(shù)據(jù)的知識抽取和加工需要進一步研究。此外,如何利用雷達軟件測試知識圖譜開展更多擴展應(yīng)用,以及對測試用例協(xié)同推薦算法的優(yōu)化改進仍有較多工作需要繼續(xù)進行研究。