成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

【NCTS峰會回顧】李元春:強化學習在自動測試中的應用

開發 前端 人工智能
2019年10月26日,由Testin主辦的第二屆NCTS中國云測試行業峰會在京召開,此次峰會以“AI+未來”為主題,匯聚來自國內外測試領域的知名專家學者、領先企業決策者、高層技術管理者、媒體從業者等,共同探討高端云測試技術。

2019年10月26日,由Testin主辦的第二屆NCTS中國云測試行業峰會在京召開,此次峰會以“AI+未來”為主題,匯聚來自國內外測試領域的知名專家學者、領先企業決策者、高層技術管理者、媒體從業者等,共同探討高端云測試技術,幫助測試從業者了解最前沿行業趨勢,及最新的行業實踐。

[[283751]]

會上,北京大學計算機系博士李元春做《強化學習在自動測試中的應用》主題演講。李元春介紹了關于GUI測試相關的研究并指出,“將強化學習應用到GUI測試的難點主要是狀態的表示和獎勵函數的設計,即如何將交互界面中的圖像、文本等多模態特征進行有效的編碼,以及如何將測試的目標轉化成對測試輸入的獎勵。”

以下為李元春演講實錄:

各位同行大家好!很榮幸在這里分享我做的關于GUI測試相關的工作,我叫李元春。我研究的方向是移動應用的隱私和安全,做隱私安全相關分析時,我經常用到靜態分析或者動態分析的技術,在動態分析中,如何對應用進行動態的測試,使得應用能夠覆蓋足夠多的代碼,觸發足夠多的隱私安全的敏感行為,直接決定了隱私安全分析結果的完整性。因此,接觸到GUI測試的研究方向,也做了微小的探索性工作。我今天和大家分享的內容更多的是偏技術落地。

首先介紹一下GUI測試的背景,基于軟件的圖形界面,生成交互動作序列作為測試的用例。主要的應用場景是兩種,一種是GUI的遍歷測試,即如何對軟件的功能進行充分的探索,第二是功能測試,比如對一個應用的登陸功能進行測試,生成的測試用例可能就是輸入賬戶名,輸入密碼,點擊登陸。

根據這兩個場景,我分別使用深度學習和強化學習技術進行了探索。

首先是基于深度學習的GUI遍歷測試。自動的GUI遍歷測試主要有兩種主流的策略,一種是隨機的策略,比如安卓的官方工具Monkey就是隨機的策略,這些工具在測試應用的時候是像猴子一樣看不懂應用具體的GUI和代碼,生成完全與代碼內容無關的測試用例。第二種是基于模型的策略,對代碼進行靜態分析或動態分析,建立起一個模型,用這個模型去指導輸入。比如右邊的圖有一些學術論文中的工具,通過分析代碼的執行路徑,用符號執行求解路徑到達方式,這樣能生成一個更加有針對性的測試用例。這些方法的共同點,都是在測試的易用性和測試效率之間做一個權衡。比如Monkey就是追求易用性而犧牲效率,對任何應用都可以快速的測試,但是缺點也特別明顯,隨機測試用例很難去解釋、拓展和重現。基于模型的策略,通過分析代碼,生成用例,主要缺點是需要對代碼進行分析。現在很多應用的代碼都特別復雜,有很多種語言混合,用了各種高級語言的特性,使得靜態分析難度很大。還有,黑盒測試時拿不到源代碼,或者代碼進行了加密,這種情況下很難用基于模型的靜態分析的方法來做。現在主流的方法是在這兩者之間的平衡,同樣是基于模型生成測試用例,但這個模型不是對代碼進行分析建模,而是對應用執行過程中界面轉換關系進行建模,僅僅作為記憶的功能,在之后的生成測試用例的時候避免無效的輸入。

這就是剛才所說的第三種方法,常用的一種界面轉換圖的模型,比如在這個模型里面,每個節點都是界面的狀態,每一條邊都是狀態之間的轉換關系,構造出這樣模型之后,可以對應用進行測試。右面的圖是我之前做的一個工具DroidBot,可以針對任意應用,在黑盒情況下把界面轉換圖構造出來。基于界面轉換圖,任何人可以編寫遍歷測試的策略,例如可以設計深度優先,寬度優先,隨機探測,或者啟發式規則等等。

然而,使用這些簡單的規則探索應用功能的效率往往不高,算法往往無法快速地到達應用中重要的界面和功能。我們想到一個很奇妙的點,當進行人工測試的時候,不管是真實的測試人員,還是用戶,他們雖然對代碼沒有任何理解,他們往往可以很高效的對應用界面進行探索。我們思考了一下其中的原因,主要是兩點,第一點,不同應用的GUI交互模式是存在共性的,比如說不管什么應用,都有一些搜索功能,很多應用都是一個向下滑的瀑布式的信息流的結構,就算是功能沒有相似性,交互模式也是有相似性的。第二個原因,很多人雖然之前沒有測試經驗,但是使用過很多應用,潛意識中學習到了各種各樣的交互模式。那么,我們想,能不能用機器學習的方法把人使用應用的交互模式學出來,用這樣的交互模式形成機器學習模型,用這個模型去指導自動測試數的生成。當然這里有很多挑戰,例如如何對軟件GUI的狀態和動作進行機器表示;如何設計模型把GUI的這些交互模式進行高效的捕捉等等。

基于這個想法,我們做了一個工作,叫Humanoid,主要架構如下,首先在離線學習階段,假設收集了很多真實用戶的交互數據,這些交互數據不是來自于被測應用,可以來自于任何應用。在離線的用戶交互記錄數據里面進行學習,把學出來的東西捕捉在交互模型里面,然后用這個模型不斷的去指導測試UI交互數據的生成。

這是我們在Humanoid如何解決交互界面狀態和動作表示的方法,把每一個UI狀態表示為一個UI的結構圖,我們忽略了UI里面的圖像和文本信息,僅僅是每一個UI上面文本的區域是哪些,圖片的區域是哪些。這樣做的目的,可以在有限的數據里面收集到更多更簡化的UI特征,在機器學習的時候更容易被泛化。在表示交互動作的時候,我們是由兩個部分組成,第一是交互動作的類型,包括點擊,滑動、輸入等等。第二個元素是交互動作的位置,這個交互動作發生在界面上的位置,也是直接用X、Y坐標來表示,但是往往需要把孤立用戶點擊的點,轉化成一個以這個點為核心的分布圖,在學習的時候,每一個數據點都不是孤立的而是分布的,更容易進行學習。

有了上面的兩種表示之后,就明確了模型輸入和輸出之間的映射關系,當前界面情境context,包含了當面界面S,還有最近若干次交互。輸出是兩個概率分布,包括交互位置概率分布和交互動作類型概率分布,基于這兩個概率分布可以計算出每個交互動作的概率。

這是我們使用的深度學習模型用來捕捉界面情境和界面交互動作之間的關系,大家可以看到用了很多CNN捕捉界面上的圖像信息。我們使用了4個交互序列,除了當前的交互界面狀態之外,還使用了之前的三次交互歷史,我們把這四個交互動作輸入一個LSTM,提取出界面交互特征之后,把這個特征重新映射到原來交互輸入上,要生成的交互動作位置的概率分布。

這是我們模型訓練之后真實使用的偽代碼,測試的時候我們隨機的選擇進行探索,或者對模型進行利用,如果進行探索,使用剛才的模型生成交互動作,然后執行交互動作。如果是進行利用的話,根據界面轉換圖導航回之前的某一個界面。

Humanoid實驗評估,我們使用的是Rico dataset,涉及很多用戶使用應用時的交互記錄。我們用這些數據給UI轉換模型進行訓練。我們與6個代表性工具進行對比,一個是Monkey,還有PUMA等。

學習交互模式的效果,這個模型能夠把真實用戶交互動作預測到更高的概率,我們的模型能夠把真實用戶使用的交互動作排到前面,說明我們的模型是有效學到了交互信息。把這個模型應用到真實測試中,雖然這些測試工具之間的覆蓋率差異不是很大,但是Humanoid能達到最高的代碼行覆蓋率,對于市場流行應用也能達到比較高的界面覆蓋率。這是Humanoid和其他工具進行覆蓋率提升速度的評測結果,可以看到紅色的線是Humanoid的結果,它是能夠比較快的達到較高的覆蓋率,而且這個曲線還有繼續上漲的趨勢。

第二部分,基于強化學習進行UI功能測試。先介紹UI功能測試的背景,我們的目的是生成一系列UI的交互動作,對軟件的特定功能進行驗證,比如剛才舉的登陸的例子,測試用例第一行是open App,第二行是輸入一個電子郵件地址,下面一個代碼是在密碼框里輸入密碼,最后點擊登陸按鈕。人工編寫的測試用例是耗時耗力的,人工要手工進行測試修復,這是有很大效率問題。右面展示了主流工具,人工測試的樣本,比如這個Sikuli工具,已經把測試用例編寫變得很簡單了,但是對于沒有測試經驗的,想寫這樣的代碼還是比較復雜的。我們想追求的目標是,給定測試用例的文本描述,基于這個文本描述自動生成測試的腳本。比如對于Lyft/Uber網站,一個測試用例描述可能是“估算從某一個位置到另外一個位置的打車費用”,我們希望通過理解自然語言,以及理解軟件的交互界面,生成右下角這個測試腳本。在強化學習問題里面有一個測試執行環境,這個測試執行環境包括Web瀏覽器和Reward模型,還有一個強化學習的agent,與測試執行環境進行交付,最后得到最終的測試腳本。

強化學習里面很重要的一個就是強化學習環境environment,強化學習環境給定執行任務的初始狀態,告訴模型agent當前狀態下可以執行哪些動作,當agent在當前狀態中執行一個動作,返回該動作的獎勵reward和新的狀態。將強化學習應用到GUI測試的難點主要是狀態的表示和獎勵函數的設計,即如何將交互界面中的圖像、文本等多模態特征進行有效的編碼,以及如何將測試的目標轉化成對測試輸入的獎勵。在測試中,agent觀察到的狀態就是當前界面UI結構,可執行的動作就是當前界面中所有可行交互輸入的集合,測試環境需要允許agent執行一個動作,返回對于該動作的獎勵。設計強化學習環境的獎勵機制(reward function)的時候,設計目標是給正確的動作序列賦予更高的Reward,這樣強化學習才可以找到正確的測試用例。我們這里的觀察是,如果一個交互動作序列是正確的測試用例,一般滿足以下三個指標:一個是動作應該是和任務參數匹配的。比如我剛才說的A到B,兩點的打車費用,AB就是這個任務的參數,我們肯定有兩個動作跟這兩個參數是相匹配的。第二是UI的文本和描述的句子是重合的。第三是動作序列需要符合真實用戶的交互習慣,比如生成測試用例的時候,不能說在頁面底部點一下,中間點一下,跳來跳去的,這樣很有可能是不正確的,我們需要加一些約束,使得測試的時候agent可以對UI進行正確的交互。

現在主流的用強化學習算法之一是Q network,用深度神經網絡估計一個Q函數,Q函數以當前狀態s和選取的動作a為參數,返回當前狀態s下執行動作a的價值。在我們的模型中,把狀態s和交互動作a,分別提取圖像信息和文本信息,并進行交叉融合,作為Q network的輸入,,最終去估算Q值。

這是強化學習算法最終生成的樣例,從A到B打車費用的測試用例,可以生成三個腳本,每個腳本都有一些最終的Reward分值。

我們對基于強化學習的測試輸入生成方法進行了評估,選取了十大類網站,一共73個網站,在這些網站上定義了41個測試描述,比如“在波士頓預訂一個下午8點四人的桌子”就是一個測試用例描述,把這些作為測試用例,然后就得到了172個測試用例描述和網站的組合,我們的目標是對于每一個組合生成一個測試腳本。最后我們評估的時候,讓我們的強化學習算法針對每一個測試用例描述和網站跑一小時,得到最高的交互訓練,然后進行人工評估。

這是我們最后評估的結果,top 1的準確率是65.7%,top 5的準確率是76.6%,我們與常見的搜索算法進行了比較,能夠看到強化學習能達到比較高的優勢。

最后總結一下,雖然將深度學習和強化學習應用于測試有廣闊的前景,但是目前想要達到大規模實用還有很長的路要走。其難點包括:首先測試這個問題本來就是十分復雜的,目前的深度學習主要是拿圖片或者文字作為輸入,而UI是更為復雜的一種信息,既有視覺信息又有文本信息,現在沒有特別好的模型或方法去捕捉UI上的特征。第二個問題,強化學習算法成功的領域往往都是游戲,例如強化學習可以把圍棋解決得很好,一個重要的原因是,在游戲領域,Reward是比較明確的,但是在測試里面,想評估一個測試用例是好是壞,沒有一個準確的指標,最后評估下來,每一個測試用例,不管是正確的還是錯誤的,得到的Reward都是非常相近的,這就導致強化學習模型很難區分正確和錯誤。要解決這些問題,一方面也有研究挑戰,一方面也有很多工程問題要解決,需要學術界和產業界共同努力去解決。

今天要演講的內容就是這些,謝謝大家!

 

責任編輯:張燕妮 來源: 51CTO
相關推薦

2019-11-26 18:00:59

系統運維架構

2019-12-05 16:01:24

云計算行業科技

2021-04-13 16:18:30

人工智能強化學習人臉識別

2019-11-26 17:52:18

AI 數據人工智能

2019-12-13 11:54:06

AI 數據人工智能

2019-12-05 16:17:59

云計算行業科技

2019-12-05 16:23:15

開發技能代碼

2025-02-10 13:50:00

算法模型訓練

2019-11-26 17:46:26

AI 數據人工智能

2019-12-05 16:25:26

開發技能代碼

2019-12-13 11:58:21

AI 數據人工智能

2020-11-12 19:31:41

強化學習人工智能機器學習

2019-11-26 17:54:14

開發技能移動應用

2019-11-26 17:58:47

系統運維架構

2019-11-26 17:38:15

人工智能AI開發者

2019-12-13 11:51:34

技術AI云計算

2017-07-25 16:04:31

概念應用強化學習

2020-01-23 15:33:07

AI 數據人工智能

2023-01-04 10:02:53

強化學習自動駕駛

2021-02-02 10:08:17

AI深度強化學習智能城市
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产免费拔擦拔擦8x高清 | 国产精品国产三级国产播12软件 | 日韩电影中文字幕 | 精品成人一区 | 久久久精品综合 | 97视频精品 | 澳门永久av免费网站 | 伊人网伊人网 | 国产欧美日韩精品一区二区三区 | av网址在线 | 国产精品成人久久久久 | 成人黄色电影免费 | 自拍偷拍一区二区三区 | 国产精品中文字幕在线播放 | 观看av | 欧美一区二区二区 | 一区视频在线 | 久久蜜桃av一区二区天堂 | 色狠狠一区 | 欧美日本一区 | 成人精品区 | 99热激情 | 在线欧美日韩 | 九九热这里 | 电影91久久久 | 国产精品国产亚洲精品看不卡15 | 国产福利91精品一区二区三区 | 久久久美女 | 国产精品久久久久久久岛一牛影视 | 先锋影音资源网站 | 欧美激情亚洲 | 欧美一区二区三区在线观看 | 日本黄色一级视频 | 免费黄色在线 | 97视频网站 | 久久久女| 九九导航 | 久久新 | 国产欧美日韩在线 | 色噜噜狠狠色综合中国 | 国产精品91网站 |