面向Android應(yīng)用的自動(dòng)化測試方法研究與實(shí)現(xiàn)
發(fā)布時(shí)間:2020-06-16 05:30
【摘要】:隨著移動(dòng)互聯(lián)網(wǎng)的高速發(fā)展,移動(dòng)客戶端日漸普及,同時(shí)帶來的是移動(dòng)應(yīng)用數(shù)量的爆炸式增長。在移動(dòng)應(yīng)用產(chǎn)品發(fā)布之前,往往需要進(jìn)行大量的重復(fù)測試。為了提升測試的效率,自動(dòng)化測試被廣泛使用。在已有的Android應(yīng)用自動(dòng)化測試研究中,通過手動(dòng)查找控件并編寫腳本的方式對測試人員的專業(yè)性要求過高且效率低下;而在使用錄制回放方式的研究中卻存在多個(gè)問題,通過坐標(biāo)進(jìn)行錄制回放無法兼容不同分辨率的設(shè)備,且無法進(jìn)行控件屬性斷言;通過修改源代碼獲取用戶操作的方式無法進(jìn)行跨應(yīng)用的測試,使得其通用性較差;在測試腳本中通過控件ID或文本屬性操作控件的方式不適用在部分控件ID和屬性為空的場景;且已有的研究中只能通過控件文本和圖像的比對進(jìn)行斷言驗(yàn)證,形式單一且適用場景較為局限。為了解決上述問題,本文主要工作如下:(1)提出一種基于文字識別和頁面布局結(jié)構(gòu)的控件識別方法,用于基于錄制回放的黑盒測試中識別操作對應(yīng)的控件。通過坐標(biāo)值和控件樹中結(jié)點(diǎn)的布局范圍進(jìn)行深度優(yōu)先遍歷搜索控件,針對搜索過程中由于頁面布局重疊導(dǎo)致識別正確率低的問題,設(shè)計(jì)了基于文字識別和頁面布局的算法。(2)針對通過控件ID或文本屬性操作控件的方式不支持其值為空的場景,采用控件路徑作為控件標(biāo)識,可以在不同設(shè)備中唯一地定位控件,并支持跨應(yīng)用測試。在跨設(shè)備回放過程中,針對錄放設(shè)備屏幕分辨率不同導(dǎo)致控件樹結(jié)構(gòu)不同的問題,提出一種滑動(dòng)屏幕重新渲染GUI的方式支持控件自動(dòng)適應(yīng)界面。(3)針對基于對比文本及圖像的斷言驗(yàn)證形式中適用場景受限的問題,設(shè)計(jì)了多種形式的基于控件樹的斷言驗(yàn)證方案,在測試過程中自動(dòng)判斷應(yīng)用程序的運(yùn)行狀態(tài)、結(jié)果和界面是否正確。包括對控件屬性的正則匹配斷言、關(guān)系運(yùn)算斷言、數(shù)據(jù)驅(qū)動(dòng)斷言,從控件樹結(jié)構(gòu)進(jìn)行的排序斷言和對界面圖像的斷言,多種斷言形式結(jié)合使用滿足多種測試場景。(4)基于本文提出的控件識別和斷言驗(yàn)證方法,設(shè)計(jì)了基于控件路徑的An-droid 應(yīng)用自動(dòng)化測試方案。為 了驗(yàn)證該方案的正確性和有效性,實(shí)現(xiàn)了 Android自動(dòng)化測試工具CRTT。并使用該工具對多個(gè)Android應(yīng)用進(jìn)行了自動(dòng)化測試,通過實(shí)驗(yàn)驗(yàn)證了控件識別方法和斷言驗(yàn)證方案的正確性。并與現(xiàn)有測試方法進(jìn)行了對比實(shí)驗(yàn),結(jié)果表明本文提出的錄制回放測試方法可以更好地支持跨設(shè)備。
【學(xué)位授予單位】:中國科學(xué)技術(shù)大學(xué)
【學(xué)位級別】:碩士
【學(xué)位授予年份】:2018
【分類號】:TP311.53;TP316
【圖文】:
Layout邋View邋(布局),Layout是ViewGroup的子類,用于控制子視圖在屏幕上的逡逑位置。View及其子類一起負(fù)責(zé)Android的界面展不和事件處理。View的層次結(jié)逡逑構(gòu)如圖2.2所示。逡逑Activity逡逑PhoneWindow逡逑DccorView逡逑TitleActionBar逡逑ViewGroup逡逑I逡逑1邋1逡逑ViewGroup邐View邐View逡逑r逡逑View邋View邋View邋—?邐逡逑圖2.2邋Android邋View層次結(jié)構(gòu)圖逡逑Android應(yīng)用程序運(yùn)行過程中,每個(gè)Activity都由活動(dòng)管理器管理,它有一個(gè)逡逑活動(dòng)棧Activity邋Stack,通過維護(hù)活動(dòng)棧里的Activity的狀態(tài)來進(jìn)行管理。Activity逡逑有三種狀態(tài):運(yùn)行狀態(tài),暫停狀態(tài)和停止。屏幕上顯示一個(gè)頁面時(shí),當(dāng)前Activity逡逑放置在堆棧頂部并設(shè)置為運(yùn)行狀態(tài)。當(dāng)頁面依然顯示但卻已經(jīng)失去了焦點(diǎn)時(shí),逡逑Activity將由活動(dòng)管理器壓入堆棧,并進(jìn)入暫停狀態(tài)。舉例來說,當(dāng)頁面顯示時(shí)突逡逑然顯示一個(gè)彈出框,彈出框獲得焦點(diǎn)并進(jìn)入運(yùn)行狀態(tài),前一個(gè)頁面處于暫停狀態(tài)。逡逑當(dāng)一個(gè)頁面完全不可見時(shí),此時(shí)該活動(dòng)頁將處于停止?fàn)顟B(tài)。當(dāng)Activity為暫停狀逡逑態(tài)或停止?fàn)顟B(tài)時(shí)
逡逑個(gè)Android應(yīng)用的Activity的完整生命周期如圖2.3所不|23]。逡逑(Activity\逡逑Started邋J逡逑onCreate()逡逑邐?邋onStart()邋<邐逡逑'S邐onResume()邋<邐邋onRestart()逡逑killed邐邐逡逑Running逡逑onPause()邐逡逑邐邋onStop()邋邐逡逑onDestroy()逡逑r邋Activity邋A逡逑y邋destroyed邋y逡逑圖2.3邋Activity生命周期逡逑2.邋Service逡逑Service邋(服務(wù))是一個(gè)與Activity類似的組件,具有完整生命周期但卻沒有用逡逑戶界面。也就是說,Service是一個(gè)通過后臺運(yùn)行方式提供服務(wù)的組件,如一個(gè)在逡逑后臺不斷更新天氣狀況的天氣預(yù)報(bào)程序等。在Android系統(tǒng)資源充足時(shí),Service逡逑將會長時(shí)間運(yùn)行,直到任務(wù)完成或者系統(tǒng)內(nèi)存不足。Service主要通過startService逡逑和邋bindService邋啟動(dòng)。逡逑3.邋Content邋Provider逡逑0逡逑一個(gè)Android應(yīng)用可以將數(shù)據(jù)保存在文件或SQLite數(shù)據(jù)庫中,或者是其他逡逑設(shè)備中。當(dāng)一個(gè)應(yīng)用需要與其他應(yīng)用共享數(shù)據(jù)時(shí),需要使用Content邋Provider?組逡逑件。Content邋Provider?qū)崿F(xiàn)了一組標(biāo)準(zhǔn)方法,可以讓其他應(yīng)用程序讀取該Content逡逑Provider?處理的各種數(shù)據(jù)
本文編號:2715606
【學(xué)位授予單位】:中國科學(xué)技術(shù)大學(xué)
【學(xué)位級別】:碩士
【學(xué)位授予年份】:2018
【分類號】:TP311.53;TP316
【圖文】:
Layout邋View邋(布局),Layout是ViewGroup的子類,用于控制子視圖在屏幕上的逡逑位置。View及其子類一起負(fù)責(zé)Android的界面展不和事件處理。View的層次結(jié)逡逑構(gòu)如圖2.2所示。逡逑Activity逡逑PhoneWindow逡逑DccorView逡逑TitleActionBar逡逑ViewGroup逡逑I逡逑1邋1逡逑ViewGroup邐View邐View逡逑r逡逑View邋View邋View邋—?邐逡逑圖2.2邋Android邋View層次結(jié)構(gòu)圖逡逑Android應(yīng)用程序運(yùn)行過程中,每個(gè)Activity都由活動(dòng)管理器管理,它有一個(gè)逡逑活動(dòng)棧Activity邋Stack,通過維護(hù)活動(dòng)棧里的Activity的狀態(tài)來進(jìn)行管理。Activity逡逑有三種狀態(tài):運(yùn)行狀態(tài),暫停狀態(tài)和停止。屏幕上顯示一個(gè)頁面時(shí),當(dāng)前Activity逡逑放置在堆棧頂部并設(shè)置為運(yùn)行狀態(tài)。當(dāng)頁面依然顯示但卻已經(jīng)失去了焦點(diǎn)時(shí),逡逑Activity將由活動(dòng)管理器壓入堆棧,并進(jìn)入暫停狀態(tài)。舉例來說,當(dāng)頁面顯示時(shí)突逡逑然顯示一個(gè)彈出框,彈出框獲得焦點(diǎn)并進(jìn)入運(yùn)行狀態(tài),前一個(gè)頁面處于暫停狀態(tài)。逡逑當(dāng)一個(gè)頁面完全不可見時(shí),此時(shí)該活動(dòng)頁將處于停止?fàn)顟B(tài)。當(dāng)Activity為暫停狀逡逑態(tài)或停止?fàn)顟B(tài)時(shí)
逡逑個(gè)Android應(yīng)用的Activity的完整生命周期如圖2.3所不|23]。逡逑(Activity\逡逑Started邋J逡逑onCreate()逡逑邐?邋onStart()邋<邐逡逑'S邐onResume()邋<邐邋onRestart()逡逑killed邐邐逡逑Running逡逑onPause()邐逡逑邐邋onStop()邋邐逡逑onDestroy()逡逑r邋Activity邋A逡逑y邋destroyed邋y逡逑圖2.3邋Activity生命周期逡逑2.邋Service逡逑Service邋(服務(wù))是一個(gè)與Activity類似的組件,具有完整生命周期但卻沒有用逡逑戶界面。也就是說,Service是一個(gè)通過后臺運(yùn)行方式提供服務(wù)的組件,如一個(gè)在逡逑后臺不斷更新天氣狀況的天氣預(yù)報(bào)程序等。在Android系統(tǒng)資源充足時(shí),Service逡逑將會長時(shí)間運(yùn)行,直到任務(wù)完成或者系統(tǒng)內(nèi)存不足。Service主要通過startService逡逑和邋bindService邋啟動(dòng)。逡逑3.邋Content邋Provider逡逑0逡逑一個(gè)Android應(yīng)用可以將數(shù)據(jù)保存在文件或SQLite數(shù)據(jù)庫中,或者是其他逡逑設(shè)備中。當(dāng)一個(gè)應(yīng)用需要與其他應(yīng)用共享數(shù)據(jù)時(shí),需要使用Content邋Provider?組逡逑件。Content邋Provider?qū)崿F(xiàn)了一組標(biāo)準(zhǔn)方法,可以讓其他應(yīng)用程序讀取該Content逡逑Provider?處理的各種數(shù)據(jù)
【參考文獻(xiàn)】
相關(guān)期刊論文 前4條
1 李江;;基于hook機(jī)制的android自動(dòng)化腳本錄制回放框架的設(shè)計(jì)與實(shí)現(xiàn)[J];軟件;2014年10期
2 盤俊春;;最好的OCR文字識別軟件:ABBYY FineReader[J];中國信息技術(shù)教育;2014年15期
3 唐雨薇;李伯仲;;分布式自動(dòng)化測試框架的研究[J];科技信息;2011年34期
4 莓荔;;清華文通推出TH-OCR 8.0、TH-OCR 2000和TH-OA3.0[J];辦公自動(dòng)化;1999年06期
相關(guān)碩士學(xué)位論文 前1條
1 鐘書成;基于錄制回放的Android GUI自動(dòng)化測試工具的設(shè)計(jì)與實(shí)現(xiàn)[D];中國科學(xué)院大學(xué)(工程管理與信息技術(shù)學(xué)院);2015年
本文編號:2715606
本文鏈接:http://www.sikaile.net/kejilunwen/ruanjiangongchenglunwen/2715606.html
最近更新
教材專著