劉語嬋 姚奕 黃松 駱潤
摘 要:合理的評估機制能幫助眾包測試商業(yè)平臺客觀衡量眾包測試工作者測試任務完成質量,對眾包測試平臺有重要商業(yè)意義。眾包測試的在線自由任務模式,使得如何識別欺騙類型工作者,有效評價任務完成質量成為目前眾包研究中急需解決的問題。鑒于此,提出一種對移動應用眾包測試報告自動化評分的CTRAEA算法,利用過濾規(guī)則對無效測試報告進行剔除,通過MMDBK聚類算法,結合報告提交者歷史可信度,按權重計算確定缺陷等級,再對報告描述規(guī)范性構建度量指標及離散型度量函數(shù),并計算出測試報告規(guī)范性評分,最終加權求和兩方面評分以衡量工作者任務完成質量。實驗結果平均相對誤差為9.24%,證明評估算法準確性較高。
關鍵詞:眾包測試報告;CTRAEA算法;缺陷等級;MMDBK聚類算法;規(guī)范性度量
DOI:10. 11907/rjdk. 192488
中圖分類號:TP312 ? 文獻標識碼:A ??????????????? 文章編號:1672-7800(2020)003-0104-07
Design of Automated Evaluation Algorithm for Mobile Application
Crowdsourcing Test Report
LIU Yu-chan, YAO Yi, HUANG Song, LUO Run
(Command & Control Engineering College, Army Engineering University of PLA, Nanjing 210000, China)
Abstract: A reasonable evaluation mechanism can help the crowdsourcing test business platform objectively measure the quality of the completion of test tasks by the crowdsourcing test workers, which is of great commercial significance to the platform. Due to the online free task mode of crowdsourcing test, how to identify cheat workers and evaluate task completion quality effectively has become an urgent problem to be solved in crowdsourcing research. Aiming at the problem in the mobile applications crowdsourcing test, this paper proposes a CTRAEA algorithm for scoring the crowdsourcing test report. Firstly, the filtering rule is used to eliminate the invalid test report.? The defect level was determined by weight calculation through MMDBK clustering algorithm combined with the credibility of the report submitter. And then the normative metrics of report description and the discrete metric function are put forward to calculate the normative score of test report. Finally, the quality of the task completion of the worker is measured by making weighted summation of the two score. The average absolute error of the experimental results is 0.836 90, which proves the accuracy of the evaluation algorithm.
Key Words: crowdsourced test reports; CTRAEA algorithm; defect grade; MMDBK clustering algorithm; normative measure
0 引言
軟件測試作為一項勞動密集型工作,需要大量測試者參與,不僅僅是專業(yè)測試人員,還包括軟件面向的用戶群,只有這樣,軟件開發(fā)人員才能獲得對功能、通信、交互等方面的反饋[1]。移動應用眾包測試通過互聯(lián)網(wǎng)將移動應用軟件的測試任務分配給大眾進行測試,它將過去由員工執(zhí)行的測試任務以自由自愿的方式外包給匿名網(wǎng)絡用戶[2]。其因在線招募測試人員、無需準備測試環(huán)境以及設備成本低等優(yōu)點而被移動應用開發(fā)商及個人采用,可以幫助任務需求者尋到大量自由工作者,并利用這些工作者的智慧解決實際問題。但在測試過程中有些惡意工作者為了追求自身利益最大化而不認真工作,提交的測試結果質量低下,測試質量難以得到有效保障,可能給任務需求者造成嚴重損失。因此,對工作者提交的測試結果進行充分評價至關重要。
眾包質量評估的常用方法是專家評審法[3],將整個測試任務分給多個工作者,然后將工作者提交的答案交給專家進行人工判斷并投票,將專家評審意見作為最終正確結果。由于專家評審法需耗費大量人力、財力和時間,且評審專家的主觀性很大程度地影響了評審結果的準確性,因此采用這種方式往往效率極低。針對該問題,有研究者[4]采用一種擁有黃金標準數(shù)據(jù)的評估標準,黃金標準數(shù)據(jù)指擁有標準答案的一類數(shù)據(jù),在執(zhí)行測試任務前,讓測試工作者首先回答黃金標準數(shù)據(jù)問題,通過將工作者提交的結果與標準答案進行比較可以快速檢測出惡意工作者,并拒絕他們提交的結果;Bernstrin等[5]將該方法進一步擴展,在工作者完成實際問題時插入黃金標準數(shù)據(jù)問題,對工作者的質量進行動態(tài)評估;Ipeirotis等[6]指出受個人偏好影響,直接用EM算法[7]得到的誤差率評估工作者結果質量不合理,進而提出了一種消除個人偏好,恢復固有誤差率的方法,從而獲得更可靠的質量評估結果;Huang等[8]提出一種在Amazon Mturk中自動生成任務的方法,通過工作者的表現(xiàn)訓練生成質量評估模型,并應用該模型實現(xiàn)任務設計最優(yōu)化,該方法可以精確預測任務輸出精確度。
目前已經(jīng)存在一些眾包測試評估方法,但是質量評估方法仍受到如下幾個因素的限制:任務類型、時間、經(jīng)濟花費和工作者,但這些策略并不能排除掉所有欺騙類型工作者,尚缺乏一種比較客觀的眾包測試質量評估策略。對于任務需求者而言,其最終關心的是結果質量,想要很好地解決眾包測試結果質量問題,還需要從提交結果本身的正確性和可靠性入手。因此,本文基于測試報告分析,提出了一種合理、客觀的評價算法CTRAEA(Crowdsourced Test Reporting Automated Evaluation Algorithm),從報告內(nèi)容缺陷嚴重性和測試報告規(guī)范性兩方面對工作者表現(xiàn)進行綜合評價,以期通過這種評估算法正確衡量工作者的任務完成質量,剔除態(tài)度散漫或者惡意掘金的工作者,激勵理性優(yōu)秀工作者高質量完成任務,并提高眾包測試平臺整體性能。
1 眾包測試平臺介紹
隨著眾測模式下由人員多樣性、互補性等帶來的缺陷發(fā)現(xiàn)效率提升,眾測得到了業(yè)界廣泛關注,出現(xiàn)了很多眾測商業(yè)平臺(例如Applause、BaiduMTC、MoocTest、Testin 等)。任務請求者能夠在這些平臺上提交測試任務,并招聘眾包測試工人執(zhí)行測試。這些眾包測試平臺采用不同的績效考核和獎勵機制,能夠提供不同類型的測試服務,涵蓋不同的測試對象,按照不同的方式召集工人。
現(xiàn)有眾包測試平臺工作流程如圖1所示[9],眾包測試發(fā)包方(軟件開發(fā)方)將軟件發(fā)布到平臺并提交任務需求,眾包測試平臺根據(jù)任務需求將任務發(fā)布給眾包測試接包方(測試工作者),接包方接受任務并對軟件進行測試,一旦測試人員檢測到缺陷,就根據(jù)設計好的測試報告格式填寫,并提交測試報告。測試報告內(nèi)容主要包括設備(版本)、網(wǎng)絡、缺陷等級、Bug描述以及測試步驟等,平臺再對測試報告進行融合和評價,最后將最終報告提交給發(fā)包方。平臺技術人員與專家根據(jù)用戶測試缺陷報告對缺陷進行驗證,并根據(jù)缺陷嚴重等級及測試報告質量給出一個評分,平臺給予工作者相應獎勵。平臺將有效的測試報告歸納融合后提交給眾包測試發(fā)包方,收取一定費用。
眾包測試報告通常以簡短文字描述程序行為,并輔助截圖等信息??傮w而言,眾包測試報告相比傳統(tǒng)測試報告具有文字描述簡略、截圖信息豐富等特點[10]。由圖1的眾包測試流程可以看出,眾包測試平臺對于接包方的評定主要來源于測試報告評價,因此深入分析接包方工作者提交的測試報告有很大價值,測試報告能很大程度上反映出工作者的測試能力與測試態(tài)度。因此,本文從測試報告分析入手,提出了一種客觀的眾包測試報告評價算法,對工作者表現(xiàn)進行評價。
2 測試報告自動化評估算法設計
基于測試報告的自動化評估算法CTRAEA,能夠識別欺騙類型工作者,有效地評價任務完成質量??紤]到有的工作者為了利益隨意填寫或者不填寫測試報告,首先對眾包測試報告進行深入研究,剔除無效測試報告,然后從報告內(nèi)容缺陷嚴重性和測試報告規(guī)范性兩方面予以評估。一方面通過測試報告MMDBK算法聚類確定發(fā)現(xiàn)缺陷類型數(shù)量,并按工作者歷史可信度權重評估各類型嚴重等級;另一方面構建報告描述規(guī)范性度量指標及離散型度量函數(shù),并計算各測試報告的規(guī)范性得分。最后綜合兩者計算出每個測試報告最終評分。算法思路如圖2所示。
2.1 數(shù)據(jù)預處理
移動應用眾包測試報告有固定格式,一個報告只描述一個缺陷,工作者通過提交多個測試報告以報告發(fā)現(xiàn)的多個缺陷。對多個測試報告數(shù)據(jù)集進行分析發(fā)現(xiàn),測試報告集中存在一些特殊測試報告。Bug的描述信息字段存在以下兩種特殊語句:
(1)短語句。Bug描述一欄為空或者僅僅包含幾個字,無任何可讀性描述,僅有一些測試步驟描述。
(2)偽語句。在Bug描述一欄中,主要說明測試用例被成功執(zhí)行,不存在缺陷,測試通過。
包含以上兩條之一的測試報告屬于無效測試報告,它們沒有包含任何與軟件缺陷有關的信息。例如Bug描述字段為空或者Bug描述字段長度為1,都意味著此測試報告無意義。測試報告Bug描述字段為“沒有發(fā)現(xiàn)Bug”,則說明測試通過。因此,為了提高測試報告數(shù)據(jù)集處理效率,在對其進行處理之前,需要過濾掉這些無效測試報告。
經(jīng)過分析歸納發(fā)現(xiàn),測試報告描述信息過少,能夠直接過濾,包含偽語句測試報告的描述信息多由陳述語句構成。經(jīng)過隨機抽樣10%,發(fā)現(xiàn)描述信息普遍包含特殊字符串,例如,“測試通過”“執(zhí)行成功”“未發(fā)現(xiàn)”“無Bug”“沒有發(fā)現(xiàn)一個缺陷”等。由此可以總結出以下兩條過濾規(guī)則:①如果Bug描述的文本長度小于等于4,則過濾測試報告;②如果Bug的描述信息正則匹配能夠包含([A][P])|([N][O])|([N][D]?[Q]?[O]),則過濾測試報告。其中,A為行為詞,P為肯定詞,N為否定詞,O為對象詞,D為動作詞,Q為數(shù)量詞,它們分別包含特定詞語,如表1所示。
過濾掉無效測試報告后,需進一步對測試報告進行預處理。由于測試報告由中文自然語言構成,因此需要采用NLP技術對測試報告進行處理,主要包括單詞分割和停用詞移除??紤]到中文漢字分詞艱難,本文借助NLPIR分詞工具進行實行處理,這是一款開源的中文NLP工具,分詞效果較好。
2.2 MMDBK聚類算法與等級確定
不同的軟件缺陷對軟件質量有不同影響,有的僅僅是用戶體驗差,有的則可能是災難性的。影響大小可定義為軟件缺陷的嚴重性,可以概括為以下4種級別[11]:
(1)較輕。一些小缺陷如有錯別字、文字排版差等,對功能幾乎沒有影響,可正常使用。
(2)一般。不太嚴重的錯誤,如部分次要功能沒有實現(xiàn)、用戶界面差和響應時間長等。
(3)嚴重。主要功能模塊沒有實現(xiàn),部分主要功能喪失,次要功能全部喪失。
(4)致命。能夠造成系統(tǒng)崩潰、死機,或造成數(shù)據(jù)丟失、主要功能完全喪失等。
針對發(fā)現(xiàn)缺陷的不同等級,測試工作者對軟件質量測試的貢獻也不一樣,通常認為其能力越強,任務完成質量越高。因此,本文主要工作是通過聚類測試報告確定Bug等級。
由于測試報告和發(fā)現(xiàn)的缺陷一一對應,因此采取直接對測試報告聚類的方法。算法主要思想是:通過TF-IDF算法計算預處理后的測試報告[tf-idf]值[12],再綜合算法設計思路,將所有測試報告的[tf-idf]值作為聚類數(shù)據(jù)對象[On=x1,x2,,xn],每個測試報告的一組[tf-idf]值就是其中一個數(shù)據(jù)對象[xi],然后利用MMDBK算法對測試報告進行聚類。
2.2.1 MMDBK聚類算法
MMDBK(Max-Min and Davies-Bouldin Index based K-means)算法是針對K-means算法缺陷而改進的聚類算法[13],它對K-means算法中聚類個數(shù)[K]的確定以及[K]個聚類中心的選定作出改進,通過使用Davies-Bouldin Index(縮寫為DBI)聚類指標[14]和最大最小距離法[15],確定最佳聚類個數(shù)并選取新的聚類中心,以保證各類之間具有較小相似度。
MMDBK總體聚類算法步驟為:
Step1:從[n]個數(shù)據(jù)對象[On=x1,x2,,xn]中選出距離最遠的兩個對象[x1]和[x2]。
Step2:通過近鄰查找找出與聚類中心距離小于閾值[d]的所有對象,將其加入此中心的臨近類中,重新計算此臨近類的中心。
Step3:判斷計算的DBI值是否比上一輪小,若比上一輪小則符合循環(huán)條件。
Step4:若符合條件,則尋找新的聚類中心,重復Step2和Step3。
Step5:若不符合條件,則停止循環(huán),將剩余數(shù)據(jù)對象歸類到最鄰近的類中。
Step6:輸出聚類結果。
算法設計具體涉及以下3個部分:
(1)使用SFC算法[13],以避免K-means算法在選取聚類中心時過于鄰近而導致聚類邊界模糊的問題。提出一種復雜度為[O(n)]的兩個距離最遠的對象,形成兩個初始聚類,以保證后續(xù)計算中不同類之間有較低相似度。
(2)通過SFC算法找到初始的兩個聚類中心并更新類中心后,再確定聚類個數(shù)并找到剩下的[K-2]個聚類中心,使得各聚類中心之間的相似度盡量低是算法的關鍵。
MMDBK算法提出改進的最大最小距離法解決問題,設計思想如下:
已知[c1]、[c2]兩個初始聚類中心,分別計算出剩余對象到[c1]、[c2]的距離[Dj1]和[Dj2],若[Dk=maxmin(Dj1,Dj2),][j=1,2,?,n],并且[Dk>θ?D12], [D12]為[c1]和[c2]的距離,則取[xj]為第3個聚類中心,[c3=xj]。
如果[c3]存在,則計算[Dk=maxmin(Dj1,Dj2,Dj3),][j=1,2,?,n],若[Dk>θ?D12],則找到了第4個聚類中心。以此類推,直到[Dk>θ?D12]不滿足時,則結束聚類中心尋找。
(3)算法基于Davies-Bouldin Index(DBI)聚類指標實現(xiàn)聚類結果評估。DBI聚類指標是一種非模糊型的集群評估指標,主要以類間分離度和類內(nèi)的內(nèi)聚度兩種因素為依據(jù),即不同類之間相異性高,而同類之中數(shù)據(jù)對象相似性高。當類內(nèi)各數(shù)據(jù)對象間距離越小而類間距離越大,DBI值也就越小,表明此聚類數(shù)目下的聚類結果最佳。其類間距離和類內(nèi)距離計算分別如式(1)、式(2)所示。
其中,[x]表示第i個類內(nèi)的數(shù)據(jù)對象,[vi]表示第i個類的質心,[Ci]表示第i個類內(nèi)的數(shù)據(jù)對象數(shù)目,[Si]表示第i個類內(nèi)各數(shù)據(jù)對象與質心[vi]的標準誤差。
Davies-Bouldin Index公式如式(3)所示。
其中,[Si]表示第i個類的類內(nèi)距離,[Sj]表示第j個類的類內(nèi)距離,[di,j]表示第i個類與第j個類質心之間的歐式距離,[K]表示聚類個數(shù)。
好的聚類結果應該是同一類間的類內(nèi)距離小、類間距離大,能夠滿足該條件,即分子越小、分母越大時,DBI值越小,即通過該值可得到最佳聚類數(shù)目。
2.2.2 缺陷等級評估
聚類完成后,每一類都可以被看作是待測軟件某一個缺陷的測試報告集,針對一種缺陷,可以根據(jù)工作者填寫的測試報告等級進行評估[16-17]。優(yōu)先考慮測試歷史可信度高的工作者測試報告,根據(jù)平臺參與工作者的歷史可信度進行歸一化處理,作為權重系數(shù)分別計算出測試報告集中此類缺陷較輕、一般、嚴重、致命的比例系數(shù),選取比例最高的一種缺陷等級作為此類缺陷的最終等級。
整個測試報告數(shù)據(jù)集被聚類成[N]類缺陷,分別為測試報告集合[Cla1]、[Cla2]、…、[ClaN],每一類中又包含4個等級的測試報告,其中每一類每個等級的集合中包含[mi,j](j=1,2,3,4分別表示較輕、一般、嚴重、崩潰)個測試報告。[Clai,j,k]表示第i缺陷中第j級的第k測試報告,對應提交測試報告的工作者歷史可信度用[Ui,j,k]表示,指第i第j級的第k測試報告提交者的貢獻度,[TR]為所有測試報告數(shù)量,即對應的工作者數(shù)量。對貢獻度進行標準歸一化,求得所有用戶歷史可信度的均值如式(4)所示。
用戶歷史貢獻值方差如式(5)所示。
歸一化后如式(6)所示。
針對每一類缺陷,分別計算較輕、一般、嚴重、致命的比例系數(shù)。
其中,[δ]是測試報告系數(shù),一般設置為0.8。
選擇[Bi=max(Bi,1,Bi,2,Bi,3Bi,4)]所屬的等級作為第[i]類缺陷的等級。
同時設定每種等級價值比例,等級為致命、嚴重、一般、較輕的權限等級評分分別為10分、7.5分、5分、2.5分。
2.3 報告規(guī)范性度量
測試報告規(guī)范性反映了眾包測試工作者完成任務的能力與態(tài)度,是工作者測試報告評價的因素之一。因此,為了更準確地評價測試報告的規(guī)范性,選取多個度量指標構建度量函數(shù),從不同角度對測試報告規(guī)范進行評估。
2.3.1 度量指標選擇
依據(jù)已有需求規(guī)格說明書和缺陷報告質量評估相關研究[18],本文定義了7個可量化的指標用以度量測試報告質量,主要對缺陷描述信息或測試步驟作評估:
(1)文本長度。文本長度指測試報告中缺陷描述信息中包含的漢字數(shù)量,文本長度保持在合適數(shù)值范圍的測試報告質量較好。
(2)可讀性??梢远攘课谋镜拈喿x難度,度量公式為[Y=14.959 6X1+39.077 46X2-2.48X3],其中,[X1]表示難詞的比例,[X2]表示句子數(shù)量,[X3]表示漢字平均筆畫數(shù)。
(3)動作詞。在描述缺陷時,往往會在測試步驟中描述動作序列,這些動作是測試工作者觸發(fā)軟件界面或接口事件的關鍵。因此,需要關注測試報告中的動作詞,如“打開”“點擊”“退出”等。
(4)對象詞。當測試工作者發(fā)現(xiàn)軟件缺陷時,他們會用一些能體現(xiàn)系統(tǒng)錯誤的詞語描述這種行為,比如“問題”“缺陷”“Bug”等。
(5)否定詞。當測試工作者發(fā)現(xiàn)軟件缺陷時,他們會用一些否定的詞語描述系統(tǒng)功能缺失,比如“缺失”“失敗”“失效”等。
(6)模糊詞。在測試過程中,測試工作者如果遇到不明確或者不確定的缺陷時,更傾向于使用一些模糊詞匯進行描述,這些描述可能會給測試報告的理解帶來困難。模糊詞有“幾乎”“少數(shù)”“可能”“一般”等。
(7)界面元素。移動應用軟件界面由許多交互組件組成,軟件測試時需要對相應組件進行點擊、輸入、滑動等操作,描述動作序列時,必定會包含這些界面元素,如“按鈕”“滑動條”等。
測試步驟長度是根據(jù)軟件復雜程度而定,無法用一個合適的文本長度進行度量。于是,針對已經(jīng)預處理完的分詞文本,對缺陷描述信息用文本長度進行單獨量化,對缺陷描述信息和測試步驟用剩余6個指標共同量化,最后針對每個測試報告都生成一個7維的指標向量。
2.3.2 度量函數(shù)建立
對測試報告指標化后,每個測試報告都可以用一個7維向量表示。為了將指標的數(shù)值轉化成評估質量值,比如“好評”“中評”“差評”,引用Xin Chen[19]提出的度量函數(shù)將連續(xù)值轉化為離散值。
度量函數(shù)被分為4種:增長型度量函數(shù)、下降型度量函數(shù)、凸型度量函數(shù)、凹型度量函數(shù),如圖3所示。
圖3含義如下:
(1)增長型度量函數(shù)。當指標小于[x1]時,該指標為差評,當指標大于[x1]時,該指標為好評。
(2)下降型度量函數(shù)。當指標小于[x1]時,該指標為好評,當指標大于[x1]時,該指標為差評。
(3)凸型度量函數(shù)。當指標處于[x1]和[x2]之間時,該指標為好評,當指標小于[x1]或大于[x2]時,該指標為差評。
(4)凹型度量函數(shù)。當指標處于[x1]和[x2]之間時,該指標為差評,當指標小于[x1]或大于[x2]時,該指標為好評。
但是上述度量函數(shù)只能劃分出好與差兩種離散值,為此,本文需要再對度量函數(shù)進行擴展,增加分界參數(shù)[x2]、[x3]、[x4],使得擴展的度量函數(shù)能劃分出好、中、差3種離散值,如圖4所示。
表2總結了7個指標對應的度量函數(shù)類型及函數(shù)參數(shù)設置,對于增長型和下降型度量函數(shù),使用[0-a-b-∞]形式表示參數(shù)區(qū)間,為3個區(qū)間。對于凸型和凹型度量函數(shù),使用[0-a-b-c-d-∞]形式表示參數(shù)區(qū)間,為5個區(qū)間。
對測試報告進行深入分析可知,文本最適合長度是15~30,太長或太短的文本都會影響測試報告質量。因此,用凸型擴展度量函數(shù)進行評估,可讀性同樣如此,具體參數(shù)會通過實驗調試獲得。對象詞和否定詞指標用明確的數(shù)字表示,如果文本中包含0個或2個以上的對象詞或者否定詞,則認為測試報告質量低,如果只有1個對象詞或者否定詞,則認為其質量高。動作詞和界面元素使用增加型擴展度量函數(shù),即如果包含這些詞越多,則認為該指標上測試報告質量越好。只有模糊詞指標屬于下降型擴展度量函數(shù),模糊詞越多,則測試報告質量越差。
2.3.3 報告規(guī)范性評分
經(jīng)過度量函數(shù)設置參數(shù)進行分類,可以按指標得到測試報告的“好評”“中評”“差評”,為了將多個指標評價匯總,3種不同評價對應不同分數(shù)等級,無效測試報告都設定為0分;對其它有效測試報告按照好評、中評、差評的數(shù)量順序進行排序,7個指標全部好評的規(guī)范性得分為max=10,7個指標全部差評的規(guī)范性得分為min=1,從低到高排序第i位測試報告的規(guī)范性得分為(max-min)*i/(結果數(shù)-1)+min。具體分數(shù)如表3所示,針對測試報告的向量指標得到“好評”“中評”“差評”數(shù)量,對照表3進行查詢,最后可以得到測試報告規(guī)范性的質量得分。
2.4 評估算法設計
根據(jù)缺陷等級得分和規(guī)范性得分,通過加權得到最終得分,其評分如式(8)所示。
最終得分=[a]*缺陷等級得分+[1-a]*規(guī)范性得分?? (8)
其中,[a]表示缺陷等級分數(shù)權重,一般為0.7,規(guī)范性得分權重為0.3。
CTRAEA算法偽代碼如下:
輸入:測試報告集[TR],工作者歷史可信度[GU]
CTRAEA ([TR],[GU])
1?? for i in range(n) //預處理階段
2???? if [TRi]符合匹配規(guī)則
3?????? [mTRi=0],delete [TRi]//無效報告記為0分,并剔除
4?? 統(tǒng)計無效報告數(shù)量//此數(shù)值評估過濾規(guī)則的準確性
5?? [newTR=split(TR)]//對所有有效報告分詞,去停用詞
6?? [CN=Cluster(newTR)]//聚類評價缺陷等級
7?? for i in range(N)遍歷每一類缺陷
8???? for j in range(4) //遍歷此類缺陷的每一等級
9?????? for k in range([mi,j]) //遍歷此等級的所有測試報告
10??????? [Bi,j=k=1mi,j(GUi,j,k×δ)]
11??????? [Bi=max(Bi,1,Bi,2,Bi,3Bi,4)]//確定缺陷等級
12???? [DGi=ratio (Bi)]//確定缺陷等級分數(shù)
13?? for i in range(m) //測試報告規(guī)范性度量
14???? [ZBi=newTERQAF(newTRi)]
15???? [QGi=search(ZBi)]
16???? [Rwi=a*DGi+(1-a)*QGi]//將缺陷等級分數(shù)與規(guī)范性分數(shù)加權求和,[a]一般為0.7
17?? 輸出[mTRi] 和[Rwi]
在算法中,1~5行都是對測試報告進行預處理,6行是通過調用MMDBK算法進行聚類,7~12行是利用式(7)計算各類缺陷各等級比重[Bi,j],并確定最終缺陷等級及分數(shù)[DGi],14行是調用度量算法得到各指標度量的質量值,查表后得到具體分數(shù)[QGi],最后加權求和[DGi]和[DGi]得到最終得分數(shù)值[Rwi]。
3 實驗驗證
3.1 測試報告數(shù)據(jù)集
本文實驗數(shù)據(jù)集從Kibug眾包測試平臺獲取得到[20],該平臺成立于 2012 年,是一個眾包任務的分發(fā)、收集和分析平臺。共收集了4個測試任務,分別是圖個樂、愛逛街、網(wǎng)易云、優(yōu)播客。
主要摘取屬性為“設備版本”“網(wǎng)絡”“等級”“Bug描述”“測試步驟”的幾列作為研究關鍵詞。以上4個眾包測試任務結束時,絕大部分缺陷都被檢出,每個提交的測試報告也已被管理人員審核,并且標上“有效”“無效”標簽,標注人員還記錄了每個移動應用軟件的缺陷數(shù)量,標注結果統(tǒng)計如表4所示。
本文總計收集到1 380個測試報告,其中包含圖個樂291個,愛逛街408個,網(wǎng)易云238個,優(yōu)播客443個。表1記錄了標注結果,4個測試報告集中無限測試報告數(shù)量分別是61、193、149和238。
3.2 算法計算結果評價
CTRAEA算法預處理階段將所有測試報告作為過濾器的輸入數(shù)據(jù)并運行,篩選出有效和無效測試報告。已知標注的無效測試報告分別是61、193、149、238個,經(jīng)過兩條規(guī)則過濾后,正確過濾了61、189、147和232個無效測試報告,過濾準確率為97.48%~100%,說明過濾規(guī)則有效,但是錯誤過濾的報告數(shù)量比未正確過濾的報告數(shù)量多。經(jīng)人工檢查發(fā)現(xiàn),有效測試報告語句中包含“無”字,能夠被正則匹配到,因此被過濾。
預處理完成后,利用MMDBK算法對測試報告聚類并確定每類缺陷等級,評估結果如表5所示。
表5中缺陷等級評估結果準確性都在90%左右,最高達93.65%,說明聚類后對提交者能力和缺陷等級參數(shù)進行評估,準確性較高。
在質量性評估的文本長度指標中,為了確定參數(shù)[x1]、[x2]、[x3]和[x4]的具體數(shù)值,采用控制變量法,固定3個參數(shù)值,逐漸增加一個參數(shù)值,利用相對誤差評價指標比較預測結果精度,得到文本長度的4個參數(shù)最佳取值分別為9、15、23、32,同樣得到可讀性參數(shù)最佳取值為-5、-1、6、12。用上文得到的參數(shù)進行最終評分,得到測試報告重要性和規(guī)范性綜合得分。計算每個測試報告得分的相對誤差,取平均值作為該算法對軟件評估的相對誤差,最終結果如表6所示。
從實驗數(shù)據(jù)可以看出,CTRAEA自動化評估算法評估測試報告的分數(shù)與標注得分平均相對誤差為9.24%,4個軟件的平均相對誤差皆不超過10%,由此可見CTRAEA算法準確高效。
4 結語
本文針對移動應用眾包測試質量評估問題進行了探索,對眾包測試報告展開了深入研究,提出了CTRAEA自動化評估算法。該算法一方面通過測試報告MMDBK算法聚類確定發(fā)現(xiàn)缺陷類型數(shù)量,并按提交者歷史可信度權重評估各缺陷類型嚴重等級,另一方面通過規(guī)范性度量指標和離散型度量函數(shù)評價各測試報告的規(guī)范性,并綜合兩者計算出每個測試報告最終得分。整個算法無需人工評判,只需周期性地對部分報告進行復審檢驗。實驗數(shù)據(jù)也證明測試報告得分的評估方案準確、高效。
本文方法也存在待改進之處。由于只對測試報告質量進行度量,忽略了提交速度也是對工作者能力評價的重要影響因素,重復的測試報告根據(jù)提交速度不同可能存在抄襲現(xiàn)象,這些可能會造成評估結果偏差。因此,后續(xù)研究中將加入此因素進行算法設計。
參考文獻:
[1]王艷青,于海洋. 計算機軟件測試技術綜述[J]. 電子技術與軟件工程,2017(22):47-48.
[2]劉瑩,張濤,李坤,李楠. 移動應用眾包測試人員評價模型[J]. 計算機應用,2017,37(12):3569-3573,3596.
[3]徐瀛,程廣明. 眾包測試模式現(xiàn)狀概述及生態(tài)效益分析[J]. 科技創(chuàng)新導報,2018,15(29):60-62.
[4]云測. 專家報告審核標準[EB/OL]. https://new.ztestin.com/help/helpinfo/index?id=69.
[5]LE,EDMONDS A,HESTER,et al. Ensuring quality in crowdsourced search relevance[C]. Workshop on crowdsourcing for search evaluation at SIGIR10,2010:21-26.
[6]BERNSTEIN M,BRANDT J,MILLER R,et al. Crowds in two sconds: enabling realtime crowd-powered interfaces[C]. UIST11,2011, 33-42.
[7]IPEIROTIS P G,PROVOST F,WANG J. Quality management on Amazon mechanical turk[C]. Proceedings of the SIGKDD Workshop on Human Computation,2010: 64-67.
[8]DAWID A P, SKENE A M. Maximum likelihood estimation of Observer error-rates using the EM algorithm[J]. Applied Statistics,1979,28(1):20-28.
[9]路津. 常用軟件功能性測試方法及缺陷分類[C]. 全國軟件測試能力驗證總結會暨中國宇航學會計算機應用專業(yè)委員會2006年學術年會論文集,2006:113-116.
[10]何曉靜. 對TF-IDF算法的改進及實驗研究[D]. 長春:吉林大學,2017.
[11]仲逸秋. 安全漏洞眾包驗證平臺的設計與實現(xiàn)[D]. 南京:南京大學,2018.
[12]崔強. 眾包測試中工作者選擇和測試報告分類方法研究[D]. 北京:中國科學院研究生院,2017.
[13]馮超. K-means聚類算法的研究[D]. 大連:大連理工大學,2007.
[14]COELHO G P,BARBANTE C C,BOCCATO L,et al. Automatic feature selection for BCI: an analysis using the davies-bouldin index and extreme learning machines[C]. The 2012 International Joint Conference on Neural Networks(IJCNN),2012.
[15]劉燕. 基于抽樣和最大最小距離法的并行K-means聚類算法[J]. 智能計算機與應用,2018,8(6):37-39,43.
[16]肖靜. 基于軟件測試中缺陷等級的可靠性評估方法[C]. 中國國防科技質量與可靠性高峰論壇論文集,2010:236-238.
[17]呂林濤,安存召,李翠. 面向軟件質量的Bug等級評價算法[J]. 計算機工程與設計,2008,29(23):6033-6036.
[18]成靜,葛璐琦,張濤,等. 移動應用眾包測試質量影響因素分析[J]. 計算機應用,2018,38(9):2626-2630.
[19]XIN CHEN,HE JIANG,XIAOCHEN LI,et al.Automated quality assessment for crowdsourced test reports of mobile applications[C]. 2018 IEEE 25th International Conference on Software Analysis,Evolution and Reengi-neering,2018:368-379.
[20]陳信. 眾包測試報告的挖掘與評估[D]. 大連:大連理工大學,2018.
(責任編輯:孫 娟)
收稿日期:2019-11-11
基金項目:國家重點研發(fā)計劃項目(2018YFB1403400)
作者簡介:劉語嬋(1996-),女,陸軍工程大學指揮控制工程學院碩士研究生,研究方向為軟件測試、眾包測試;姚奕(1981-),男,博士,陸軍工程大學指揮控制工程學院副教授、碩士生導師,研究方向為軟件測試、軟件工程;黃松(1970-),男,博士,陸軍工程大學指揮控制工程學院教授、博士生導師,研究方向為軟件測試、軟件工程;駱潤(1996-),男,陸軍工程大學指揮控制工程學院碩士研究生,研究方向為軟件測試、軟件工程。本文通訊作者:姚奕。