在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Android/ UI自動(dòng)化測試基于Activity的封裝模式
101 種讓你的網(wǎng)頁看起來更酷的方法
Android 項(xiàng)目是如何使用 Kotlin 語言生成的 1/2
Nimbledroid 版本更新
使用TypeScript提高開發(fā)能力
利用 TensorFlow Serving 系統(tǒng)在生產(chǎn)環(huán)境中運(yùn)行模型
Google Play 榜單APP冷啟動(dòng)速度分析報(bào)告
使用微信控制電腦(Python 版)
jQuery 3 中的新變動(dòng)
RxAndroid 基礎(chǔ):第一部分
Swift in 2016
UI自動(dòng)化測試基于Activity的封裝模式
2016年,有哪些適合你學(xué)習(xí)的編程語言?
Swift 響應(yīng)式編程
如何組合使用 VIM 編輯器與 IPYthon
如何使你的app更加流暢
介紹用來選擇輪廓圖像的一個(gè)類——Will J Miller
關(guān)于Android N 開發(fā)者預(yù)覽版的一些隨想

UI自動(dòng)化測試基于Activity的封裝模式

做過UI自動(dòng)化測試同學(xué),都會(huì)深深體會(huì)幾個(gè)痛點(diǎn):維護(hù)量大、適配量大、編寫代碼巨大等?;谶@些問題,大家都會(huì)想到抽象封裝通用常用方法,編過程序的同學(xué)都知道,如何提高編程速度,那就是有一套自己熟悉和好用的函數(shù)庫,這樣編程很大部分就如搭積木游戲,可以快速搭建程序?;诖宋覀冊O(shè)計(jì)了第一套封裝結(jié)構(gòu)模式,如下圖所示:

http://wiki.jikexueyuan.com/project/geekdigest/images/ui01.png" alt="" />

從以上結(jié)構(gòu),不難發(fā)現(xiàn)應(yīng)用基礎(chǔ)庫比較凌亂,沒有分類。如果是自己寫的還記得住,要是移交給別人,就顯得很糟糕了,別人不愿意去看去用。那么,急需解決的問題就是如何分類比較合理。

從基于UI測試的測試對象出發(fā),我們測試的對象為一個(gè)個(gè)的Activity,那我們可以使用Activity來進(jìn)行分類。首先每個(gè)Activity 都有自己的專有方法,如撥號界面,會(huì)有輸入號碼、撥號、刪除號碼等功能,我們將每個(gè)Activity劃分為一個(gè)單獨(dú)的類,類里面把這個(gè)Activity 涉及的方法都寫好提供給用例調(diào)用,如下圖撥號界面的屬性與功能的基礎(chǔ)分解。

http://wiki.jikexueyuan.com/project/geekdigest/images/ui02.png" alt="" />

依據(jù)以上 Activity 封裝模式,我們還需要在結(jié)構(gòu)中再加入一層 Activity 函數(shù)庫,那么,新的結(jié)構(gòu)圖如下所示:

http://wiki.jikexueyuan.com/project/geekdigest/images/ui03.png" alt="" />

這里涉及了幾個(gè)Activity的查詢方法。

  • 方法1:從開發(fā)那取得manifest文件
  • 方法2:使用命令查詢應(yīng)用的全部Activity
    adb shell dumpsys package <包名>
  • 方法3:查詢當(dāng)前Activity 棧頂?shù)腁ctivity,推薦使用此方法
adb shell dumpsys activity 

找到棧頂Activity

http://wiki.jikexueyuan.com/project/geekdigest/images/ui04.png" alt="" />

  • 方法4:找焦點(diǎn)Activity
adb shell dumpsys activity | find “mFocusedActivity”

簡化搜索字符

adb shell dumpsys activity | find “mF”

以上方法,最快捷的是方法四可以馬上知道當(dāng)前的頁面信息,最全面的是方法1與方法2,使用哪種方法需要依據(jù)實(shí)際使用情況進(jìn)行選擇。

之前我們介紹過,基于同種布局抽象出通用方法。我們將常用的通用方法,放在公共庫中,將每個(gè)界面方法放于每個(gè)單獨(dú)界面的類中。下面來看一下基本基本類圖:

http://wiki.jikexueyuan.com/project/geekdigest/images/ui05.png" alt="" />

在各種方法都固化完后,編寫用例就成了搭積木游戲,可以快速的搭建需要的用例。將用例的邏輯寫在用例中,用例的數(shù)據(jù)分離出來全部寫在對應(yīng)的Activity 類中。這樣平時(shí)主要維護(hù)已有的各個(gè)Activity內(nèi)方法與數(shù)據(jù)。

最后再按照功能將用例結(jié)構(gòu)抽象成為一個(gè)標(biāo)準(zhǔn)框架層理論,這樣大家就更容易明白與理解了。

http://wiki.jikexueyuan.com/project/geekdigest/images/ui06.png" alt="" />

基于此框架,基本不變的層為:布局層、組件層、通用層。界面層會(huì)因?yàn)榻缑娴淖兓M(jìn)行維護(hù)變化。設(shè)計(jì)時(shí)候尤其注意函數(shù)的通用性、函數(shù)的參數(shù)、各種重載函數(shù),以及各種異常情況都需要重點(diǎn)考慮和規(guī)避。作為通用的方法,為了保證函數(shù)的調(diào)用不出問題,也是需要測試的,我們必須寫一份用例來測試這些方法,模仿單元測試方式來檢查這些通用方法的可用性、穩(wěn)定性、可靠性,以此來保證在應(yīng)用變化,Android版本變化時(shí)候能快速的發(fā)現(xiàn)哪些函數(shù)存在的不兼容現(xiàn)象,進(jìn)行及時(shí)的修改,保證業(yè)務(wù)的正常進(jìn)行。

界面層的所有方法都基于接口方式進(jìn)行設(shè)計(jì),實(shí)際的用例由這些接口方法組成。當(dāng)版本變化的時(shí)候只需要重新實(shí)現(xiàn)接口重新變化一份,用例只需要變換一下實(shí)例化的類就可以完成切換用例。如此這樣,用例的固定步驟也可以不用變化,僅僅變化每塊積木里面的內(nèi)容就可以。

以上內(nèi)容總結(jié)為如下幾點(diǎn):

  • 合理封裝方法,優(yōu)化工程架構(gòu)
  • 組件化
  • 布局化
  • 界面化
  • 接口化

更多 APP 測試解答及職業(yè)規(guī)劃問題,請掃描下面二維碼加群:(行內(nèi)10年大牛定時(shí)指導(dǎo))

http://wiki.jikexueyuan.com/project/geekdigest/images/1.png" alt="" />