作者 |熊一衡 華東師范大學軟件工程學院博士
蘇亭 華東師范大學軟件工程學院教授
版塊 |鑒源論壇 · 觀模
01什么是面向界面的圖形化測試(GUI Testing)
圖形用戶界面(GUI) 是一種通過圖形化方式呈現信息、數據、功能和操作的用戶界面,旨在提供更加直觀、友好、易用的體驗,以滿足用戶的需求和期望。圖形用戶界面通常由窗口、菜單、按鈕、文本框、圖標、標簽等組件構成,用戶可以通過鼠標、鍵盤等輸入設備進行交互和操作。GUI界面的設計和布局需要考慮用戶的習慣、視覺效果、易用性等因素,以提供最佳的用戶體驗。
面向界面的圖形化測試是一種常用的軟件測試方法,旨在驗證用戶界面是否符合業務規范和用戶需求,以及驗證應用程序的功能是否正確響應用戶操作,以保證應用程序的質量和穩定性。圖形化測試通常在開發的中后期進行,可以確保應用程序的功能和用戶界面的質量,提高用戶體驗,降低用戶投訴和退款率。此技術可以有效地提高測試效率和測試質量,在各種應用程序的測試中得到廣泛應用。
例如,如果一個用戶訪問京東商城的網站主頁,他將看到導航欄、搜索欄、推薦欄和其他諸多組件。測試人員可以針對不同的關注點來對這個網頁進行圖形化測試。例如,點擊“免費注冊”按鈕,網站是否能彈出相應的注冊網頁,包括導航、搜索、表單、購物車、支付等功能是否能正常響應用戶操作。
通過圖形化測試,可以發現應用中的問題和缺陷,提高應用的質量和用戶體驗,增強用戶的滿意度和忠誠度,從而提高應用的價值和競爭力。
02常見的面向界面的圖形化測試技術
2.1 基于人工的測試
基于人工的測試是一種傳統的軟件測試方式,測試人員通過手動操作應用程序的用戶界面,模擬用戶的行為和操作,來發現和報告應用的問題和缺陷。在實際應用中,應用系統級的功能性問題很大程度上是依靠人工測試找到 [1]。基于人工的圖形化測試需要有經驗的測試人員,能夠全面地覆蓋測試用例和測試場景。然而,測試的效率和準確性很大程度上受到測試人員的技能水平和經驗的影響。基于人工的測試主要包括以下步驟:
(1)理解項目需求和制定測試計劃:測試人員必須分析所有的需求文檔,以便識別軟件的預期行為和需要測試的確切內容。測試人員根據需求和規格說明書,制定測試計劃和測試用例。
(2)測試環境和測試數據準備:測試人員準備測試環境和測試數據,包括安裝和配置測試軟件、準備測試數據、設置測試工具和設備等,以確保測試環境的一致性和穩定性。
(3)手動測試執行:測試人員按照測試計劃和測試用例,手動操作應用程序的用戶界面,模擬用戶的行為和操作,包括點擊、輸入、選擇、拖拽等,以驗證應用程序的功能和性能,并記錄測試結果和異常情況。
(4)缺陷報告和總結:當測試人員發現缺陷的時候,需要根據測試團隊所制定的報告模版生成缺陷報告,包括缺陷的描述、缺陷分類、缺陷級別等等,并跟蹤和確認缺陷的修復和驗證。在測試完成之后,測試人員根據測試的結果生成測試報告并提交給項目團隊。
基于人工的測試的優點包括:測試靈活性高,人工測試可以基于一個功能自己構建不同的測試用例,并且適應不同的程序表現;測試準確性高,自動化測試工具沒有測試人員經驗豐富,人工測試可以更加準確判斷一個應用表現是否為一個程序錯誤;測試反饋及時,可以及時發現和報告軟件缺陷和問題。
然而,基于人工的測試也存在一些缺點,如測試效率低,需要較長的測試時間和測試人員的工作量,當短時間內需要生成大量測試用例時,不適合用人工測試;測試成本高,相對于自動化測試,人工測試需要耗費大量人力和時間;測試可重復性差,測試結果可能受到測試人員的主觀因素的影響;測試覆蓋率有限,可能無法涵蓋所有的測試用例和測試場景。
2.2 基于錄制回放的測試
基于錄制回放的測試通過記錄用戶在圖形界面上的操作,生成測試腳本,然后回放測試腳本到目標應用上來模擬用戶的操作并驗證應用程序的功能。錄制回放測試技術屬于自動化測試的一種形式,不需要人工編寫測試腳本,減少工作人員的工作量,適用于需要重復執行相同測試用例的場景,如回歸測試、性能測試等。錄制回放測試技術主要包括以下步驟:
(1)錄制測試腳本:測試人員打開測試工具,啟動錄制功能,然后在應用程序的用戶界面上進行操作和事件,如點擊按鈕、輸入文本、選擇菜單等,測試工具會自動捕捉和記錄用戶的操作和事件,并生成測試腳本。
(2)編輯測試腳本:測試人員可以對生成的測試腳本進行編輯和優化,如添加斷言、調整等待時間、修改參數等,以確保測試腳本能夠正確地模擬用戶的操作和驗證應用程序的功能和性能。
(3)回放測試腳本:測試人員啟動回放功能,測試工具會自動執行測試腳本,模擬用戶的操作并驗證應用程序的功能和性能,同時記錄測試結果和異常情況。
(4)生成測試報告:測試人員分析測試結果,包括測試通過率、測試覆蓋率等,發現軟件缺陷和問題,并向開發團隊提供測試報告。
錄制回放測試技術的優點包括:測試成本低,不需要會編寫測試腳本的專業人員,測試效率高,可以根據測試人員的錄制自動化生成測試腳本并自動執行測試;測試準確性高,可以模擬真實用戶的操作并驗證應用程序的功能和性能;測試可維護性高,可以快速修改和更新測試腳本和測試數據。
然而,錄制回放測試技術也存在一些缺點,如測試腳本的可靠性和穩定性受到應用程序的變化和測試環境的影響,需要保證測試環境的一致性和穩定性;測試腳本的維護成本較高,應用程序代碼和界面在不斷變化,因此需要不斷更新和優化測試腳本和測試數據來適應這些改變;測試覆蓋度有限,依賴于測試人員的錄制,測試人員一般偏向于錄制一些核心功能和核心步驟。
Selenium IDE [2] 是Selenium Suite下的一款非常受歡迎的開源Web自動化測試工具,其核心功能是錄制回放測試。它不需要用戶有任何編程知識,只需記錄用戶與瀏覽器的交互從而可以快速地創建、執行和調試自動化測試腳本。Selenium IDE提供了一個簡單的界面,可以通過簡單的拖放操作和錄制功能,快速創建自動化測試腳本,無需編寫任何代碼。它支持多種瀏覽器,包括Chrome、Firefo等。此外,Selenium IDE還可以導出測試腳本為多種編程語言的代碼,如Java、C#和Python等。
2.3 基于模型的測試
基于模型的測試是一種自動化測試方法,它利用模型來描述被測試系統的行為和結構,從而生成測試用例,驗證系統的正確性和可靠性。基于模型的測試可以提高測試效率和覆蓋率,減少測試人員的工作量,適用于復雜和多變的應用程序,如嵌入式系統、軟件系統、網絡系統等。
基于模型的測試主要包括以下步驟:
(1)建模:測試人員使用建模工具,根據需求和規格說明書,構建被測試系統的模型,包括功能模型、狀態模型、數據模型等,以描述被測試系統的行為和結構。
(2)模型分析:測試人員對模型進行分析和驗證,包括模型檢查、模型仿真、模型測試等,以發現和修復模型中的錯誤和問題。
(3)測試用例生成:測試人員利用模型生成測試用例,包括基于覆蓋率的測試用例、隨機測試用例、符號執行測試用例等,以覆蓋模型中的所有路徑和狀態,并達到測試目標和測試要求。
(4)自動化測試執行:測試人員使用自動化測試工具,執行生成的測試用例,對被測試系統進行自動化測試,包括功能測試、性能測試、安全測試等,以檢驗被測試系統的正確性和可靠性。
(5)測試報告和總結:測試人員整理測試結果和問題報告,生成測試報告和總結,包括測試通過率、測試覆蓋率、缺陷統計、測試建議等,以提供給項目團隊和管理者參考和決策。
基于模型的測試的優點包括:測試效率高,可以自動生成測試用例和測試腳本,并自動執行測試;測試覆蓋率高,可以覆蓋模型中的所有路徑和狀態;測試可重復性好,可以多次執行相同的測試用例和測試腳本;測試結果準確性高,可以自動化地驗證被測試系統的正確性和可靠性。
然而,基于模型的測試也存在一些缺點,如模型的建立和維護成本高,需要投入大量的人力和物力資源,并且需要建模人員非常了解待測試應用;門檻高,模型的構建需要有非常專業的建模人員,熟練使用各種專業技能 [3];模型的應用范圍有限,可能無法覆蓋所有的測試需求和測試場景。因此,在實際測試中,應根據測試需求和應用程序的特點,綜合選擇不同的測試方法和工具,以提高測試效率和質量。
Fastbot [4] 是一款由字節跳動Quality Lab研發的一款開源的基于模型的GUI測試工具,用于發現手機app中的穩定性問題。Fastbot將app的GUI信息抽象成模型中的state,將執行的動作抽象成模型中的action,然后基于構建的模型生成測試用例,并提供多種算法策略,目標是達到較高的 Activity 覆蓋率及較強的問題發現能力。同時,Fastbot還支持跨平臺測試,在海量設備上多機協同測試。Fastbot也利用了圖像檢測技術來支持較豐富的圖像 UI 異常檢測能力(黑白屏、圖像重疊、控件遮擋等等)。
03面向界面的圖形化測試的挑戰
根據statista網站上的報道,48%的移動應用測試人員將圖形化界面看作主要的測試關注點[5]。面向界面的圖形化測試在應用的功能和質量起著至關重要的作用,在實際應用中也存在不少挑戰:
(1)代碼和設計變更:鑒于應用界面以及功能的頻繁更新,測試人員需要不斷調整測試腳本以適應新的測試場景。
(2)錯誤處理:當測試復雜應用程序時,可能會遇到各種程序問題,來干擾測試進行,如何處理這些問題是一個常見的難題。
(3)測試工具與被測軟件的同步問題:測試工具與測試對象之間如果同步出了問題,很可能會導致測試失敗,影響測試結果的準確性 [6]。
(4)依賴于測試工具:首先需要選用合適的測試工具,并對測試的應用進行相應的定制和配置。
(5)需要專業技能:需要具備一定的編程和測試技能,才能進行測試腳本編寫和自動化測試工具的配置和使用。
(6)多樣性:不同的軟件界面設計不同,測試人員需要熟悉各種不同的界面風格和交互方式。
04總結
面向界面的圖形化測試技術已經成為各種應用程序測試的重要手段之一。這種測試技術廣泛應用于各種應用程序的測試中,特別是對于那些用戶界面比較復雜、交互性比較強的應用程序,如游戲、手機app、網站等。此技術可以有效地提高測試效率和測試質量。盡管取得了巨大進展,但該測試技術仍然面臨著許多挑戰,學術界和工業界也在不斷探索嘗試各種新的技術和方法,以提高測試的效率和質量。
參考文獻:
[1] Itkonen J, Mantyla M V, Lassenius C. How do testers do it? An exploratory study on manual testing practices[C]//2009 3rd International Symposium on Empirical Software Engineering and Measurement. IEEE, 2009: 494-497.
[2] Selenium IDE
[3] Dias Neto A C, Subramanyan R, Vieira M, et al. A survey on model-based testing approaches: a systematic review[C]//Proceedings of the 1st ACM international workshop on Empirical assessment of software engineering languages and technologies: held in conjunction with the 22nd IEEE/ACM International Conference on Automated Software Engineering (ASE) 2007. 2007: 31-36.
[4] Fastbot https://github.com/bytedance/Fastbot_Android.
[5] “Focus areas for testing mobile applications from 2013 to 2017”
[6] Alégroth E, Feldt R, Ryrholm L. Visual gui testing in practice: challenges, problemsand limitations[J]. Empirical Software Engineering, 2015, 20: 694-744.
審核編輯黃宇
-
測試技術
+關注
關注
0文章
113瀏覽量
21042 -
圖形化
+關注
關注
0文章
56瀏覽量
14205 -
GUI
+關注
關注
3文章
648瀏覽量
39549
發布評論請先 登錄
相關推薦
評論