# app測試篇
[TOC]
> ### app測試與web測試的區別
1. 系統架構:web端系統,更新服務器,不需要更新客戶端;APP如果更新了服務端,客戶端也要更新并測試;
2. 兼容性。Web端要考慮不同的瀏覽器內核進行測試(IE、chrome、Firefox),APP的兼容性要考慮選擇主流的機型,不同的分辨率、尺寸, 以及不同的操作系統;
3. App要考慮交叉事件測試,安裝,卸載,前后臺切換測試;
4. App還要考慮界面操作,如:橫豎屏切換,多點觸控,事件觸發區域。
> ### APP的兼容性怎么測試,測了哪些機型?哪些版本?那又怎么測Android的兼容性、怎么測手機的兼容
> ### app測試點有哪些?
功能,兼容性,用戶體驗,安全性,安裝卸載升級測試,交叉事件,UI測試,性能測試。
> ### app項目做了多久
一直在做,現在app的主體需求已經完成了,后期都是一些零零散散的需求,測試工作量比較少。
> ### 你測了app哪些模塊
所有功能都測
> ### App的性能測試怎么做的
App的性能分為服務器端的性能和手機端的性能。
服務器端的性能,我們用Jmeter工具進行測試的,和web的端性能測試方法一樣的。
我們是用monkey做手機端App的穩定性測試的,使用monkey跑10萬次,看它會不會出問題,如果出了問題,我們再定位原因,具體的做法是這樣的:
1. 在跑monkey前,先使用`adb logcat -c`清空手機的logcat日志
2. 接下來,使用`adb logcat -v time`獲取logcat日志并導入本地文件
3. 使用monkey運行被測應用:`adb shell monkey -p 包名 -v 10萬次`并將執行結果導入到本地
4. 測試完成后查看monkey日志,如果說它跑的次數跟我設的次數不一樣.就說明monkey中途跑失敗了。那我就要去看看monkey日志中有沒有crash或者anr的關鍵字,如果有還需定位到是什么原因導致的anr或者crash的問題。并且將相關日志和logcat日志與進程號提交給開發定位,如果是anr的問題,還需要從安卓中獲取/data/anr/traces.txt文件提交給開發定位。
> ### adb命令有哪些?
> ### 你這個app測試人員有幾個?怎么分工?
2個。按測試的手機類型分工,每個人負責幾種測試機型,每個人都要測試app的所有測試點。
> ### 你做APP用過monkey,能具體講一下嗎?
我們是用monkey對APP進行穩定性進行測試。
一般我們會用到命令 adb shell monkey -p 包名 -v 次數,我們項目每次測試都跑10萬次。
> ### 那如果monkey測試過程中,出現crash你怎么定位?
參考答案:crash一般是空指針導致的,在monkey日志中輸入“crash”搜索到相關的日志,然后把日志給開發定位。
> ### 那問題開發修復了你怎么驗證?(意思就是,monkey怎樣做回歸測試)
參考答案:我們會進行回歸測試,會按照之前的軌跡(seed)去跑monkey,命令是:adb shell monkey -p 包名 -s seed值 -v 次數
> ### 面試官:看你寫有用MONKEY做APP測試,怎么做的?如果有問題的話怎么定位?
我:我們是使用monkey來做穩定性測試的,
1. 在跑monkey前,先使用`adb logcat -c`清空手機的logcat日志
2. 接下來,使用`adb logcat -v time`獲取logcat日志并導入本地文件
3. 使用monkey運行被測應用:`adb shell monkey -p 包名 -v 10萬次`并將執行結果導入到本地
4. 測試完成后查看monkey日志,如果說它跑的次數跟我設的次數不一樣.就說明monkey中途跑失敗了。那我就要去看看monkey日志中有沒有crash或者anr的關鍵字,如果有還需定位到是什么原因導致的anr或者crash的問題。并且將相關日志和logcat日志與進程號提交給開發定位,如果是anr的問題,還需要從安卓中獲取/data/anr/traces.txt文件提交給開發定位。
* * *
> ### APP出現ANR的原因:
1. 線程阻塞的
2. 內存不足
3. CPU滿負荷(由于現在的手機基本都是8核CPU,所以基本不會出現CPU滿負荷的情況)
> ### APP出現CRASH的原因:
1. 空值指針
2. 數組越界
3. 內存不足
4. CPU滿負荷(由于現在的手機基本都是8核CPU,所以基本不會出現CPU滿負荷的情況)
> ### appium自動化環境是怎么搭建的呢?
參考答案:這個環境搭建起來,稍微復雜些,我自己總結了個文檔,網上都找不到的。把這個環境搭建起來,最好先把selenium自動化環境搭建起來,然后安裝JDK,配置環境變量,接下來安裝nodejs,安裝appium,安裝SDK,配置好ANDROIR\_HOME環境變量就可以了。
> ### appium你是用什么工具定位元素的?
參考答案:可以用uiautomatorviewer,但是這個工具不穩定,經常報錯;我一般都用appium自帶的inspector來定位。
> ### app自動化,你會用什么方式來定位元素?
參考答案:appium定位方式有id,classname,xpath,還有find\_element\_by\_android\_uiautomator,根據實際情況來靈活運用。
> ### H5元素怎么定位?
參考答案:要切換上下文,這個和selenium自動化里面的切換表單有點相似。首先,我們要查出H5頁面的context名稱,再用switch\_to.context()方法切換過去,接下來,就可以進行正常的操作了。
> ### web自動化和app自動化有什么區別?
測試的思路都是一樣的,要用到元素定位,unittest框架這些,app自動化定位可以用appium的Inspector來定位。
> ### 如何判斷客戶端還是后臺的問題
* 一、客戶端問題
1. 文字,圖片有誤;
2. 無法輸入,按鈕不可用;
3. 抓包信息顯示客戶端發送的信息有誤。
* 二、服務器端問題
1. 通過抓包檢查服務器返回的信息,如果信息有誤,就可以斷定是服務器的問題;
2. 客戶端向服務器發送信息后,服務器無響應。
> ### 問:你怎么做app測試的?
測試前,先熟悉app的原型圖和業務需求,確定測試點,開發做完接口之后,先做接口測試,App開發好后,先做一個冒煙測試,看看軟件的基本功能是否可用,如果正常,我們再做功能測試,UI測試,兼容性測試,交叉事件測試,安裝卸載測試等。
如果面試官問具體某個測試類型怎么,就要舉例子加以說明。
比如:
UI測試:檢查app的UI是否和原型圖一致。
功能測試:xxxx
兼容性測試:xxxx
用戶體驗測試:xxxx
(補上app的8大測試點,并舉例子說明)
> ### Appium的工作原理是什么?
> ### 為什么要限速/模擬弱網?
主要是為了模擬app端(也包括pc端)在低網絡速度的情況,是否有bug,對用戶體驗是否有影響
> ### appium如何遠程調用其他機器?
參考答案:在上個項目中,一般我們只使用一臺機器去跑appium腳本。
涉及到多臺機器調用用的少一些,不過我自己業余時間有學過,大概說一下我的思路。
比如:A要使用B的服務為例:
1. 首先,修改B的服務主機 ip
2. 將A機器要執行的腳本中的ip替換為B的服務ip
3. 將測試機插到遠程機B上
4. 在機器A上執行腳本,就可以調用遠程機
> ### appium遇到系統彈窗是怎么處理的?
和selenium方法一樣的。使用switch\_to.alert.accept()來接收彈窗,如果是拒絕就是switch\_to.alert.dismiss()
> ### appium遇到有電話或者短信怎么處理?
這種情況一般會導致定位不到相關元素,我們就可以直接用try....except去捕捉異常處理,寫一些處理邏輯,比如設置等待或者停止運行等。
- 總章
- Oracle數據庫
- 常見的Linux命令
- 理論內容整理
- 給你如下功能怎么測試
- 支付怎么測試
- 購物車怎么測試?
- 搜索功能怎么測試?
- 文件上傳功能怎么測試?
- 登錄功能怎么測試?
- 還款功能怎么測試?
- 訂單功能怎么測試?
- 自動化測試篇
- 必記代碼
- 接口測試篇
- 性能測試篇
- app測試篇
- 面試篇
- 項目篇
- 職業素養篇
- 真實案列分析
- 如何預防冷場
- redis
- 琪琪
- 禪道搭建手冊
- 禪道搭建手冊1
- 禪道的基本使用
- 基于Python3_Selenium的自動化
- Python3安裝
- Python3基礎
- 列表_元組_集合
- 函數_模塊_類
- Python代碼
- selenium環境
- selenium定位方式
- Selenium常見操作
- toast讀取代碼
- 添加用戶代碼
- 隱式等待與顯式等待
- 循環添加用戶
- 測試用例練習
- 測試用例優化
- Fiddler抓包工具
- 安裝
- Fiddler使用
- 接口測試
- Jmeter的安裝
- Jmeter使用
- jmeter+ant+jenkins接口自動化測試框架
- 接口安全測試
- 性能測試
- Nmon監控LInux系統
- Jmeter分布式
- 性能測試-具體案例
- Monkey
- 安裝1
- Monkey使用
- appium自動化
- appium的安裝
- appium基本使用
- 真機USB連接
- 問題排查
- Jenkins持續集成
- Jenkins安裝
- Jenkins配置任務
- Python擴展內容
- Python連接數據庫
- Python進行接口測試
- 開啟服務