最全APP測試思想及流程要點,高薪測試人員一定要看!

博為峰網校發表於2021-06-01

App已經滲透到每個人的生活、娛樂、學習、工作當中,APP作為現如今幾乎最廣泛的應用程式,在所有的移動平臺上都有應用,並且以極高的速度增長。但是作為程式而言,出現的時間並不是非常久。很多原有的軟體測試流程和思想無法直接套用在APP的測試中,因為和一般的PC端軟體相比,APP又具有很多特殊的屬性。加我VX:atstudy-js 回覆“測試”,進入軟體測試學習交流裙~~

例如,傳統軟體針對不同的平臺甚至系統,都會有完全對應的版本,而APP一般對於系統版本並不敏感;其次,APP基本都是輕量化開發,無需複雜的設定或者除錯,往往都是傻瓜化安裝,上手難度極低;另外,APP的執行環境基本上是以無線連線為主(3/4/5G,WiFi),對於網路連線的速度比較敏感……這些都是和傳統軟體並不一致的地方。

所以,APP作為一個特殊種類的軟體,是有必要單獨總結出來測試方法和測試思路的,這對於測試物件為APP的測試工程師來說,是十分必要的。

一、 APP測試思想

APP測試實際上依然屬於軟體測試的範疇,是軟體測試的一個真子集,所以經典軟體測試理論,依然是在APP測試中有效的,只是需要針對APP的特殊情況進行一定的增補和額外覆蓋。

對於APP測試,一般採用的是黑盒測試思想,也會在必要的時候進行自動化測試以及效能測試,並且對於APP還會有專項測試,例如記憶體,流量以及耗電量測試。

APP測試也是需要進行功能測試的,其功能測試與傳統功能測試是同樣的測試流程和標準,並沒有很大的區別。

二、 APP測試流程

1. 測試流程圖

2. 測試預備條件

在軟體測試中,測試預備條件是經常被忽略的方面,以至於很多測試都會在這裡被阻塞。所以在APP測試中,因為牽扯的預備條件比傳統軟體更多些,更需要額外精力進行事先準備。

在測試任務開始前,所具備的測試資源應該著重檢查,包括但不限於:功能需求文件、功能需求說明、測試裝置、測試方案、測試環境、測試人員等。

3. 測試範圍

測試範圍是APP中一個比較重要,卻經常容易被忽略的方面。APP作為與移動平臺進行適配的軟體,是有針對平臺範圍和版本範圍的。

當前移動平臺大體分為安卓、iOS和其他型別(例如Blackberry/Windows Phone/Symbian/…),其中安卓又分為原生系統、改造系統(EMUI/MIUI/Flyme/…)。這些不同的改造平臺與安卓原生系統存在著版本對應關係。而其他份額較小的系統型別,則存在自己的版本演進體系,針對這些系統的測試,需要花費一定的精力進行梳理版本脈絡。

安卓系統本身還存在著版本演進,改造版本除了自身的版本演進之外,還和安卓原生版本存在著對應的關係,許多在原生系統中覆蓋的版本範圍,在改造系統中,並不是嚴格一一對應的。

所以在APP測試中,要特別注意測試物件所覆蓋和針對的系統版本以及對應平臺,尤其是對於測試裝置本身硬體的要求,要格外注意。

三、 APP測試點

針對APP的特點,主要有一下四個方面是APP軟體的測試重點,分別是:功能測試、效能測試、介面/易用性測試和相容性測試。這基本上已經涵蓋了APP測試中所要重點關注的指標,如下圖所示:

1、 功能測試

2、 效能測試

3、 介面/易用性測試

4、 相容性測試

這些測試點包括了我們針對APP進行測試的所有關鍵點。按照APP的架構來分,基本上分為前端和後端兩大部分,這兩大部分的專案中,有數項作為基礎覆蓋項,是需要在每次的測試中都必須進行測試的:安裝/解除安裝測試、UI測試、標稱功能測試、標稱效能測試、安全測試、相容測試、升級更新測試、使用者體驗測試、硬體操作測試、介面測試和資料庫測試。

在敏捷測試理論中,功能測試是往往被單一劃分出來的,軟體測試首先被劃分為功能測試和非功能測試兩大類,其餘的測試內容都是從非功能測試中細分出來的。

作為軟體測試工程師來說,再將測試內容劃分為前端和後端,再將這些測試種類分別對應到前後端中,再進行對應測試,是非常高效且可以杜絕測試漏項的方法。

在早期的APP測試中,手工測試是用來進行APP測試的不二法門,軟體的手工測試極為重要。但隨著技術的不斷髮展和自動化測試技術的不斷深入,之前採用的一些測試方法,已經可以採用自動化測試的辦法進行覆蓋和替代,大大降低了測試工程師的負載,也提高了效率。但是手工測試依然是不可替代的,因此,從手工測試開始瞭解和認知APP測試,是非常有必要且關鍵的。

四、 APP測試點分項

對於APP來說,不同用途的APP所側重的測試方面也是非常不同的,另外,不同的使用者可能對於同一款APP的使用習慣也存在不同之處。對一款APP來說,可能使用者具體的使用場景會遠遠超過專案開發團隊的預想,所以在測試過程中,場景的完備考慮和多場景的互動以及有側重地進行測試是十分必要的。

從一款APP被指定要被測試開始,我們就進入了測試準備階段,這就要求測試工程師在方案預想中,要儘可能多地考慮。

1.安裝解除安裝測試

對於APP的應用來說,最先進行的就是安裝及解除安裝測試,這是APP運營和測試的開始,並且針對不同的平臺,APP應該提供相應的版本以及適配版本說明。因為考慮產品版本更新迭代速度,產品都會向下相容較為早期的版本,所以一般不會註明所支援的最初版本。這一點與一些更新並不頻繁的APP不同,需要注意,特別是經過魔改的安卓版本。

在這一點上,需主要考慮的是不同的安裝途徑、不同的系統版本、不同的安裝方式(包括但不限於透過應用市場、APK檔案卡載、藍芽分享)、不同的解除安裝方式等。

安裝測試還會涉及到一個場景,就是升級。在專案中版本升級是一個極為重要的測試項,需要注意的是,每次版本的迭代都需要對升級進行檢測,去驗證升級之後主要功能是否正常。一般多用冒煙測試進行驗證。加我VX:atstudy-js 回覆“測試”,進入軟體測試學習交流裙~~

一般情況下,正常使用者升級自己的軟體透過三種途徑:

1)根據APP彈出的升級提示框選擇升級

2)自己到應用商店或者其他渠道下載升級

3)強制升級。然而其本質都是:覆蓋安裝。

具體則是將最新的APP下載到手機的記憶體上,然後安裝覆蓋掉舊版本的APP。

而這些測試的主要測試點則集中在:

1)正常版本升級

2)跨主版本/次版本升級

3)強制升級

2.UI測試

UI是APP呈現給使用者最直觀的方面,因此這裡的檢查是最需要耐心和細緻的,因為非常容易因為視覺疲勞而產生漏檢。

檢查UI圖片,icon,文字,佈局等UI元素與效果圖是否一致,以及在不同解析度和橫豎屏顯示狀態下,是否存在變形、錯行、字元丟失等問題。一般UI方面不會存在特別嚴重的問題,這反而是非常容易被忽略的原因。

3.功能測試

功能測試是對APP的最主要的測試,每項新開發/升級/改動的功能都需要進行測試。測試時,測試工程師把APP當作"黑盒"一樣進行手動測試,看看提供的功能是否正確並如設計的一樣正常運作,而事實上,功能測試也往往就是以黑盒測試為基礎的。這裡需要注意的是,在功能測試過程中,只要是和需求說明不一致的地方,都是缺陷,而不是隻要能正常操作就是透過測試的。

測試工程師除了手動測試之外,後期的自動化測試維護也是需要的。除了經典軟體測試,像點選按鈕、提交訂單等等,也是需要進行覆蓋測試的。有關功能測試的內容和驗證點,需要和BA對需求進行細節的確認。

測試中非常常見的迴歸測試,也往往針對功能測試,所以功能測試是整個APP測試中的重中之重。在敏捷測試中,往往也將測試內容分為功能測試和非功能測試兩大類,由此可見功能測試的地位。

4.效能測試

APP應用是否優秀,不僅僅體現在功能性上,也包括效能。如果效能表現不夠穩定,則會在影響部分使用者的使用體驗。

與APP架構相關,這裡的效能包括客戶端和服務端兩大部分,客戶端效能是關注APP在不同型別裝置不同型別平臺上的效能表現。服務端效能測試其實和一般的服務端效能測試專案並無二致,都是為了考察專案或介面服務在大量使用者併發訪問下的服務端表現。

效能測試基本上普遍的測試點包含:CPU/記憶體佔用,介面切換流暢度,流量/電量消耗,啟動時間等。

應用的流量消耗是使用者的一個重要關注點,一是節省使用者的使用成本,二是流量最佳化能帶來響應速度的最佳化,三是能清楚的知道每個場景需消耗的流量,確認是否有能最佳化的空間。

客戶端流量測試的測試點主要有以下幾點:

1)首次啟動到全部載入完成耗流(冷啟動)

2)非首次啟動到全部載入完成耗流(熱啟動)

3)後臺執行耗流

4)執行某個場景消耗的總流量

有關伺服器端的效能測試,則一般依賴JMeter或LoadRunner等。

5.安全測試

APP專案上線前,一般也會針對專案內容的不同,不同程度地展開反編譯性、資料安全、鍵盤安全、通訊保密性及安全策略等方面的驗證。對於APP專案的安全測試,如果沒有特別的安全團隊,可以透過現有各大廠商提供的安全檢測平臺或者工具進行基礎或較高階位的安全測試。

對於一般APP則主要是透過利用一些安全輔助平臺對被測應用進行測試,主要用到兩個安全輔助平臺:騰訊哈勃分析系統 和 VirusTotal(可疑檔案分析服務的網站)以及drozer(安全測試工具)。

1)將APP在 掃描,獲取報告;

2)將APP在 https://habo.qq.com/ 掃描,獲取報告;

安全測試是一個和其他測試內容相對獨立的領域,一般而言,安全測試團隊會獨立於其他測試團隊進行設定,所以作為安全測試人員,可以在這一點做更深入和細緻的瞭解。

6.相容測試

相容性測試主要是對APP在各種平臺各類機型上的相容、適配等情況進行測試,所有最終是交付給使用者的APP,每次迭代,就會有若干版本在使用者中流轉,如果沒有強制線上升級,那麼就會出現多個版本並存的局面。

按照軟體開發原則,新版本的開發不應該影響到舊有版本,尤其是出現新版本改動比較大,或者重構應用的時候,對老版本進行迴歸測試也是必不可少的測試點,當然並不是要測試到每個點,修改的部分需著重測試,可以和開發溝通了解可能影響的點,有針對性地測試,也可以採用冒煙測試,所以相容性測試也是一個很重要的測試項。

相容性測試常見的是:裝置型號, 移動端裝置的系統版本、移動端APP的新舊版本、螢幕尺寸, 螢幕解析度, 網路型別及軟硬體相容性等。

針對個人開發者、初創公司,以及App比較單一的公司,沒有足夠多的測試機,是可以使用相容性雲測服務的。目前很多的公司,已經提供了相容性雲測服務,例如TestIn、TestBird,除此,大型公司也對外推出自己的測試工具,比如谷歌、騰訊WeTest、百度MTC、阿里MQC等等。

7.使用者體驗測試

使用者體驗測試是一個較為主觀的測試內容,從使用者使用角度出發,感知產品或服務的易用性,人機互動和人體工程學方面的測試。大致可以分為介面設計、功能易用、橫豎屏切換、系統功能響應等。細節方面甚至包括提示資訊展示樣式、操作動線軌跡等等的測試。

8.介面測試

這是一個比較深度的測試內容,往往是在測試初始階段就要介入的,因為APP的資料交換成功與否,和介面能否實現正確呼叫息息相關。

介面測試的主要內容是測試模組或子系統組裝後,功能以及模組間介面的呼叫是否正確,將模組組裝起來,對與設計相關的APP體系結構的構造進行測試。在這裡主要使用的工具是Postman和JMeter。

9.資料庫測試

資料庫測試其實主要是基於介面測試的結果,當介面測試成功透過之後,對資料庫進行資料查驗及確認,這裡需要使用資料庫工具,具體則是在前端進行針對資料的增刪查改操作之後,到後端資料庫進行驗證。

需要額外注意的是,如果是直接對資料庫進行操作測試,是存在將不符合業務邏輯的資料引入資料庫的可能,這會帶來不可知的風險。所以資料庫測試,尤其是增刪改這樣的操作,嚴禁隨意在生產/正式環境中進行。

10.穩定性測試

作為一款高使用度的APP,率先考慮的非功能性指標是穩定性,對於APP來說,如果是關注線上活躍度和使用者活躍時間的,那麼穩定度也是一個非常需要關注的點。這個測試點的指標和認知是與產品定位高度相關的,作為測試工程師來說,這一點必須注意。

穩定性測試是指對應用進行長時間的操作,檢測功能是否穩定。一般穩定性測試時間是 N*12小時。專案中穩定測試多采用Monkey,進行隨機測試。

以上羅列出了APP的重要重點測試方法,一個版本的迭代到上線,最終要輸出測試透過的報告,才會sign off正式上線。

測試報告中應包含了專案團隊這本次版本的所有內容。而測試工程師也恰恰回會透過這個報告來對自己的測試內容進行查漏補缺。

在APP測試過程當中,除了本文提到的諸多測試內容之外,類似功耗測試、記憶體+CPU測試和記憶體洩漏測試等,也都是需要重點關注的。

一個成熟的、推向市場的APP,必須經過各個方面的錘鍊和檢驗,才能獲得使用者的認可,而這個認可的背後,就是測試工程師對於APP測試的把握。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31407649/viewspace-2774960/,如需轉載,請註明出處,否則將追究法律責任。

相關文章