自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

【NCTS峰會(huì)回顧】李元春:強(qiáng)化學(xué)習(xí)在自動(dòng)測(cè)試中的應(yīng)用

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

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

[[283751]]

會(huì)上,北京大學(xué)計(jì)算機(jī)系博士李元春做《強(qiáng)化學(xué)習(xí)在自動(dòng)測(cè)試中的應(yīng)用》主題演講。李元春介紹了關(guān)于GUI測(cè)試相關(guān)的研究并指出,“將強(qiáng)化學(xué)習(xí)應(yīng)用到GUI測(cè)試的難點(diǎn)主要是狀態(tài)的表示和獎(jiǎng)勵(lì)函數(shù)的設(shè)計(jì),即如何將交互界面中的圖像、文本等多模態(tài)特征進(jìn)行有效的編碼,以及如何將測(cè)試的目標(biāo)轉(zhuǎn)化成對(duì)測(cè)試輸入的獎(jiǎng)勵(lì)。”

以下為李元春演講實(shí)錄:

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

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

根據(jù)這兩個(gè)場(chǎng)景,我分別使用深度學(xué)習(xí)和強(qiáng)化學(xué)習(xí)技術(shù)進(jìn)行了探索。

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

這就是剛才所說的第三種方法,常用的一種界面轉(zhuǎn)換圖的模型,比如在這個(gè)模型里面,每個(gè)節(jié)點(diǎn)都是界面的狀態(tài),每一條邊都是狀態(tài)之間的轉(zhuǎn)換關(guān)系,構(gòu)造出這樣模型之后,可以對(duì)應(yīng)用進(jìn)行測(cè)試。右面的圖是我之前做的一個(gè)工具DroidBot,可以針對(duì)任意應(yīng)用,在黑盒情況下把界面轉(zhuǎn)換圖構(gòu)造出來?;诮缑孓D(zhuǎn)換圖,任何人可以編寫遍歷測(cè)試的策略,例如可以設(shè)計(jì)深度優(yōu)先,寬度優(yōu)先,隨機(jī)探測(cè),或者啟發(fā)式規(guī)則等等。

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

基于這個(gè)想法,我們做了一個(gè)工作,叫Humanoid,主要架構(gòu)如下,首先在離線學(xué)習(xí)階段,假設(shè)收集了很多真實(shí)用戶的交互數(shù)據(jù),這些交互數(shù)據(jù)不是來自于被測(cè)應(yīng)用,可以來自于任何應(yīng)用。在離線的用戶交互記錄數(shù)據(jù)里面進(jìn)行學(xué)習(xí),把學(xué)出來的東西捕捉在交互模型里面,然后用這個(gè)模型不斷的去指導(dǎo)測(cè)試UI交互數(shù)據(jù)的生成。

這是我們?cè)贖umanoid如何解決交互界面狀態(tài)和動(dòng)作表示的方法,把每一個(gè)UI狀態(tài)表示為一個(gè)UI的結(jié)構(gòu)圖,我們忽略了UI里面的圖像和文本信息,僅僅是每一個(gè)UI上面文本的區(qū)域是哪些,圖片的區(qū)域是哪些。這樣做的目的,可以在有限的數(shù)據(jù)里面收集到更多更簡(jiǎn)化的UI特征,在機(jī)器學(xué)習(xí)的時(shí)候更容易被泛化。在表示交互動(dòng)作的時(shí)候,我們是由兩個(gè)部分組成,第一是交互動(dòng)作的類型,包括點(diǎn)擊,滑動(dòng)、輸入等等。第二個(gè)元素是交互動(dòng)作的位置,這個(gè)交互動(dòng)作發(fā)生在界面上的位置,也是直接用X、Y坐標(biāo)來表示,但是往往需要把孤立用戶點(diǎn)擊的點(diǎn),轉(zhuǎn)化成一個(gè)以這個(gè)點(diǎn)為核心的分布圖,在學(xué)習(xí)的時(shí)候,每一個(gè)數(shù)據(jù)點(diǎn)都不是孤立的而是分布的,更容易進(jìn)行學(xué)習(xí)。

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

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

這是我們模型訓(xùn)練之后真實(shí)使用的偽代碼,測(cè)試的時(shí)候我們隨機(jī)的選擇進(jìn)行探索,或者對(duì)模型進(jìn)行利用,如果進(jìn)行探索,使用剛才的模型生成交互動(dòng)作,然后執(zhí)行交互動(dòng)作。如果是進(jìn)行利用的話,根據(jù)界面轉(zhuǎn)換圖導(dǎo)航回之前的某一個(gè)界面。

Humanoid實(shí)驗(yàn)評(píng)估,我們使用的是Rico dataset,涉及很多用戶使用應(yīng)用時(shí)的交互記錄。我們用這些數(shù)據(jù)給UI轉(zhuǎn)換模型進(jìn)行訓(xùn)練。我們與6個(gè)代表性工具進(jìn)行對(duì)比,一個(gè)是Monkey,還有PUMA等。

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

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

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

現(xiàn)在主流的用強(qiáng)化學(xué)習(xí)算法之一是Q network,用深度神經(jīng)網(wǎng)絡(luò)估計(jì)一個(gè)Q函數(shù),Q函數(shù)以當(dāng)前狀態(tài)s和選取的動(dòng)作a為參數(shù),返回當(dāng)前狀態(tài)s下執(zhí)行動(dòng)作a的價(jià)值。在我們的模型中,把狀態(tài)s和交互動(dòng)作a,分別提取圖像信息和文本信息,并進(jìn)行交叉融合,作為Q network的輸入,,最終去估算Q值。

這是強(qiáng)化學(xué)習(xí)算法最終生成的樣例,從A到B打車費(fèi)用的測(cè)試用例,可以生成三個(gè)腳本,每個(gè)腳本都有一些最終的Reward分值。

我們對(duì)基于強(qiáng)化學(xué)習(xí)的測(cè)試輸入生成方法進(jìn)行了評(píng)估,選取了十大類網(wǎng)站,一共73個(gè)網(wǎng)站,在這些網(wǎng)站上定義了41個(gè)測(cè)試描述,比如“在波士頓預(yù)訂一個(gè)下午8點(diǎn)四人的桌子”就是一個(gè)測(cè)試用例描述,把這些作為測(cè)試用例,然后就得到了172個(gè)測(cè)試用例描述和網(wǎng)站的組合,我們的目標(biāo)是對(duì)于每一個(gè)組合生成一個(gè)測(cè)試腳本。最后我們?cè)u(píng)估的時(shí)候,讓我們的強(qiáng)化學(xué)習(xí)算法針對(duì)每一個(gè)測(cè)試用例描述和網(wǎng)站跑一小時(shí),得到最高的交互訓(xùn)練,然后進(jìn)行人工評(píng)估。

這是我們最后評(píng)估的結(jié)果,top 1的準(zhǔn)確率是65.7%,top 5的準(zhǔn)確率是76.6%,我們與常見的搜索算法進(jìn)行了比較,能夠看到強(qiáng)化學(xué)習(xí)能達(dá)到比較高的優(yōu)勢(shì)。

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

今天要演講的內(nèi)容就是這些,謝謝大家!

 

責(zé)任編輯:張燕妮 來源: 51CTO
相關(guān)推薦

2019-11-26 18:00:59

系統(tǒng)運(yùn)維架構(gòu)

2019-12-05 16:01:24

云計(jì)算行業(yè)科技

2021-04-13 16:18:30

人工智能強(qiáng)化學(xué)習(xí)人臉識(shí)別

2019-11-26 17:52:18

AI 數(shù)據(jù)人工智能

2019-12-13 11:54:06

AI 數(shù)據(jù)人工智能

2025-02-10 13:50:00

算法模型訓(xùn)練

2019-12-05 16:17:59

云計(jì)算行業(yè)科技

2019-12-05 16:23:15

開發(fā)技能代碼

2020-11-12 19:31:41

強(qiáng)化學(xué)習(xí)人工智能機(jī)器學(xué)習(xí)

2019-12-05 16:25:26

開發(fā)技能代碼

2019-11-26 17:46:26

AI 數(shù)據(jù)人工智能

2019-11-26 17:54:14

開發(fā)技能移動(dòng)應(yīng)用

2019-11-26 17:38:15

人工智能AI開發(fā)者

2019-12-13 11:58:21

AI 數(shù)據(jù)人工智能

2019-11-26 17:58:47

系統(tǒng)運(yùn)維架構(gòu)

2019-12-13 11:51:34

技術(shù)AI云計(jì)算

2020-01-23 15:33:07

AI 數(shù)據(jù)人工智能

2023-01-04 10:02:53

強(qiáng)化學(xué)習(xí)自動(dòng)駕駛

2017-07-25 16:04:31

概念應(yīng)用強(qiáng)化學(xué)習(xí)

2021-02-02 10:08:17

AI深度強(qiáng)化學(xué)習(xí)智能城市
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)