APP測試
定義:使用人工或自動化來測試某個程序,驗證它是否滿足規定的需求或者實際結果和預期結果的差別

一.功能性測試:
(1)根據產品需求文檔編寫測試用例
(2)軟件設計文檔編寫用例
二.兼容性適配性測試:
(1)Android、iOS版本的兼容性
(2)手機分辨率兼容性
(3)網絡的兼容性:2G/3G/4G/Wifi,弱網下、斷網時
(4)APP跨版本的兼容性
適配性測試:
(1)手機不同分標率支持:客戶端支持的分辨率等
(2)手機不同版本的支持:2.3 4.0 4.4等;在測試計划中:需要安排單獨的時間用於Android不同系統的兼容性測試,包括2.0以下版本和4.0以上等
(3)手機不同廠家系統的支持:不同廠家會有不同Android系統,例如:小米,華為,錘子對市面上主流手機的支持
(4)手機不同尺寸的支持:3.5到5.7屏幕在UI顯示有區別,要支持最大到最小。
三.性能測試:
(1)壓力測試
(2)電量流量測試
(3)CPU、內存消耗
(4)APP啟動時長
(5)Crash率
(6)內存泄露
四.網絡測試:
(1)外網測試主要現實模擬客戶使用網絡環境,檢驗客戶單程序在實際網絡環境中使用情況進行業務操作。
(2)外網測試主要覆蓋到WiFi/2G/3G/4G...net/wap、電信/移動/聯通、所有可能的組合進行測試。
原則:
(1)盡可能全面覆蓋用戶的使用場景,測試用例中需要包含不同網絡排列組合的各種可能。
(2)還有模擬信號屏蔽時候。客戶端的影響等。還有做外包場景測試,在高山、丘陵、火車上等特殊環境下進行全面測試、
五.接口性測試:
(1)client端和service端的交互
(2)client端的數據更新和service端的數據是否一致
(3)Client端更新時斷開了
(4)client端更新時和service端掛了
六.業務邏輯測試:
(1)業務邏輯測試:主要測試客戶端業務能否正常完成。
(2)功能點測試:主要測試客戶端功能點是否正常使用
(3)關聯性測試:主要測試客戶端與PC端的交互,客戶端處理完后,PC端與客戶端數據一致。
七.異常測試:
(1)交互異常性測試:客戶端作為手機特性測試,包括被打擾的情況:如來電、來短信、低電量測試等,還要注意手機端硬件上,如:待機,插拔數據線、耳機的各操作不會影響客戶端。
(2)異常性測試:主要包含了斷網、斷電、服務器異常等情況下,客戶端能都正常處理,保證數據正確性。
八.客戶端側性能測試:
1.基准性能測試:主要通過壓服務器端接口測試及客戶端在不同網絡環境下響應速度。
2.大數量的測試:主要在特定環境下,客戶端一次性更新大量的數據及人員列表時,客戶端能否正常處理,分為三種情況:
a.客戶端第一次使用,第一次就更新大量數據及人員列表。
b.客戶端在平時更新中,更新大量的數據
c.客戶端已經在手機本地下載跟多數據后,再次更新大量
九.安裝、卸載測試
1.安裝/卸載
(1)生成apk文件在真機上可以安裝及卸載;
(2)Android手機端通過使用安裝工具。如:豌豆莢
2.在線升級測試
(1)驗證數字簽名
(2)升級后可以正常使用
(3)在線跨版本升級。


一、安全測試
1.軟件權限
1)扣
費風險:包括短信、撥打電話、連接網絡等。
2)
隱私泄露風險:包括訪問手機信息、訪問聯系人信息等。
3)對App的輸入有效性校驗、
認證、授權、數據加密等方面進行檢測
4)限制/允許使用手機功能接入互聯網
5)限制/允許使用手機發送接收信息功能
6)限制或使用本地連接
7)限制/允許使用手機拍照或錄音
8)限制/允許使用手機讀取用戶數據
9)限制/允許使用手機寫入用戶數據
10)限制/允許應用程序來注冊自動啟動應用程序
2.安裝與卸載安全性
1)應用程序應能正確安裝到設備驅動程序上
2)能夠在安裝設備驅動程序上找到應用程序的相應圖標
3)安裝路徑應能指定
4)沒有用戶的允許,應用程序不能預先設定自動啟動
5)卸載是否安全,其安裝進去的文件是否全部卸載
6)卸載用戶使用過程中產生的文件是否有提示
7)其修改的配置信息是否復原
8)卸載是否影響其他軟件的功能
9)卸載應該移除所有的文件
3.數據安全性
1)當將密碼或其它的敏感數據輸入到應用程序時,其不會被存儲在設備中,同時密碼也不會被解碼。
2)輸入的密碼將不以明文形式進行顯示。
3)密碼、信用卡明細或其他的敏感數據將不被存儲在它們預輸入的位置上。
4)不同的應用程序的個人身份證或密碼長度必須至少在4-8個數字長度之間。
5)當應用程序處理信用卡明細或其它的敏感數據時,不以明文形式將數據寫到其他單獨的文件或者臨時文件中。以防止應用程序異常終止而又沒有刪除它的臨時文件,文件可能遭受入侵者的襲擊,然后讀取這些數據信息。
6)黨建敏感數據輸入到應用程序時,其不會被存儲在設備中。
7)應用程序應考慮或者虛擬機器產生的用戶提示信息或安全警告
8)應用程序不能忽略系統或者虛擬機器產生的用戶提示信息或安全警告,更不能在安全警告顯示前,利用顯示誤導信息欺騙用戶,應用程序不應該模擬進行安全警告誤導用戶。
9)在數據刪除之前,應用程序應當通知用戶或者應用程序提供一個“取消”命令的操作。
10)應用程序應當能夠處理當不允許應用軟件連接到個人信息管理的情況。
11)當進行讀或寫用戶信息操作時,應用程序將會向用戶發送一個操作錯誤的提示信息。
12)在沒有用戶明確許可的前提下不損壞刪除個人信息管理應用程序中的任何內容。
13)如果數據庫中重要的數據正要被重寫,應及時告知用戶。
14)能合理的處理出現的錯誤。
15)意外情況下應提示用戶。
4.通訊安全性
1)在運行軟件過程中,如果有來電、SMS、藍牙等通訊或充電時,是否能暫停程序,優先處理通信,並在處理完畢后能正常恢復軟件,繼續其原來的功能。
2)當創立連接時,應用程序能夠處理因為網絡連接中斷,進而告訴用戶連接中斷的情況。
3)應能處理通訊延時或中斷。
4)應用程序將保持工作到通訊超時,進而給用戶一個錯誤信息指示有鏈接錯誤。
5)應能處理網絡異常和及時將異常情況通報用戶。
6)應用程序關閉網絡連接不再使用時應及時關閉,斷開。
5.人機接口安全測試
1)返回菜單應總保持可用。
2)命令有優先權順序。
3)聲音的設置不影響使用程序的功能。
4)聲音的設置不影響應用程序的功能
5)應用程序必須能夠處理不可預知的用戶操作,例如錯誤的操作和同時按下多個鍵。
二、安裝、卸載測試
驗證App是否能正確安裝、運行、卸載、以及操作過程和操作前后對系統資源的使用情況
1.安裝
1)軟件安裝后是否能夠正常運行,安裝后的文件夾以及文件是否寫到了指定的目錄里。
2)軟件安裝各個選項的組合是否符合概要設計說明。
3)軟件安裝向導的UI測試
4)安裝后沒有生成多余的目錄結構和文件。
2.卸載
1)測試系統直接卸載程序是否有提示信息。
2)測試卸載后文件是否全部刪除所有的安裝文件夾。
3)卸載是否支持取消功能,單擊取消后軟件卸載的情況。
4)系統直接卸載UI測試,是否有卸載狀態進度條提示。
三、UI測試
1)測試用戶界面(如菜單、對話框、窗口和其他控件)布局、風格是否滿足要求、文字是否正確、頁面是否美觀、文字、圖片組合是否完美、操作是否友好等。
2)UI測試的目標是確保用戶界面會通過測試對象的功能來為用戶提供相應的訪問或瀏覽功能。確保用戶界面符合公司或行業的標准。包括用戶友好性、人性化、易操作性測試。
1.導航測試
1)按鈕、對話框、列表和窗口等;或在不同的連接頁面之間需要導航。
2)是否易於導航,導航是否直觀。
3)是否需要搜索引擎。
4)導航幫助是否准確直觀。
5)導航與頁面結構、菜單、連接頁面的風格是否一致。
2.圖形測試
1)橫向比較,各控件操作方式統一。
2)自適應界面設計,內容根據窗口大小自適應。
3)頁面標簽風格是否統一。
4)頁面是否美觀。
5)頁面的圖片應有其實際意義而要求整體有序美觀。
3.內容測試
1)輸入框說明文字的內容與系統功能是否一致。
2)文字長度是否加以限制。
3)文字內容是否表意不明。
4)是否有錯別字。
5)信息是否為中文顯示。
四、功能測試
根據軟件說明或用戶需求驗證App的各個功能實現,采用如下方法實現並評估功能測試過程:
1)采用時間、地點、對象、行為和背景五元素或業務分析等方法分析、提煉App的用戶使用場景,對比說明或需求,整理出內在、外在及非功能直接相關的需求,構建測試點,並明確測試標准。
2)根據被測功能點的特性列出相應類型的測試用例對其進行覆蓋,如:設計輸入的地方需要考慮等價、邊界、負面、異常、非法、場景回滾、關聯測試等測試類型對其進行覆蓋。
3)在測試實現的各個階段跟蹤測試實現與需求輸入的覆蓋情況,及時修正業務或需求理解錯誤。
1.運行
1)App安裝完成后的試運行,可正常打開軟件。
2)App打開測試,是否有加載狀態進度提示。
3)App頁面間的切換是否流暢,邏輯是否正確。
4)注冊
- 同表單編輯頁面
- 用戶名密碼長度
- 注冊后的提示頁面
- 前台注冊頁面和后台的管理頁面數據是否一致
- 注冊后,在后台管理中頁面提示
5)登錄
- 使用合法的用戶登錄系統
- 系統是否允許多次非法的登錄,是否有次數限制
- 使用已經登錄的賬號登錄系統是否正確處理
- 用戶名、口令(密碼)錯誤或漏填時能否登陸
- 刪除或修改后的用戶,原用戶名登陸
- 不輸入用戶口令和重復點“確定/取消”按鈕,是否允許登錄
- 登陸后,頁面中登錄信息
- 頁面中有注銷按鈕
- 登錄超時的處理
2.應用的前后台切換
1)App切換到后台,再回到App,檢查是否停留在上一次操作界面。
2)App切換到后台,再回到App,檢查功能及應用狀態是否正常。
3)App切換到后台,再回到前台時,注意程序是否崩潰,功能狀態是否正常,尤其是對於從后台切換回前台數據有自動更新的時候。
4)手機鎖屏解鎖后進入App注意是否會崩潰,功能狀態是否正常,尤其是對於從后台切換回前台數據有自動更新的時候。
5)當App使用過程中有電話進來中斷后再切換到App,功能狀態是否正常。
6)當殺掉App進城后,再開啟App,App能否正常啟動。
7)出現必須處理的提示框后,切換到后台,再切換回來,檢查提示框是否還存在,有時候會出現應用自動跳過提示框的缺陷。
8)對於有數據交換的頁面,每個頁面都必須要進行前后台切換、鎖屏的測試,這種頁面最容易出現崩潰。
3.免登陸
很多應用提供免登陸功能,當應用開啟時自動以上一次登錄的用戶身份來使用App。
1)考慮無網絡情況時能否正常進入免登錄狀態。
2)切換用戶登陸后,要校驗用戶登錄信息以及數據內容是否相應更新,確保原用戶退出。
3)根據Mtop的現有規則,一個賬戶只允許登陸一台機器。所以,需要檢查一個賬戶登錄多台手機的情況。原手機里的用戶需要被退出,給出友好提示。
4)App切換到后台,在切換回前台的校驗。
5)切換到后台,再切換回到前台的測試。
6)密碼更換后,檢查有數據交換時是否進行了有效身份的校驗。
7)支持自動登錄的應用在進行數據校驗時,檢查系統是否能自動登錄成功並且數據操作無誤。
8)檢查用戶主動退出登錄后,下次啟動App,應停留在登錄界面。
4.離線瀏覽
很多應用會支持離線瀏覽,即在本地客戶端會緩存一部分數據供用戶查看。
1)在無線網絡情況可以瀏覽本地數據。
2)退出App再開啟App時能正常瀏覽。
3)切換到后台再回到前台可以正常瀏覽。
4)鎖屏后再解鎖回到應用前台可以正常瀏覽。
5)在對服務器段的數據有更新時回給予離線的相應提示。
5.App更新
1)當客戶端有新版本時,有更新提示。
2)當版本為非強制升級版時,用戶可以取消更新,老版本能正常使用。用戶在下次啟動App時,仍出現更新提示。
3)當版本為強制升級版時,但給出強制更新后用戶沒有做更新時,退出客戶端。下次啟動App時,仍出現強制升級提示。
4)當客戶端有新版本時,在本地不刪除客戶端的情況下,直接更新檢查是否能正常更新。
5)當客戶端有新版本時,在本地不刪除客戶端的情況下,檢查更新后的客戶端功能是否是新版本。
6)當客戶端有新版本時,在本地不刪除客戶端的情況下,檢查資源同名文件如圖片是否能正常更新成最新版本。如果以上無法更新成功的,也都屬於缺陷。
6.定位、照相機服務
1)App有用到相機,定位服務時,需要注意系統版本差異。
2)有用到照相機服務的地方,需要進行前后台的切換測試,檢查應用是否正常。
3)測試照相機服務時,需要采用真機進行測試。
7.PUSH測試
1)檢查Push消息是否按照指定的業務規則發送。
2)檢查不接收推送消息時,用戶不會在接收到Push消息。
3)如果用戶設置了免打擾的時間段,檢查在免打擾時間段內,用戶接收不到Push。在非免打擾時間段內,用戶能正常收到Push。
4)當Push消息是針對登錄用戶的時候,需要檢查收到的Push與用戶身份是否相符,沒有錯誤的將其他人的消息推送過來。一般情況下,只對手機上最后一個登錄用戶進行消息推送。
5)測試Push時,需要采用真機進行測試。
五、性能測試
1)響應能力測試:測試App中的各類操作是否滿足用戶響應時間要求。
- App安裝、卸載的響應時間
- App各類功能性操作的響應時間
2)壓力測試,反復/長期操作下,系統資源是否占用異常。
- App反復進行安裝卸載,檢查系統資源是否正常
- 其他功能反復進行操作,檢查系統資源是否正常
六、交叉事件測試
針對智能終端應用的服務等級划分方式及實時特性所提出的測試方法。交叉測試又叫事件或沖突測試,是指一個功能正在執行過程中,同時另外一個事件或操作對該過程進行干擾的測試。如:App在前/后台運行狀態時與來電、文件下載、音樂收聽等關鍵運用的交互情況測試等。
交叉事件測試非常重要,能發現很多應用中潛在的性能問題。
1)多個App同時運行是否影響正常功能。
2)App運行時前/后台切換是否影響正常功能。
3)App運行時撥打/接聽電話。
4)App運行時發送/接收信息。
5)App運行時發送/收取郵件。
6)App運行時瀏覽網絡。
7)App運行時使用藍牙傳送/接收數據。
8)App運行時使用相機、計算器等手機自帶設備。
七、兼容測試
主要測試內部和外部兼容性
1)與本地及主流App是否兼容
2)與各種設備是否兼容,若有跨系統支持則需要檢驗是否在個系統下,各種行為是否一致。
1)Bug修復后且在新版本發布后需要進行回歸測試。
2)Bug修復后的回歸測試在交付前、要進行大量用例的回歸測試。
九、用戶體驗測試
以主觀的普通消費者的角度去感知產品或服務的舒適、有用、易用、友好親切程度。通過不同個體、獨立空間和非經驗的統計復用方式去有效評價產品的體驗特性,提出修改意見提升產品的潛在客戶滿意度。
1)是否有空數據界面設計,引導用戶去執行操作。
2)是否濫用用戶引導。
3)是否有不可點擊的效果,如:你的按鈕此時處於不可用狀態,那么一定要灰掉,或者拿掉按鈕,否則會給用戶誤導。
4)菜單層次是否太深。
5)交互流程分支是否太多。
6)相關的選項是否離的很遠。
7)一次是否載入太多的數據。
8)界面中按鈕可點擊范圍是否適中。
9)標簽頁是否跟內容沒有從屬關系,當切換標簽的時候,內容跟着切換。
10)操作應該有主次從屬關系。
11)是否定義Back的邏輯。涉及軟硬件交互時,Back鍵應具體定義。
12)是否有橫屏模式的設計,應用一般需要支持橫屏模式,即自適應設計。
十、手勢操作測試
1)手機開鎖屏對運行中的App的影響。
2)運行中的App前后台切換的影響。
3)多個運行中的App的切換。
4)App運行時關機。
5)App運行時重啟系統。
6)App運行時充電
7)App運行時Kill掉進程再打開
十一、客戶端數據庫測試
1)一般的增、刪、改、查測試。
2)當表不存在時是否能自動創建,當數據庫表被刪除后能否再自建,數據是否還能自動從服務器中獲取回來並保存。
3)在業務需要從服務器端取回數據保存到客戶端的時候,客戶端能否將數據保存到本地。
4)當業務需要從客戶端取數據時,檢查客戶端數據存在時,App數據是否能自動從客戶端數據中取出,還是仍然會從服務器端獲取?檢查客戶端數據不存在時,App數據能否自動從服務器端獲取到並保存到服務器端。
5)當業務對數據進行了修改、刪除后,客戶端和服務器端是否會有相應的更新。