移動應(yīng)用的測試策略與測試架構(gòu)

今天我們來談?wù)勔苿訙y試的測試策略與測試架構(gòu)。

首先我們將移動應(yīng)用的范圍限定在智能移動操作系統(tǒng)(比如Android、iOS、WinPhone等)上,包括手機應(yīng)用,智能設(shè)備應(yīng)用等。

智能手機和智能設(shè)備的普及需要大量的應(yīng)用來支撐。隨著應(yīng)用數(shù)量的增多,業(yè)務(wù)復(fù)雜度的提高,移動應(yīng)用也越來越需要各種測試來保證應(yīng)用以及設(shè)備本身的正確和穩(wěn)定運行。因此移動應(yīng)用測試的需求也越來越大,大量關(guān)于移動應(yīng)用測試的書籍應(yīng)運而生,比如《Android移動性能實戰(zhàn)》《騰訊iOS測試實踐》、《移動APP性能評測與優(yōu)化》、《深入理解Android自動化測試》、《精通移動App測試實戰(zhàn):技術(shù)、工具和案例》等。

這些書都介紹了大量的移動應(yīng)用測試實踐,但是無論看多少本書,學(xué)習(xí)多少種測試方法、測試技術(shù)或者測試工具和框架,首先還是需要學(xué)習(xí)并使用測試策略與測試架構(gòu)。如果沒有在一開始制定好的測試策略和測試架構(gòu),而是盲目進行各種測試,很有可能事倍功半。

image.png

對于移動應(yīng)用,首先它本質(zhì)上也是軟件系統(tǒng),所以通用的軟件測試方法技術(shù)都可以使用。其次它又擁有嵌入式的特征,比如開發(fā)需要交叉編譯、需要遠程調(diào)試、硬件資源相對不足等。所以移動應(yīng)用的測試也有其特殊之處,比如也需要交叉編譯、遠程測試以及各種硬件相關(guān)測試等。對應(yīng)的移動應(yīng)用的測試策略和測試架構(gòu)也有其特殊性之處。

制定測試策略

我將移動測試分為三種類型,分別是基礎(chǔ)測試、進階測試和產(chǎn)品測試,其中基礎(chǔ)測試是產(chǎn)品能正確并快速交付的基本保障,擴展測試主要是為了增強軟件系統(tǒng)的健壯性,而產(chǎn)品測試主要是通過產(chǎn)品角度以及用戶角度去思考而進行的測試。下面分別列舉了常見的三種類型測試。

基礎(chǔ)測試

  • 功能測試 (Function Test)[1] 。
  • 集成測試(Integration Test )
  • 單元測試(Unit Test)
  • 契約測試(Contract Test)[2]

進階測試

  • 兼容測試(Compatibility Test)
  • UI視覺測試(UI Visual Test)
  • 性能輪廓(Profiling)
  • 安全測試(Security Test)
  • 異常測試(Exception Test)[3]
  • 猴子測試(Monkey Test)
  • 安裝、升級和卸載測試(Install、Upgrade and Uninstall Test)
  • 耐久測試(Endurance Test)
  • 耗電測試(Power Consumption Test)
  • 流量測試(Network Traffic Test)
  • 其他硬件功能專項測試[4]

產(chǎn)品測試

  • 易用性測試(Usability Test)
  • A/B測試(A/B Test)
  • 產(chǎn)品在線測試(Product Verification Test or Product Online Test)
  • 用戶測試(Customer Test)[5]

對于一個中小型項目來講,很多時候資源都是十分有限的,很難做到全面類型的測試,大型項目更是如此,更難有足夠多的資源做所有類型的測試。而且可能還由于團隊人員的技術(shù)能力不足,或者所擁有的測試相關(guān)的技術(shù)棧的局限,以及開發(fā)測試環(huán)境和軟件系統(tǒng)架構(gòu)的限制,有些類型的測試是無法進行的。

所以,制定測試策略的關(guān)鍵點在于根據(jù)質(zhì)量需求的優(yōu)先級,并參考團隊的各種限制來指定。

首先通過和PO、PM等進行討論得到產(chǎn)品質(zhì)量需求的優(yōu)先級,然后根據(jù)優(yōu)先級指定相應(yīng)類型的測試。再根據(jù)團隊的資源、項目周期、技術(shù)能力以及各種限制來制定相應(yīng)的測試方法和測試技術(shù),其中包括使用自動化測試還是手動測試、使用什么測試工具和測試框架、測試的范圍和程度等。

下表是一個典型手機應(yīng)用的測試策略表的樣例(這個只是一個模擬項目的樣表,真實項目中的各類信息應(yīng)該更多,并且可以根據(jù)具體情況添加新列。并且注意,這些測試并不一定由測試人員或者QA來做,應(yīng)該由整個團隊一起協(xié)作完成):

image.png

表中的質(zhì)量需求優(yōu)先級的獲取是一個比較繁瑣的過程,需要和各個利益相關(guān)者一起討論并且協(xié)商獲得。

根據(jù)這個測試優(yōu)先級表,就知道應(yīng)該把資源優(yōu)先投入到高優(yōu)先級的測試中。等高優(yōu)先級的測試做到團隊可以接受的程度后,再按照優(yōu)先級做下一個類型的測試。這個表中的優(yōu)先級在開發(fā)過程中不是絕對不變的。如果PO、PM等利益相關(guān)者對于產(chǎn)品質(zhì)量需求的優(yōu)先級發(fā)生了改變,在得到團隊同意后,還需要改變這個表中的測試優(yōu)先級。所以需要經(jīng)常與團隊更新測試進度,并及時獲得團隊各個角色對于測試和產(chǎn)品質(zhì)量需求的反饋與更新。

其次可以根據(jù)測試金字塔等模型來思考不同類型測試之間的關(guān)系和工作量,但是很多情況下也可以不用參考這些測試模型,因為移動應(yīng)用的復(fù)雜度一般不會特別高,并且當前大多數(shù)情況下,移動應(yīng)用中復(fù)雜的業(yè)務(wù)邏輯都會盡量在服務(wù)器端進行處理,所以移動應(yīng)用很多時候只是一個用戶交互系統(tǒng),所以應(yīng)該盡可能的完成會影響用戶使用的E2E流程測試,然后再繼續(xù)做其他類型的測試。

但是對于在移動應(yīng)用中實現(xiàn)復(fù)雜業(yè)務(wù)的項目,測試策略還是應(yīng)該盡量思考測試類型之間測試用例重復(fù)的問題,盡量避免重復(fù)的用例,降低測試成本。

制定測試架構(gòu)

通過測試優(yōu)先級表,我們獲得了簡易版的測試策略,然后就應(yīng)該制定測試架構(gòu)了。由于嵌入式軟件的特殊性,其測試架構(gòu)也與常規(guī)的桌面系統(tǒng)和服務(wù)器系統(tǒng)有一定的區(qū)別。下圖為針對上面樣列測試策略相對應(yīng)的功能測試架構(gòu):

image.png

圖中只針對功能測試進行了進一步的詳細架構(gòu)設(shè)計,并沒有對其他測試比如集成測試、兼容性測試和穩(wěn)定測試等進行詳細架構(gòu)設(shè)計,感興趣的讀者可以根據(jù)自己項目的實際情況自己嘗試一下。

通過這個架構(gòu)圖,可以比較系統(tǒng)以及直觀的了解各種類型測試的分布、關(guān)系和測試系統(tǒng)的架構(gòu)等。

然后配合測試優(yōu)先級表就可以較好的指導(dǎo)團隊進行有效的測試,比如制定更好的測試計劃,制定更適合的自動化測試系統(tǒng)等。并且還可以更有效的評估產(chǎn)品質(zhì)量,比如什么類型的測試沒有做,那么那些特定方面就存在較高的風(fēng)險。

不過任何軟件系統(tǒng)都是存在缺陷和風(fēng)險的,關(guān)鍵是看這些缺陷對于開發(fā)商和用戶產(chǎn)生的影響有多大,風(fēng)險是不是在可控范圍內(nèi)的。永遠不要嘗試去找到所有缺陷并消除,而是要從風(fēng)險大小、影響程度等各方面綜合考慮,增加團隊對于產(chǎn)品質(zhì)量的信心,并且不要對客戶產(chǎn)生嚴重的大范圍的影響。

注:

[1]. 后臺常住應(yīng)用測試也屬于功能測試。

[2]. 單機應(yīng)用可以不用考慮做契約測試。

[3]. 異常測試包括弱網(wǎng)測試,比如低速網(wǎng)絡(luò)信號、網(wǎng)絡(luò)時斷時續(xù),網(wǎng)絡(luò)切換以及無網(wǎng)絡(luò)等,突然斷電等。

[4]. 其他硬件功能專項測試包括硬件功能關(guān)閉,硬件功能異常等。

[5]. 用戶測試包括收集用戶使用信息,并生成用戶真實使用的測試用例來對系統(tǒng)進行測試。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容