對於手機項目(應用軟件),主要是進行系統測試。
而針對手機應用軟件的系統測試,我們通常從如下幾個角度開展測試工作:
- 功能模塊測試;
- 交叉事件測試;
- 性能測試;
- 安全測試;
- 容量測試;
- 兼容性測試;
- 接口測試;
- 易用性/用戶體驗測試;
- 硬件環境測試
- 安裝/卸載測試;
- 升級/更新測試;
1、功能模塊測試:根據軟件需求說明書或者用戶需求驗證app的各個功能是否實現,采用如下方法實現並評估功能測試過程:
- 采用時間、地點、對象、行為、和背景五元素或業務分析等方法、提煉app的用戶使用場景,對比說明和需求,整理出內在,外在及非功能直接相關需求,構建測試點和用例,並明確測試標准,若用戶需求中無明確標准遵循,則需要參考行業或相關國際標准或准則。
- 根據被測試功能點的特性列出相應類型的測試用例對其進行覆蓋,如:涉及輸入的地方需要考慮等價、邊界、負面、異常或非法、場景回滾、關聯測試等測試類型對其進行覆蓋。
- 在測試實現的各個階段跟蹤測試實現與需求輸入的覆蓋情況,及時修正業務或需求理解錯誤地方。
運行
1)App安裝完成后的試運行,可正常打開軟件。
2)App打開測試,是否有加載狀態進度提示。
3)App打開速度測試,速度是否可觀。
4)App頁面間的切換是否流暢,邏輯是否正確
5)注冊
--同表單編輯頁面
--用戶名密碼長度
--注冊后的提示頁面
--前台注冊頁面和后台的管理頁面數據是否一致
--注冊后,在后台管理中頁面提示
6)登錄
--使用合法的用戶登錄系統。
--系統是否允許多次非法的登陸,是否有次數限制。
--使用已經登陸的賬號登陸系統是否正確處理。
--使用禁用的賬號登陸系統是否正確處理。
--用戶名、口令(密碼)錯誤或漏填時能否登陸。
--刪除或修改后的用戶,原用戶登陸。
--不輸入用戶口令和用戶、重復點(確定或取消按鈕)是否允許登陸。
--登陸后,頁面中登陸信息。
--頁面中有注銷按鈕。
--登陸超時的處理。
7)注銷
--注銷原模塊,新的模塊系統能否正確處理。
--終止注銷能否返回原模塊,原用戶。
--注銷原用戶,新用戶系統能否正確處理。
--使用錯誤的賬號、口令、無權限的被禁用的賬號進行注銷
應用的前后台切換
1) APP切換到后台,再回到app,檢查是否停留在上一次操作界面。
2) APP切換到后台,再回到app,檢查功能及應用狀態是否正常,IOS4和IOS5的版本的處理機制有的不一樣。
3) app切換到后台,再回到前台時,注意程序是否崩潰,功能狀態是否正常,尤其是對於從后台切換回前台數據有自動更新的時候。
4) 手機鎖屏解屏后進入app注意是否會崩潰,功能狀態是否正常,尤其是對於從后台切換回前台數據有自動更新的時候。
5) 當App使用過程中有電話進來中斷后再切換到app,功能狀態是否正常
6) 當殺掉app進程后,再開啟app,app能否正常啟動。
7) 出現必須處理的提示框后,切換到后台,再切換回來,檢查提示框是否還存在,有時候會出現應用自動跳過提示框的缺陷。
8) 對於有數據交換的頁面,每個頁面都必需要進行前后台切換、鎖屏的測試,這種頁面最容易出現崩潰。
免登錄
很多應用提供免登錄功能,當應用開啟時自動以上一次登錄的用戶身份來使用app.
1) app有免登錄功能時,需要考慮IOS版本差異。
2) 考慮無網絡情況時能否正常進入免登錄狀態。
3) 切換用戶登錄后,要校驗用戶登錄信息及數據內容是否相應更新,確保原用戶退出。
4) 根據MTOP的現有規則,一個帳戶只允許登錄一台機器。所以,需要檢查一個帳戶登錄多台手機的情況。原手機里的用戶需要被踢出,給出友好提示。
5) app切換到后台,再切回前台的校驗
6) 切換到后台,再切換回前台的測試
7) 密碼更換后,檢查有數據交換時是否進行了有效身份的校驗
8) 支持自動登錄的應用在進行數據交換時,檢查系統是否能自動登錄成功並且數據操作無誤。
9) 檢查用戶主動退出登錄后,下次啟動app,應停留在登錄界面
數據更新
根據應用的業務規則,以及數據更新量的情況,來確定最優的數據更新方案。
1) 需要確定哪些地方需要提供手動刷新,哪些地方需要自動刷新,哪些地方需要手動+自動刷新。
2) 確定哪些地方從后台切換回前台時需要進行數據更新。
3) 根據業務、速度及流量的合理分配,確定哪些內容需要實時更新,哪些需要定時更新。
4) 確定數據展示部分的處理邏輯,是每次從服務端請求,還是有緩存到本地,這樣才能有針對性的進行相應測試。
5) 檢查有數據交換的地方,均有相應的異常處理。
離線瀏覽
很多應用會支持離線瀏覽,即在本地客戶端會緩存一部分數據供用戶查看。
1) 在無網絡情況可以瀏覽本地數據
2) 退出app再開啟app時能正常瀏覽
3) 切換到后台再切回前台可以正常瀏覽
4) 鎖屏后再解屏回到應用前台可以正常瀏覽
5) 在對服務端的數據有更新時會給予離線的相應提示
App更新
1) 當客戶端有新版本時,有更新提示。
2) 當版本為非強制升級版時,用戶可以取消更新,老版本能正常使用。用戶在下次啟動app時,仍能出現更新提示。
3) 當版本為強制升級版時,當給出強制更新后用戶沒有做更新時,退出客戶端。下次啟動app時,仍出現強制升級提示。
4) 當客戶端有新版本時,在本地不刪除客戶端的情況下,直接更新檢查是否能正常更新。
5) 當客戶端有新版本時,在本地不刪除客戶端的情況下,檢查更新后的客戶端功能是否是新版本。
6) 當客戶端有新版本時,在本地不刪除客戶端的情況下,檢查資源同名文件如圖片是否能正常更新成最新版本。如果以上無法更新成功的,也都屬於缺陷。
定位、照相機服務
1) App有用到相機,定位服務時,需要注意系統版本差異
2) 有用到定位服務、照相機服務的地方,需要進行前后台的切換測試,檢查應用是否正常。
3) 當定位服務沒有開啟時,使用定位服務,會友好性彈出是否允許設置定位提示。當確定允許開啟定位時,能自動跳轉到定位設置中開啟定位服務。
4) 測試定位、照相機服務時,需要采用真機進行測試。
時間測試
客戶端可以自行設置手機的時區、時間,因此需要校驗該設置對app的影響。
--中國為東8區,所以當手機設置的時間非東8區時,查看需要顯示時間的地方,時間是否展示正確,應用功能是否正常。時間一般需要根據服務器時間再轉換成客戶端對應的時區來展示,這樣的用戶體驗比較好。比如發表一篇微博在服務端記錄的是10:00,此時,華盛頓時間為22:00,客戶端去瀏覽時,如果設置的是華盛頓時間,則顯示的發表時間即為22:00,當時間設回東8區時間時,再查看則顯示為10:00。
PUSH測試
1) 檢查push消息是否按照指定的業務規則發送
2) 檢查不接受推送消息時,檢查用戶不會再接收到push.
3) 如果用戶設置了免打擾的時間段,檢查在免打擾時間段內,用戶接收不到PUSH。
在非免打擾時間段,用戶能正常收到push。
4) 當push消息是針對登錄用戶的時候,需要檢查收到的push與用戶身份是否相符,沒有錯誤地將其它人的消息推送過來。一般情況下,只對手機上最后一個登錄用戶進行消息推送。
5) 測試push時,需要采用真機進行測試。
2、交叉事件測試:又叫事件沖突測試,是指一個功能正在執行過程中,同時另外一個事件或操作對該過程進行干擾測試。如:App在前/后台運行狀態時與來電、文件ixaz、音樂收聽等關鍵運用的交互情況測試等。
- 多個App同時運行是否影響正常功能。
- App運行時前/后台切換是否影響正常功能。
- App運行時撥打/接聽電話。
- App運行時發送/接收信息。
- App運行時發送/收取郵件。
- App運行時切換網絡(2G/3G/WIFI).
- App運行瀏覽網頁。
- App運行時使用藍牙傳送/接收數據。
- App運行時使用相機、計算器手機自帶設備。
- App運行時插拔充電器。
執行干擾的沖突事件不能導致軟件應用軟件異常、手機死機或者花屏等嚴重問題,還需要注意各交叉事件的優先級別,檢驗系統是否能依據各事件的優先級別依次進行處理。不能因執行優先級別高的事件而導致優先級別較低的事件吊死。另外有中英文模式切換的手機要注意中英文模式切換后的功能實現存在的問題。
3、性能測試:評估App的時間和空間特性 ;
- 極限測試:在各種邊界壓力情況下,如電池、存儲、網速等,驗證App是否能正確響應。
--內存滿時安裝App
--運行App時手機斷電
--運行App時斷掉網絡
- 響應能力測試:測試App中的各類操作是否滿足用戶響應時間要求 。
--App安裝、卸載的響應時間
--App各類功能性操作的影響時間
- 壓力測試:反復/長期操作下、系統資源是否占用異常。
--App反復進行安裝卸載,查看系統資源是否正常
--其他功能反復進行操作,查看系統資源是否正常
- 性能評估:評估典型用戶應用場景下,系統資源的使用情況。
- Benchmark測試(基線測試):與競爭產品的Benchmarking, 產品演變對比測試等。
4、安全測試:
- 軟件權限
--扣費風險:包括發送短信、撥打電話、連接網絡等
--隱私泄露風險:包括訪問手機信息、訪問聯系人信息等
--對App的輸入有效性校驗、認證、授權、敏感數據存儲、數據加密等方面進行檢測
--限制/允許使用手機功能接人互聯網
--限制/允許使用手機發送接受信息功能
--限制/允許應用程序來注冊自動啟動應用程序
--限制或使用本地連接
--限制/允許使用手機拍照或錄音
--限制/允許使用手機讀取用戶數據
-- 限制/允許使用手機寫人用戶數據
--檢測App的用戶授權級別、數據泄漏、非法授權訪問等
- 安裝與卸載安全性
--應用程序應能正確安裝到設備驅動程序上
--能夠在安裝設備驅動程序上找到應用程序的相應圖標
--是否包含數字簽名信息
--JAD文件和JAR包中包含的所有托管屬性及其值必需是正確的
--JAD文件顯示的資料內容與應用程序顯示的資料內容應一致
--安裝路徑應能指定
--沒有用戶的允許, 應用程序不能預先設定自動啟動
--卸載是否安全, 其安裝進去的文件是否全部卸載
--卸載用戶使用過程中產生的文件是否有提示
--其修改的配置信息是否復原
--卸載是否影響其他軟件的功能
--卸載應該移除所有的文件
- 數據安全性
--當將密碼或其他的敏感數據輸人到應用程序時, 其不會被儲存在設備中, 同時密碼也不會被解碼
--輸人的密碼將不以明文形式進行顯示
--密碼, 信用卡明細, 或其他的敏感數據將不被儲存在它們預輸人的位置上
--不同的應用程序的個人身份證或密碼長度必需至少在4一8 個數字長度之間
--當應用程序處理信用卡明細, 或其他的敏感數據時, 不以明文形式將數據寫到其它單獨的文件或者臨時文件中。以
--防止應用程序異常終止而又沒有側除它的臨時文件, 文件可能遭受人侵者的襲擊, 然后讀取這些數據信息。
--當將敏感數據輸人到應用程序時, 其不會被儲存在設備中
--備份應該加密, 恢復數據應考慮恢復過程的異常通訊中斷等, 數據恢復后再使用前應該經過校驗
--應用程序應考慮系統或者虛擬機器產生的用戶提示信息或安全替告
--應用程序不能忽略系統或者虛擬機器產生的用戶提示信息或安全警告, 更不能在安全警告顯示前,,利用顯示誤導信息欺騙用戶,應用程序不應該模擬進行安全警告誤導用戶
--在數據刪除之前,應用程序應當通知用戶或者應用程序提供一個“取消”命令的操作
--"取消” 命令操作能夠按照設計要求實現其功能
--應用程序應當能夠處理當不允許應用軟件連接到個人信息管理的情況
--當進行讀或寫用戶信息操作時, 應用程序將會向用戶發送一個操作錯誤的提示信息
--在沒有用戶明確許可的前提下不損壞側除個人信息管理應用程序中的任何內容Μ
--應用程序讀和寫數據正確。
--應用程序應當有異常保護。
--如果數據庫中重要的數據正要被重寫, 應及時告知用戶
--能合理地處理出現的錯誤
--意外情況下應提示用戶
- 通訊安全性
--在運行其軟件過程中, 如果有來電、SMS、EMS、MMS、藍牙、紅外等通訊或充電時, 是否能暫停程序,優先處理通信, 並在處理完畢后能正常恢復軟件, 繼續其原來的功能
--當創立連接時, 應用程序能夠處理因為網絡連接中斷, 進而告訴用戶連接中斷的情況
--應能處理通訊延時或中斷
--應用程序將保持工作到通訊超時, 進而發送給用戶一個錯誤信息指示有連接錯誤
--應能處理網絡異常和及時將異常情況通報用戶
--應用程序關閉或網絡連接不再使用時應及時關閉) 斷開
-- HTTP、HTTPS覆蓋測試
--App和后台服務一般都是通過HTTP來交互的,驗證HTTP環境下是否正常;
--公共免費網絡環境中(如:麥當勞、星巴克等)都要輸入用戶名和密碼,通過SSL認證來訪問網絡,需要對使用HTTP Client的library異常作捕獲處理。
- 人機接口安全性
--返回菜單總保持可用
--命令有優先權順序
--聲音的設置不影響應用程序的功能
--應用程序必需利用目標設備適用的全屏尺寸來顯示上述內容
--應用程序必需能夠處理不可預知的用戶操作, 例如錯誤的操作和同時按下多個鍵
5、容量測試:即存儲空間已滿時的測試,包括手機用戶可用內存和SIM卡的所有空間被完成使用的測試。此時再對可編輯的模塊進行和存儲空間有關的任何操作測試,如果軟件在極限容量狀態下處理不好,有可能導致死機或嚴重的花屏等問題出現。
6、兼容性測試:也就是不同系統框架,不同品牌、款型、分辨率的手機,不嘔吐那個網絡,不同容量大小的SIM卡之間的互相兼容測試。
--與本地及主流App是否兼容
--基於開發環境和生產環境的不同,檢驗在各種網絡連接下(WiFi、GSM、GPRS、EDGE、WCDMA、CDMA1x、CDMA2000、HSPDA等),App的數據和運用是否正確
--與各種設備是否兼容,若有跨系統支持則需要檢驗是否在各系統下,各種行為是否一致
--不同操作系統的兼容性,是否適配
--不同手機屏幕分辨率的兼容性
--不同手機品牌的兼容性
7、接口測試:服務端一般會提供JSON格式的數據給客戶端,所以我們在服務端需要進行接口測試,確保服務端提供的接口並轉換的JSON內容正確,對分支、異常流有相應的返回值。此塊測試可以采用itest框架進行測試。最方便的是采用httpclient進行接口測試。
進行服務端測試時,需要開發提供一份接口文檔。
8、易用性/用戶體驗測試:易用性這個這里就不說了大家都知道。
用戶體驗測試:以主觀的普通消費者的角度去感知產品或服務的舒適、有用、易用、友好親切程度。 通過不同個體、獨立空間和非經驗的統計復用方式去有效評價產品的體驗特性提出修改意見提升產品的潛在客戶滿意度。
- 1)是否有空數據界面設計,引導用戶去執行操作。
- 2)是否濫用用戶引導。
- 3)是否有不可點擊的效果,如:你的按鈕此時處於不可用狀態,那么一定要灰掉,或者拿掉按鈕,否則會給用戶誤導
- 4)菜單層次是否太深
- 5)交互流程分支是否太多
- 6)相關的選項是否離得很遠
- 7)一次是否載入太多的數據
- 8)界面中按鈕可點擊范圍是否適中
- 9)標簽頁是否跟內容沒有從屬關系,當切換標簽的時候,內容跟着切換
- 10)操作應該有主次從屬關系
- 11)是否定義Back的邏輯。涉及軟硬件交互時,Back鍵應具體定義
- 12)是否有橫屏模式的設計,應用一般需要支持橫屏模式,即自適應設計
9、硬件環境測試:
- 手勢操作測試
--手機開鎖屏對運行中的App的影響
--切換網絡對運行中的App的影響
--運行中的App前后台切換的影響
--多個運行中的App的切換
--App運行時關機
--App運行時重啟系統
--App運行時充電
--App運行時kill掉進程再打開
- 網絡環境
手機的網絡目前主要分為2G、3G、wifi。目前2G的網絡相對於比較慢,測試時尤其要注意此塊的測試。
--無網絡時,執行需要網絡的操作,給予友好提示,確保程序不出現crash。
--內網測試時,要注意選擇到外網操作時的異常情況處理。
-- 在網絡信號不好時,檢查功能狀態是否正常,確保不因提交數據失敗而造成crash。
--在網絡信號不好時,檢查數據是否會一直處於提交中的狀態,有無超時限制。如遇數據交換失敗時要給予提示。
--在網絡信號不好時,執行操作后,在回調沒有完成的情況下,退出本頁面或者執行其他操作的情況,有無異常情況。此問題也會經常出現程序crash。
- 服務器宕機或出現404、502等情況下的測試
后台服務牽涉到DNS、空間服務商的情況下會影響其穩定性,如:當出現域名解析故障時,你對后台API的請求很可能就會出現404錯誤,拋出異常。這時需要對異常進行正確的處理,否則可能會導致程序不能正常工作。
10、安裝/卸載測試:驗證App是否能正確安裝、運行、卸載以及操作過程和操作前后對系統資源的使用情況。
- 安裝
--軟件在不同操作系統(Palm OS、Symbian、Linux、Android、iOS、Black Berry OS 6.0、Windows Phone 7)下安裝是否正常。
--軟件安裝后的是否能夠正常運行,安裝后的文件夾及文件是否寫到了指定的目錄里。
--軟件安裝各個選項的組合是否符合概要設計說明
--軟件安裝向導的UI測試
--軟件安裝過程是否可以取消,點擊取消后,寫入的文件是否如概要設計說明處理
--軟件安裝過程中意外情況的處理是否符合需求(如死機,重啟,斷電)
--安裝空間不足時是否有相應提示
--安裝后沒有生成多余的目錄結構和文件
--對於需要通過網絡驗證之類的安裝,在斷網情況下嘗試一下
--還需要對安裝手冊進行測試,依照安裝手冊是否能順利安裝
- 卸載
--直接刪除安裝文件夾卸載是否有提示信息。
--測試系統直接卸載程序是否有提示信息。
--測試卸載后文件是否全部刪除所有的安裝文件夾。
--卸載過程中出現的意外情況的測試(如死機、斷電、重啟)。
--卸載是否支持取消功能,單擊取消后軟件卸載的情況 。
--系統直接卸載UI測試,是否有卸載狀態進度條提示 。
11、升級/更新測試:新版版發布后,配合不同網絡環境的自勱更新提示及下載、安裝、更新、啟勱、運行的驗證測試。
- 1)測試升級后的功能是否與需求說明一樣
- 2)測試與升級模塊相關的模塊的功能是否與需求一致
- 3)升級安裝意外情況的測試(如死機、斷電、重啟)
- 4)升級界面的UI測試
- 5)不同操作系統間的升級測試