簡介:軟件自動化回歸測試是軟件工程實踐中的重要發展趨勢之一。目前業內主流的商業自動化測試工具和開放源代碼測試工具,都需要自動化測試人員熟悉開發編程語言。但是過高的編程門檻讓很大一部分的業務測試人員只能對自動化測試駐足遙望。為解決該群體的困擾,本文將介紹如何讓不熟悉編程的業務測試人員也能編寫出類似傳統功能測試用例的自動化測試用例,從而掃除自動化測試的技術障礙。
本文適用于需要為測試團隊開發自動化回歸測試框架的測試設計開發人員。目前業內主流的商業自動化測試工具和開放源代碼測試工具,都需要測試人員熟悉開發編程語言。但是過高的編程門檻讓很多測試人員只能對自動化測試駐足遙望。為解決該群體的困擾,本文將介紹一種基于XML維護自動化測試腳本的自動化測試框架,并詳細描述了其中的技術實現細節。XML具有編寫簡單,易于在任何程序中讀寫數據等特性,這使得XML成為了數據交換的公共語言。使用基于XML的Selenium自動化測試框架,可以讓不熟悉編程的測試人員快速編寫出類似傳統功能測試用例的自動化測試用例,從而掃除自動化測試的技術障礙。
本文首先會對比一下業內主流的自動化測試工具,簡單分析測試人員使用這些工具時存在的問題。然后以測試人員編寫的一份傳統測試用例為例子,演示如何使用Selenium為其編寫自動化測試腳本文件。接著,介紹了如何開發基于XML的Selenium自動化測試框架。后,簡單介紹了一下如何為基于XML的Selenium自動化測試框架編寫更多的特性。通過比較兩種自動化測試實現方式,使用XML維護Selenium自動化測試腳本的優勢一覽無余的展示出來。
Web 應用自動化回歸測試工具一覽
隨著軟件公司的發展,產品線不斷擴大,軟件新版本不斷推出,支持的平臺越來越豐富,如何高效、快速的對軟件產品進行測試成為軟件測試團隊的新挑戰。越來越多的項目組在考慮對軟件軟件產品進行自動化回歸測試,考慮選取適合自己項目組的自動化工具。面對數目繁多、各式各樣的自動化工具,選擇也不是件很容易的事情。測試人員耳熟能詳的測試工具如下表:
表格 1. 自動化測試工具
如上表所示,開源的有Selenium、Watir等,商業的測試工具如Rational Functional Tester、Rational Robot、QTP、SilkTest等等。開源工具使用成本比較低,但功能不如商業工具豐富。商業工具可以提供強大的錄制功能,為初學者所喜愛,但錄制腳本并不是自動化測試優方案。錄制腳本中的測試數據和腳本程序混雜在一起,很難進行維護;此外,當測試用例發生較大的變更時,維護用例和重新錄制用例所花費的精力不分上下。值得一提的是,RFT作為IBM Rational產品家族的重要組成部分,吸引了大量的測試人員使用該工具。IBM Frame框架,更是讓RFT測試腳本開發效率倍增,您們可以再 developerWorks上面發現很多關于這個框架的文章。以Selenium為代表的開源工具,也吸引了大量的測試人員,developerWorks上也發表了很多文章,如《使用分層的Selenium框架進行復雜 Web 應用的自動測試》等等。但是,不管使用什么樣的工具,都需要測試人員熟悉開發編程語言。編程門檻讓很大一部分的熟悉業務的測試人員只能對自動化測試駐足遙望。那么,如何讓不熟悉編程的測試人員也能編寫自動化回歸測試用例呢?
業務測試人員擅長什么
顯然,測試人員十分熟悉業務,擅長編寫傳統的功能測試用例文檔。本文會給出一份簡化的測試用例:在搜索引擎谷歌站點查詢IBM開發者社區,如下表:
表格 2. 測試用例
該測試用例只包括測試步驟,每個測試步驟又分成若干組成部分:步驟編號、測試步驟、期望結果、實際結果、執行狀態等。很顯然,業務測試人員肯定會寫出比這復雜得多的用例。我們用這份簡單的測試做演示使用。下面演示如何對這個用例做自動化測試。
使用 Selenium 為測試用例編寫自動化腳本
我們先以開源的 Selenium 工具為例,開發上述用例的自動化測試腳本。Selenium 包含 Selenium-IDE、Selenium Remote Control、Selenium WebDriver 和 Selenium Grid,他們共同組成了強大的自動化測試工具。Selenium RC 和 Selenium WebDriver 都可以使用 Selenium Sever,Selenium Server 還包括內建的 Grid 功能特性。如果瀏覽器和測試用例運行在相同的機器上并且測試用例完全基于 WebDriver API 編寫,可以直接使用 WebDriver 驅動瀏覽器,而不必使用 Selenium Server。在特定情況下,比如計劃使用 Selenium Grid 創建分布式自動化測試環境、或需要連接到安裝特別版本瀏覽器的遠程機器上執行測試用例腳本,必須使用 Selenium Server。下面分別簡單介紹一下各個組件:
● Selenium 2(又名 Selenium WebDriver):Selenium 2.0 的主要新特性是集成了 Selenium WebDriver API。WebDriver 被設計用于提供簡化精煉的編程接口,并解決了在 Selenium RC 中的一些限制。WebDriver 可以更好的支持使用 AJAX 技術的動態網頁。總的來說,WebDriver 提供設計良好的面向對象的接口和改進的對動態網頁支持,是 Selenium 的未來發展方向。
● Selenium 1(Selenium Remote Control):曾是 Selenium 的主要組成部分,現已經正式被 Selenium 官方棄用。替代者為 Selenium 2(Selenium WebDriver)。更多詳細內容,請參考 Selenium 項目簡史。