国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Selenium JS UI的自動化測試框架設(shè)計與實現(xiàn)

2017-09-22 09:49:30任洪敏
關(guān)鍵詞:關(guān)鍵字測試用例腳本

李 艷,任洪敏,劉 芳

(上海海事大學(xué) 信息工程學(xué)院,上海 201306)

基于Selenium JS UI的自動化測試框架設(shè)計與實現(xiàn)

李 艷,任洪敏,劉 芳

(上海海事大學(xué) 信息工程學(xué)院,上海 201306)

Web技術(shù)的發(fā)展,以及Web UI組件的廣泛應(yīng)用,給自動化測試帶來了挑戰(zhàn)。因此設(shè)計了一套基于Selenium JS UI的自動化測試框架。該框架結(jié)合了TestNG、Selenium框架,并且利用了關(guān)鍵字驅(qū)動、數(shù)據(jù)驅(qū)動技術(shù)。將框架分為關(guān)鍵字、測試用例、執(zhí)行引擎、配置報告四層,使測試用例、測試腳本、測試數(shù)據(jù)相分離,跨平臺,不僅解決了自動化測試定位難的問題,而且大大提高了測試效率。

自動化測試框架;Selenium;Web UI組件;關(guān)鍵字驅(qū)動

0 引言

目前大多數(shù)企業(yè)的應(yīng)用系統(tǒng)都是基于Web的應(yīng)用系統(tǒng),人們可以通過Internet瀏覽器來訪問它們。當(dāng)前很多公司采用持續(xù)改進(jìn)的開發(fā)模式來應(yīng)對這種趨勢。在持續(xù)開發(fā)模式中,需要不斷地進(jìn)行迭代測試。傳統(tǒng)人工測試會變得缺乏效率,很難滿足需求,這個時候必須引入自動化測試[1]。自動化測試框架是由一些假設(shè)、概念和為自動化軟件測試提供支持的實踐組成的集合[2]。目前的自動化測試框架主要分為錄制回放、數(shù)據(jù)驅(qū)動技術(shù)、關(guān)鍵字驅(qū)動技術(shù)、數(shù)據(jù)驅(qū)動技術(shù)、混合型驅(qū)動技術(shù)等[3]。

文中提出一種基于Selenium JS UI自動化測試框架,主要針對Web系統(tǒng)頁面頻繁變化問題,提出一種新的UI定位方法,結(jié)合混合型驅(qū)動測試框架設(shè)計一套能適應(yīng)于不同Web 應(yīng)用系統(tǒng)的測試方法,該框架將測試腳本及測試數(shù)據(jù)相分離,提高了測試腳本的可復(fù)用性及測試效率。

1 基于Selenium JS UI 自動化測試框架

1.1自動化測試框架工作原理

自動化測試平臺是將多個開源軟件組合進(jìn)行二次開發(fā),結(jié)合不同的框架優(yōu)勢,從而達(dá)到更好的測試性能。主要完成的工作是:調(diào)研不同的Web UI組件庫,將UI通用操作設(shè)定為關(guān)鍵字,并將關(guān)鍵字保存在關(guān)鍵字庫中,提出一種新的UI定位方法,基于Web應(yīng)用系統(tǒng),定位頁面元素和操作,并從關(guān)鍵字庫中提取相關(guān)關(guān)鍵字,實現(xiàn)關(guān)鍵字函數(shù),生成一套測試用例的語法規(guī)約,編寫執(zhí)行引擎,由執(zhí)行引擎去調(diào)度測試腳本,并監(jiān)聽測試結(jié)果,按自定義格式生成測試報告。

1.2自動化測試框架架構(gòu)

自動化測試框架總體架構(gòu)如圖1所示,主要分為關(guān)鍵字層、測試用例層、執(zhí)行引擎層、配置報告層四大層。

圖1 自動化測試框架結(jié)構(gòu)圖

(1)關(guān)鍵字層中主要包含關(guān)鍵字的定義、關(guān)鍵字函數(shù)的實現(xiàn)以及關(guān)鍵字庫管理等。關(guān)鍵字庫管理主要用來管理關(guān)鍵字、對其進(jìn)行增刪改等操作。

(2)測試用例層中包含測試用例語法規(guī)范以及測試用例集,測試用例采用Excel表格維護(hù),一行代表一條測試用例,測試用例由測試?yán)Q、測試步驟序號、測試步驟描述、關(guān)鍵字和操作值,以及測試結(jié)果組成。

(3)執(zhí)行引擎層主要負(fù)責(zé)解析測試用例,提取關(guān)鍵字和操作值并進(jìn)行整合,以此執(zhí)行測試腳本,完成自動化測試及生成測試報告等。

(4)配置報告層主要是配置文件的輸入,以及測試報告的輸出。

2 Web UI測試關(guān)鍵字定義與實現(xiàn)

2.1界面元素定位技術(shù)

Selenium 測試工具操作簡單,功能比較單一,對Web UI 元素支持不全面,最常用的是采用Xpath定位技術(shù),但Xpath定位的不穩(wěn)定性及冗余性給測試人員帶來諸多麻煩,因此本文提出一種新的UI元素定位技術(shù),在Web UI類庫中存放UI組件庫和接口的方法。Web 應(yīng)用系統(tǒng)中UI定位從被測系統(tǒng)頁面入手,采用JS 和Web UI庫中組件接口和方法定位頁面元素,代替了Selenium 庫函數(shù)中的findElement(By. xpath(“***”))對頁面元素的定位,減少了Xpath的使用,使用Web UI定位技術(shù)的優(yōu)點(diǎn)是定位精確,且效率高。

2.2定義關(guān)鍵字

關(guān)鍵字的思想是將界面元素名與測試工具對象名的分離、執(zhí)行動作與具體實現(xiàn)細(xì)節(jié)的分離以及測試腳本與測試數(shù)據(jù)的分離[4]。文中提出調(diào)研不同的Web UI組件庫,將這些UI庫中都具有的、常用的Web UI組件:執(zhí)行動作定義為關(guān)鍵字,將這些關(guān)鍵字保存至關(guān)鍵字庫中,除這些關(guān)鍵字之外,還會增加一些特定的關(guān)鍵字,即檢查點(diǎn)函數(shù)。如通常會比較兩個String 數(shù)組是否相等以及獲取當(dāng)前行數(shù)等,這些都是與特定的Web程序無關(guān)而且本身API沒有提供這些函數(shù)[5],將這些自定義的關(guān)鍵字收集起來統(tǒng)一放在關(guān)鍵字庫中,進(jìn)而可應(yīng)用于不同的Web 項目中。表1以jEasy UI中DataGrid 控件為例,說明定義關(guān)鍵字的方法。

2.3實現(xiàn)關(guān)鍵字

關(guān)鍵字的設(shè)計是將執(zhí)行動作與具體實現(xiàn)細(xì)節(jié)進(jìn)行分離,為了增強(qiáng)測試腳本的可復(fù)用性,需要將測試數(shù)據(jù)和界面元素從測試腳本中獨(dú)立出來并存于專用文件中,形成相

表1 定義關(guān)鍵字方法表

應(yīng)的測試數(shù)據(jù)集和函數(shù)庫。關(guān)鍵字的實現(xiàn)是自定義的函數(shù)庫,函數(shù)的命名是與關(guān)鍵字對應(yīng)的。將頁面元素的關(guān)鍵字參數(shù)作為函數(shù)的參數(shù)調(diào)用,采用JS框架語言編寫腳本函數(shù)。它具體依賴于Selenium 測試工具,Selenium的函數(shù)getEval提供了在網(wǎng)頁中執(zhí)行自定義javaScript腳本的能力[5]。關(guān)鍵字函數(shù)腳本實現(xiàn)具體如下所示:

function getRows() {

$(‘#showUser’).datagrid(‘getRows’);

}

function selectRow(index) {

$(‘#showUser’).datagrid(‘selectRow’, index);

}

function refreshRow(index) {

$(‘#showUser’).datagrid(‘refreshRow’,index);

}

function deleteRow(index){

$(‘#showUser’).datagrid(‘deleteRow’,index);

}

2.4關(guān)鍵字庫

對于關(guān)鍵字庫中的關(guān)鍵字,在對不同Web應(yīng)用系統(tǒng)進(jìn)行測試時,這些關(guān)鍵字可以完全復(fù)用,根據(jù)業(yè)務(wù)邏輯、測試數(shù)據(jù)的一些差異選擇關(guān)鍵字,不一定所有的關(guān)鍵字都能用上,還需進(jìn)一步篩選。建立關(guān)鍵字庫的目的是用來對關(guān)鍵字進(jìn)行維護(hù)、擴(kuò)展及優(yōu)化。

3 Web UI測試用例的規(guī)約

3.1測試用例語法規(guī)約

基于上文定義Web UI關(guān)鍵字的方法,結(jié)合數(shù)據(jù)驅(qū)動思想,提出一套測試用例的定義語法規(guī)范,并將此規(guī)范用BNF范式描述,用戶可根據(jù)此規(guī)范來編寫測試用例。語法規(guī)約具體如下:

<測試用例>::=”(“<測試用例名稱>”,”<測試步驟序號>”,”<測試步驟描述>”,”<關(guān)鍵字>”,”<操作值>”)”

<測試用例名稱> ::= <句子>

<測試步驟序號> ::= <數(shù)字>

<測試步驟描述> ::= <句子>

<關(guān)鍵字> ::=<標(biāo)識符>

<操作值> ::= <數(shù)字><字符串><數(shù)組>

<句子> ::= {{<字母>},{<字母>}}

<標(biāo)識符> ::= <字母>|<標(biāo)識符><字母數(shù)字串>

<字母數(shù)字串>::=<字母><數(shù)字><字母數(shù)字串><字母><字母數(shù)字串><數(shù)字>

<字母> ::= -<大寫字母><小寫字母>

<小寫字母> ::= a|b|c|d|e|f|g……

<大寫字母> ::= A|B|C|D|E|F|G……

<數(shù)字> ::= 1|2|3|4|5|6|7|8……

<字符串> ::= <字母><字母><字符串>

<數(shù)組> ::= <數(shù)字><數(shù)字><數(shù)組>

3.2測試用例結(jié)構(gòu)

本文中提出的測試用例采用Excel表格維護(hù),測試用例文件中包括:測試用例名稱、 測試步驟序號、測試步驟描述、關(guān)鍵字、操作值及測試結(jié)果。具體如表2所示。

表2 測試用例結(jié)構(gòu)表

4 執(zhí)行引擎

Web 自動化測試就是通過自動化測試工具打開被測試頁面,通過鍵盤和鼠標(biāo),點(diǎn)擊或操作該頁面中的被測試對象,判斷整個程序的正確性[6]。本文中的執(zhí)行引擎圖如圖2所示。

圖2 執(zhí)行引擎圖

執(zhí)行引擎是整個測試的核心,實現(xiàn)了測試框架中所有的功能。主要是測試行為的控制,根據(jù)XML 文件配置目標(biāo)路徑加載測試用例,同時發(fā)出數(shù)據(jù)驅(qū)動引擎來解析測試用例文件[7],每一行數(shù)據(jù)都是測試用例,可被框架解析,實現(xiàn)數(shù)據(jù)驅(qū)動[8],由解析到的測試用例中的測試步驟、關(guān)鍵字及操作值,匹配關(guān)鍵字腳本,在測試腳本函數(shù)庫中調(diào)用并執(zhí)行相應(yīng)功能函數(shù),組合生成Selenium 測試工具可以執(zhí)行的腳本。由Selenium 中的WebDriver對象來驅(qū)動瀏覽器,按照測試用例的要求,對界面的元素,通過Selenium 的API模擬人工操作,完成與瀏覽器的交互,最終實施自動化測試,執(zhí)行引擎將測試步驟結(jié)果記錄在測試用例文件中,每個測試用例執(zhí)行完畢之后,檢查點(diǎn)函數(shù)對測試用例進(jìn)行校驗,并記錄每個測試用例的執(zhí)行結(jié)果。

框架中提出的測試報告在TestNG基礎(chǔ)上構(gòu)建,可通過XML配置文件對測試用例進(jìn)行設(shè)定,比如測試的執(zhí)行順序以及依賴關(guān)系等,同時集成Log4j框架測試詳細(xì)信息,結(jié)束后會生成一個詳細(xì)的測試結(jié)果報表,同時框架中設(shè)定一個變量對每個測試步驟進(jìn)行監(jiān)控,將單個測試結(jié)果寫入Excel測試用例特定列中,在這些情況下方便測試人員定位詳細(xì)信息。

5 結(jié)束語

文中提出了一種基于Selenium JS UI 的自動化測試框架,該框架采用混合型數(shù)據(jù)驅(qū)動技術(shù)進(jìn)行開發(fā)設(shè)計,以關(guān)鍵字為核心,提出一種新的UI定位方法,可以運(yùn)用在不同Web 程序中。該框架具有獨(dú)立性,在運(yùn)用時可根據(jù)Web 程序特點(diǎn)進(jìn)行擴(kuò)展及設(shè)計,但目前還存在不同之處,如何更好地設(shè)計關(guān)鍵字庫,更好地設(shè)計編寫測試用例,以及更好地輸出詳細(xì)的日志報表文件,是以后重點(diǎn)的研究方向。

[1] 溫素劍.零成本實現(xiàn)Web自動化測試-基于Selenium WebDriver和Cucumber[M].北京:電子工業(yè)出版社,2015.

[2] 周娟.蔣外文.基于Web的自動化測試框架[J].計算機(jī)工程,2009,35(18):65-66.

[3] 吳伶琳.基于關(guān)鍵字驅(qū)動的自動化測試的研究與實現(xiàn)[J].電腦與信息技術(shù), 2013,12(6):47-48.

[4] 王磊.關(guān)鍵字驅(qū)動的自動化測試框架設(shè)計與實現(xiàn)[J].電子測試,2010,8(8):87-88.

[5] 陳江勇,許力.Web 自動化測試框架的設(shè)計實現(xiàn)[J].福建師范大學(xué)學(xué)報(自然科學(xué)版),2013,29(4):42-44.

[6] 陳斌仙,陳佳麗,陳阿妹.基于Selenium的自動化測試研究[J].赤峰學(xué)院學(xué)報(自然科學(xué)版),2016,32(9):19-21.

[7] 馮振華,高菊,曾紅衛(wèi).Web應(yīng)用自動化測試的研究[J].計算機(jī)工程與設(shè)計,2010,31(1):175-178.

[8] 趙金丹.基于Selenium的Web自動化測試腳本設(shè)計研究[J].科技傳播,2014(1):94-95.

Design and implementation of automated testing framework based on Selenium JS UI

Li Yan, Ren Hongmin, Liu Fang

(College of Information Engineering, Shanghai Maritime University, Shanghai 201306, China)

The technological development of Web and the extensive use of its UI components pose great challenges to automated testing. Hence this thesis designs a set of automated testing framework, which is based on Selenium JS UI and integrated with TestNG, Selenium framework under the help of keyword-driven and data driven technologies. Dividing the framework into four parts which are keywords, test case, execution engine and configuration report to segregate testing case, script and data, it not only solves the problem of locating in automated testing, but also greatly improves the testing efficiency.

automated testing framework ; Selenium;Web UI components; keyword-driven

TP92

:A

10.19358/j.issn.1674- 7720.2017.17.007

李艷,任洪敏,劉芳.基于Selenium JS UI的自動化測試框架設(shè)計與實現(xiàn)[J].微型機(jī)與應(yīng)用,2017,36(17):24-26,30.

2017-03-14)

李艷(1990-),女,碩士,主要研究方向:軟件開發(fā)與項目管理。

任洪敏(1969-),通信作者,男,副教授,主要研究方向:軟件工程。E-mail:hmren@shmtu.edu.cn。

劉芳(1991-),女,碩士,主要研究方向:計算機(jī)系統(tǒng)應(yīng)用。

猜你喜歡
關(guān)鍵字測試用例腳本
酒駕
履職盡責(zé)求實效 真抓實干勇作為——十個關(guān)鍵字,盤點(diǎn)江蘇統(tǒng)戰(zhàn)的2021
華人時刊(2022年1期)2022-04-26 13:39:28
安奇奇與小cool 龍(第二回)
基于SmartUnit的安全通信系統(tǒng)單元測試用例自動生成
成功避開“關(guān)鍵字”
數(shù)據(jù)庫系統(tǒng)shell腳本應(yīng)用
電子測試(2018年14期)2018-09-26 06:04:24
基于混合遺傳算法的回歸測試用例集最小化研究
快樂假期
基于依賴結(jié)構(gòu)的測試用例優(yōu)先級技術(shù)
基于用戶反饋的關(guān)系數(shù)據(jù)庫關(guān)鍵字查詢系統(tǒng)
宁化县| 昌吉市| 瑞安市| 奉贤区| 张家港市| 历史| 宣城市| 璧山县| 吉林市| 永定县| 天水市| 同江市| 荆州市| 临泉县| 阿拉善右旗| 蓝田县| 和静县| 江口县| 荆州市| 临安市| 三河市| 延川县| 道孚县| 浠水县| 柳河县| 甘德县| 扶沟县| 皮山县| 黄石市| 宝坻区| 常德市| 正宁县| 卢龙县| 湖南省| 南川市| 天水市| 阿克陶县| 文水县| 新营市| 正安县| 日照市|