近年來隨著移動網際網路發展迅猛,APP也進行了爆發式的增長,相應的APP的測試檢測就擺在每家企業眼前,以下是由國內應用安全檢測團隊-愛內測(www.ineice.com)的測試攻城師為我們介紹App應用程式測試流程及測試總結 :
1、 APP測試基本流程
1.1流程圖
仍然為測試環境
Pass
1.2測試周期
測試周期可按專案的開發週期來確定測試時間,一般測試時間為兩三週(即15個工作日),根據專案情況以及版本質量可適當縮短或延長測試時間。正式測試前先向主管確認專案排期。
1.3測試資源
測試任務開始前,檢查各項測試資源。
--產品功能需求文件;
--產品原型圖;
--產品效果圖;
--行為統計分析定義文件;
--測試裝置(ios3.1.3-ios5.0.1;Android1.6-Android4.0;Winphone7.1及以上;Symbian v3/v5/Nokia Belle等);
--其他。
1.4日報及產品上線報告
1)測試人員每天需對所測專案傳送測試日報。
2)測試日報所包含的內容為:
--對當前測試版本質量進行分級;
--對較嚴重的問題進行例舉,提示開發人員優先修改;
--對版本的整體情況進行評估。
3)產品上線前,測試人員傳送產品上線報告。
4)上線報告所包含的內容為:
---對當前版本質量進行分級;
---附上測試報告(功能測試報告、相容性測試報告、效能測試報告以及app可用效能標準結果);
--總結上線版本的基本情況。若有遺留問題必須列出並記錄解決方案。
2 、App測試點
2.1安全測試
2.1.1軟體許可權
1)扣費風險:包括髮送簡訊、撥打電話、連線網路等
2)隱私洩露風險:包括訪問手機資訊、訪問聯絡人資訊等
3)對App的輸入有效性校驗、認證、授權、敏感資料儲存、資料加密等方面進行檢測
4)限制/允許使用手機功能接人網際網路
5)限制/允許使用手機傳送接受資訊功能
6)限制/允許應用程式來註冊自動啟動應用程式
7)限制或使用本地連線
8)限制/允許使用手機拍照或錄音
9)限制/允許使用手機讀取使用者資料
10) 限制/允許使用手機寫人使用者資料
11) 檢測App的使用者授權級別、資料洩漏、非法授權訪問等
2.1.2安裝與解除安裝安全性
1)應用程式應能正確安裝到裝置驅動程式上
2)能夠在安裝裝置驅動程式上找到應用程式的相應圖示
3)是否包含數字簽名資訊
4)JAD檔案和JAR包中包含的所有託管屬性及其值必需是正確的
5)JAD檔案顯示的資料內容與應用程式顯示的資料內容應一致
6)安裝路徑應能指定
7)沒有使用者的允許, 應用程式不能預先設定自動啟動
8)解除安裝是否安全, 其安裝進去的檔案是否全部解除安裝
9)解除安裝使用者使用過程中產生的檔案是否有提示
10)其修改的配置資訊是否復原
11)解除安裝是否影響其他軟體的功能
12)解除安裝應該移除所有的檔案
2.1.3資料安全性
1)當將密碼或其他的敏感資料輸人到應用程式時, 其不會被儲存在裝置中, 同時密碼也不會被解碼
2)輸人的密碼將不以明文形式進行顯示
3)密碼, 信用卡明細, 或其他的敏感資料將不被儲存在它們預輸人的位置上
4)不同的應用程式的個人身份證或密碼長度必需至少在4一8 個數字長度之間
5)當應用程式處理信用卡明細, 或其他的敏感資料時, 不以明文形式將資料寫到其它單獨的檔案或者臨時檔案中。
6)以防止應用程式異常終止而又沒有側除它的臨時檔案, 檔案可能遭受人侵者的襲擊, 然後讀取這些資料資訊。
7)當將敏感資料輸人到應用程式時, 其不會被儲存在裝置中
8)備份應該加密, 恢復資料應考慮恢復過程的異常通訊中斷等, 資料恢復後再使用前應該經過校驗
9)應用程式應考慮系統或者虛擬機器器產生的使用者提示資訊或安全替告
10)應用程式不能忽略系統或者虛擬機器器產生的使用者提示資訊或安全警告, 更不能在安全警告顯示前,,利用顯示誤導資訊欺騙使用者,應用程式不應該模擬進行安全警告誤導使用者
11)在資料刪除之前,應用程式應當通知使用者或者應用程式提供一個“取消”命令的操作
12)“ 取消” 命令操作能夠按照設計要求實現其功能
13)應用程式應當能夠處理當不允許應用軟體連線到個人資訊管理的情況
14)當進行讀或寫使用者資訊操作時, 應用程式將會向使用者傳送一個操作錯誤的提示資訊
15)在沒有使用者明確許可的前提下不損壞側除個人資訊管理應用程式中的任何內容Μ
16)應用程式讀和寫資料正確。
17)應用程式應當有異常保護。
18)如果資料庫中重要的資料正要被重寫, 應及時告知使用者
19)能合理地處理出現的錯誤
20)意外情況下應提示使用者
2.1.4通訊安全性
1)在執行其軟體過程中, 如果有來電、SMS、EMS、MMS、藍芽、紅外等通訊或充電時, 是否能暫停程式,優先處理通訊, 並在處理完畢後能正常恢復軟體, 繼續其原來的功能
2)當創立連線時, 應用程式能夠處理因為網路連線中斷, 進而告訴使用者連線中斷的情況
3)應能處理通訊延時或中斷
4)應用程式將保持工作到通訊超時, 進而傳送給使用者一個錯誤資訊指示有連線錯誤
5)應能處理網路異常和及時將異常情況通報使用者
6)應用程式關閉或網路連線不再使用時應及時關閉) 斷開 7) HTTP、HTTPS覆蓋測試
--App和後臺服務一般都是通過HTTP來互動的,驗證HTTP環境下是否正常;
--公共免費網路環境中(如:麥當勞、星巴克等)都要輸入使用者名稱和密碼,通過SSL認證來訪問網路,需要對使用HTTP Client的library異常作捕獲處理。
2.1.5人機介面安全性
1)返回選單總保持可用
2)命令有優先權順序
3)聲音的設定不影響應用程式的功能
4)應用程式必需利用目標裝置適用的全屏尺寸來顯示上述內容
5)應用程式必需能夠處理不可預知的使用者操作, 例如錯誤的操作和同時按下多個鍵
2.2安裝、解除安裝測試
驗證App
是否能正確安裝、執行、解除安裝
2.2.1安裝
1)軟體在不同作業系統(Palm OS、Symbian、Linux、Android、iOS、Black Berry OS 6.0、Windows Phone 7)下安裝是否正常。
2)軟體安裝後的是否能夠正常執行,安裝後的資料夾及檔案是否寫到了指定的目錄裡。
3)軟體安裝各個選項的組合是否符合概要設計說明
4))軟體安裝嚮導的UI測試
5)軟體安裝過程是否可以取消,點選取消後,寫入的檔案是否如概要設計說明處理
6)軟體安裝過程中意外情況的處理是否符合需求(如當機,重啟,斷電)
7)安裝空間不足時是否有相應提示
8)安裝後沒有生成多餘的目錄結構和檔案
9)對於需要通過網路驗證之類的安裝,在斷網情況下嘗試一下
10)還需要對安裝手冊進行測試,依照安裝手冊是否能順利安裝
2.2.2解除安裝
1)直接刪除安裝資料夾解除安裝是否有提示資訊。
2)測試系統直接解除安裝程式是否有提示資訊。
3)測試解除安裝後檔案是否全部刪除所有的安裝資料夾。
4)解除安裝過程中出現的意外情況的測試(如當機、斷電、重啟)。
5)解除安裝是否支援取消功能,單擊取消後軟體解除安裝的情況 。
6)系統直接解除安裝UI測試,是否有解除安裝狀態進度條提示 。
2.3 UI測試
測試使用者介面(如選單、對話方塊、視窗和其它可規控制元件)佈局、風格是否滿足客戶要求、文字是否正確、頁面是否美觀、文字、圖片組合是否完美、操作是否友好等。
UI測試的目標是確保使用者介面會通過測試物件的功能來為使用者提供相應的訪問或瀏覓功能。確保使用者介面符合公司或行業的標準。包括使用者友好性、人性化、易操作性測試。
2.3.1導航測試
1)按鈕、對話方塊、列表和視窗等;或在不同的連線頁面之間需要導航
2)是否易於導航,導航是否直觀
3)是否需要搜尋引擎
4)導航幫助是否準確直觀
5)導航與頁面結構、選單、連線頁面的風格是否一致
2.3.2圖形測試
1)橫向比較。各控制元件操作方式統一
2)自適應介面設計,內容根據視窗大小自適應
3)頁面標籤風格是否統一
4)頁面是否美觀
5)頁面的圖片應有其實際意義而要求整體有序美觀
6)圖片質量要高且圖片尺寸在設計符合要求的情況下應儘量小
7)介面整體使用的顏色不宜過多
2.3.3內容測試
1)輸入框說明文字的內容與系統功能是否一致
2)文字長度是否加以限制
3)文字內容是否表意不明
4)是否有錯別字
5)資訊是否為中文顯示
6)是否有敏感性詞彙、關鍵詞
7)是否有敏感性圖片,如:涉及版權、專利、隱私等圖片
2.4功能測試
根據軟體說明或使用者需求驗證App的各個功能實現,採用如下方法實現並評估功能測試過程:
1)採用時間、地點、物件、行為和背景五元素或業務分析等方法分析、提煉App的使用者使用場景,對比說明或需求,整理出內在、外在及非功能直接相關的需求,構建測試點,並明確測試標準,若使用者需求中無明確標準遵循,則需要參考行業或相關國際標準或準則。
2)根據被測功能點的特性列丼出相應型別的測試用例對其進行覆蓋,如;涉及輸入的地方需要考慮等價、邊界、負面、異常或非法、場景回滾、關聯測試等測試型別對其進行覆蓋。
3)在測試實現的各個階段跟蹤測試實現與需求輸入的覆蓋情況,及時修正業務或需求理解錯誤。
2.4.1執行
1)App安裝完成後的試執行,可正常開啟軟體。
2)App開啟測試,是否有載入狀態進度提示。
3)App開啟速度測試,速度是否可觀。
4)App頁面間的切換是否流暢,邏輯是否正確
5)註冊
--同表單編輯頁面
--使用者名稱密碼長度
--註冊後的提示頁面
--前臺註冊頁面和後臺的管理頁面資料是否一致
--註冊後,在後臺管理中頁面提示
6)登入
--使用合法的使用者登入系統。
--系統是否允許多次非法的登陸,是否有次數限制。
--使用已經登陸的賬號登陸系統是否正確處理。
--使用禁用的賬號登陸系統是否正確處理。
--使用者名稱、口令(密碼)錯誤或漏填時能否登陸。
--刪除或修改後的使用者,原使用者登陸。
--不輸入使用者口令和使用者、重複點(確定或取消按鈕)是否允許登陸。
--登陸後,頁面中登陸資訊。
--頁面中有登出按鈕。
--登陸超時的處理。
7)登出
--登出原模組,新的模組系統能否正確處理。
--終止登出能否返回原模組,原使用者。
--登出原使用者,新使用者系統能否正確處理。
--使用錯誤的賬號、口令、無許可權的被禁用的賬號進行登出
2.4.2應用的前後臺切換
1) APP切換到後臺,再回到app,檢查是否停留在上一次操作介面。
2) APP切換到後臺,再回到app,檢查功能及應用狀態是否正常,IOS4和IOS5的版本的處理機制有的不一樣。
3) app切換到後臺,再回到前臺時,注意程式是否崩潰,功能狀態是否正常,尤其是對於從後臺切換回前臺資料有自動更新的時候。
4) 手機鎖屏解屏後進入app注意是否會崩潰,功能狀態是否正常,尤其是對於從後臺切換回前臺資料有自動更新的時候。
5) 當App使用過程中有電話進來中斷後再切換到app,功能狀態是否正常
6) 當殺掉app程式後,再開啟app,app能否正常啟動。
7) 出現必須處理的提示框後,切換到後臺,再切換回來,檢查提示框是否還存在,有時候會出現應用自動跳過提示框的缺陷。
8) 對於有資料交換的頁面,每個頁面都必需要進行前後臺切換、鎖屏的測試,這種頁面最容易出現崩潰。
2.4.3免登入
很多應用提供免登入功能,當應用開啟時自動以上一次登入的使用者身份來使用app.
1) app有免登入功能時,需要考慮IOS版本差異。
2) 考慮無網路情況時能否正常進入免登入狀態。
3) 切換使用者登入後,要校驗使用者登入資訊及資料內容是否相應更新,確保原使用者退出。
4) 根據MTOP的現有規則,一個帳戶只允許登入一臺機器。所以,需要檢查一個帳戶登入多臺手機的情況。原手機裡的使用者需要被踢出,給出友好提示。
5) app切換到後臺,再切回前臺的校驗
6) 切換到後臺,再切換回前臺的測試
7) 密碼更換後,檢查有資料交換時是否進行了有效身份的校驗
8) 支援自動登入的應用在進行資料交換時,檢查系統是否能自動登入成功並且資料操作無誤。
9) 檢查使用者主動退出登入後,下次啟動app,應停留在登入介面
2.4.4資料更新
根據應用的業務規則,以及資料更新量的情況,來確定最優的資料更新方案。
1) 需要確定哪些地方需要提供手動重新整理,哪些地方需要自動重新整理,哪些地方需要手動+自動重新整理。
2) 確定哪些地方從後臺切換回前臺時需要進行資料更新。
3) 根據業務、速度及流量的合理分配,確定哪些內容需要實時更新,哪些需要定時更新。
4) 確定資料展示部分的處理邏輯,是每次從服務端請求,還是有快取到本地,這樣才能有針對性的進行相應測試。
5) 檢查有資料交換的地方,均有相應的異常處理。
2.4.5離線瀏覽
很多應用會支援離線瀏覽,即在本地客戶端會快取一部分資料供使用者檢視。
1) 在無網路情況可以瀏覽本地資料
2) 退出app再開啟app時能正常瀏覽
3) 切換到後臺再切回前臺可以正常瀏覽
4) 鎖屏後再解屏回到應用前臺可以正常瀏覽
5) 在對服務端的資料有更新時會給予離線的相應提示
2.4.6 App更新
1) 當客戶端有新版本時,有更新提示。
2) 當版本為非強制升級版時,使用者可以取消更新,老版本能正常使用。使用者在下次啟動app時,仍能出現更新提示。
3) 當版本為強制升級版時,當給出強制更新後使用者沒有做更新時,退出客戶端。下次啟動app時,仍出現強制升級提示。
4) 當客戶端有新版本時,在本地不刪除客戶端的情況下,直接更新檢查是否能正常更新。
5) 當客戶端有新版本時,在本地不刪除客戶端的情況下,檢查更新後的客戶端功能是否是新版本。
6) 當客戶端有新版本時,在本地不刪除客戶端的情況下,檢查資源同名檔案如圖片是否能正常更新成最新版本。如果以上無法更新成功的,也都屬於缺陷。
2.4.7定位、照相機服務
1) App有用到相機,定位服務時,需要注意系統版本差異
2) 有用到定位服務、照相機服務的地方,需要進行前後臺的切換測試,檢查應用是否正常。
3) 當定位服務沒有開啟時,使用定位服務,會友好性彈出是否允許設定定位提示。當確定允許開啟定位時,能自動跳轉到定位設定中開啟定位服務。
4) 測試定位、照相機服務時,需要採用真機進行測試。
2.4.8時間測試
客戶端可以自行設定手機的時區、時間,因此需要校驗該設定對app的影響。
--中國為東8區,所以當手機設定的時間非東8區時,檢視需要顯示時間的地方,時間是否展示正確,應用功能是否正常。時間一般需要根據伺服器時間再轉換成客戶端對應的時區來展示,這樣的使用者體驗比較好。比如發表一篇微博在服務端記錄的是10:00,此時,華盛頓時間為22:00,客戶端去瀏覽時,如果設定的是華盛頓時間,則顯示的發表時間即為22:00,當時間設回東8區時間時,再檢視則顯示為10:00。
2.4.9 PUSH測試
1) 檢查push訊息是否按照指定的業務規則傳送
2) 檢查不接受推送訊息時,檢查使用者不會再接收到push.
3) 如果使用者設定了免打擾的時間段,檢查在免打擾時間段內,使用者接收不到PUSH。 在非免打擾時間段,使用者能正常收到push。
4) 當push訊息是針對登入使用者的時候,需要檢查收到的push與使用者身份是否相符,沒有錯誤地將其它人的訊息推送過來。一般情況下,只對手機上最後一個登入使用者進行訊息推送。
5) 測試push時,需要採用真機進行測試。
2.5效能測試
評估App的時間和空間特性 :
1)極限測試:在各種邊界壓力情況下,如電池、儲存、網速等,驗證App是否能正確響應。 --記憶體滿時安裝App
--執行App時手機斷電
--執行App時斷掉網路
2)響應能力測試:測試App中的各類操作是否滿足使用者響應時間要求 。
--App安裝、解除安裝的響應時間
--App各類功能性操作的影響時間
3)壓力測試:反覆/長期操作下、系統資源是否佔用異常。
--App反覆進行安裝解除安裝,檢視系統資源是否正常
--其他功能反覆進行操作,檢視系統資源是否正常
4)效能評估:評估典型使用者應用場景下,系統資源的使用情況。
5)Benchmark測試(基線測試):與競爭產品的Benchmarking, 產品演變對比測試等。
2.6交叉事件測試 針對智慧終端應用的服務等級劃分方式及實時特性所提出的測試方法。交叉測試又叫事件或衝突測試,是指一個功能正在執行過程中,同時另外一個事件或操作對該過程進行干擾的測試。如;App在前/後臺執行狀態時與來電、檔案下載、音樂收聽等關鍵運用的互動情況測試等。交叉事件測試非常重要,能發現很多應用中潛在的效能問題。
1) 多個App同時執行是否影響正常功能
2) App執行時前/後臺切換是否影響正常功能
3) App執行時撥打/接聽電話
4) App執行時傳送/接收資訊
5) App執行時傳送/收取郵件
6) App執行時切換網路(2G、3G、wifi)
7) App執行時瀏覽網路
8) App執行時使用藍芽傳送/接收資料
9) App執行時使用相機、計算器等手機自帶裝置
2.7相容測試
主要測試內部和外部相容性
1)與本地及主流App是否相容
2)基於開發環境和生產環境的不同,檢驗在各種網路連線下(WiFi、GSM、GPRS、EDGE、WCDMA、CDMA1x、CDMA2000、HSPDA等),App的資料和運用是否正確
3)與各種裝置是否相容,若有跨系統支援則需要檢驗是否在各系統下,各種行為是否一致 --不同作業系統的相容性,是否適配
--不同手機螢幕解析度的相容性
--不同手機品牌的相容性
2.8迴歸測試
1)Bug修復後且在新版本釋出後需要進行迴歸測試。
2)Bug修復後的迴歸測試在交付前、要進行全量用例的迴歸測試。
2.9升級、更新測試
新版版釋出後,配合不同網路環境的自勱更新提示及下載、安裝、更新、啟勱、執行的驗證測試。
1)測試升級後的功能是否與需求說明一樣
2)測試與升級模組相關的模組的功能是否與需求一致
3)升級安裝意外情況的測試(如當機、斷電、重啟)
4)升級介面的UI測試
5)不同作業系統間的升級測試
2.10使用者體驗測試
以主觀的普通消費者的角度去感知產品或服務的舒適、有用、易用、友好親切程度。 通過不同個體、獨立空間和非經驗的統計複用方式去有效評價產品的體驗特性,提升產品的潛在客戶滿意度。
1)是否有空資料介面設計,引導使用者去執行操作。
2)是否濫用使用者引導。
3)是否有不可點選的效果,如:你的按鈕此時處於不可用狀態,那麼一定要灰掉,或者拿掉按鈕,否則會給使用者誤導
4)選單層次是否太深
5)互動流程分支是否太多
6)相關的選項是否離得很遠
7)一次是否載入太多的資料
8)介面中按鈕可點選範圍是否適中
9)標籤頁是否跟內容沒有從屬關係,當切換標籤的時候,內容跟著切換
10)操作應該有主次從屬關係
11)是否定義Back的邏輯。涉及軟硬體互動時,Back鍵應具體定義
12)是否有橫屏模式的設計,應用一般需要支援橫屏模式,即自適應設計
2.11 硬體環境測試
2.11.1手勢操作測試
1)手機開鎖屏對執行中的App的影響
2)切換網路對執行中的App的影響
3)執行中的App前後臺切換的影響
4)多個執行中的App的切換
5)App執行時關機
6)App執行時重啟系統
7)App執行時充電
8)App執行時kill掉程式再開啟
2.11.2網路環境
手機的網路目前主要分為2G、3G、wifi。目前2G的網路相對於比較慢,測試時尤其要注意此塊的測試。
1) 無網路時,執行需要網路的操作,給予友好提示,確保程式不出現crash。
2) 內網測試時,要注意選擇到外網操作時的異常情況處理。
3) 在網路訊號不好時,檢查功能狀態是否正常,確保不因提交資料失敗而造成crash。
4) 在網路訊號不好時,檢查資料是否會一直處於提交中的狀態,有無超時限制。如遇資料交換失敗時要給予提示。
5) 在網路訊號不好時,執行操作後,在回撥沒有完成的情況下,退出本頁面或者執行其他操作的情況,有無異常情況。此問題也會經常出現程式crash。
2.11.3伺服器當機或出現404、502等情況下的測試 後臺服務牽涉到DNS、空間服務商的情況下會影響其穩定性,如:當出現域名解析故障時,你對後臺API的請求很可能就會出現404錯誤,丟擲異常。這時需要對異常進行正確的處理,否則可能會導致程式不能正常工作。
2.12介面測試
服務端一般會提供JSON格式的資料給客戶端,所以我們在服務端需要進行介面測試,確保服務端提供的介面並轉換的JSON內容正確,對分支、異常流有相應的返回值。此塊測試可以採用itest框架進行測試。最方便的是採用httpclient進行介面測試。進行服務端測試時,需要開發提供一份介面文件。
2.13客戶端資料庫測試
1)一般的增、刪、改、查測試。
2) 當表不存在時是否能自動建立,當資料庫表被刪除後能否再自建,資料是否還能自動從服務端中獲取回來並儲存。
3) 在業務需要從服務端取回資料儲存到客戶端的時候,客戶端能否將資料儲存到本地。
4) 當業務需要從客戶端取資料時,檢查客戶端資料存在時,app資料是否能自動從客戶端資料中取出,還是仍然會從伺服器端獲取?檢查客戶端資料不存在時,app資料能否自動從伺服器端獲取到並儲存到客戶端
5) 當業務對資料進行了修改、刪除後,客戶端和服務端是否會有相應的更新。