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