周展鵬
摘要:測試用例的標簽自動化生成涉及數據內容復雜、多標簽分類等問題,本文研究了對測試用例的數據處理,利用機器學習算法實現(xiàn)了對測試用例的多個標簽的自動生成,并對結果進行了評價。
關鍵詞:自然語言處理;多標簽分類;模型;機器學習
中圖分類號:TP311 文獻標識碼:A
文章編號:1009-3044(2019)08-0212-03
1 背景介紹
軟件的測試用例在設計或穩(wěn)定執(zhí)行后,通常會人為地進行分類或者打上標簽,以表明該用例的適用領域、范圍、場景。人工標簽雖然準確,但是當用例較多時,人工標簽效率低下且難以維持較高準確率。因此,標簽自動化生成的核心思想是利用機器學習技術對已有標簽進行學習,已達到自動生成用例標簽的目的。
2 數據探索
2.1 數據來源
本次項目的數據來自某軟件測試管理系統(tǒng)的歷史測試用例數據, 包含了9個軟件項目共近1200條測試用例數據。主要表單有:用例相關項目基本信息表,帶標簽的用例表,數據字典表等。項目基本信息表,包含了項目名稱、項目編號、項目需求部門、項目規(guī)模等信息;帶標簽的用例表,包含了用例ID、用例名稱、用例描述以及標簽等;數據字典包含對表中名詞的含義解釋。
2.2 數據問題
真實的用例數據存在各式各樣的問題,如大量的冗余字段,自然語言文本難以直接訓練,數據格式不統(tǒng)一等 ,經過分析統(tǒng)計,所給數據存在以下這些問題:
a.數據冗余:例如同樣的測試用例信息會在表格中多次出現(xiàn)。
b.數據格式混亂:例如在標簽欄中,有些用例沒有標簽,會有“無”表示,而有些用例沒有標簽則顯示為空白。此外許多用例同時含有若干標簽和“無”標簽。
c.數據缺失:例如在用例描述部分,不少測試用例顯示的是XXXX。
d.數據含義模糊:例如在通過ID下面,既有文本描述“通過”,也有含義不明的數字描述。
e.自然語言描述較多:例如在用例名稱,用例描述欄,包含關鍵信息,但是用自然語言的方式記錄,難以直接進行機器學習。
2.3 數據預處理
本節(jié)主要針對上節(jié)提出的問題進行數據預處理。對以下測試用例進行了刪除處理:
a.重復的測試用例信息
b.包含不明意義的數據信息的測試用例
c.關鍵字段信息缺失的測試用例
對于含有文本的關鍵信息(用例名稱、用例描述),為了便于機器學習,先進行了分詞處理,以提取出能夠影響標簽的信息。經分析,文本內容不長,上下語義關聯(lián)性不強,每個詞獨立出現(xiàn),與其他詞語依賴性較低,故選擇jieba切詞工具中的詞袋模型進行切詞處理。選取了用例描述中的三例進行展示:
(1)打開已完成審批單查看流程圖
切詞后:打開,已完成,完成,審批,查看,流程圖
(2)點擊正在執(zhí)行審批單的內核會議
切詞后:點擊,正在,執(zhí)行,審批,內核,會議
(3)起草人反饋查看附件
切詞后:起草人,反饋,查看,附件
可以看出,對于關鍵字,如“流程圖”,“執(zhí)行”等可能會影響最終標簽結果的信息提取,jieba的效果還是較為理想的,但是也不難發(fā)現(xiàn)會切出如“已”,“正在”這樣的無效關鍵字,因此需要對數據進行降維,具體的數據降維處理將會在3.1數據降維中說明。
2.4 數值化
為了更高效地進行數據處理,需要將測試用例的許多特征進行數值化處理,主要有兩類:
(1)將文本內容直接轉為數值:例如,用例級別的高中低,分別用3,2,1表示。測試用例的不同類型,兼容性、接口、界面等,用1,2,3等不同的數值進行替代。
(2)標簽的數值轉化:每個測試用例可能會含有多個標簽,將多標簽轉化為單標簽是一種較為實用的方法。為了將多標簽分類問題轉化為單標簽分類問題,我們將多標簽結果用二進制的方式表示成一個五位(共五個標簽)二級制數的單標簽。用“1”表示該標簽存在,用“0”表示標簽不存在。若是五位都為“0”,則表示該測試用例沒有標簽,或為“無”標簽。將多標簽問題轉化為了含有32種(包含“無”標簽)可能結果的單標簽問題。具體轉化如表1所示。
2.5 評價方法設計
從兩種角度進行評價方式設計:
1) 基于32種復合標簽評價:以轉化成的32種單標簽為對象,對模型預測的用例標簽進行結果統(tǒng)計分析。
2) 基于5種標簽評價:以人工標注的5種標簽為對象,對模型預測的用例標簽進行結果統(tǒng)計分析。
計算的指標有:
a.真假陰陽性統(tǒng)計: TP表示標簽存在,預測存在;FN表示標簽存在,預測不存在;FP表示標簽不存在,預測存在;TN表示標簽不存在,預測不存在。
b.召回率(敏感性):計算方式為, TP / (TP + FN )。
c.平均召回率:計算方式為, 該測試集中所有TP/該測試集中所有(TP + FN )。
d.特異性:計算方式為, TN / ( FP + TN ) 。
e.平均特異性:計算方式為,該測試集中所有TN / 該測試集中所有( FP + TN ) 。
f.準確度:計算方式為, ( TP + TN ) / ( TP + TN + FN + FP)。
g.平均準確度:計算方式為, 該測試集中所有( TP + TN ) / 該測試集中所有( TP + TN + FN + FP)。
h.精確度:計算方式為,TP / ( TP+FP )。
i.平均精確度:該測試集中所有TP / ( 該測試集中所有TP+該測試集中所有FP )。
j.標簽在用例中所占比例:計算方式為,該標簽在測試集中的用例數量/測試集中的用例綜述。
為了讓評價結果更有可信度,我們采用了5分法對數據進行交叉學習驗證。
3 模型訓練
3.1 數據降維
項目文本數據在轉為詞袋模型后,得到了五千多維的二值化矩陣,這便帶來了維度災難問題,許多算法如邏輯回歸、決策樹算法等眾多算法在低維空間表現(xiàn)良好,但當輸入高維度數據后算法往往失效。這是由于訓練數據維度的增高使得算法模型為了準確分類所需的數據量呈指數增加。因此需要對數據進行降維。
這里選用LDA(線性判別式分析)模型進行數據降維,LDA是一種監(jiān)督式的線性降維算法,它通過在k維空間選擇一個投影超平面,使得不同類別在該超平面上的投影之間的距離盡可能近,同時不同類別的投影之間的距離盡可能遠,最終起到降維的效果。本項目數據經過反復測試,發(fā)現(xiàn)當維度降低到18時模型分類效果最好。
經過LDA模型,文本數據由五千多維01矩陣轉變?yōu)?8維浮點數值矩陣,單行數據示例如下:
-1.7075 1.9503 -2.8726 -0.2466 0.2406 0.1693 2.5363 -0.3792 -1.8853 -2.2728 1.1057 0.3937 -2.0014 0.5809 -0.3731 0.7594 0.1070 -0.0264
可見輸入數據變?yōu)?8維的特征向量,代表了某一條示例文本在18維向量空間上的投影。
3.2 模型設計
結合輸入數據特點和模型特點,經過對多組主流分類模型的多次重復試驗,有三類模型表現(xiàn)最為優(yōu)秀,分別是邏輯回歸模型、KNN模型和SVM模型,其中以邏輯回歸模型表現(xiàn)最為穩(wěn)定。本項目使用sklearn框架,模型的實現(xiàn)均調用sklearn中的方法。
邏輯回歸模型是線性回歸后與邏輯函數的結合,是一種有監(jiān)督的統(tǒng)計學習方法,主要用于對模型的分類。模型采用newton-cg算法作為邏輯回歸模型的求解算法并使用L2范數作為規(guī)則化范數,可防止過擬合,提升模型的泛化能力。KNN模型和SVM模型同樣具有較好的分類效果,最終分類結果準確程度與邏輯回歸模型相差很小。
3.3 模型訓練
這里選用了經過降維的數據進行模型的訓練,由于訓練數據未涉及項目數據,僅使用了用例本身的名稱、描述、狀態(tài)等信息,因此訓練出的模型使用范圍不受不同項目背景影響,面對不同項目的數據分類的準確程度不會有較大波動,因此模型具有廣泛的適用性。
模型訓練數據的數目為總體數據的80%,共8285條數據,均是從總體數據中隨機抽取得來。其他20%的數據為驗證數據。對訓練集的選取使用了交叉驗證的方法,將整體數據分為五組,選取其中一組作為驗證集,另外四組作為訓練集進行模型的訓練,共進行五輪,使每組數據都作為過一次驗證集。
3.4 標簽生成
使用訓練完成的邏輯回歸模型,通過sklearn提供的predict方法進行分類標簽的生成,輸入驗證集數據,返回標簽,此時返回的標簽是經過數值化處理的標簽。經過解碼后即可得到標簽文本。
4 分析與結論
4.1 結果分析與對比
采用5分法,共產生了5次結果,結果都相近,選取其中一次并計算指標后展示如表2,表3:
4.2 結果分析
可以看出單個標簽的精確度是在96%左右,復合類標簽的平均精確度在92%左右。具體分析如下:
(1) 復合標簽平均精確率比單個標簽的平均精確度要低,主要原因是存在若干復合標簽的所占比例很低,如表11中的“權限類流程類數據校驗類”等,在整個測試集中僅占0.1%,所產生的精確度為0,很可能是訓練集中根本沒有分到該標簽或者僅分到很少的數量,所以不具備評價整個模型的價值;
(2) 目前訓練數據中,復合標簽不區(qū)分優(yōu)先級,而實踐中,一個用例如果有多個標簽,相應存在一定的優(yōu)先級,也導致了復合標簽精確度相對較低(認為每個標簽的優(yōu)先級都一樣)。
(3) 人工標注為‘權限類數據校驗類,模型誤報為無任何標簽,一方面因為該類用例數量比例較低,1.2%左右,學習樣本不夠,另一方面一些與業(yè)務場景結合的有特殊含義的詞可能在降維過程中損失,后續(xù)可考慮補償機制。
總體來說,通過這次實驗,說明了標簽自動化生成的可行性,想要進一步的提升,可以通過改進多標簽算法,尋找用例相關的專業(yè)辭典進行切詞等方式提升準確率。
參考文獻:
[1] 李思男,李寧, 李戰(zhàn)懷. 多標簽數據挖掘技術:研究綜述[J]. 計算機科學, 2013, 40(4):14-21.
[2] 劉件, 魏程.中文分詞算法研究[J]. 網絡新媒體技術, 2008, 29(8):11-16.
【通聯(lián)編輯:梁書】