莫夜:一種改進眾包工人驗證移動應用中的可疑bug的工具

慕測科技 發佈 2020-01-09T04:51:28+00:00

然而,在現有的平台上,眾包工人獨立工作,且沒有協作和指導。介紹近年來,眾包測試已經成為一個研究熱點,尤其是在移動測試方向。

南京大學智能軟體工程實驗室

iselab.cn

摘要

眾包測試已經成為測試Android應用程式的新趨勢。然而,在現有的平台上,眾包工人獨立工作,且沒有協作和指導。在本文中,我們利用動態自動化測試技術和靜態分析技術來促進眾包測試,實現了一個名為MoYe的新工具。MoYe首先利用動態自動測試技術構建了Android的窗口轉換圖(WTG),對可疑的bug進行了標註。此外,MoYe通過靜態分析技術從APK文件中提取窗口轉換來增強WTG。然後,MoYe基於增強的WTG模型和實時截獲的用戶操作構建推薦引擎,為不同的群組工作者分配不同的測試任務。此外,MoYe還為群組工作人員提供實時指導,以執行測試任務。幫助他們驗證可疑的bug或探索新的bug。初步實驗表明,MoYe可以提高眾包測試的效率和覆蓋率。演示視頻可以在https://youtu.be/epotHhEWHbU上找到。

介紹

近年來,眾包測試已經成為一個研究熱點,尤其是在移動測試方向。由於眾包工作人員可以在自己的設備上測試Android應用程式,因此著名的Android碎片化問題可以通過眾包測試在一定程度上得到緩解。越來越多的眾包測試平台出現,並為持續的GUI測試、可用性測試和oracle問題提供在線大規模服務。

然而,眾包測試仍然存在一些挑戰和問題。現有的平台通常為任務提供在線測試需求的描述。然而,眾包工人通常不熟悉正在測試的應用程式。因此,群體工作者很難選擇他們擅長的任務。如果沒有有效的指導,眾包工人將大部分時間花在熟悉應用程式上,而不是集中在測試上。因此,眾包測試的質量依賴於眾包工作者。不幸的是,在線招聘的測試人員有不同的經驗和技能水平。對於缺乏經驗或不熟練的測試人員來說,很難快速、高質量地完成測試任務。

為了解決上述問題,我們實現了一個工具MoYe來改進眾包測試。MoYe首先利用動態自動測試技術構建了一個窗口轉換圖(WTG)模型,該模型提供了可疑bug的注釋。此外,MoYe使用靜態分析技術來增強WTG模型。然後,MoYe根據WTG模型生成測試任務,並建立推薦模型,為群組工作人員分配不同的測試任務。該模型基於協同過濾算法,依賴於異常類型、事件類型等特徵實現了任務推薦功能,基於廣度優先遍歷策略,MoYe計算當前活動窗口到測試任務窗口的轉換路徑,並指導工作人員實時完成測試任務。

MoYe工具

如圖1所示,MoYe的工作過程如下:(1)MoYe建立了WTG模型,描述了不同窗口之間的轉換,並對動態測試發現的可疑錯誤進行了注釋。(2)根據WTG模型生成的測試任務,MoYe通過協同過濾算法為群組工作人員推薦測試任務。(3)從當前活動窗口開始,MoYe計算測試任務窗口的路徑,通過該路徑,工作人員完成任務以驗證可疑的錯誤或探索新的錯誤。


1.窗口轉換圖

WTG模型表示為有向圖結構,定義為G=(W,E,ϵ)。這裡我們使用W和E來表示窗口和事件的集合。窗口是指Android應用程式中的活動、對話框或菜單。事件是指小部件事件或默認事件。窗口小部件事件是e=[v,t,s],其中v是窗口中的窗口小部件(例如,v可以是按鈕),t是事件類型(例如,t可以是單擊),s是事件發生時的時間戳(例如,s可以是單擊按鈕時的時間)。默認事件將表示為e=[w,t,s],其中w是當前活動的窗口,t={返回,旋轉,主頁,節能,菜單}描述五種類型的默認事件,s是時間戳。邊e=w1→w2表示由於特定事件導致的窗口轉換。窗口w1表示事件的開始窗口,w2表示事件的結束窗口。標籤ϵ:ϵ(e)={普通窗口轉換、異常窗口轉換、未覆蓋窗口轉換}表示不同的事件導致不同的窗口轉換。

在自動化測試的指導下,MoYe在Android應用程式中收集運行時異常。根據異常日誌中的時間戳,MoYe在WTG模型中找到相應的事件。通過在WTG模型中設置ϵ(e)={異常窗口跳轉},MoYe用可疑的bug來注釋相關的窗口轉換,而這些bug是群組工作人員需要複製和驗證的。對於沒有觸發任何異常的事件,MoYe設置ϵ(e)={普通窗口跳轉},這表示不需要手動測試相關的窗口轉換。基於靜態分析技術,MoYe生成新的自動測試未覆蓋的窗口轉換,將對應邊添加到WTG模型的有向圖中,並設置ϵ(e)={未覆蓋的窗口轉換},這有助於眾包工人探索新的bug。

2. 生成測試任務

在MoYe中有兩種測試任務。對於注釋有可疑錯誤的異常窗口轉換,我們應該找到與異常相關的事件序列。從觸發異常的邊緣e0開始,我們在WTG模型中收集一些連接到e0的邊。將選擇滿足相應時間戳小於並且最接近e0的條件的邊e1。取e1,e2。. . ,em-1分別作為起始邊,並重複上述操作,我們附加m個不同的邊來創建路徑p=e0,e1,…,em並通過該路徑生成測試用例。眾包工人應該執行測試用例來手動驗證可疑的bug。對於未覆蓋的窗口轉換,眾包工人只需自由測試,不需要重現bug。

3. 測試任務推薦模型

基於項目的協同過濾算法根據用戶的歷史偏好預測用戶對項目的偏好程度。MoYe利用該算法建立了一個測試任務推薦模型,該模型可以幫助眾包工人從大量的測試任務中找到感興趣的任務。對於不易發現代表性屬性的窗口轉換,MoYe在推薦任務時採用隨機策略。本節中的以下方法適用於異常的窗口轉換。

3.1 冷啟動

冷啟動是在將新的眾包工人或新的測試用例添加到平台時,模型中必須面對的問題。首先,MoYe研究了新工人冷起動的解決方案。MoYe根據這些測試用例觸發的異常類型對測試用例進行分類;然後,MoYe隨機、均勻地從每個類別中選擇一些異常給新的眾包工人。此外,MoYe還研究了新測試用例的冷啟動解決方案。MoYe通過分析異常的性質,基於餘弦相似度計算不同測試用例之間的相似度,實現粗粒度的個性化推薦。基於第2.1節中構建的WTG模型,MoYe用三個特性描述了測試用例。測試用例Ti轉換為向量:

3.2 基於項的協同過濾推薦

眾包測試的前5分鐘是推薦模型的冷啟動階段。在收集了眾包工人偏好數據後,MoYe採用基於項的協同過濾算法構建推薦模型。給定當前眾包工人u選擇的測試用例,計算其他未選擇測試用例的偏好。計算步驟如下:(1)計算測試用例之間的相似度:與公式(2)的相似度計算不同,MoYe記錄了工人對不同測試用例的選擇。基於這些數據,計算了不同測試用例之間的相似度。使用以下公式計算測試用例i和測試用例j之間的相似性Fij:

N(i)表示選擇測試用例i進行測試的工作組,N(j)表示選擇測試用例j進行測試的工作組。(2)預測眾包工人對其他測試用例的偏好:根據眾包工人u選擇的歷史測試用例N(u),MoYe基於KNN預測群體工作者u對測試用例j的偏好度Puj。

4. 實時引導模型

根據當前活動窗口,MoYe根據不同的規則計算窗口的跳轉路徑,實現實時提示和引導。

實驗

1. 研究問題

RQ1:MoYe能提高眾包測試的效率嗎?

RQ2:MoYe通過靜態分析可以有效地提高眾包測試的覆蓋率嗎?

RQ1旨在探索MoYe對傳統眾包測試的改進,幫助眾包工作者發現更多可疑的bug。RQ2的目的是驗證MoYe所採用的靜態分析是否能夠找到新的activities,通過這些activities,眾包工人可以探索新的bug。

2. 實驗裝置

實驗選擇了三款Android應用:「jiandou」、「jilebu」和「QQyingyin」。每個應用程式在測試期間設置三組控制實驗:傳統的眾包測試、僅包括自動測試指導的眾包測試以及由自動測試和靜態分析(MoYe)指導的眾包測試。我們將| C |定義為傳統的眾包測試過程,將| A |定義為沒有靜態分析的自動引導眾包測試,將| T |定義為MoYe工具。

3. 實驗結果

為了回答RQ1,我們將眾包測試的效率定義為每單位時間觸發的bug數量。在實驗中,研究人員每分鐘都會計算出眾包工人中發現的非重複性bug的數量。我們在圖2中給出了三個應用程式中的bug數量隨時間變化的折線圖。從這三款應用的總體趨勢來看,眾包工人可以藉助MoYe發現更多的bug。


為了回答RQ2,表1分別統計了三個應用程式中小部件的平均覆蓋率,灰色部分表示「jiandou」應用程式,粉色部分表示「jilebu」應用程式,藍色部分表示「QQyingyin」應用程式。|A |要求人群工人自由測試窗口,| T |包括指導眾包工人測試窗口。根據widget覆蓋的結果,我們發現在MoYe的指導下眾包工人可以觸發更多的widget來發現新的activities,比如長列表底部的活動。需要注意,| A |很難達到「jiandou」的AlerDialog,而| T |可以幫助達到66%的widget覆蓋率。因此,MoYe可以幫助實現眾包測試的高覆蓋率。


使用

MoYe工具有兩種使用場景:異常的窗口轉換和未覆蓋的窗口轉換。在本節中,我們首先描述MoYe SDK在應用程式中的集成,並說明MoYe如何通過核心場景進行操作。

集成:MoYe SDK需要通過添加一些特定的代碼手動集成到應用程式中,所以需要單獨完成。集成有三個步驟,它們列在網站中。

網站url:http://118.178.18.181:58014/#/index

場景-異常窗口轉換:對於選擇異常窗口轉換的眾包工人,他首先單擊按鈕發送測試任務推薦請求。在伺服器響應推薦列表後,工作進程從中選擇一個測試任務。然後,MoYe計算從當前活動窗口到測試任務窗口的事件序列,並拍攝每個事件的螢幕快照,以指導群組工作人員完成測試任務。當工人觸發一個bug時,應該提交一個bug報告。工具按圖3所示的方式運行。


總結

本文提出了一種改進的眾包測試工具MoYe,它有助於指導眾包工作者更好地工作。首先,MoYe建立了基於自動測試和靜態分析的WTG模型,該模型為眾包工人標記可疑的bug。其次,通過收集眾包工人的歷史測試行為,MoYe實現了一個協同測試任務推薦模型來優化資源分配。再次,當眾包工人選擇一個測試任務時,MoYe計算轉換路徑,指導眾包工人完成測試任務,實時驗證可疑的bug或探索新的bug。初步結果表明,MoYe提高了眾包測試的效率和覆蓋率。

致謝

本文由南京大學軟體學院 2018 級碩士龔愛翻譯轉述。

感謝國家自然科學基金(61932012,61802171,61772014)支持!

關鍵字: