【摘 要】現階段電網軟件測試方面仍然處于傳統手工測試階段,為了有效解決常見自動化測試工具普遍存在的使用成本高、測試用例有效性低,以對不同Web技術測試方案不統一等問題。我們需要提供一個測試框架,來跨越“技術”與“用戶”之間的鴻溝,簡化腳本的編寫和維護工作、及時全面的回歸測試、穩定性測試、兼容性測試成為可能,并將測試人員從日常大量的重復性工作中解放出來,可以把更多的精力投入到針對業務場景的測試設計、用戶體驗測試、性能測試、安全性測試等工作中。
【關鍵詞】軟件自動化測試 自動生成測試用例 自動生成測試腳本
【Abstract】 Currently, for the software testing ,the manual testing is still the main approach in Power Grid Company. The usual automation testing tools are highly cost, low effectiveness of test case, different test scheme for different Web technology. To solve these problems above, we should supply a new automation testing framework which can cross the divide between “technology” and “customer”, to make coding and maintaining script easier and regression testing, stability testing, compatibility testing comprehensive and timely. Let our quality testing engineer focus on the work of test design, user experience test, load test, and security test.
【Keywords】Software automation testing, automation test case, automation test script.
1 引言
現在的軟件項目中,對于測試工作,總是有更多的測試需要去做,功能需求改變后需要測試新的功能,測試不同的配置,或者是測試一個新的平臺。但是隨著項目時間的逼近,分配給每個測試周期的時間也就變少,而最后,我們發現,測試工程師的時間往往都集中在了驗證修正的缺陷上面。
為了有效解決常見自動化測試工具普遍存在的使用成本高、測試用例有效性低,以及對不同Web技術測試方案不統一等問題。我們需要提供一個測試框架,來跨越“技術”與“用戶”之間的鴻溝,簡化腳本及斷言條件的編寫和維護工作、提高對UI框架和業務編碼規范的支持程度,從而降低成本、提升效率。
現有的自動化測試框架,大多數采用的是“錄制/回訪”機制。首先,使用錄制功能,手動操作一遍需要測試的動作,自動化測試框架會將所有的動作,包括數據轉換為腳本,這樣一個完整的測試腳本就此生成。但是,這種方式,無法應對需求多變的軟件項目,往往一個頁面上的UI改變,隨之而來的便是腳本的改動,這時需要測試人員需要打開測試腳本,定位修改。這樣,測試腳本的維護往往占用了大量的時間,使得自動化測試工作效率低下。
再次,維護測試腳本,需要測試人員有著一定的編程知識,這對于不是專注于開發工作的測試人員,往往修改測試腳本便意味著需要掌握一門新的編程語言,了解編程思想,加大了測試人員的工作量,使其無法專注于測試的本質工作。因此,如何選擇一個合適的測試自動化框架,是一個自動化測試小組開始啟動前需要最優先考慮得一個問題。
2 自動化測試框架原理
在自動化測試中,測試用例設計的好壞是關于這個自動化測試是否成功的重要因素之一。一個好的測試用例,能夠找到軟件被測軟件中更多的缺陷,使得軟件質量能夠得到更好的保障。在這個軟件測試過程中,絕大部分時間都是花在測試用例的設計和測試用例的執行上,而其中公共測試用例在整個測試用例中占據了很大部分的比例。結果平時的工作實踐,將公共測試用例部分的規則提取出來,形成公共測試用例生成規則庫,根據界面不同的組件,自動組合生成公共測試用例和測試腳本,可以大大減少測試工作人員的工作量,提高測試的工作效率。測試框架需要應對需求變化,根據界面快速編寫測試用例。應對設計/開發的變化,隔離對技術實現((UI框架、頁面樣式/布局)的依賴)。應對環境的變化,支持跨瀏覽器穩定回放。
3 跨平臺應用自動化測試框架
根據上面對自動化測試框架關鍵成功因素的分析,結合在軟件測試方面的實踐,提出一個跨平臺應用的自動化測試框架。在這里首先闡述該自動化測試框架的體系結構。如圖1。
圖1中的Dorado開發框架,業務移動化平臺,網站開發框架中,已經做到了高度組件化,使得NoCoding自動化測試框架能夠容易定位頁面元素,提取公共測試用例組成部分。NoCoding自動化測試框架使用Selenium進行元素交互,TestNG管理測試用例,DBunit進行數據庫初始化工作。
3.1 自動生成測試用例和測試腳本
分析我們工作中的測試用例,可以看出,增、刪、改、查這些公共測試用例占了很大一部分,這些公共測試用例與業務無關,只與組件功能相關(如:對于一個表單來說,一個常用的公共測試用例是:輸入必填字段后提交),將測試用例中的公共部分提取出來,設置為一個公共測試用例生成的規則庫。測試系統時,將待測系統的頁面組件提取(字符輸入框,提交按鈕等),根據公共測試用例生成庫規則,將測試用例自動生成,并自動轉化為測試腳本。這樣,當界面組件更改時,只需要更新一下,便可以自動將測試用例和測試腳本生成,節省了測試人員維護腳本的工作量。
3.2 手動生成測試用例和測試腳本
因為公共測試用例無法覆蓋到系統業務方面的需求,所以提供了手動生成測試用例的方法,測試人員可以像搭積木一樣編寫測試用例,以圖2為例。
當我們在日常測試的工作時,看到上面的頁面,是否會在心中默念:賬號”輸入***、“密碼”輸入***、“姓名”輸入***、“性別”選擇***、生日”輸入***、國籍”選擇***,點擊“保存”按鈕。
類似的,當我們日常使用各種系統時,心里還會默念:“展開/收攏”樹(Tree)的某個節點、關閉某個Tab頁、數據表格(Grid)的下一頁/上一頁、 選中數據表格(Grid)的某一行……
在跨平臺應用自動化測試框架中,我們不需要知道Webdriver腳本語言的寫法,我們只需要將頁面組件和動作拖拽,然后像搭積木一樣的組合我們的測試用例,并自動轉換為相應的自動化測試腳本。
可以看到,圖3上面的測試用例設計方法和我們在日常生活中使用的語言習慣是一樣的。這樣,測試工作人員并不需要具備開發人員的編程技能和編程思想,就可以寫出自動化測試腳本,使得開發人員能夠有更多的時間和精力去專注于編寫好的測試用例,找出系統中更多的缺陷。
3.3 兼容性測試
Selenium,一個開源的自動化測試框架,可以通過錄制和手動編寫生成線性的測試腳本,測試腳本可以直接在瀏覽器中運行,就像真是用戶所做的一樣。Selenium測試可以在Windows,Linux上的Internet Explorer,Chrome,FireFox中運行。更為重要的是Selenium支持提供了強大的Webdriver API,可以支持多種語言、Java、Ruby、Python等。
4 自動化測試框架技術方案
圖4自動化測試流程
使用Selenium中的webdriver api封裝待測系統中的組件模塊,將每個組件的操作封裝,比如組件中的打開、輸入、提交等操作。系統和測試人員可以根據不同的測試組件選擇相對應的方法去生成測試腳本。之所以選擇它的原因是它是開源的,且有強大的元素定位功能,可以通過name、id、xpath、css等方式定位元素,而且它測試直接在瀏覽器中運行,就像真實用戶所做的一樣。Selenium測試可以在 Windows、Linux上的 Internet Explorer、Mozilla和 Firefox 中運行。更重要的是Selenium支持多種語言、JAVA、Ruby、Python等。
使用TestNG來管理測試用例,TestNG是一個測試 Java應用程序的新框架。我選擇TestNG是因為它是一種基于注釋的測試框架,它有如下幾個有點:
參數化:
一個被測試方法根據不同的入參組合出20個CASE,根據數據驅動測試的思想,我們只需要寫一個測試方法,然后準備20種參數組合的數據。
失敗和重運行:
一旦 TestNG中出現失敗,它就會創建一個 XML配置文件,對失敗的測試加以說明。如果利用這個文件執行 TestNG運行程序,TestNG就只運行失敗的測試。所以,1000項測試有3項 Failed,這種場景你只需重新運行三個失敗的測試腳本,而不是整個測試套件。
自動化測試中,某些測試用例可能需要前置數據才能完成,同樣在每次測試過后,我們的系統中會產生大量的測試數據,而這些數據可能會影響到我們的測試結果,所以往往,我們可能需要一個“干凈”的數據庫。所以,在本自動化測試框架中,引入DBUnit,它通過有效地管理測試場景中的數據簡化了使用數據庫的工作。其設計理念就是在測試之前,備份數據庫,然后給對象數據庫植入我們需要的準備數據,最后,在測試完畢后,讀入備份數據庫,回溯到測試前的狀態。
5 結語
跨平臺自動化測試框架可以應用在各種不同類型項目的測試過程。當然作為一個自動測試框架,其結構也是開放的,不固定的,使用時可以根據項目自身的特點對其進行擴展和改進。
參考文獻:
[1] Mosley DJ,PoseyBA.軟件測試自動化 Just Enough Software Test Automation[M].鄧波,黃麗娟,曹青春譯.北京:機械工業出版社,2003.
作者簡介:鮮文軍(1982一),男,青海西寧人,本科,工程師,主要電網調度自動化工作。