1、兼容性測(cè)試方法
兼容性測(cè)試主要有手動(dòng)測(cè)試、自動(dòng)化測(cè)試和云平臺(tái)測(cè)試三種方法喊儡。
1)手動(dòng)測(cè)試
兼容性測(cè)試最簡(jiǎn)單的,就是在日常手工測(cè)試中稻据,按照一定的策略進(jìn)行測(cè)試艾猜。具體有哪些策略呢?
( 1 ) TOP 機(jī)型覆蓋。例如匆赃,在手機(jī) QQ 瀏覽器( Android )測(cè)試中淤毛,通常筆者在 “ 迭代測(cè)試 ” 階段采用當(dāng)前 Android TOP 50 (數(shù)據(jù)來源:產(chǎn)品經(jīng)理)機(jī)型。在 “ 上線前 ” 測(cè)試中算柳,筆者縮小范圍低淡,采用 TOP20 機(jī)型進(jìn)行測(cè)試;
( 2 )差異機(jī)型瞬项。先分析得出機(jī)器差異性在于 GPU 蔗蹋,再根據(jù)對(duì) GPU 品牌型號(hào)的分析,做精準(zhǔn)覆蓋滥壕。例如:
a纸颜、高通 GPU 的機(jī)器可以主要覆蓋 Adreno 200 和 Adreno 203 ,基本占高通總數(shù)的 60% 绎橘;
b胁孙、Imagnition : GPU 的機(jī)器主要覆蓋 SGX544+ 和 SGX531 ,約占該品牌總數(shù)的 65% 称鳞;
c涮较、Mali :覆蓋 Mali-400MP ,占 72% 冈止;
用上述 GPU 的機(jī)器狂票,在測(cè)試中重點(diǎn)覆蓋。
( 3 )已有 BUG 分析的機(jī)型覆蓋熙暴。通過對(duì)現(xiàn)有 BUG 庫(kù)中機(jī)型問題進(jìn)行歸納匯總闺属,歸納出重點(diǎn)測(cè)試機(jī)型。
2)自動(dòng)化測(cè)試
現(xiàn)在業(yè)界主流機(jī)型兼容自動(dòng)化思路周霉,是利用多機(jī)型云平臺(tái)海量的設(shè)備進(jìn)行被測(cè) App 的安裝卸載掂器、穩(wěn)定性、功能測(cè)試等測(cè)試俱箱。本節(jié)主要介紹自動(dòng)化實(shí)現(xiàn)部分国瓮,云平臺(tái)使用部分在下一節(jié)介紹。
(1)安裝卸載
通過在 Android 設(shè)備上安裝被測(cè)應(yīng)用 → 啟動(dòng)被測(cè)應(yīng)用 → 卸載被測(cè)應(yīng)用狞谱,來檢驗(yàn)以下兩方面內(nèi)容:
a乃摹、安裝包的安裝兼容性
通過 adb ( Android Debug Bridge )進(jìn)行安裝和卸載。例如:安裝包 test.apk 跟衅,包名 com.sample.app 孵睬,啟動(dòng) Activity 是 MainActivity 。
安裝: adb install test.apk 与斤。
啟動(dòng): adb shell am start–n com.sample.app/.MainActivity 肪康。
卸載: adb uninstall test.apk 荚恶。
覆蓋安裝: adb install–r test.apk 。
通過上述命令磷支,進(jìn)行 App 安裝谒撼、啟動(dòng)、卸載雾狈。觀察 console 輸出廓潜,如果是 success 就是成功,反之就是失敗善榛。同時(shí)抓取 Logcat 辩蛋,提供給開發(fā)人員。
b移盆、通過啟動(dòng)被測(cè)應(yīng)用悼院,檢測(cè)啟動(dòng) crash 等低級(jí)致命問題
通過對(duì) Logcat ( DDMS 中工具)打印內(nèi)容進(jìn)行監(jiān)控,查找 Java 層和 Native 層 Crash 信息咒循。
Java 層 Crash 信息如下:
E/AndroidRuntime( 1857): FATAL EXCEPTION: main
E/AndroidRuntime( 1857): java.lang.RuntimeException: Unable to create
service com.sample.app.internal.protocols.ProtocolsPackService: java.lang.
RuntimeException: Unable to register protocol, service is dead
E/AndroidRuntime( 1857): at android.app.ActivityThread.handleCreateService(Act
ivityThread.java:2373)
E/AndroidRuntime( 1857): at android.app.ActivityThread.access$1600
(ActivityThread.java:130)
Native 層 Crash 信息如下:
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Build fingerprint: 'XXXXXXXXX'
pid: 1658, tid: 13086 >>> com.sample.app <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 64696f7e
r0 00000000 r1 00000001 r2 ad12d1e8 r3 7373654d
r4 64696f72 r5 00000406 r6 00974130 r7 40d14008
r8 4b857b88 r9 4685adb4 10 00974130 fp 4b857ed8
ip 00000000 sp 4b857b50 lr afd11108 pc ad115ebc cpsr 20000030
如果 Crash 的 Trace 信息中包含被測(cè) App 的包名( com.sample.app )据途,那么這個(gè) Crash 就是被測(cè) App 引起的。
(2) 穩(wěn)定性
為了測(cè)試 App 在各種不同機(jī)型上的穩(wěn)定性叙甸,通過工具測(cè)試進(jìn)行數(shù)小時(shí)測(cè)試颖医,發(fā)現(xiàn) Crash 問題。業(yè)界主要通過兩種方法進(jìn)行測(cè)試裆蒸,具體如下:
a熔萧、控件遍歷測(cè)試
現(xiàn)在業(yè)界測(cè)試實(shí)現(xiàn)方法基本包含以下幾個(gè)步驟。
( 1 )獲取當(dāng)前被測(cè) App 的所有控件方法見下表:
( 2 )采用某種算法遍歷 App 中獲取的控件僚祷,基于二叉樹遍歷算法改進(jìn)而來佛致。注意點(diǎn)擊控件后,當(dāng)前控件樹發(fā)生變化辙谜。
( 3 )針對(duì)遍歷到的控件進(jìn)行相應(yīng)操作晌杰,方法見下表:
b、 Monkey 隨機(jī)測(cè)試
運(yùn)行 Android 原生穩(wěn)定性測(cè)試工具 Monkey 筷弦,通過 ADB ( Android Debug Bridge )實(shí)現(xiàn)。
(3)功能測(cè)試
在手機(jī) ( Android )項(xiàng)目中抑诸,搭建了一套自動(dòng)化工具烂琴。通過編寫功能測(cè)試自動(dòng)化腳本,在內(nèi)部云平臺(tái)設(shè)備上運(yùn)行蜕乡。自動(dòng)化框架如下圖所示:
當(dāng)你面對(duì)下圖這樣的測(cè)試結(jié)果奸绷,如果僅僅通過文字判斷,結(jié)果是完全正確的层玲。但是号醉,你能承認(rèn)結(jié)果是正的嗎反症?很顯然不能。因?yàn)楸尘邦伾l(fā)白畔派,不符合預(yù)期铅碍。
問題的關(guān)鍵在于: 自動(dòng)化無法驗(yàn)證復(fù)雜的界面顏色、布局线椰、背景等元素胞谈。
如何破解呢 ?從投入產(chǎn)出比來看憨愉,采用自動(dòng)化運(yùn)行烦绳,人工驗(yàn)證結(jié)果(截圖)的半自動(dòng)化方式。
(4)開源自動(dòng)化平臺(tái)
https://mp.weixin.qq.com/s/JNHKJfnW74tDeVilIfnfMg
https://blog.csdn.net/addisonko/article/details/50912357
https://blog.csdn.net/budf01/article/details/53694177
https://testerhome.com/topics/7966
https://blog.csdn.net/yorkz0909/article/details/76523271
2配紫、云平臺(tái)
- 騰訊優(yōu)測(cè)
http://utest.21kunpeng.com/
2.Testin
https://www.testin.cn/
3径密、百度云
http://mtc.baidu.com/
4、平臺(tái)對(duì)比
圖片.png
3躺孝、兼容性測(cè)試思考
UI 級(jí)別的自動(dòng)化給人的印象一直就是 “ 變化太大享扔,收益太低 ” 。一旦 UI 發(fā)生了較大變化括细,之前的自動(dòng)化腳本就會(huì)有較大改動(dòng)伪很,投入高,收益低奋单。
怎么破解這個(gè)難題锉试?思路如下:
(1)降低建設(shè)成本:筆者以編寫自動(dòng)化腳本為例,首先览濒,選擇一個(gè)低學(xué)習(xí)成本而且高效率的框架很重要呆盖。其次,不斷地累計(jì)公共函數(shù)贷笛,讓腳本開發(fā)速度提升數(shù)倍应又。
(2)提高使用頻率:自動(dòng)化測(cè)試使用頻率越高,收益就越高乏苦。同一套自動(dòng)化腳本株扛,在當(dāng)前版本每次回歸時(shí)都能使用;同樣汇荐,經(jīng)過簡(jiǎn)單修改后洞就,在下個(gè)版本中也能發(fā)揮重要作用。
(3)以不變應(yīng)萬變: 自動(dòng)化的模塊還是優(yōu)先選擇 UI 相對(duì)變化較小的模塊掀淘,這些是適合自動(dòng)化的部分旬蟋,能在未來減少變化帶來的成本。
(4)發(fā)展多種經(jīng)營(yíng): 自動(dòng)化腳本的用途革娄,絕對(duì)不只是在功能驗(yàn)證上這么簡(jiǎn)單倾贰。其他各種測(cè)試都可以用到冕碟,例如:覆蓋安裝、性能測(cè)試匆浙、安裝包驗(yàn)證 …… 發(fā)更多的用途就會(huì)有更大的收益安寺。