日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android测试点和测试工具介绍

發布時間:2023/12/20 Android 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android测试点和测试工具介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

1.?測試點

2. 緩存

2.1 什么是緩存

2.2 緩存管理的適用環境

3. 適配測試

3.1 為什么需要做適配測試

3.2 適配測試的基礎測試點

3.3 適配測試的方法

4.?云測試

4.1 為什么需要云測試

4.2 云測試的基本流程

4.3 云測試主要主要解決的問題:兼容測試、單機調試

5. 性能測試

5.1 移動端

5.2 移動端和服務器端的性能指標

5.3 輔助工具詳解

5.4 perfdog

5.5 耗電量測試

5.6 相關命令

6. App抓包

6.1 Fiddler 的使用

6.2 移動端抓包\微信小程序\微信公眾號

7. SDK 工具介紹

7.1 SDK目錄介紹

8. 調試命令

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. 自動化測試

13.1 相關文章(概念,框架演示模式,效率提升方案)

13.2 概念

13.3 本質

13.4 過程

13.5 UI自動化測試的前提條件?

13.6 不適合做UI自動化測試的軟件產品

13.7 最佳實踐場景

14. Appium

14.1 Appium概念

14.2 特性

14.3 Appium是由nodejs的express框架寫的 Http Server

14.4 Appium 環境搭建

14.5 查找頁面元素,與selenium一致

14.6 超控頁面元素

14.7 xpath

14.8 Appium實戰

14.9?簡單的架構

14.10?自動化用例設計

15. 測試全棧工具

15.1 UI自動化工具和接口自動化測試工具??

15.2 單元測試工具?

15.3 性能測試工具??

15.4 安全測試工具


1.?測試點

功能(正向)

異常(例外)

性能

安全

用戶體驗

用例的寫法

簡潔,測試點覆蓋全面

緩存

藍牙(可穿戴設備,特別關注,注意硬件測試有可能是單個硬件的故障導致測試不通過)

2. 緩存

2.1 什么是緩存

緩存就是數據交換的緩沖區(稱作Cache),當某一硬件要讀取數據時,會首先從緩存中查找需要的數據。如果找到了則直接執行,找不到的話則從內存中找。

由于緩存的運行速度比內存快得多,故緩存的作用就是幫助硬件更快地運行。

Android緩存主要從手機與服務器網絡交互角度考慮,采用緩存可以進一步大大緩解數據交互的壓力,又能提供一定的離線瀏覽。

2.2 緩存管理的適用環境

(1)提供網絡服務的應用

(2)數據更新不需要實時更新,但是哪怕是3-5分鐘的延遲也是可以采用緩存機制。

(3)緩存的過期時間是可以接受的(不會因為緩存帶來的好處,導致某些數據因為更新不及時而影響產品的形象等)

(4)一定程度上可以支持離線瀏覽(或者說為離線瀏覽提供了技術支持)

3. 適配測試

3.1 為什么需要做適配測試

分辨率UI問題;

前置攝像頭位置對ui的影響;

不同的廠商會選擇不同的硬件,硬件驅動也可能會出現問題;

Android API 的問題,比如高版本API廢棄了低版本的API,如果還是用低版本的API開發,在低版本下運行,就會造成程序的崩潰;

廠商定制的系統,會圍繞硬件的特性對系統API進行改動,造成使用標準API接口的應用程序在深度定制的系統上無法兼容。

???

3.2 適配測試的基礎測試點

安裝\卸載、UI、藍牙、連網等等與硬件相關的功能點。

3.3 適配測試的方法

(1)明確確應用運營方案,明確用戶群體,隨著應用的用戶數不斷增加,逐步拓展需要適配的機型。無需在app首次發布前就適配大量機型(app首次發布往往是在驗證產品的需求是否合理,驗證產品是否是用戶真正需要的東西,可以說發布的app就是為了改良的),這樣做既影響產品發布速度,又浪費金錢。

第一期、計劃適配哪些機型

第二期、計劃適配哪些機型

….

第N期、計劃適配哪些機型

備注:

在前二期可以借助云測試,適配部分主流機型

注意:不同用戶群體所傾愛的手機不同(例如:年輕mm偏愛oppo,IT人士小米較多)

(2 )確認適配機型的型號,系統類型以及分辨率

根據適配統計中的信息(國內應用建議參考友盟),確認要覆蓋測試的手機廠商、系統、分辨率、屏幕大小等信息確認需求,通過排列組合即可確認適配順序和目標。

具體實施方法:

采購 (根據淘寶,京東等電商統計的手機銷量排名購買)

內部協調 (可以采用租賃內部員工手機的方式)

租用 (專業手機租賃機構)

云測試(推薦,相對成本較低)

購買二手手機

外包

備注:外包app的測試有兩種類型

甲方提供適配機列表和適配手機(***公司為中國移動開發的某款app);

甲方通過給乙方酬勞的方式進行適配工作。例如:合同中指定App需在10款手機中完成適配。在此之外每多出一部手機適配,甲方就需額外支付一定的費用。

4.?云測試

4.1 為什么需要云測試

移動開發者面臨著多終端時代的碎片化挑戰,相對蘋果單一的終端,Android設備碎片化更加嚴重,多種型號款式、多樣的分辨率、加之設備自動化測試穩定性差,都讓開發者頭疼不已,在此背景下產生了移動云平臺。

4.2 云測試的基本流程

簡單的說,云平臺就是為應用提供商提供真機來對應用進行測試,基本流程如下:

應用提供商把apk通過網絡上傳至云平臺

>云平臺將apk安裝在自己平臺提供的真機上

>通過技術手段對apk進行測試并生成測試報告

>云平臺將測試報告反饋給應用提供商

4.3 云測試主要主要解決的問題:兼容測試、單機調試

Testin

開始測試 https://www.testin.cn/

百度云 http://mtc.baidu.com/

騰訊云 http://wetest.qq.com

https://data.qq.com/product/mta數據統計中心

5. 性能測試

5.1 移動端

Apk(重點)、瀏覽器、微信公眾號,微信小程序

5.2 移動端和服務器端的性能指標

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 耗電量測試

https://blog.csdn.net/liwenxiang629/article/details/118932940

5.6 相關命令

adb shell am start -S -W [packageName]/[activiytName]

LaunchState:啟動模式,上訴啟動模式為冷啟動

WaitTime:系統啟動應用耗時= TotalTime +系統資源啟動時間(單位 ms )

TotalTime:應用自身啟動耗時=該 Activity 啟動時間+應用 application 等資源啟動時間(單位 ms )

Google chrome 調試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是位于客戶端和服務器端的HTTP代理,也是目前最常用的http抓包工具之一 。 它能夠記錄客戶端和服務器之間的所有 HTTP請求,可以針對特定的HTTP請求,分析請求數據、設置斷點、調試web應用、修改請求的數據,甚至可以修改服務器返回的數據,功能非常強大,是 web調試的利器。

官網下載地址:http://www.telerik.com/download/fiddler

6.2 移動端抓包\微信小程序\微信公眾號

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通過wifi連接手機

1. 使用USB數據線連接設備

2. 命令輸入adb tcpip 5555 ( 5555為端口號,可以自由指定)。

3. 斷開 USB數據

4. 再命令輸入 adb connect <設備的IP地址>:5555

5. adb shell

Thread

File Explorer)

???????????????

(3)tools\mksdcard.exe? 創建模擬器中sdcard的鏡像文件

???? \lint.bat 檢查源碼,發現潛在的問題

???? \proguard 代碼混淆

http://blog.csdn.net/catoop/article/details/47208833

build-tools\build number\aapt.exe 即Android Asset Packaging Tool,該工具可以查看,創建, 更新ZIP格式的文檔附件(zip, jar, apk)

aapt dump badging < file.apk>

http://blog.csdn.net/hytfly/article/details/49364241

zipalign.exe? 對apk文件進行存檔對齊的

優化工具,目的是使所有的未壓縮數據都從文件的開始位置以指定的

對齊方式排列

(4)GPU呈現模式分析(重要)

主要反映應用的卡頓現象

性能分析工具,啟動 tools\monitor.bat

Heap?? 關注:虛擬機的堆? ,hprof文件用mat分析

Allocation tracker關注:對象分配的內存

TraceView 關注:方法的運行時間

需要開發加debug代碼,android.os.Debug.startMethodTracing();和android.os.Debug.stopMethodTracing();

在/sdcard目錄中生成trace文件

http://blog.csdn.net/guchuanhang/article/details/51181716

Systrace 關注:方法以及系統方法占用的cpu時間

http://blog.csdn.net/hfreeman2008/article/details/53538155

兩個概念

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線程中做輕微耗時操作,導致UI線程卡頓;

2.布局Layout過于復雜,無法在16ms內完成渲染;

3.同一時間動畫執行的次數過多,導致CPU或GPU負載過重;

4.View過度繪制,導致某些像素在同一幀時間內被繪制多次,從而使CPU或GPU負載過重;

5.View頻繁的觸發measure、layout,導致measure、layout累計耗時過多及整個View頻繁的重新渲染;

6.內存頻繁觸發GC過多(同一幀中頻繁創建內存),導致暫時阻塞渲染操作;

7.冗余資源及邏輯等導致加載和執行緩慢;

8.臭名昭著的ANR

8. 調試命令

8.1 am

am全稱activity manager,使用am可以模擬各種系統的行為,例如去啟動一個activity,強制停止進程,發送廣播進程,修改設備屏幕屬性等等。

例子 應用啟動時間

adb shell am start -S -W [packageName]/[activiytName]

com.android.calculator2/.Calculator

8.2 pm

pm全稱package manager,你能使用pm命令去模擬android行為或者查詢設備上的應用等。

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自帶的自動化測試工具

核心:點擊像素坐標的方式進行模擬用戶操作

腳本語言:jython

10.2 monkeyrunner的作用

Monkeyruner腳本可以支持安裝卸載應用、進入任一模塊、點坐標事件、按鍵事件、編輯文本、循環測試、截圖對比(缺陷)等操作

通過HierarchyViewer識別頁面元素Id,但是速度太慢

11. monkey

11.1 什么是monkey??????????

Money就是一組隨機事件流

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 用來做UI測試。

路徑 sdk\platforms\android-24

(2)SDK目錄\tools\uiautomatorviewer.bat,一個圖形界面工具來掃描和分析應用的UI控件,使用其抓取頁面元素

SDK目錄\ platforms\android-17\ uiautomator.jar,一個測試的Java庫,包含了創建UI測試的各種API和執行自動化測試的引擎。

(3)在Android API Level18及其以上的版本增加了一個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. 自動化測試

13.1 相關文章(概念,框架演示模式,效率提升方案)

概念
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 概念

自動化測試是把以人為驅動的測試行為轉化為機器執行的一種過程。通常,在設計了測試用例并通過評審之后,由測試人員根據測試用例中描述的規程一步步執行測試,得到實際結果與期望結果的比較。在此過程中,為了節省人力、時間或硬件資源,提高測試效率,便引入了自動化測試的概念。

13.3 本質

編程測試,即 編寫一個程序測試另一個程序

13.4 過程

錄制腳本>修改錄制腳本>回放腳本>查看報告。

13.5 UI自動化測試的前提條件?

(1)軟件需求變動不頻繁;
(2)項目周期足夠長;(一般回歸6次,自動化測試與手工測試成本相當)
(3)UI變動小

13.6 不適合做UI自動化測試的軟件產品

游戲類
軟件的UI動態生成的內容較多;
軟件用戶交互性功能多;
注重UI體驗的校驗。

13.7 最佳實踐場景

回歸測試
多場景(測試點)的隨機組合測試 ? A B C D

14. Appium

14.1 Appium概念

Appium 是一個開源、跨平臺的自動化測試工具,用于測試原生和輕量移動應用,支持 iOS, Android 和 FirefoxOS 平臺。Appium 驅動蘋果的 UIAutomation 庫和 Android 的 UiAutomator 框架,使用 Selenium 的 WebDriver JSON 協議。

官網:http://appium.io/

Github https://github.com/appium/appium

14.2 特性

(1)跨平臺, native/ hybrid/ webview(H5)?

(2)跨設備, android/iOS?

(3)跨app,可以在多個app之間交互

(4)不依賴APP開源代碼

(5)支持Selenium WebDriver / Selenium Grid?

(6)跨語言, java/python/ruby

(7)Open Source?

14.3 Appium是由nodejs的express框架寫的 Http Server

Appium不是它??創建?套新的測試框架,是將現有的優秀的框架進行了集成,以Selenium WebDriver的協議(JsonWireProtocol/Restful web service)統?起來. 使得這個框架滿?多??的需求。

Appium啟動自動化測試后,在被測設備上啟動?個server,監聽來? Appium server的指令。不同的平臺(如IOS,Android)采?不同的運?和交換?式。Appium將某個樁程序“侵入”平臺,用于接受指令,來完成測試腳本的運行。

在Android端,appium基于WebDriver,并利用Bootstrap.js,最后通過調?用UiAutomator(\Sdk\platforms\android-30)的命令,實現App的自動化測試。另外由于UiAutomator對H5的支持有限,appium引入了chromedriver來實現基于H5的自動化。

14.4 Appium 環境搭建

https://blog.csdn.net/liwenxiang629/article/details/117015669?

14.5 查找頁面元素,與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 超控頁面元素

driver.findElementById("com.worktile:id/btn_login").click(); //通過控件id點擊元素

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);//設置位置信息

driver.getBatteryInfo() //獲取電池信息

http://appium.io/docs/en/about-appium/api/

http://appium.io/docs/en/writing-running-appium/caps/

14.7 xpath

(1)Web 元素識別,利用瀏覽器developer tool
xpath詳解 starts-with 和contains方法
http://www.w3school.com.cn/xpath/index.asp ?重點函數章節
基礎知識點如下?


(2)xpath=.//*[contains(text(),'請輸入用戶名')] 獲取頁面中的文字

14.8 Appium實戰

什么值得買

1.首頁的Tab頁面切換

2.個人頁面設置性別

查看apk的 AndroidManifest.xml

java -jar apktool.jar d yourapk

apktool.jar 是apk的反編譯軟件,下載地址

https://bitbucket.org/iBotPeaches/apktool/downloads/

啟動activity

<action android:name="android.intent.action.MAIN"/>

<category android:name="android.intent.category.LAUNCHER"/>

包信息 package=

14.9?簡單的架構

(1)PO設計模式:Page Object直譯就是頁面對象,也就是把界面定位和業務操作分開。

(2)ObjectStore:用來存放自動化測試中所需要操控的UI對象(變量類型為:public static final String )例如定義public static final Login_Button=””;表示登陸按鈕的UI string路徑。項目需要統一變量的命名規范,確保項目成員看到定義的變量名稱就能夠了解其對應的頁面UI元素是什么。
parseObject的應用,考慮如何設計

(3)businesslib:把常用的場景寫成方法,便于用例設計人員復用。

(4)利用junit框架中執行完成后導出的xml日志,點擊下圖中的Export

14.10?自動化用例設計

(1)場景設計,一個testcase中包括一個完整的流程,流程中包括若干個點(各個點之間有前后關聯),每個點都用斷言校驗。

(2)測試點的設計,各個測試點之間沒有任何聯系,一個testcase中只有一個測試點。

(3)注意單元測試中的setup和teardown

(4)Junit中順序執行用例,用例順序排序 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 {

}
?? ?補:
Junit3
Junit4
TestNg?
Junit5

15. 測試全棧工具

15.1 UI自動化工具和接口自動化測試工具

?

15.2 單元測試工具

15.3 性能測試工具
?

15.4 安全測試工具

【知識點補充1】

(1)功能測試(基于場景的測試:正常+異常場景)、性能測試、安全測試的思路、適配測試、易用性測試

(2)移動端測試

終端(各種設備+手表)+手機(ios +android),ios的測試,直接使用mac本(既可以做android開發又可以做ios開發),不要在windows上搭建mac的虛擬機

android (apk+微信類(小程序+公眾號)+android瀏覽器)

apk 類測試(重點)

android瀏覽器的測試等價于web瀏覽器,主要差別是UI(屏幕大小)

我們的測試是基于android 應用的測試,如果有機會進入小米、oppo,vivo,華為? (自身的系統+自帶應用)

移動設備的核心是,根據用戶設備屏幕的大小來設計自身的ui

(3)做app 功能的時候,大家可以參考競品(我們的功能跟競品的功能一定是大于等于的關系,要特別關注易用性測試)

這兩次課程開發內容少一些,我會根據進度引入一些android 自動化測試的東西

(4)docker stats container id???? 監控單個容器的性能

物理機 ,里面有十個docker ,通常的監控方式,都是對整個物理機的監控

1.docker stats id > 輸出到某個文件(產生數據),文件的產生格式,與stats? 的參數有關系

2.我們通過代碼(python 也可以是java,找到對應的模塊即可),對數據進行解析,并生成圖片并保存

3.在需要使用圖形界面的地方調用步驟2中生成的圖片即可

(5)做android 測試最重要的兩個技術點:1.adb 2.logcat 看日志

(6)android studio 是android 應用的開發ide,他是idea(android開發插件)+android sdk(android 開發的jar包,以及一系列工具)

把下面兩個路徑加到環境變量中

C:\Users\kevin\AppData\Local\Android\Sdk\platform-tools

C:\Users\kevin\AppData\Local\Android\Sdk\tools???

(7)android 系統以及開發的基礎知識

(8)java 代碼被編譯成dex 字節碼,在虛擬機中運行,原因是性能考慮,dex字節碼性能更高

(9)android各個版本的新功能以及api的變化可以查看

https://developer.android.google.cn/about/versions/

adroid 逐漸變得穩定完善是從4.4開始的

(10)每一個應用的啟動本質上是啟動了一個進程,有好多應用會有多個進程

我們的一個ui頁面就是一個activity,activity 本質就是類

各種狀態,就是對應了某個方法,然后我們呢需要重寫某個方法

當activiy被打擾的時候,無論進入onpause 或者onstop的狀態,都會進入到方法onpause 或者onstop ,在方法里會對當前的數據和context進行保存

結束被打擾,進入到onreusume狀態,即進入到onreusume方法,在方法里對你保存的數據和context 進行恢復,確保在running狀態時繼續正確運行

每一個activity 都會對應一個同名的xml 資源配置文件 res\layout

webview 是activity的一個資源組件,在里面可以顯示web相關內容

在配置文件中

activity? 中這個標簽代表著啟動類

?<category android:name="android.intent.category.LAUNCHER" />

在android開發中沒有 main方法,先運行哪個activity就是通過android.intent.category.LAUNCHER

contentprovider 提供接口,讓其他應用訪問內容(訪問是有權限控制的)

(12)看xml

看資源和AndroidManifest.xml

java -jar apktool.jar d wt-android-3.18.0.apk

(13)android app >接口調用 >webview(展示網頁)>調用到后端的服務

(14)通過PC 端chrome可以調試你的webview中的元素,但是前提是代碼中把調試開關打開!!!!

(15)瀏覽器是一個應用程序,而瀏覽器引擎是瀏覽器的核心,他負責處理js,做頁面對象的展示

(16)web 功能點設計,就是一句話。安卓app的測試用例,更重要的作用是列出要測試的點,怕遺漏了。而不側重每個用例的詳細步驟的描述。

比如:

用例:微信發送文字消息

具體操作:

正常長度文字

常超文字

文字帶表情

文字中有特殊符合

文字有代碼(安全性)

(17)app 核心功能點的使用,從主頁面點擊不超過三下,就能夠使用

(18)處理數據

cpu>內存>磁盤

第一次,磁盤讀取,到內存,cpu從內存讀取數據

第二次,先判斷要讀取的數據是否在內存中,如果在則直接從內存讀取,如果不在重復第一步

作為一個擴展!

處理數據

cpu>內存>磁盤 等價于

請求數據>緩存服務器(redis)>數據庫

手機>手機數據>服務器數據

比如:

雙十一來了

周期變長,1-11(周期變長:減少同一時間,并發量過大)

提前加入購物車(把商品加入到緩存服務器了),即使緩存服務器數據丟失,也無所謂,如果丟失在查庫!!!!!

請求于請求之間,間隔10ms,壓力都會有顯著改善

(19)手機>手機數據>服務器數據

從手機中讀取數據,

第一可以減少服務器的壓

第二沒有網絡的時候,應用也有數據展示

第三 要確認數據在手機中的緩存時間

注意:緩存雖好,但不是萬能的方法,例如實時性強的軟件就沒有緩存機制,航班、鐵路、股票

打車軟件,個人覺得沒有必要試時,三十秒左右的緩存都可以

緩存是android 應用中特別特別重要的技術

(20)適配測試

簡言之,就是應用在不同設備中的表現

華為????? 小米???????? oppo??? vivo

11???????? 10?????????? 12???????? 9

分辨率1? 分辨率2? 分辨率3? 分辨率4

屏幕1???? 屏幕2???? 屏幕3???? 屏幕4

通常,各個品牌主流手機 都至少有一部(真機)

各個大廠都有云測平臺,原因是什么?

各個大廠功能相差不多,比較價格!!!!!

個人非常推薦云真機的租賃,可以驗證個別機型上是否純在某些問題

(21)android 應用的性能測試,是不關注并發的,所謂的并發 是對服務器的壓力!!!!!!!

對于android 應用來講,性能主要的關注點:

應用對手機的cpu、應用的內存占用、耗電量、流暢度(卡頓)、移動網絡時流量的消耗

apk

瀏覽器

微信小程序????? >發送請求到服務器(而對于服務器來講,我不關注你是什么設備發來的,服務器都是處理連接)

公眾號

終端

(22)服務器的入口程序,會把不同的終端請求進行解析,然后返回不同的資源文件

(23)adb 是連接我們手機和電腦的一個窗口

adb shell 可以進入手機的內核

通過 top命令持續監控 應用 top |grep 你的應用名稱

adb shell am start -S -W [packageName]/[activiytName]

LaunchState:啟動模式,上訴啟動模式為冷啟動

WaitTime:系統啟動應用耗時= TotalTime +系統資源啟動時間(單位 ms )

TotalTime:應用自身啟動耗時=該 Activity 啟動時間+應用 application 等資源啟動時間(單位 ms )

過渡繪制

GPU分析

都是在手機的開發者選項里有

啟動時間

看cpu 內存 網絡 top(perfdog更加直接,但是現在收費)

耗電量,直接用系統自帶的apk 查看耗電量即可

【知識點補充2】

(1)在測試的時候,一定要考慮角色權限,不同的角色,只擁有該角色的權限!!!!!!
比如說,一個普通用戶,不能使用管理員的功能權限;
一個管理員不可以隨意的看普通用戶的消息(查看規則是?)

(2)場景 大家可以理解為,一系列功能點的集合(組合)

(3)談測試:功能\性能\安全\易用性\適配 ?最后可以談談核心場景的測試

(4)sdk 中最重要的工具就是
adb
adb shell 進入手機
logcat
dumpsys

(5)代碼混淆,使得類名 方法名 變量名無法猜測,但是仍然能看到源碼,如果源碼也不想暴露,那么就需要用到加殼方案了(收費方案)

(6)如果公司不接受,把apk 上傳到第三方平臺進行掃描(騰訊金剛),那么就需要掌握drozer等工具的使用。

(7)啟動 android studio ?>Tool> AVD Manager(創建虛擬機) 和SDK Manager(管理sdk)

(8)monkeyrunner 最早進行android 自動化測試的工具
Monkeyruner腳本可以支持安裝卸載應用、進入任一模塊、點坐標事件、按鍵事件、編輯文本、循環測試、截圖對比(缺陷)等操作
該工具是,云測中,最基礎的自動化測試核心工具,他只能針對頁面的坐標進行模擬!!!!!

(9)monkey 發送隨機事件流,對于普通應用來講,意義不是很大,個人覺得最有用的場景就是 對于游戲的隨機點擊測試!

(10)Sdk\platforms\android-30 ?
android.jar 就是開發android 應用的api
uiautomator.jar ?就是做ui自動化測試的api

(11)monkeyrunner>robotium 最早>appium(android自動化測試中,就是調用了uiautomator中的api來操控頁面中的ui元素)

(12)以web自動化測試的實例,來了解android自動化
web 的主流工具是selenium 3,規范了一套webdriver協議,這個協議是http
ui 自動化主要的技術是識別到頁面的元素,識別到元素后,對元素進行一系列的處理,包括點擊、寫入、選擇、(移動app中的ui元素 還會加入一系列的手勢操作)
一搬來講,ui自動化測試都會有一款工具,能夠錄制我們對于ui元素的操作!

(13)katalon recorder ?是一款web錄制工具,他支持firefox和chrome,是二者瀏覽器的一個插件
以web 為例,我們在使用錄制工具的時候,操控頁面中的元素,錄制工具會對其進行識別(id,class,xpath,css)
任何一個web 元素都有一個唯一的xpath 或者css用來進行識別
id =su
//*[@id="su"]
#su
如果一個web 頁面中的元素,沒有id class 這些屬性,那么要想對其進行識別,只能使用xpath (移動端自動化測試,很多都是用xpath進行定位的)或者css
頁面中的元素,并不是只有一種識別方式,只要識別方式具有唯一性就可以!!!!!!!!
自動化測試錄制工具,第一步,就是對頁面中的元素進行查找(唯一性的)

(14)通常錄制的代碼時不穩定的,要想使得錄制的代碼穩定就需要對其進行腳本化處理,生成對應的腳本
把腳本引入到ide中,引入腳本所需要的jar包,進行自動化代碼的開發

(15)自動化測試前提條件是設計好用例
第一步,識別頁面中的元素(有的工具可以通過錄制的形式,識別到頁面中的元素;如果工具不提供那么需要自己手動實現)
使用appium也就是uiautomator 時候,我們可以通過\Sdk\tools\bin\下的uiautomatorviewer.bat 對頁面中的元素進行識別

(16)步驟自動化+結果校驗的自動化=自動化測試

(17)新功能的測試,不適合做自動化測試;自動化測試特別適合回歸測試

自動化測試依賴于頁面ui元素的屬性,所以如果ui不穩定,那么自動化測試是不適合的

自動化測試是腳本,腳本就會有bug,我們自動化測試的目的是發現產品的bug,但是很多情況下是因為自動化測試腳本執行的失敗而影響了測試結果!!!!
自動化測試若想有效開展,本質還是測試人員編寫的測試代碼要健壯!!!!
測試代碼不健壯的原因:
1測試人員代碼能力不足
2沒有人對測試人員編寫的代碼進行測試

互聯網產品不太適合做自動化測試,因為ui變化快,功能更新快;企業級軟件適合做自動化測試jira、禪道、ehr就非常的適合做自動化測試了

移動互聯網產品適合做自動化測試的少,但是也建議大家去寫自動化測試腳本,原因是能夠提升代碼水平

(18)腳本用例的并行
一個用例 有 12345,我們可以順序跑12345,也可以多線程分別跑 12345

(19)appium
自動化測試的核心是操控頁面中的元素,而appium并未編寫關于超控頁面ui元素的api

(20)applium/selenium
!!!ide (代碼java、python、ruby)>代碼會被轉化成webdriver協議>服務端來解析這個協議(appiumserver\各個瀏覽器的driver)

(21)driver.findElement(By.id("kw")).click();
driver.find_element_by_id("kw").click() ? 都會轉化成協議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代表本機,可以指定appiumserver的ip,如果代碼跟appium server 不在一臺機器上,那么在代碼中設置如下:
driver = new AndroidDriver(new URL("http://remoteip:port/wd/hub"), capabilities);

By.xpath("//*[@text='主頁']") ?表示在當前頁面中找"主頁"元素

在android 里常用的api 也就是 click sendkeys

(22)在做appium測試時,我們要從androidmanifest 中獲得兩個信息, 第一個就是package名,第二個就是啟動的activity信息

(23)po模式 ? 把頁面中的ui元素,賦值給變量,然后再腳本中調用這些變量即可,好處有兩點
1.一旦頁面中元素的屬性發生了變化,我們只需要修改變量的賦值,而無需更改變量了!!!
2.我們可以通過變量的命名規則來很清晰的定義我們再頁面中超控的元素是什么


(24)總結:
android 測試方法 功能 性能 安全 適配 易用性
工具 sdk ? adb logcat dumpsys ? ??
GPU呈現模式分析(重要)
過渡繪制
fiddler 接口的抓包
appium(monkey、monkeyrunner)
自動化測試的原理,適合自動化測試的項目和不適合自動化測試的項目

總結

以上是生活随笔為你收集整理的Android测试点和测试工具介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。