1. 程式人生 > >Web測試轉App測試不看不知道

Web測試轉App測試不看不知道

# Web測試 Web通常指的是網際網路應用系統,比如稅務電子化徵管檔案系統、金融資料平臺、餐飲商家管理後臺等等,其實質是C/S的程式。 C是Client——客戶端,S是Server——伺服器。 Web中的客戶端一般指的是Browser——瀏覽器,也就是B/S。 Web系統有三層結構 == 表示層 + 業務層 + 資料層。 MVC軟體設計模式也是三層 == 模型 + 檢視 + 控制器。 它們的對應關係如下,不完全準確,簡單意會意會即可, ![1593469587793_副本](https://img2020.cnblogs.com/blog/1629545/202008/1629545-20200807215913903-1526355188.jpg) 測試的一個重要思路是,瞭解被測物件的架構,Web系統典型架構如圖所示, ![1593470884765_副本](https://img2020.cnblogs.com/blog/1629545/202008/1629545-20200807215914255-1744798062.jpg) 這個圖很重要,多看幾秒!想想這些問題, 我測試覆蓋的是哪些地方? 有哪些環節是漏掉的? 瀏覽器從請求到響應,這個過程是怎樣一個鏈路? ## 測試難點 Web測試,不僅僅是頁面的點點點。 面對這樣複雜的系統,如何保障質量,使系統健康的、長期的、穩定的執行,是測試的難點。 業務複雜度本身就是難點,而且這是測試核心中的核心。 安全、效能的評估,也是一個棘手的難點。 網站使用者的能力,包括瀏覽器、作業系統、裝置、網路頻寬都可能是參差不齊。 網路中斷,或弱網情況下,網站的表現。 網站本身的應用日誌、系統資源、冷熱資料。 引入的第三方程式的質量,雖然可以直接用,但仍需做黑盒測試。 國際化差異,如語言、時差、貨幣兌換。 你要考慮的不是一個點,也不是一個面,而是一個整體。 ## 表示層 表示層的測試物件包括了, - UI(User Interface)使用者介面 - UE(User Experience)使用者體驗 - UED(User-Experience Design)使用者體驗設計 簡而言之就是,系統的外觀和感覺。 更專業具體點,就是整體審美、字型、連結跳轉、圖形解析度和大小、色彩、拼寫檢查、文字語法和風格、游標位置、選中預設按鈕、互動操作體驗友好、商業特定術語和風格、確認框、瀏覽器版本、作業系統配置等。 表示層的測試主要以人工為主,部分測試也可以通過工具完成,如無效連結檢測。 ## 業務層 業務層包括內部業務和外部服務,內部業務和外部服務都需要經過測試。 內部業務就是實實在在的業務,每個公司的業務都有差異。 業務測試是貫穿於測試周期自始始終的。 最開始測試考慮的是業務,測試結束考慮的也還是業務。 業務層測試是用到測試用例設計方法最多的,包括等價類劃分、邊界值、判定表、因果分析、場景法等。 同時也需要做效能測試,考察響應時間、吞吐率等效能指標。 毫不誇張的說,無業務,不測試! ## 資料層 資料層主要乾的事就是讀寫資料。 資料層的資料既包括系統自產的,也包括從使用者收集來的資料。 資料是存放在資料庫伺服器裡邊的,包括RDBMS、NoSQL。 資料模型定義了資料層介面和資料儲存方式。 資料可以直接使用,但往往是經過了ETL對資料進行加工。 資料層的測試是有一些門檻的,但一些隱藏的bug就藏在這一層。 首先需要測試的是資料儲存的正確,其次需要測試冗餘資料的清理,還有資料狀態的變化。 資料庫的效能,sql的耗時,資料量大小,資料冷熱。 資料庫的資料型別,長度、精度、字符集、日期時間格式、時區等。 資料庫的安全,資料加密和安全性。 還有資料庫的魯棒性,故障處理,備份恢復能力,最大化MTBF,最小化MTTR。 # App測試 ## 網路 App測試還是從架構入手,先看看App的典型的無線運營商網路架構, ![2020-07-28_211128_副本](https://img2020.cnblogs.com/blog/1629545/202008/1629545-20200807215914588-588552643.png) 行動網路,是App區別於Web應用的重要差異。 行動網路的通訊協議並不是基於IP的,而通常是一種基於射頻的協議。 如, - CDMA(Code Division Multiple Access)分碼多重進接 - TDMA(Time Division Multiple Access)分時多重進接 - GSM(Global System for Mobile)全球移動通訊系統 - 4G (the 4th generation mobile communication technology)第四代移動通訊技術 很多運營商都使用某種程式碼轉換器或Web代理來進行移動裝置與網際網路的通訊。但是因為競爭的關係,運營商一般不會披露這些細節。他們可能會“偷偷”幹這些事, - 將資料轉換成WAP或HTTP支援的格式 - 壓縮資料為了更快地傳輸和提高吞吐量 - 資料傳輸加密和隱私保護 - 遮蔽一些佔用過高頻寬的站點 - 從網頁中抽取HTML頭資訊和其他元資料以供程式使用 WAP,是指Wireless Application Protocal,無線應用協議,已經過時。 現在大多數都使用HTTP協議了。 正是由於行動網路的存在,以及不同使用場景下網路狀態的不穩定,在測App時,需要做弱網測試。 弱網包括無網(斷網)、弱網(2G 3G 4G)、網路切換。 ## 裝置 App測試和Web測試,另外一個明顯的區別就是,移動裝置非常豐富。 不同的機型。不同的螢幕。不同的版本。不同的系統。不同的CPU記憶體。不同的瀏覽器。不同的配置。 App是To C的,也就意味著使用環境無法統一控制,是千差萬別的。 這對測試來說是很大的挑戰,以至於有漫畫調侃,高階測試工程師,可以轉行賣手機了! 不過好在有模擬器,有云測平臺,減少了測試裝置相容性的成本。 模擬器也不是銀彈,不能替代真機,所以App必須在真機上面跑過才算ok。 真機和模擬器,各有利弊,需要做必要的權衡。 可以先用模擬器完成大量測試,最後使用真機做驗收。 用真機測試還需要注意的一個小問題就是,測試用例設計的儘量有效,不然每一次重複測試,就很可能在燃燒你的經費。 ## 測試方法 App測試和Web測試有很多共同的地方,尤其是業務層和資料層。 不過由於網路和裝置等因素,讓App測試也有一些特殊的場景, | 測試分類 | 說明 | | -------------- | ------------------------------------------------------------ | | 安裝/解除安裝 | 確保使用者可以正確的安裝應用程式
確保使用者可以完全解除安裝應用程式
測試安裝中斷後能否恢復正常
測試解除安裝能否中斷 | | 網路基礎設施 | 證實應用程式在網路丟失的情況能夠正確響應
證實應用程式能夠正確響應網路回覆的情況
證實應用程式能夠在網路訊號差的情況下正確響應 | | 來電和簡訊處理 | 測試使用者能夠在應用程式執行的情況下接電話以及回簡訊
測試使用者能夠在處理完來電和簡訊之後能否返回應用程式
測試使用者能否在不中斷應用的情況下取消來電和簡訊
測試使用者能否在不退出應用程式的條件下撥打電話和簡訊 | | 記憶體不足 | 確保應用程式在裝置記憶體不足的情況下仍然能夠穩定工作 | | 按鍵 | 測試所有的熱鍵按照產品規格書實現 | | 退出 | 檢查程式能夠正常退出(通過按鍵合屏或滑塊鎖屏)
確保在機器關閉的情況下應用程式的行為和設計規格說明書上一致 | | 充電 | 確保程式在切換到充電模式時工作正常
確保程式能夠在充電狀態下正常工作
確保程式在退出充電模式時不會發生異常 | | 電量 | 測試在電量不足的情況下應用程式的行為表現
計算應用程式將用多長時間耗盡電量
確保在電池突然拔出的情況下應用程式的反應和說明書一致 | | 硬體資源 | 確保應用程式沒有過度佔用CPU
確保應用程式不消耗過多的記憶體資源 | | 升級 | 確保靜默升級、提示升級、強制升級情況下升級成功
確保補丁包、全量包升級成功 | # 電子商務術語 B2B、B2C、C2C、O2O是電子商務的4種模式。 B2B,Business to Business,企業對企業,如經銷商銷貨給超市。 B2C,Business to Customer,企業對個人,如超市賣東西。 C2C,Customer to Customer,個人對個人,如擺地攤。 O2O,Online to Offline,線上到線下,如網上點個豆漿早餐到肯德基取。 B端-->
企業端。 C端-->個人端。 G端-->政府端。 *參考資料* *——《軟體測試的藝術》* 專注測試,堅持原創,只做精品。歡迎關注公眾號『東方er』
版權申明:本文為博主原創文章,轉載請保留原文連結及