【摘 要】現(xiàn)階段電網(wǎng)軟件測試方面仍然處于傳統(tǒng)手工測試階段,為了有效解決常見自動化測試工具普遍存在的使用成本高、測試用例有效性低,以對不同Web技術(shù)測試方案不統(tǒng)一等問題。我們需要提供一個測試框架,來跨越“技術(shù)”與“用戶”之間的鴻溝,簡化腳本的編寫和維護工作、及時全面的回歸測試、穩(wěn)定性測試、兼容性測試成為可能,并將測試人員從日常大量的重復(fù)性工作中解放出來,可以把更多的精力投入到針對業(yè)務(wù)場景的測試設(shè)計、用戶體驗測試、性能測試、安全性測試等工作中。
【關(guān)鍵詞】軟件自動化測試 自動生成測試用例 自動生成測試腳本
【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 引言
現(xiàn)在的軟件項目中,對于測試工作,總是有更多的測試需要去做,功能需求改變后需要測試新的功能,測試不同的配置,或者是測試一個新的平臺。但是隨著項目時間的逼近,分配給每個測試周期的時間也就變少,而最后,我們發(fā)現(xiàn),測試工程師的時間往往都集中在了驗證修正的缺陷上面。
為了有效解決常見自動化測試工具普遍存在的使用成本高、測試用例有效性低,以及對不同Web技術(shù)測試方案不統(tǒng)一等問題。我們需要提供一個測試框架,來跨越“技術(shù)”與“用戶”之間的鴻溝,簡化腳本及斷言條件的編寫和維護工作、提高對UI框架和業(yè)務(wù)編碼規(guī)范的支持程度,從而降低成本、提升效率。
現(xiàn)有的自動化測試框架,大多數(shù)采用的是“錄制/回訪”機制。首先,使用錄制功能,手動操作一遍需要測試的動作,自動化測試框架會將所有的動作,包括數(shù)據(jù)轉(zhuǎn)換為腳本,這樣一個完整的測試腳本就此生成。但是,這種方式,無法應(yīng)對需求多變的軟件項目,往往一個頁面上的UI改變,隨之而來的便是腳本的改動,這時需要測試人員需要打開測試腳本,定位修改。這樣,測試腳本的維護往往占用了大量的時間,使得自動化測試工作效率低下。
再次,維護測試腳本,需要測試人員有著一定的編程知識,這對于不是專注于開發(fā)工作的測試人員,往往修改測試腳本便意味著需要掌握一門新的編程語言,了解編程思想,加大了測試人員的工作量,使其無法專注于測試的本質(zhì)工作。因此,如何選擇一個合適的測試自動化框架,是一個自動化測試小組開始啟動前需要最優(yōu)先考慮得一個問題。
2 自動化測試框架原理
在自動化測試中,測試用例設(shè)計的好壞是關(guān)于這個自動化測試是否成功的重要因素之一。一個好的測試用例,能夠找到軟件被測軟件中更多的缺陷,使得軟件質(zhì)量能夠得到更好的保障。在這個軟件測試過程中,絕大部分時間都是花在測試用例的設(shè)計和測試用例的執(zhí)行上,而其中公共測試用例在整個測試用例中占據(jù)了很大部分的比例。結(jié)果平時的工作實踐,將公共測試用例部分的規(guī)則提取出來,形成公共測試用例生成規(guī)則庫,根據(jù)界面不同的組件,自動組合生成公共測試用例和測試腳本,可以大大減少測試工作人員的工作量,提高測試的工作效率。測試框架需要應(yīng)對需求變化,根據(jù)界面快速編寫測試用例。應(yīng)對設(shè)計/開發(fā)的變化,隔離對技術(shù)實現(xiàn)((UI框架、頁面樣式/布局)的依賴)。應(yīng)對環(huán)境的變化,支持跨瀏覽器穩(wěn)定回放。
3 跨平臺應(yīng)用自動化測試框架
根據(jù)上面對自動化測試框架關(guān)鍵成功因素的分析,結(jié)合在軟件測試方面的實踐,提出一個跨平臺應(yīng)用的自動化測試框架。在這里首先闡述該自動化測試框架的體系結(jié)構(gòu)。如圖1。
圖1中的Dorado開發(fā)框架,業(yè)務(wù)移動化平臺,網(wǎng)站開發(fā)框架中,已經(jīng)做到了高度組件化,使得NoCoding自動化測試框架能夠容易定位頁面元素,提取公共測試用例組成部分。NoCoding自動化測試框架使用Selenium進行元素交互,TestNG管理測試用例,DBunit進行數(shù)據(jù)庫初始化工作。
3.1 自動生成測試用例和測試腳本
分析我們工作中的測試用例,可以看出,增、刪、改、查這些公共測試用例占了很大一部分,這些公共測試用例與業(yè)務(wù)無關(guān),只與組件功能相關(guān)(如:對于一個表單來說,一個常用的公共測試用例是:輸入必填字段后提交),將測試用例中的公共部分提取出來,設(shè)置為一個公共測試用例生成的規(guī)則庫。測試系統(tǒng)時,將待測系統(tǒng)的頁面組件提?。ㄗ址斎肟颍峤话粹o等),根據(jù)公共測試用例生成庫規(guī)則,將測試用例自動生成,并自動轉(zhuǎn)化為測試腳本。這樣,當界面組件更改時,只需要更新一下,便可以自動將測試用例和測試腳本生成,節(jié)省了測試人員維護腳本的工作量。
3.2 手動生成測試用例和測試腳本
因為公共測試用例無法覆蓋到系統(tǒng)業(yè)務(wù)方面的需求,所以提供了手動生成測試用例的方法,測試人員可以像搭積木一樣編寫測試用例,以圖2為例。
當我們在日常測試的工作時,看到上面的頁面,是否會在心中默念:賬號”輸入***、“密碼”輸入***、“姓名”輸入***、“性別”選擇***、生日”輸入***、國籍”選擇***,點擊“保存”按鈕。
類似的,當我們?nèi)粘J褂酶鞣N系統(tǒng)時,心里還會默念:“展開/收攏”樹(Tree)的某個節(jié)點、關(guān)閉某個Tab頁、數(shù)據(jù)表格(Grid)的下一頁/上一頁、 選中數(shù)據(jù)表格(Grid)的某一行……
在跨平臺應(yīng)用自動化測試框架中,我們不需要知道Webdriver腳本語言的寫法,我們只需要將頁面組件和動作拖拽,然后像搭積木一樣的組合我們的測試用例,并自動轉(zhuǎn)換為相應(yīng)的自動化測試腳本。
可以看到,圖3上面的測試用例設(shè)計方法和我們在日常生活中使用的語言習(xí)慣是一樣的。這樣,測試工作人員并不需要具備開發(fā)人員的編程技能和編程思想,就可以寫出自動化測試腳本,使得開發(fā)人員能夠有更多的時間和精力去專注于編寫好的測試用例,找出系統(tǒng)中更多的缺陷。
3.3 兼容性測試
Selenium,一個開源的自動化測試框架,可以通過錄制和手動編寫生成線性的測試腳本,測試腳本可以直接在瀏覽器中運行,就像真是用戶所做的一樣。Selenium測試可以在Windows,Linux上的Internet Explorer,Chrome,F(xiàn)ireFox中運行。更為重要的是Selenium支持提供了強大的Webdriver API,可以支持多種語言、Java、Ruby、Python等。
4 自動化測試框架技術(shù)方案
圖4自動化測試流程
使用Selenium中的webdriver api封裝待測系統(tǒng)中的組件模塊,將每個組件的操作封裝,比如組件中的打開、輸入、提交等操作。系統(tǒng)和測試人員可以根據(jù)不同的測試組件選擇相對應(yīng)的方法去生成測試腳本。之所以選擇它的原因是它是開源的,且有強大的元素定位功能,可以通過name、id、xpath、css等方式定位元素,而且它測試直接在瀏覽器中運行,就像真實用戶所做的一樣。Selenium測試可以在 Windows、Linux上的 Internet Explorer、Mozilla和 Firefox 中運行。更重要的是Selenium支持多種語言、JAVA、Ruby、Python等。
使用TestNG來管理測試用例,TestNG是一個測試 Java應(yīng)用程序的新框架。我選擇TestNG是因為它是一種基于注釋的測試框架,它有如下幾個有點:
參數(shù)化:
一個被測試方法根據(jù)不同的入?yún)⒔M合出20個CASE,根據(jù)數(shù)據(jù)驅(qū)動測試的思想,我們只需要寫一個測試方法,然后準備20種參數(shù)組合的數(shù)據(jù)。
失敗和重運行:
一旦 TestNG中出現(xiàn)失敗,它就會創(chuàng)建一個 XML配置文件,對失敗的測試加以說明。如果利用這個文件執(zhí)行 TestNG運行程序,TestNG就只運行失敗的測試。所以,1000項測試有3項 Failed,這種場景你只需重新運行三個失敗的測試腳本,而不是整個測試套件。
自動化測試中,某些測試用例可能需要前置數(shù)據(jù)才能完成,同樣在每次測試過后,我們的系統(tǒng)中會產(chǎn)生大量的測試數(shù)據(jù),而這些數(shù)據(jù)可能會影響到我們的測試結(jié)果,所以往往,我們可能需要一個“干凈”的數(shù)據(jù)庫。所以,在本自動化測試框架中,引入DBUnit,它通過有效地管理測試場景中的數(shù)據(jù)簡化了使用數(shù)據(jù)庫的工作。其設(shè)計理念就是在測試之前,備份數(shù)據(jù)庫,然后給對象數(shù)據(jù)庫植入我們需要的準備數(shù)據(jù),最后,在測試完畢后,讀入備份數(shù)據(jù)庫,回溯到測試前的狀態(tài)。
5 結(jié)語
跨平臺自動化測試框架可以應(yīng)用在各種不同類型項目的測試過程。當然作為一個自動測試框架,其結(jié)構(gòu)也是開放的,不固定的,使用時可以根據(jù)項目自身的特點對其進行擴展和改進。
參考文獻:
[1] Mosley DJ,PoseyBA.軟件測試自動化 Just Enough Software Test Automation[M].鄧波,黃麗娟,曹青春譯.北京:機械工業(yè)出版社,2003.
作者簡介:鮮文軍(1982一),男,青海西寧人,本科,工程師,主要電網(wǎng)調(diào)度自動化工作。