以后我把各崗位的題目更新個遍,當然大部分都是我自己總結的保證質量哈
ADB工作原理
- 當用戶啟動一個adb客戶端,客戶端首先確認是否已有一個adb服務進程在運行。如果沒有,則啟動服務進程。當服務器運行, adb服務器就會綁定本地的TCP端口5037并監聽adb客戶端發來的命令,所有的adb客戶端都是用端口 5037與adb服務器進行對話的。
- 接著服務器將所有運行中的模擬器或設備實例建立連接。它通過掃描所有5555到5585范圍內的奇數端口來定位所有的模擬器或設備。一旦服務器找到了adb守護程序,它將建立一個到該端口的連接。請注意任何設備和模擬器實例會取得兩個連接的端口,一個偶數端口用來控制與控制臺的連接,和一個奇數端口用來控制與adb連接。
?
ADB 的使用
-
- 顯示當前運行的虛擬設備:adb devices
- 查看adb所支持的所有命令:adb –help
- 查看adb的版本序列號:adb version?????
- 進入模擬器的shell模式:adb shell
?
- 如何重啟 adb服務
關閉server:adb kill-server
重啟server:adb start-server
- APP的安裝與卸載
在模擬器安裝軟件:adb install –r? *.apk
在模擬器卸載軟件:adb uninstall ?包名
?
adb install? –r? *.apk
-
- 只連接一個設備
- adb install 安裝包路徑
- 連接多個設備,需要指定一個設備
- adb? –s 設備序列號 install 安裝包路徑
- 覆蓋安裝,保留數據
- adb? –s 設備序列號 install? -r 安裝包路徑
例:adb -s 192.168.56.101:5555? install? - r? E:/test.apk
?
- 如何在電腦與手機之間傳輸數據?
- 向模擬器中傳輸文件:adb push
例如:adb push D:\demo\meituan.apk? /data/local/meituan.apk
-
- 從模擬器中獲取文件:adb pull
例如: adb pull /data/local/meituan.apk D:\
- 如何靜默安裝APP
adb push D:\demo\meituan.apk? /data/local/meituan.apk
adb shell pm? install –f? /data/local/meituan.apk
?
- 如何使用adb啟動停止一個app?
adb shell am start –W –S package/activity
adb shell am force-stop package
- 如何獲取CPU、內存狀態
adb shell? dumpsys meminfo? packagename
adb shell? dumpsys cpuinfo |findstr ?packagename
?
?
?
?
App開發方式有三種
Native App 、Web App、Hybird App
?
?
monkey
- monkeyt進行壓力測試的命令?
?
adb shell? monkey –p? < packagename >? <count>
- 如何重現Crash/ANR過程?
添加參數 –s? seed
?
3、請對下列monkey命令進行解釋(需要解釋各參數的含義)。
adb? shell monkey -p com.example.think.helloworld --pct-touch ?20 --pct-motion? 30 --throttle? 300 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes? -v -v? -v 1000 > D:/monkey2.log
參考答案
?
- -p com.example.think.helloworld 1000對這個包com.example.think.helloworld進行穩定性測試,發送1000次隨機事件
- --pct-touch ?20 ?其中設定觸屏的事件占比為20%
- --pct-motion? 30滑動事件占30%
- --throttle? 300每次間隔事件為300毫秒
- --ignore-crashes Monkey會執行完所有的事件,不會因crash而停止
- --ignore-timeouts 忽略超時
- --ignore-security-exceptions忽略安全異常
- --ignore-native-crashes忽略本地異常
- --monitor-native-crashes監視系統中本地代碼發生的崩潰
- -v -v? -v ?日志詳細等級,3個v代表最詳細等級的日志
- D:/monkey2.log D:/monkey2.log:代表將產生的日志,放到本地PC的D盤,并命名為:monkey2.log
?
客戶端性能測試需要關注哪些方面?
CPU,內存,流量、電量以及客戶端在不同網絡環境下響應速度等等。
如何使用Fiddler抓取HTTPS包
Fiddler https相關設置
在瀏覽器中安裝證書
APP兼容性測試需要考慮哪些因素?
- 系統版本(android&ios平臺,不同版本)
- 分辨率(小屏、大屏、全屏)
- 手機品牌(華為、小米OPPO、VIVO等)
WAP 頁面兼容性測試有哪些因素?
- 不同平臺的不同瀏覽器(safari、chrome等)
- 分辨率(小屏、大屏、全屏)
- 轉發到QQ、微信、微博等第三方平臺
?
調試App相關的bug常用哪些工具?
- 網絡相關工具,fiddle、wareshark、charles
- adb、am、logcat等
- 云平臺,bug復現
?
調試Web頁面常用哪些工具?
- Chrome調試工具,可設置移動APP UA
- WEINRE (WEb INspector REmote)
服務器端壓力測試工具有哪些?
LoadRunner
JMeter
自主研發的工具
服務器端壓力測試需要監控哪些指標?
CPU
內存(虛擬內容、實際內存)
QPS、平均響應時間
?
?
?
簡述開展服務器端壓力測試的步驟
?
- 搭建服務端模塊,啟動服務
- 實施大量并發的測試場景
- 監控進程相關指標、內存、CPU
- 監控模塊的執行情況,QPS、平均響應時間
- 收集數據并進行分析,生成曲線圖
- 根據分析結果,得出測試結論
簡述什么是持續性集成
- 持續集成是指開發階段,對項目進行持續性
- 自動化編譯、測試,以達到控制代碼質量的手段
- 持續集成是一種軟件開發實踐
?
持續集成都包含哪些內容?
- 開發人員、版本控制
- CI服務器、構建腳本
- 反饋機制、集成構建
持續集成的意義有哪些?
- 減少風險、減少重復過程
- 任何時間、任何地點生成可部署的軟件
- 增加項目可見性、建立團隊對產品的信心
android的四大組件是什么?并對android的四大組件的功能進行描述。
?
1)Activity,Service,BroadcastReceiver,ContentProvider
2)Activity是會顯示視圖控制組件的用戶接口,并對事件作出響應, Activity是Android應用程序的最基本的組件。Android應用程序中一個單獨的屏幕通常就是一個Activity。
Service是具有一個較長生命周期且沒有用戶界面的程序,只能在后臺運行,可以和其他組件進行交互。
BroadcastReceiver用戶用來接收應用或系統中的廣播,并作出響應。
?
Content Provider使一個應用程序的指定數據集提供給其他應用程序。其他應用可以通過ContentResolver類從該內容提供者中獲取或存入數據。
?
?
騰訊的GT是什么工具?
參考答案
GT(隨身調)是APP的隨身調測平臺,它是直接運行在手機上的“集成調測環境”(。利用GT,僅憑一部手機,無需連接電腦,您即可對APP進行快速的性能測試(CPU、內存、流量、電量、幀率/流暢度等等)。
請列舉出交互性測試的測試要點
- 客戶端作為手機特性測試,包含被打擾的情況,來電,來短信,低電量測試等
- 使用應用時對來電的處理
- 使用應用時對短信息的處理
- 使用應用時鬧鈴響起
- 使用應用時鎖屏、解鎖
- 待機、插拔數據線、耳機不會影響客戶端
請列舉出Android的功能測試點
答出任意五點
- 安裝\卸載(本機+第三方)
App具體功能點 - 聯網(默認的聯網方式是什么?Wifi or Sim卡?網絡切換是否有相應的提示說明?)
- 程序進入輸入功能時,是否正常彈出鍵盤;鍵盤是否遮擋了應用需要輸入內容的對話框
- app切換測試(最小化、多個app切換, home和程序間多次切換 )
- 關機、待機后app能否正常使用
返回上一級操作,退出程序后的提示 - 當離開測試應用一段時間后,在回到測試應用時不能丟失用戶數據
衡屏豎屏切換時不能丟失用戶數據 - 長按某一按鈕是否會觸發其他事件
- 注意PC端和APP的數據同步(比如某作者在PC端設置了禁止他人評論,那么在APP上也應該禁止)
- 如果在APP中內嵌了些超鏈接后,程序如何處理。如果調用設備的瀏覽器,能否正常切回到APP
- 各個頁面間多次切換
- 權限的限制(拍照、語音、藍牙)
- 互動分享:如果程序里面包括分享功能,那么檢測點擊分享的時候是否會正常給出分享提示,點擊分享后所填寫的分享內容是否正確
- 長時間開機且開app,看是否會出現異常情況
Android應用程序結構是什么?
參考答案:Linux Kernel(Linux內核)、Libraries(系統運行庫或者是c/c++核心庫)、Application? Framework(開發框架包)、Applications(核心應用程序)
?
?
請對Appium進行簡要的介紹。
Appium是一個開源、跨平臺的測試框架,可以用來測試原生,移動Web及混合的移動端應用,支持ios,android平臺的測試。
Appium使用WebDriver的json wire協議,來驅動Apple系統的UIAutomation庫, Android 系統的UIAutomator框架。
PO框架設計思路,需要包含哪些包,實現哪些功能。
base里面有個BaseTest.java,這個類的主要作用是啟動和關閉APP的作用
pages存放頁面元素類,每一個java類,都是一個頁面,存放的都是對應頁面的所有元素及操作
testcases存放測試用例的地方,在這個包下,還會有很多子包,子包的個數根據測試的系統的模塊來劃分,比如有登錄模塊,首頁模塊等,那么子包的名字就應該寫成login、home
utils封裝了各種工具類,包括讀取excel,appium api封裝類,讀取數據庫類,讀取屬性文件類和生成driver的類等。
Android Service兩種啟動方式的區別
1、采用start的方式開啟服務
特點:如果服務已經開啟,不會重復的執行onCreate(), 而是會調用onStartCommand()。服務停止的時候調用?onDestory()。服務只會被停止一次。一旦服務開啟跟調用者(開啟者)就沒有任何關系了。開啟者退出了,開啟者掛了,服務還在后臺長期的運行。
開啟者不能調用服務里面的方法。
2、采用bind的方式開啟服務
?bind的方式開啟服務,綁定服務,調用者掛了,服務也會跟著掛掉。綁定者可以調用服務里面的方法。
請敘述Appium的四大設計理念
- 不需要為了自動化,而且重新編譯或修改測試app
- 不必局限于某種語言或者框架來編寫和運行測試腳本的運行
- 一個移動自動化的框架不應該在接口上重復造輪子
- 移動端自動化測試應該是開源的
?
Appium架構原理
(1)Appium服務器。Appium服務器是Appium框架的核心。它是一個基于Node.js實現的HTTP服務器。Appium服務器的主要功能是接受從Appium客戶端發起的連接,監聽從客戶端發送來的命令,將命令發送給bootstrap.jar(iOS手機為bootstrap.js)執行,并將命令的執行結果通過HTTP應答反饋給Appium客戶端。
(2)Bootstrap.jar。Bootstrap.jar是在Android手機上運行的一個應用程序,它在手機上扮演TCP服務器的角色。當Appium服務器需要運行命令時,Appium服務器會與Bootstrap.jar建立TCP通信,并把命令發送給Bootstrap.jar;Bootstrap.jar負責運行測試命令。
(3)Appium客戶端。它主要是指實現了Appium功能的WebDriver協議的客戶端Library,它負責與Appium服務器建立連接,并將測試腳本的指令發送到Appium服務器。現有的客戶端Library有多種語言的實現,包括Ruby、Python、Java、JavaScript(Node.js)、Object C、PHP和C#。Appium的測試是在這些Library的基礎上進行開發的。
啟動/關閉Service的代碼實現
?
??? public void start(View v){
??????? Intent intent =new Intent(this,MyService.class);
??????? startService(intent);
??? }
?
??? public void stop(View v){
??????? Intent intent =new Intent(this,MyService.class);
??????? stopService(intent);
?
}
請列舉出交互性測試的測試要點。
客戶端作為手機特性測試,包含被打擾的情況,來電,來短信,低電量測試等
-
- 使用應用時對來電的處理
- 使用應用時對短信息的處理
- 使用應用時鬧鈴響起
- 使用應用時鎖屏、解鎖
- 待機、插拔數據線、耳機不會影響客戶端
安裝、卸載測試主要針對編譯后源程序生成的APK安裝文件
1)驗證app能否正確安裝運行卸載,以及操作過程和操作前后對系統資源的占有情況
2)安裝運行卸載的提示,報告等
3)檢查安裝路徑,文件是否合理,組件是否正確注冊等
- 驗證數字簽名
- 升級后可以正常使用
- 在線跨版本升級
異常測試
- 在斷網、斷電、服務器異常等情況下,客戶端能否正常處理,保證數據的正確性。
- 使用應用時斷網
- 斷網時啟動應用
- 使用應用時斷電
- 服務器異常,客戶端能否正常處理
- Client端更新時斷開了
- Client端更新時Service端掛了
業務邏輯測試點需要考慮哪些因素?
?