Android测试点和测试工具介绍
目錄
1.?測(cè)試點(diǎn)
2. 緩存
2.1 什么是緩存
2.2 緩存管理的適用環(huán)境
3. 適配測(cè)試
3.1 為什么需要做適配測(cè)試
3.2 適配測(cè)試的基礎(chǔ)測(cè)試點(diǎn)
3.3 適配測(cè)試的方法
4.?云測(cè)試
4.1 為什么需要云測(cè)試
4.2 云測(cè)試的基本流程
4.3 云測(cè)試主要主要解決的問(wèn)題:兼容測(cè)試、單機(jī)調(diào)試
5. 性能測(cè)試
5.1 移動(dòng)端
5.2 移動(dòng)端和服務(wù)器端的性能指標(biāo)
5.3 輔助工具詳解
5.4 perfdog
5.5 耗電量測(cè)試
5.6 相關(guān)命令
6. App抓包
6.1 Fiddler 的使用
6.2 移動(dòng)端抓包\微信小程序\微信公眾號(hào)
7. SDK 工具介紹
7.1 SDK目錄介紹
8. 調(diào)試命令
8.1 am
8.2 pm
8.3 Dumpsys
9. 安全工具介紹
9.1 安全工具
10. monkeyrunner
10.1 什么是monkeyrunner
10.2 monkeyrunner的作用
11. monkey
11.1 什么是monkey??????????
12.Uiautomator
12.1 什么是Uiautomator
13. 自動(dòng)化測(cè)試
13.1 相關(guān)文章(概念,框架演示模式,效率提升方案)
13.2 概念
13.3 本質(zhì)
13.4 過(guò)程
13.5 UI自動(dòng)化測(cè)試的前提條件?
13.6 不適合做UI自動(dòng)化測(cè)試的軟件產(chǎn)品
13.7 最佳實(shí)踐場(chǎng)景
14. Appium
14.1 Appium概念
14.2 特性
14.3 Appium是由nodejs的express框架寫的 Http Server
14.4 Appium 環(huán)境搭建
14.5 查找頁(yè)面元素,與selenium一致
14.6 超控頁(yè)面元素
14.7 xpath
14.8 Appium實(shí)戰(zhàn)
14.9?簡(jiǎn)單的架構(gòu)
14.10?自動(dòng)化用例設(shè)計(jì)
15. 測(cè)試全棧工具
15.1 UI自動(dòng)化工具和接口自動(dòng)化測(cè)試工具??
15.2 單元測(cè)試工具?
15.3 性能測(cè)試工具??
15.4 安全測(cè)試工具
1.?測(cè)試點(diǎn)
功能(正向)
異常(例外)
性能
安全
用戶體驗(yàn)
用例的寫法
簡(jiǎn)潔,測(cè)試點(diǎn)覆蓋全面
緩存
藍(lán)牙(可穿戴設(shè)備,特別關(guān)注,注意硬件測(cè)試有可能是單個(gè)硬件的故障導(dǎo)致測(cè)試不通過(guò))
2. 緩存
2.1 什么是緩存
緩存就是數(shù)據(jù)交換的緩沖區(qū)(稱作Cache),當(dāng)某一硬件要讀取數(shù)據(jù)時(shí),會(huì)首先從緩存中查找需要的數(shù)據(jù)。如果找到了則直接執(zhí)行,找不到的話則從內(nèi)存中找。
由于緩存的運(yùn)行速度比內(nèi)存快得多,故緩存的作用就是幫助硬件更快地運(yùn)行。
Android緩存主要從手機(jī)與服務(wù)器網(wǎng)絡(luò)交互角度考慮,采用緩存可以進(jìn)一步大大緩解數(shù)據(jù)交互的壓力,又能提供一定的離線瀏覽。
2.2 緩存管理的適用環(huán)境
(1)提供網(wǎng)絡(luò)服務(wù)的應(yīng)用
(2)數(shù)據(jù)更新不需要實(shí)時(shí)更新,但是哪怕是3-5分鐘的延遲也是可以采用緩存機(jī)制。
(3)緩存的過(guò)期時(shí)間是可以接受的(不會(huì)因?yàn)榫彺鎺?lái)的好處,導(dǎo)致某些數(shù)據(jù)因?yàn)楦虏患皶r(shí)而影響產(chǎn)品的形象等)
(4)一定程度上可以支持離線瀏覽(或者說(shuō)為離線瀏覽提供了技術(shù)支持)
3. 適配測(cè)試
3.1 為什么需要做適配測(cè)試
分辨率UI問(wèn)題;
前置攝像頭位置對(duì)ui的影響;
不同的廠商會(huì)選擇不同的硬件,硬件驅(qū)動(dòng)也可能會(huì)出現(xiàn)問(wèn)題;
Android API 的問(wèn)題,比如高版本API廢棄了低版本的API,如果還是用低版本的API開發(fā),在低版本下運(yùn)行,就會(huì)造成程序的崩潰;
廠商定制的系統(tǒng),會(huì)圍繞硬件的特性對(duì)系統(tǒng)API進(jìn)行改動(dòng),造成使用標(biāo)準(zhǔn)API接口的應(yīng)用程序在深度定制的系統(tǒng)上無(wú)法兼容。
???
3.2 適配測(cè)試的基礎(chǔ)測(cè)試點(diǎn)
安裝\卸載、UI、藍(lán)牙、連網(wǎng)等等與硬件相關(guān)的功能點(diǎn)。
3.3 適配測(cè)試的方法
(1)明確確應(yīng)用運(yùn)營(yíng)方案,明確用戶群體,隨著應(yīng)用的用戶數(shù)不斷增加,逐步拓展需要適配的機(jī)型。無(wú)需在app首次發(fā)布前就適配大量機(jī)型(app首次發(fā)布往往是在驗(yàn)證產(chǎn)品的需求是否合理,驗(yàn)證產(chǎn)品是否是用戶真正需要的東西,可以說(shuō)發(fā)布的app就是為了改良的),這樣做既影響產(chǎn)品發(fā)布速度,又浪費(fèi)金錢。
第一期、計(jì)劃適配哪些機(jī)型
第二期、計(jì)劃適配哪些機(jī)型
….
第N期、計(jì)劃適配哪些機(jī)型
備注:
在前二期可以借助云測(cè)試,適配部分主流機(jī)型
注意:不同用戶群體所傾愛的手機(jī)不同(例如:年輕mm偏愛oppo,IT人士小米較多)
(2 )確認(rèn)適配機(jī)型的型號(hào),系統(tǒng)類型以及分辨率
根據(jù)適配統(tǒng)計(jì)中的信息(國(guó)內(nèi)應(yīng)用建議參考友盟),確認(rèn)要覆蓋測(cè)試的手機(jī)廠商、系統(tǒng)、分辨率、屏幕大小等信息確認(rèn)需求,通過(guò)排列組合即可確認(rèn)適配順序和目標(biāo)。
具體實(shí)施方法:
采購(gòu) (根據(jù)淘寶,京東等電商統(tǒng)計(jì)的手機(jī)銷量排名購(gòu)買)
內(nèi)部協(xié)調(diào) (可以采用租賃內(nèi)部員工手機(jī)的方式)
租用 (專業(yè)手機(jī)租賃機(jī)構(gòu))
云測(cè)試(推薦,相對(duì)成本較低)
購(gòu)買二手手機(jī)
外包
備注:外包app的測(cè)試有兩種類型
甲方提供適配機(jī)列表和適配手機(jī)(***公司為中國(guó)移動(dòng)開發(fā)的某款app);
甲方通過(guò)給乙方酬勞的方式進(jìn)行適配工作。例如:合同中指定App需在10款手機(jī)中完成適配。在此之外每多出一部手機(jī)適配,甲方就需額外支付一定的費(fèi)用。
4.?云測(cè)試
4.1 為什么需要云測(cè)試
移動(dòng)開發(fā)者面臨著多終端時(shí)代的碎片化挑戰(zhàn),相對(duì)蘋果單一的終端,Android設(shè)備碎片化更加嚴(yán)重,多種型號(hào)款式、多樣的分辨率、加之設(shè)備自動(dòng)化測(cè)試穩(wěn)定性差,都讓開發(fā)者頭疼不已,在此背景下產(chǎn)生了移動(dòng)云平臺(tái)。
4.2 云測(cè)試的基本流程
簡(jiǎn)單的說(shuō),云平臺(tái)就是為應(yīng)用提供商提供真機(jī)來(lái)對(duì)應(yīng)用進(jìn)行測(cè)試,基本流程如下:
應(yīng)用提供商把a(bǔ)pk通過(guò)網(wǎng)絡(luò)上傳至云平臺(tái)
>云平臺(tái)將apk安裝在自己平臺(tái)提供的真機(jī)上
>通過(guò)技術(shù)手段對(duì)apk進(jìn)行測(cè)試并生成測(cè)試報(bào)告
>云平臺(tái)將測(cè)試報(bào)告反饋給應(yīng)用提供商
4.3 云測(cè)試主要主要解決的問(wèn)題:兼容測(cè)試、單機(jī)調(diào)試
Testin
開始測(cè)試 https://www.testin.cn/
百度云 http://mtc.baidu.com/
騰訊云 http://wetest.qq.com
https://data.qq.com/product/mta數(shù)據(jù)統(tǒng)計(jì)中心
5. 性能測(cè)試
5.1 移動(dòng)端
Apk(重點(diǎn))、瀏覽器、微信公眾號(hào),微信小程序
5.2 移動(dòng)端和服務(wù)器端的性能指標(biāo)
https://blog.csdn.net/liwenxiang629/article/details/109527637
5.3 輔助工具詳解
https://blog.csdn.net/liwenxiang629/article/details/119421594
5.4 perfdog
https://blog.csdn.net/liwenxiang629/article/details/119211587
5.5 耗電量測(cè)試
https://blog.csdn.net/liwenxiang629/article/details/118932940
5.6 相關(guān)命令
adb shell am start -S -W [packageName]/[activiytName]
LaunchState:啟動(dòng)模式,上訴啟動(dòng)模式為冷啟動(dòng)
WaitTime:系統(tǒng)啟動(dòng)應(yīng)用耗時(shí)= TotalTime +系統(tǒng)資源啟動(dòng)時(shí)間(單位 ms )
TotalTime:應(yīng)用自身啟動(dòng)耗時(shí)=該 Activity 啟動(dòng)時(shí)間+應(yīng)用 application 等資源啟動(dòng)時(shí)間(單位 ms )
Google chrome 調(diào)試webview
chrome://inspect/#devices
adb shell am start -S -W
com.smzdm.client.android/com.smzdm.client.android.app.WelComeActivity
6. App抓包
6.1 Fiddler 的使用
Fiddler是位于客戶端和服務(wù)器端的HTTP代理,也是目前最常用的http抓包工具之一 。 它能夠記錄客戶端和服務(wù)器之間的所有 HTTP請(qǐng)求,可以針對(duì)特定的HTTP請(qǐng)求,分析請(qǐng)求數(shù)據(jù)、設(shè)置斷點(diǎn)、調(diào)試web應(yīng)用、修改請(qǐng)求的數(shù)據(jù),甚至可以修改服務(wù)器返回的數(shù)據(jù),功能非常強(qiáng)大,是 web調(diào)試的利器。
官網(wǎng)下載地址:http://www.telerik.com/download/fiddler
6.2 移動(dòng)端抓包\微信小程序\微信公眾號(hào)
https://blog.csdn.net/liwenxiang629/article/details/114366106
7. SDK 工具介紹
7.1 SDK目錄介紹
(1)常用命令:
adb: adb shell命令 /system/bin?
(-s\install\uninstall\start-server\kill-server)
常用命令ls |more
按Enter鍵:翻屏
Logcat?? adb logcat> file??? adb shell logcat|grep ***
(2)adb通過(guò)wifi連接手機(jī)
1. 使用USB數(shù)據(jù)線連接設(shè)備
2. 命令輸入adb tcpip 5555 ( 5555為端口號(hào),可以自由指定)。
3. 斷開 USB數(shù)據(jù)
4. 再命令輸入 adb connect <設(shè)備的IP地址>:5555
5. adb shell
Thread
File Explorer)
???????????????
(3)tools\mksdcard.exe? 創(chuàng)建模擬器中sdcard的鏡像文件
???? \lint.bat 檢查源碼,發(fā)現(xiàn)潛在的問(wèn)題
???? \proguard 代碼混淆
http://blog.csdn.net/catoop/article/details/47208833
build-tools\build number\aapt.exe 即Android Asset Packaging Tool,該工具可以查看,創(chuàng)建, 更新ZIP格式的文檔附件(zip, jar, apk)
aapt dump badging < file.apk>
http://blog.csdn.net/hytfly/article/details/49364241
zipalign.exe? 對(duì)apk文件進(jìn)行存檔對(duì)齊的
優(yōu)化工具,目的是使所有的未壓縮數(shù)據(jù)都從文件的開始位置以指定的
對(duì)齊方式排列
(4)GPU呈現(xiàn)模式分析(重要)
主要反映應(yīng)用的卡頓現(xiàn)象
性能分析工具,啟動(dòng) tools\monitor.bat
Heap?? 關(guān)注:虛擬機(jī)的堆? ,hprof文件用mat分析
Allocation tracker關(guān)注:對(duì)象分配的內(nèi)存
TraceView 關(guān)注:方法的運(yùn)行時(shí)間
需要開發(fā)加debug代碼,android.os.Debug.startMethodTracing();和android.os.Debug.stopMethodTracing();
在/sdcard目錄中生成trace文件
http://blog.csdn.net/guchuanhang/article/details/51181716
Systrace 關(guān)注:方法以及系統(tǒng)方法占用的cpu時(shí)間
http://blog.csdn.net/hfreeman2008/article/details/53538155
兩個(gè)概念
surfaceflinger http://blog.csdn.net/xuesen_lin/article/details/8954508
http://blog.csdn.net/w401229755/article/details/38420191
binder
http://blog.csdn.net/cauchyweierstrass/article/details/50701102
卡頓的主要原因
1.人為在UI線程中做輕微耗時(shí)操作,導(dǎo)致UI線程卡頓;
2.布局Layout過(guò)于復(fù)雜,無(wú)法在16ms內(nèi)完成渲染;
3.同一時(shí)間動(dòng)畫執(zhí)行的次數(shù)過(guò)多,導(dǎo)致CPU或GPU負(fù)載過(guò)重;
4.View過(guò)度繪制,導(dǎo)致某些像素在同一幀時(shí)間內(nèi)被繪制多次,從而使CPU或GPU負(fù)載過(guò)重;
5.View頻繁的觸發(fā)measure、layout,導(dǎo)致measure、layout累計(jì)耗時(shí)過(guò)多及整個(gè)View頻繁的重新渲染;
6.內(nèi)存頻繁觸發(fā)GC過(guò)多(同一幀中頻繁創(chuàng)建內(nèi)存),導(dǎo)致暫時(shí)阻塞渲染操作;
7.冗余資源及邏輯等導(dǎo)致加載和執(zhí)行緩慢;
8.臭名昭著的ANR
8. 調(diào)試命令
8.1 am
am全稱activity manager,使用am可以模擬各種系統(tǒng)的行為,例如去啟動(dòng)一個(gè)activity,強(qiáng)制停止進(jìn)程,發(fā)送廣播進(jìn)程,修改設(shè)備屏幕屬性等等。
例子 應(yīng)用啟動(dòng)時(shí)間
adb shell am start -S -W [packageName]/[activiytName]
com.android.calculator2/.Calculator
8.2 pm
pm全稱package manager,你能使用pm命令去模擬android行為或者查詢?cè)O(shè)備上的應(yīng)用等。
pm list packages
8.3 Dumpsys
dumpsys | grep "DUMP OF SERVICE" //獲得可查詢的信息
dumpsys cpuinfo | grep your app package
9. 安全工具介紹
9.1 安全工具
Drozer
https://labs.mwrinfosecurity.com/tools/drozer/
代碼混淆? http://www.cnblogs.com/classic/archive/2011/04/27/2030234.html
騰訊金剛 ,掃描常見android 漏洞
https://service.security.tencent.com/kingkong
10. monkeyrunner
10.1 什么是monkeyrunner
是SDK自帶的自動(dòng)化測(cè)試工具
核心:點(diǎn)擊像素坐標(biāo)的方式進(jìn)行模擬用戶操作
腳本語(yǔ)言:jython
10.2 monkeyrunner的作用
Monkeyruner腳本可以支持安裝卸載應(yīng)用、進(jìn)入任一模塊、點(diǎn)坐標(biāo)事件、按鍵事件、編輯文本、循環(huán)測(cè)試、截圖對(duì)比(缺陷)等操作
通過(guò)HierarchyViewer識(shí)別頁(yè)面元素Id,但是速度太慢
11. monkey
11.1 什么是monkey??????????
Money就是一組隨機(jī)事件流
adb shell monkey -v -p your.package.name 500
com.android.calculator2
http://blog.csdn.net/gzh0222/article/details/7222612
12.Uiautomator
12.1 什么是Uiautomator
(1)Android 4.1 SDK中可以使用uiautomator 用來(lái)做UI測(cè)試。
路徑 sdk\platforms\android-24
(2)SDK目錄\tools\uiautomatorviewer.bat,一個(gè)圖形界面工具來(lái)掃描和分析應(yīng)用的UI控件,使用其抓取頁(yè)面元素
SDK目錄\ platforms\android-17\ uiautomator.jar,一個(gè)測(cè)試的Java庫(kù),包含了創(chuàng)建UI測(cè)試的各種API和執(zhí)行自動(dòng)化測(cè)試的引擎。
(3)在Android API Level18及其以上的版本增加了一個(gè)Android控件的屬性ResourceId
(4)推薦文章
http://blog.csdn.net/u010961631/article/details/9616581
http://developer.android.com/intl/zh-cn/tools/testing-support-library/index.html#UIAutomator
13. 自動(dòng)化測(cè)試
13.1 相關(guān)文章(概念,框架演示模式,效率提升方案)
概念
https://blog.csdn.net/liwenxiang629/article/details/109385552
框架演示模型
https://blog.csdn.net/liwenxiang629/article/details/109462056
效率提升方案
https://blog.csdn.net/liwenxiang629/article/details/109527716
13.2 概念
自動(dòng)化測(cè)試是把以人為驅(qū)動(dòng)的測(cè)試行為轉(zhuǎn)化為機(jī)器執(zhí)行的一種過(guò)程。通常,在設(shè)計(jì)了測(cè)試用例并通過(guò)評(píng)審之后,由測(cè)試人員根據(jù)測(cè)試用例中描述的規(guī)程一步步執(zhí)行測(cè)試,得到實(shí)際結(jié)果與期望結(jié)果的比較。在此過(guò)程中,為了節(jié)省人力、時(shí)間或硬件資源,提高測(cè)試效率,便引入了自動(dòng)化測(cè)試的概念。
13.3 本質(zhì)
編程測(cè)試,即 編寫一個(gè)程序測(cè)試另一個(gè)程序
13.4 過(guò)程
錄制腳本>修改錄制腳本>回放腳本>查看報(bào)告。
13.5 UI自動(dòng)化測(cè)試的前提條件?
(1)軟件需求變動(dòng)不頻繁;
(2)項(xiàng)目周期足夠長(zhǎng);(一般回歸6次,自動(dòng)化測(cè)試與手工測(cè)試成本相當(dāng))
(3)UI變動(dòng)小
13.6 不適合做UI自動(dòng)化測(cè)試的軟件產(chǎn)品
游戲類
軟件的UI動(dòng)態(tài)生成的內(nèi)容較多;
軟件用戶交互性功能多;
注重UI體驗(yàn)的校驗(yàn)。
13.7 最佳實(shí)踐場(chǎng)景
回歸測(cè)試
多場(chǎng)景(測(cè)試點(diǎn))的隨機(jī)組合測(cè)試 ? A B C D
14. Appium
14.1 Appium概念
Appium 是一個(gè)開源、跨平臺(tái)的自動(dòng)化測(cè)試工具,用于測(cè)試原生和輕量移動(dòng)應(yīng)用,支持 iOS, Android 和 FirefoxOS 平臺(tái)。Appium 驅(qū)動(dòng)蘋果的 UIAutomation 庫(kù)和 Android 的 UiAutomator 框架,使用 Selenium 的 WebDriver JSON 協(xié)議。
官網(wǎng):http://appium.io/
Github https://github.com/appium/appium
14.2 特性
(1)跨平臺(tái), native/ hybrid/ webview(H5)?
(2)跨設(shè)備, android/iOS?
(3)跨app,可以在多個(gè)app之間交互
(4)不依賴APP開源代碼
(5)支持Selenium WebDriver / Selenium Grid?
(6)跨語(yǔ)言, java/python/ruby
(7)Open Source?
14.3 Appium是由nodejs的express框架寫的 Http Server
Appium不是它??創(chuàng)建?套新的測(cè)試框架,是將現(xiàn)有的優(yōu)秀的框架進(jìn)行了集成,以Selenium WebDriver的協(xié)議(JsonWireProtocol/Restful web service)統(tǒng)?起來(lái). 使得這個(gè)框架滿?多??的需求。
Appium啟動(dòng)自動(dòng)化測(cè)試后,在被測(cè)設(shè)備上啟動(dòng)?個(gè)server,監(jiān)聽來(lái)? Appium server的指令。不同的平臺(tái)(如IOS,Android)采?不同的運(yùn)?和交換?式。Appium將某個(gè)樁程序“侵入”平臺(tái),用于接受指令,來(lái)完成測(cè)試腳本的運(yùn)行。
在Android端,appium基于WebDriver,并利用Bootstrap.js,最后通過(guò)調(diào)?用UiAutomator(\Sdk\platforms\android-30)的命令,實(shí)現(xiàn)App的自動(dòng)化測(cè)試。另外由于UiAutomator對(duì)H5的支持有限,appium引入了chromedriver來(lái)實(shí)現(xiàn)基于H5的自動(dòng)化。
14.4 Appium 環(huán)境搭建
https://blog.csdn.net/liwenxiang629/article/details/117015669?
14.5 查找頁(yè)面元素,與selenium一致
findElementByClassName(String using)
findElementByCssSelector(String using)
findElementById(String id)?
findElementByLinkText(String using)
findElementByName(String using)
findElementByPartialLinkText(String using)?
findElementByTagName(String using)
findElementByXPath(String using)
findElementsByAccessibilityId(String using)
https://blog.csdn.net/liwenxiang629/article/details/116454410? xpath定位詳解
14.6 超控頁(yè)面元素
driver.findElementById("com.worktile:id/btn_login").click(); //通過(guò)控件id點(diǎn)擊元素
driver.findElementById("com.worktile:id/et_username").sendKeys("kevin @test.com"); //在控件中輸入字符串
driver.execute(“mobile: <commandName>”, <JSON serializable argument>) //按鍵命令,mobile: scroll", ImmutableMap.of("direction", "down")
driver.setLocation(location);//設(shè)置位置信息
driver.getBatteryInfo() //獲取電池信息
http://appium.io/docs/en/about-appium/api/
http://appium.io/docs/en/writing-running-appium/caps/
14.7 xpath
(1)Web 元素識(shí)別,利用瀏覽器developer tool
xpath詳解 starts-with 和contains方法
http://www.w3school.com.cn/xpath/index.asp ?重點(diǎn)函數(shù)章節(jié)
基礎(chǔ)知識(shí)點(diǎn)如下?
(2)xpath=.//*[contains(text(),'請(qǐng)輸入用戶名')] 獲取頁(yè)面中的文字
14.8 Appium實(shí)戰(zhàn)
什么值得買
1.首頁(yè)的Tab頁(yè)面切換
2.個(gè)人頁(yè)面設(shè)置性別
查看apk的 AndroidManifest.xml
java -jar apktool.jar d yourapk
apktool.jar 是apk的反編譯軟件,下載地址
https://bitbucket.org/iBotPeaches/apktool/downloads/
啟動(dòng)activity
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
包信息 package=
14.9?簡(jiǎn)單的架構(gòu)
(1)PO設(shè)計(jì)模式:Page Object直譯就是頁(yè)面對(duì)象,也就是把界面定位和業(yè)務(wù)操作分開。
(2)ObjectStore:用來(lái)存放自動(dòng)化測(cè)試中所需要操控的UI對(duì)象(變量類型為:public static final String )例如定義public static final Login_Button=””;表示登陸按鈕的UI string路徑。項(xiàng)目需要統(tǒng)一變量的命名規(guī)范,確保項(xiàng)目成員看到定義的變量名稱就能夠了解其對(duì)應(yīng)的頁(yè)面UI元素是什么。
parseObject的應(yīng)用,考慮如何設(shè)計(jì)
(3)businesslib:把常用的場(chǎng)景寫成方法,便于用例設(shè)計(jì)人員復(fù)用。
(4)利用junit框架中執(zhí)行完成后導(dǎo)出的xml日志,點(diǎn)擊下圖中的Export
14.10?自動(dòng)化用例設(shè)計(jì)
(1)場(chǎng)景設(shè)計(jì),一個(gè)testcase中包括一個(gè)完整的流程,流程中包括若干個(gè)點(diǎn)(各個(gè)點(diǎn)之間有前后關(guān)聯(lián)),每個(gè)點(diǎn)都用斷言校驗(yàn)。
(2)測(cè)試點(diǎn)的設(shè)計(jì),各個(gè)測(cè)試點(diǎn)之間沒(méi)有任何聯(lián)系,一個(gè)testcase中只有一個(gè)測(cè)試點(diǎn)。
(3)注意單元測(cè)試中的setup和teardown
(4)Junit中順序執(zhí)行用例,用例順序排序 case1_ ? case2_
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
import org.junit.FixMethodOrder;
import org.junit.runners.MethodSorters;
(5)使用suite管理用例集合
@RunWith(Suite.class)
@SuiteClasses(case1.class,case2.class)
public class AllTests {
}
?? ?補(bǔ):
Junit3
Junit4
TestNg?
Junit5
15. 測(cè)試全棧工具
15.1 UI自動(dòng)化工具和接口自動(dòng)化測(cè)試工具
?
15.2 單元測(cè)試工具
15.3 性能測(cè)試工具
?
15.4 安全測(cè)試工具
【知識(shí)點(diǎn)補(bǔ)充1】
(1)功能測(cè)試(基于場(chǎng)景的測(cè)試:正常+異常場(chǎng)景)、性能測(cè)試、安全測(cè)試的思路、適配測(cè)試、易用性測(cè)試
(2)移動(dòng)端測(cè)試
終端(各種設(shè)備+手表)+手機(jī)(ios +android),ios的測(cè)試,直接使用mac本(既可以做android開發(fā)又可以做ios開發(fā)),不要在windows上搭建mac的虛擬機(jī)
android (apk+微信類(小程序+公眾號(hào))+android瀏覽器)
apk 類測(cè)試(重點(diǎn))
android瀏覽器的測(cè)試等價(jià)于web瀏覽器,主要差別是UI(屏幕大小)
我們的測(cè)試是基于android 應(yīng)用的測(cè)試,如果有機(jī)會(huì)進(jìn)入小米、oppo,vivo,華為? (自身的系統(tǒng)+自帶應(yīng)用)
移動(dòng)設(shè)備的核心是,根據(jù)用戶設(shè)備屏幕的大小來(lái)設(shè)計(jì)自身的ui
(3)做app 功能的時(shí)候,大家可以參考競(jìng)品(我們的功能跟競(jìng)品的功能一定是大于等于的關(guān)系,要特別關(guān)注易用性測(cè)試)
這兩次課程開發(fā)內(nèi)容少一些,我會(huì)根據(jù)進(jìn)度引入一些android 自動(dòng)化測(cè)試的東西
(4)docker stats container id???? 監(jiān)控單個(gè)容器的性能
物理機(jī) ,里面有十個(gè)docker ,通常的監(jiān)控方式,都是對(duì)整個(gè)物理機(jī)的監(jiān)控
1.docker stats id > 輸出到某個(gè)文件(產(chǎn)生數(shù)據(jù)),文件的產(chǎn)生格式,與stats? 的參數(shù)有關(guān)系
2.我們通過(guò)代碼(python 也可以是java,找到對(duì)應(yīng)的模塊即可),對(duì)數(shù)據(jù)進(jìn)行解析,并生成圖片并保存
3.在需要使用圖形界面的地方調(diào)用步驟2中生成的圖片即可
(5)做android 測(cè)試最重要的兩個(gè)技術(shù)點(diǎn):1.adb 2.logcat 看日志
(6)android studio 是android 應(yīng)用的開發(fā)ide,他是idea(android開發(fā)插件)+android sdk(android 開發(fā)的jar包,以及一系列工具)
把下面兩個(gè)路徑加到環(huán)境變量中
C:\Users\kevin\AppData\Local\Android\Sdk\platform-tools
C:\Users\kevin\AppData\Local\Android\Sdk\tools???
(7)android 系統(tǒng)以及開發(fā)的基礎(chǔ)知識(shí)
(8)java 代碼被編譯成dex 字節(jié)碼,在虛擬機(jī)中運(yùn)行,原因是性能考慮,dex字節(jié)碼性能更高
(9)android各個(gè)版本的新功能以及api的變化可以查看
https://developer.android.google.cn/about/versions/
adroid 逐漸變得穩(wěn)定完善是從4.4開始的
(10)每一個(gè)應(yīng)用的啟動(dòng)本質(zhì)上是啟動(dòng)了一個(gè)進(jìn)程,有好多應(yīng)用會(huì)有多個(gè)進(jìn)程
我們的一個(gè)ui頁(yè)面就是一個(gè)activity,activity 本質(zhì)就是類
各種狀態(tài),就是對(duì)應(yīng)了某個(gè)方法,然后我們呢需要重寫某個(gè)方法
當(dāng)activiy被打擾的時(shí)候,無(wú)論進(jìn)入onpause 或者onstop的狀態(tài),都會(huì)進(jìn)入到方法onpause 或者onstop ,在方法里會(huì)對(duì)當(dāng)前的數(shù)據(jù)和context進(jìn)行保存
結(jié)束被打擾,進(jìn)入到onreusume狀態(tài),即進(jìn)入到onreusume方法,在方法里對(duì)你保存的數(shù)據(jù)和context 進(jìn)行恢復(fù),確保在running狀態(tài)時(shí)繼續(xù)正確運(yùn)行
每一個(gè)activity 都會(huì)對(duì)應(yīng)一個(gè)同名的xml 資源配置文件 res\layout
webview 是activity的一個(gè)資源組件,在里面可以顯示web相關(guān)內(nèi)容
在配置文件中
activity? 中這個(gè)標(biāo)簽代表著啟動(dòng)類
?<category android:name="android.intent.category.LAUNCHER" />
在android開發(fā)中沒(méi)有 main方法,先運(yùn)行哪個(gè)activity就是通過(guò)android.intent.category.LAUNCHER
contentprovider 提供接口,讓其他應(yīng)用訪問(wèn)內(nèi)容(訪問(wèn)是有權(quán)限控制的)
(12)看xml
看資源和AndroidManifest.xml
java -jar apktool.jar d wt-android-3.18.0.apk
(13)android app >接口調(diào)用 >webview(展示網(wǎng)頁(yè))>調(diào)用到后端的服務(wù)
(14)通過(guò)PC 端chrome可以調(diào)試你的webview中的元素,但是前提是代碼中把調(diào)試開關(guān)打開!!!!
(15)瀏覽器是一個(gè)應(yīng)用程序,而瀏覽器引擎是瀏覽器的核心,他負(fù)責(zé)處理js,做頁(yè)面對(duì)象的展示
(16)web 功能點(diǎn)設(shè)計(jì),就是一句話。安卓app的測(cè)試用例,更重要的作用是列出要測(cè)試的點(diǎn),怕遺漏了。而不側(cè)重每個(gè)用例的詳細(xì)步驟的描述。
比如:
用例:微信發(fā)送文字消息
具體操作:
正常長(zhǎng)度文字
常超文字
文字帶表情
文字中有特殊符合
文字有代碼(安全性)
(17)app 核心功能點(diǎn)的使用,從主頁(yè)面點(diǎn)擊不超過(guò)三下,就能夠使用
(18)處理數(shù)據(jù)
cpu>內(nèi)存>磁盤
第一次,磁盤讀取,到內(nèi)存,cpu從內(nèi)存讀取數(shù)據(jù)
第二次,先判斷要讀取的數(shù)據(jù)是否在內(nèi)存中,如果在則直接從內(nèi)存讀取,如果不在重復(fù)第一步
作為一個(gè)擴(kuò)展!
處理數(shù)據(jù)
cpu>內(nèi)存>磁盤 等價(jià)于
請(qǐng)求數(shù)據(jù)>緩存服務(wù)器(redis)>數(shù)據(jù)庫(kù)
手機(jī)>手機(jī)數(shù)據(jù)>服務(wù)器數(shù)據(jù)
比如:
雙十一來(lái)了
周期變長(zhǎng),1-11(周期變長(zhǎng):減少同一時(shí)間,并發(fā)量過(guò)大)
提前加入購(gòu)物車(把商品加入到緩存服務(wù)器了),即使緩存服務(wù)器數(shù)據(jù)丟失,也無(wú)所謂,如果丟失在查庫(kù)!!!!!
請(qǐng)求于請(qǐng)求之間,間隔10ms,壓力都會(huì)有顯著改善
(19)手機(jī)>手機(jī)數(shù)據(jù)>服務(wù)器數(shù)據(jù)
從手機(jī)中讀取數(shù)據(jù),
第一可以減少服務(wù)器的壓
第二沒(méi)有網(wǎng)絡(luò)的時(shí)候,應(yīng)用也有數(shù)據(jù)展示
第三 要確認(rèn)數(shù)據(jù)在手機(jī)中的緩存時(shí)間
注意:緩存雖好,但不是萬(wàn)能的方法,例如實(shí)時(shí)性強(qiáng)的軟件就沒(méi)有緩存機(jī)制,航班、鐵路、股票
打車軟件,個(gè)人覺得沒(méi)有必要試時(shí),三十秒左右的緩存都可以
緩存是android 應(yīng)用中特別特別重要的技術(shù)
(20)適配測(cè)試
簡(jiǎn)言之,就是應(yīng)用在不同設(shè)備中的表現(xiàn)
華為????? 小米???????? oppo??? vivo
11???????? 10?????????? 12???????? 9
分辨率1? 分辨率2? 分辨率3? 分辨率4
屏幕1???? 屏幕2???? 屏幕3???? 屏幕4
通常,各個(gè)品牌主流手機(jī) 都至少有一部(真機(jī))
各個(gè)大廠都有云測(cè)平臺(tái),原因是什么?
各個(gè)大廠功能相差不多,比較價(jià)格!!!!!
個(gè)人非常推薦云真機(jī)的租賃,可以驗(yàn)證個(gè)別機(jī)型上是否純?cè)谀承﹩?wèn)題
(21)android 應(yīng)用的性能測(cè)試,是不關(guān)注并發(fā)的,所謂的并發(fā) 是對(duì)服務(wù)器的壓力!!!!!!!
對(duì)于android 應(yīng)用來(lái)講,性能主要的關(guān)注點(diǎn):
應(yīng)用對(duì)手機(jī)的cpu、應(yīng)用的內(nèi)存占用、耗電量、流暢度(卡頓)、移動(dòng)網(wǎng)絡(luò)時(shí)流量的消耗
apk
瀏覽器
微信小程序????? >發(fā)送請(qǐng)求到服務(wù)器(而對(duì)于服務(wù)器來(lái)講,我不關(guān)注你是什么設(shè)備發(fā)來(lái)的,服務(wù)器都是處理連接)
公眾號(hào)
終端
(22)服務(wù)器的入口程序,會(huì)把不同的終端請(qǐng)求進(jìn)行解析,然后返回不同的資源文件
(23)adb 是連接我們手機(jī)和電腦的一個(gè)窗口
adb shell 可以進(jìn)入手機(jī)的內(nèi)核
通過(guò) top命令持續(xù)監(jiān)控 應(yīng)用 top |grep 你的應(yīng)用名稱
adb shell am start -S -W [packageName]/[activiytName]
LaunchState:啟動(dòng)模式,上訴啟動(dòng)模式為冷啟動(dòng)
WaitTime:系統(tǒng)啟動(dòng)應(yīng)用耗時(shí)= TotalTime +系統(tǒng)資源啟動(dòng)時(shí)間(單位 ms )
TotalTime:應(yīng)用自身啟動(dòng)耗時(shí)=該 Activity 啟動(dòng)時(shí)間+應(yīng)用 application 等資源啟動(dòng)時(shí)間(單位 ms )
過(guò)渡繪制
GPU分析
都是在手機(jī)的開發(fā)者選項(xiàng)里有
啟動(dòng)時(shí)間
看cpu 內(nèi)存 網(wǎng)絡(luò) top(perfdog更加直接,但是現(xiàn)在收費(fèi))
耗電量,直接用系統(tǒng)自帶的apk 查看耗電量即可
【知識(shí)點(diǎn)補(bǔ)充2】
(1)在測(cè)試的時(shí)候,一定要考慮角色權(quán)限,不同的角色,只擁有該角色的權(quán)限!!!!!!
比如說(shuō),一個(gè)普通用戶,不能使用管理員的功能權(quán)限;
一個(gè)管理員不可以隨意的看普通用戶的消息(查看規(guī)則是?)
(2)場(chǎng)景 大家可以理解為,一系列功能點(diǎn)的集合(組合)
(3)談測(cè)試:功能\性能\安全\易用性\適配 ?最后可以談?wù)労诵膱?chǎng)景的測(cè)試
(4)sdk 中最重要的工具就是
adb
adb shell 進(jìn)入手機(jī)
logcat
dumpsys
(5)代碼混淆,使得類名 方法名 變量名無(wú)法猜測(cè),但是仍然能看到源碼,如果源碼也不想暴露,那么就需要用到加殼方案了(收費(fèi)方案)
(6)如果公司不接受,把a(bǔ)pk 上傳到第三方平臺(tái)進(jìn)行掃描(騰訊金剛),那么就需要掌握drozer等工具的使用。
(7)啟動(dòng) android studio ?>Tool> AVD Manager(創(chuàng)建虛擬機(jī)) 和SDK Manager(管理sdk)
(8)monkeyrunner 最早進(jìn)行android 自動(dòng)化測(cè)試的工具
Monkeyruner腳本可以支持安裝卸載應(yīng)用、進(jìn)入任一模塊、點(diǎn)坐標(biāo)事件、按鍵事件、編輯文本、循環(huán)測(cè)試、截圖對(duì)比(缺陷)等操作
該工具是,云測(cè)中,最基礎(chǔ)的自動(dòng)化測(cè)試核心工具,他只能針對(duì)頁(yè)面的坐標(biāo)進(jìn)行模擬!!!!!
(9)monkey 發(fā)送隨機(jī)事件流,對(duì)于普通應(yīng)用來(lái)講,意義不是很大,個(gè)人覺得最有用的場(chǎng)景就是 對(duì)于游戲的隨機(jī)點(diǎn)擊測(cè)試!
(10)Sdk\platforms\android-30 ?
android.jar 就是開發(fā)android 應(yīng)用的api
uiautomator.jar ?就是做ui自動(dòng)化測(cè)試的api
(11)monkeyrunner>robotium 最早>appium(android自動(dòng)化測(cè)試中,就是調(diào)用了uiautomator中的api來(lái)操控頁(yè)面中的ui元素)
(12)以web自動(dòng)化測(cè)試的實(shí)例,來(lái)了解android自動(dòng)化
web 的主流工具是selenium 3,規(guī)范了一套webdriver協(xié)議,這個(gè)協(xié)議是http
ui 自動(dòng)化主要的技術(shù)是識(shí)別到頁(yè)面的元素,識(shí)別到元素后,對(duì)元素進(jìn)行一系列的處理,包括點(diǎn)擊、寫入、選擇、(移動(dòng)app中的ui元素 還會(huì)加入一系列的手勢(shì)操作)
一搬來(lái)講,ui自動(dòng)化測(cè)試都會(huì)有一款工具,能夠錄制我們對(duì)于ui元素的操作!
(13)katalon recorder ?是一款web錄制工具,他支持firefox和chrome,是二者瀏覽器的一個(gè)插件
以web 為例,我們?cè)谑褂娩浿乒ぞ叩臅r(shí)候,操控頁(yè)面中的元素,錄制工具會(huì)對(duì)其進(jìn)行識(shí)別(id,class,xpath,css)
任何一個(gè)web 元素都有一個(gè)唯一的xpath 或者css用來(lái)進(jìn)行識(shí)別
id =su
//*[@id="su"]
#su
如果一個(gè)web 頁(yè)面中的元素,沒(méi)有id class 這些屬性,那么要想對(duì)其進(jìn)行識(shí)別,只能使用xpath (移動(dòng)端自動(dòng)化測(cè)試,很多都是用xpath進(jìn)行定位的)或者css
頁(yè)面中的元素,并不是只有一種識(shí)別方式,只要識(shí)別方式具有唯一性就可以!!!!!!!!
自動(dòng)化測(cè)試錄制工具,第一步,就是對(duì)頁(yè)面中的元素進(jìn)行查找(唯一性的)
(14)通常錄制的代碼時(shí)不穩(wěn)定的,要想使得錄制的代碼穩(wěn)定就需要對(duì)其進(jìn)行腳本化處理,生成對(duì)應(yīng)的腳本
把腳本引入到ide中,引入腳本所需要的jar包,進(jìn)行自動(dòng)化代碼的開發(fā)
(15)自動(dòng)化測(cè)試前提條件是設(shè)計(jì)好用例
第一步,識(shí)別頁(yè)面中的元素(有的工具可以通過(guò)錄制的形式,識(shí)別到頁(yè)面中的元素;如果工具不提供那么需要自己手動(dòng)實(shí)現(xiàn))
使用appium也就是uiautomator 時(shí)候,我們可以通過(guò)\Sdk\tools\bin\下的uiautomatorviewer.bat 對(duì)頁(yè)面中的元素進(jìn)行識(shí)別
(16)步驟自動(dòng)化+結(jié)果校驗(yàn)的自動(dòng)化=自動(dòng)化測(cè)試
(17)新功能的測(cè)試,不適合做自動(dòng)化測(cè)試;自動(dòng)化測(cè)試特別適合回歸測(cè)試
自動(dòng)化測(cè)試依賴于頁(yè)面ui元素的屬性,所以如果ui不穩(wěn)定,那么自動(dòng)化測(cè)試是不適合的
自動(dòng)化測(cè)試是腳本,腳本就會(huì)有bug,我們自動(dòng)化測(cè)試的目的是發(fā)現(xiàn)產(chǎn)品的bug,但是很多情況下是因?yàn)樽詣?dòng)化測(cè)試腳本執(zhí)行的失敗而影響了測(cè)試結(jié)果!!!!
自動(dòng)化測(cè)試若想有效開展,本質(zhì)還是測(cè)試人員編寫的測(cè)試代碼要健壯!!!!
測(cè)試代碼不健壯的原因:
1測(cè)試人員代碼能力不足
2沒(méi)有人對(duì)測(cè)試人員編寫的代碼進(jìn)行測(cè)試
互聯(lián)網(wǎng)產(chǎn)品不太適合做自動(dòng)化測(cè)試,因?yàn)閡i變化快,功能更新快;企業(yè)級(jí)軟件適合做自動(dòng)化測(cè)試jira、禪道、ehr就非常的適合做自動(dòng)化測(cè)試了
移動(dòng)互聯(lián)網(wǎng)產(chǎn)品適合做自動(dòng)化測(cè)試的少,但是也建議大家去寫自動(dòng)化測(cè)試腳本,原因是能夠提升代碼水平
(18)腳本用例的并行
一個(gè)用例 有 12345,我們可以順序跑12345,也可以多線程分別跑 12345
(19)appium
自動(dòng)化測(cè)試的核心是操控頁(yè)面中的元素,而appium并未編寫關(guān)于超控頁(yè)面ui元素的api
(20)applium/selenium
!!!ide (代碼java、python、ruby)>代碼會(huì)被轉(zhuǎn)化成webdriver協(xié)議>服務(wù)端來(lái)解析這個(gè)協(xié)議(appiumserver\各個(gè)瀏覽器的driver)
(21)driver.findElement(By.id("kw")).click();
driver.find_element_by_id("kw").click() ? 都會(huì)轉(zhuǎn)化成協(xié)議POST ?? ?/session/{session id}/element/{element id}/click ?https://www.w3.org/TR/webdriver/#element-click
@driver.find_element(:id, "kw").click
appium server 0.0.0.0代表本機(jī),可以指定appiumserver的ip,如果代碼跟appium server 不在一臺(tái)機(jī)器上,那么在代碼中設(shè)置如下:
driver = new AndroidDriver(new URL("http://remoteip:port/wd/hub"), capabilities);
By.xpath("//*[@text='主頁(yè)']") ?表示在當(dāng)前頁(yè)面中找"主頁(yè)"元素
在android 里常用的api 也就是 click sendkeys
(22)在做appium測(cè)試時(shí),我們要從androidmanifest 中獲得兩個(gè)信息, 第一個(gè)就是package名,第二個(gè)就是啟動(dòng)的activity信息
(23)po模式 ? 把頁(yè)面中的ui元素,賦值給變量,然后再腳本中調(diào)用這些變量即可,好處有兩點(diǎn)
1.一旦頁(yè)面中元素的屬性發(fā)生了變化,我們只需要修改變量的賦值,而無(wú)需更改變量了!!!
2.我們可以通過(guò)變量的命名規(guī)則來(lái)很清晰的定義我們?cè)夙?yè)面中超控的元素是什么
(24)總結(jié):
android 測(cè)試方法 功能 性能 安全 適配 易用性
工具 sdk ? adb logcat dumpsys ? ??
GPU呈現(xiàn)模式分析(重要)
過(guò)渡繪制
fiddler 接口的抓包
appium(monkey、monkeyrunner)
自動(dòng)化測(cè)試的原理,適合自動(dòng)化測(cè)試的項(xiàng)目和不適合自動(dòng)化測(cè)試的項(xiàng)目
總結(jié)
以上是生活随笔為你收集整理的Android测试点和测试工具介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Android中土司(Toast)的使用
- 下一篇: android机顶盒root,[Andr