如今,幾乎所有的商業軟體都有乙個圖形使用者介面(gui)。從使用者的角度看,乙個直觀的功能正確的gui往往比軟體的功能更重要。根據**「
a comprehensive framework for testing graphical user inte***ces
」 的統計顯示,gui通常佔總**量的45% - 60%。測試gui**對於軟體測試開發工程師而言,既獨特又富有挑戰。
首先,在軟體開發周期中,gui的改變是絕對的,而穩定則是相對的。在使用者進行beta版本的試用時,他們的反饋往往集中在使用者體驗即gui上。而與之相對應的是,開發人員也樂意修改這樣的問題因為其開銷通常相對可以控制。但是,這給測試組帶來了極大的挑戰。他們不但要確保最小的回歸(regression)風險,而要承擔諸如更新測試用例和自動化等額外的工作[2]。
再則,管理大量的gui測試用例也是個難題。 gui上乙個貌似簡單的改變,會影響到幾百個已有的測試用例。根據我們的經驗,軟體產品的測試用例中,25%甚至更多都是gui相關的,其中80%的都可以自動化。在軟體開發周期中,乙個對話方塊可能會改變多次,其相應的管理成本也隨之水漲船高。
最後,傳統的測試標準可能不能很好的對gui測試進行評估。比如: 通常測試經理認為70%以上的**覆蓋率為可以接受的測試結果,然而對於gui來說,你只要簡單通過開啟每乙個對話方塊,就可以達到較高的**覆蓋率。由此可見,**覆蓋率和gui測試覆蓋的層次、深度沒有直接的關係,還必須採用其他的測試標準。
現在已經有了一些關於gui測試方面的研究,例如,
guitar專案
。guitar利用模式對話方塊的屬性去獲得「事件流圖」,然後圍繞「事件流圖」自動生成測試用例。但是,guitar可能不適合非模式對話方塊為主的軟體 (比如基於mmc開發的
gui),而且它也缺少系統的途徑去管理整個測試過程。
這篇文章介紹了一套gui測試工具集,我們內部將它命名為「tao專案」。這是個全面的解決方案,包括使用者引導的測試用例和測試自動化生成器、靜態二進位制分析器、gui變化***和綜合的報表機制。
tao專案概述
道可道,非常道。道是一種傳統的中國哲學思想, 其精髓乃萬物皆有其規律,人類需順應自然法則以實現游刃有餘。根據這種思想,我們設計了這個gui測試工具組來應對上文中所提到的挑戰。圖1描繪了通常gui測試週期中的主要測試活動。
圖1 通常gui測試週期的主要活動
tao針對這些測試步驟,提供了乙個完全解決方案,圖2顯示了它的主要構成部分。
圖2 tao工具組
tag (測試用例自動化生成器) :使用者引導的測試用例和測試自動化生成器。根據預先定義好的規則和基於知識系統的模型,它能生成測試用例和相應的自動化測試**。
visual tree (視覺化樹圖) :這個樹圖描繪了gui的結構,能夠形象地顯示測試用例報告、自動自動化報告和ui差別變化結果。
static binary analysis (靜態二進位制分析器) :對於用支援反射(reflection)的程式語言編寫的gui,這個工具會生成靜態分析結果。
automation framework (自動化框架) :執行測試自動化的底層工具。
ui diff tool (ui差別***) :它能掃瞄目標gui的差別,並把這些差別在樹圖中用圖形化的方式顯示出來。作為輸出的一部分,它會建議使用者可能需要更新的相應測試用例和測試自動化。
bug filer (bug 管理器) :是專門傳送gui bug的工具。它把gui bug根據不同的原因進行分類,這可用作bug趨勢分析和質量評估。
王景村(測試經理)、
李敏(測試主管)
TAO 專案 乙個直觀的UI 測試工具集(二)
讓我們先看一下tao專案的工作流程及其三個關鍵組成部分 圖1.tao專案的工作流程 一 使用者引導的測試用例生成器 對於任何對話方塊,有經驗的軟體測試開發工程師都可以很快給出一些標準gui測試用例。例如,測試乙個輸入框,你可能建立輸入最長和最短字串的測試用例,或者輸入帶有特殊字元但匹配正規表示式的字...
乙個輕型的效能測試工具 Locust
1.乙個開源的效能測試用具 2.使用python開發 3.使用python編寫使用者行為 官方 安裝1.pip install locustio 2.安裝成功後,用locust v 來驗證 編寫簡單的測試指令碼 httplocust 用來傳送http請求 taskset 定義使用者行為,相當於loa...
c 製作乙個TCP UDP測試工具
目標 使用c 製作乙個簡單的tcp udp測試工具,並且熟悉c 中的socket程式設計,具備tcp客戶端和upd客戶端的功能,並能進行資料收發。知識準備 1 socket為何物?2 c 中需要包含的標頭檔案及用到的api 3 建立乙個tcp連線 udp連線的流程 4 編碼測試,發現問題 socke...