999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Selenium的unittest框架與數(shù)據(jù)驅(qū)動技術研究及應用

2021-04-04 10:48:17鄭根讓
現(xiàn)代信息科技 2021年18期

摘? 要:為了實現(xiàn)對資產(chǎn)管理系統(tǒng)Web端自動化測試,研究了一種基于Selenium的unittest框架并采用數(shù)據(jù)驅(qū)動測試技術。利用Selenium提供的Webdriver定位元素,應用數(shù)據(jù)驅(qū)動模式進行測試用例腳本執(zhí)行、用例重啟、測試日志和測試報告自動生成等關鍵功能的自動執(zhí)行,執(zhí)行完成后將測試過程和測試結果以直觀的方式反饋給測試人員。實踐證明,在Web端使用自動化測試,有效節(jié)省了測試時間,提高了測試效率。

關鍵詞:Selenium;unittest;框架;數(shù)據(jù)驅(qū)動

中圖分類號:TP311 文獻標識碼:A 文章編號:2096-4706(2021)18-0021-04

Abstract: In order to realize the automatic test of the Web side of the assets management system, a unittest framework based on Selenium is studied and data driven testing technology is adopted. Uses the Webdriver provided by Selenium to locate elements. Data driven mode is applied to automatically execute key functions such as test case script execution, case restart, automatic generation of test log and test report. After execution, the test process and test results are fed back to testers in an intuitive way. Practice has proved that using automatic test on the Web side can effectively save test time and improve test efficiency.

Keywords: Selenium; unittest; framework; data driven

0? 引? 言

隨著軟件產(chǎn)業(yè)人工成本的提高和軟件測試技術日益受到重視,自動化測試逐漸成為一種趨勢。Selenium是一套強大的Web應用自動化測試的工具集,它可以支持多種瀏覽器環(huán)境。在軟件測試中,為了提高自動化測試執(zhí)行的正確性、高效性、穩(wěn)定性和案例性,測試框架采用分層設計,應用數(shù)據(jù)驅(qū)動構建數(shù)據(jù)層、邏輯層、業(yè)務層三層結構,實現(xiàn)將測試數(shù)據(jù)和測試行為完全分離,減少代碼重復編寫。同時使用discover將測試用例按照測試功能進行拆分,分散到不同的測試文件中實現(xiàn)所有的測試用例并行執(zhí)行。

本研究對現(xiàn)有測試框架進行了優(yōu)化,主要采用了數(shù)據(jù)驅(qū)動、關鍵字驅(qū)動、discover方法相結合的方式。Selenium的數(shù)據(jù)驅(qū)動方式主要實現(xiàn)數(shù)據(jù)和測試腳本的分離,通過關鍵字驅(qū)動實現(xiàn)了業(yè)務邏輯和應用程序的分離,discover方法實現(xiàn)了測試用例的指執(zhí)行。此外,為了提高測試用例的可維護性在腳本設計中采用了Page Object設計思想。

1? Selenium自動化測試

Selenium是一款基于Web的自動化測試工具。它提供了一系列測試函數(shù),用于支持Web自動化測試。這些函數(shù)非常靈活,它們能夠通過多種方式定位界面元素,并可以將預期結果與系統(tǒng)實際結果進行比較。Selenium支持Java、C#、Python等多種語言編寫測試腳本,可以在Firefox、IE、Google Chrome、Opera等主流瀏覽器中執(zhí)行測試腳本。Selenium是開源工具軟件,可以按照測試需求搭建框架[1]。

Selenium包含Selenium IDE、Selenium WebDriver、Selenium Grid等3大組件,如圖1所示。Selenium IDE是瀏覽器的一個插件,負責錄制、回放腳本,模擬用戶對頁面的真實操作,Selenium WebDriver是一個瀏覽器自動化框架,它接受命令并將它們發(fā)送到瀏覽器。Selenium Grid用于分布式自動化測試,通過控制多臺機器、多個瀏覽器并行執(zhí)行測試用例,一般用于多測試用例[2]。

Selenium的工作原理是:測試工程師開發(fā)基于Selenium的測試腳本→執(zhí)行測試腳本→測試腳本程序→提供測試結果,可以概括為Selenium Client發(fā)送請求,WebDriver接收請求,然后解析請求,發(fā)送請求給瀏覽器,瀏覽器接受請求并執(zhí)行,最后將結果返回[3],如圖2所示。

2? Unittest單元測試框架

Unittest是python自帶的單元測試框架,主要適用于單元測試,可以對多個測試用例進行管理和封裝。主要用來組織和執(zhí)行測試用例,將單條測試用例組織在一起執(zhí)行,為了保證測試的連續(xù)性Unittest提供了失敗重啟機構,使程序在執(zhí)行一條用例失敗后能繼續(xù)執(zhí)行下一條用例。Unittest還提供了豐富的斷言方法,用以判斷否通過,從而生成最終的測試結果[4]。

Unittest主要用于單元測試的測試用例設計,Unittest也可實現(xiàn)批量執(zhí)行測試等功能,同時適應于當前流行的敏捷化測試。在自動化測試中利用單元測試框架,使用一個類來繼承Unittest的TestCase測試用例,每個case就是一個最小的測試單元,用測試容器把多個測試單元組織起來直接執(zhí)行,最后生成測試報告。Unittest庫包括:TestCase、TestSuite、TestLoder、TextRunner、TextTestResult、TestFixture,unittest[5]單元測試原理如圖3所示。

3? 資產(chǎn)管理軟件測試需求分析

固定資產(chǎn)管理系統(tǒng)是企業(yè)日常使用的管理系統(tǒng),是現(xiàn)代企業(yè)最基本最重要的工具。固定資產(chǎn)管理系統(tǒng)具有數(shù)據(jù)量大、關系復雜、使用周期長、維護困難等特點。資產(chǎn)日常操作管理功能主要包括固定資產(chǎn)的新增、修改、退出、轉(zhuǎn)移、刪除、借用、歸還、維修、計算折舊率等日常工作,此外系統(tǒng)還包括用戶管理及系統(tǒng)后臺管理等功能。待測固定資產(chǎn)管理系統(tǒng)功能模塊如圖4所示。

目前,固定資產(chǎn)管理系統(tǒng)大多采用B/S結構,也就是瀏覽器—服務器結構,用戶主要通過瀏覽器實現(xiàn)對資產(chǎn)的管理。待測試系統(tǒng)是一個典型的B/S結構管理系統(tǒng),通過對系統(tǒng)的需要分析,要對該系統(tǒng)進行自動化測試,框架設計就要包括用例管理、執(zhí)行控制、測試報表及測試日志等。通過分析,固定資產(chǎn)管理系統(tǒng)一般開發(fā)、維護周期長,因此適合自動化測試。

4? 框架、數(shù)據(jù)驅(qū)動和discover方法設計

自動化測試框架通常主要包括測試用例管理、執(zhí)行控制器、報表生成以及測試日志等模塊,模塊相互支持、相輔相成形成自動化測試系統(tǒng);數(shù)據(jù)驅(qū)動將代碼與數(shù)據(jù)進行分離,單純由數(shù)據(jù)組成文件,再由文件來驅(qū)動關鍵字,最終實際整個自動化的流程讀取到數(shù)據(jù)。

用例管理:用例管理模塊是框架的基本管理模塊,功能主要是用例的添加、修改、刪除等單元,而這些功能也與用例例的模式,測試數(shù)據(jù)管理、可復用庫等相關[6]。

控制器:自動化執(zhí)行控制器用于自動化用例的執(zhí)行,主要功能是用不同的方式執(zhí)行用例。自動化控制器使用比較多的是GUI(用戶圖形界面)以及commandline+文件。

報表生成:報表生成模塊主要功能是根據(jù)測試用例執(zhí)行情況生成報表,一般報表是以HTML的格式生成,報表主要內(nèi)容是用例的執(zhí)行情況匯總,同時根據(jù)用例執(zhí)行情況自動生成相應的總結報告。報表生成模塊還能設置郵件發(fā)送功能,將報表直接發(fā)送到指定郵箱。

測試日志:測試日志模塊是對用例執(zhí)行過程的記錄,通過日志將用例執(zhí)行過程全貌提供給測試者,使測試人員通過調(diào)查用例失敗信息及追蹤用例執(zhí)行情況了解測試基本情況。

數(shù)據(jù)驅(qū)動處理:測試數(shù)據(jù)的改變引起執(zhí)行結果的改變叫數(shù)據(jù)驅(qū)動。我們通過腳本循環(huán)執(zhí)行,讀取一文件中不同的內(nèi)容來完成自動化工作。使用數(shù)據(jù)驅(qū)動的模式,可以根據(jù)業(yè)務分解測試數(shù)據(jù),只需定義變量,使用外部或者自定義的數(shù)據(jù)使其參數(shù)化,從而避免了使用之前測試腳本中固定的數(shù)據(jù)。可以將測試腳本與測試數(shù)據(jù)分離,使得測試腳本在不同數(shù)據(jù)集合下高度復用。測試腳本與測試數(shù)據(jù)分離不僅提高了測試覆蓋,還可減少測試腳本的編寫與維護工作,降低測試成本。根據(jù)固定資產(chǎn)管理系統(tǒng)測試需求對系統(tǒng)登錄模塊進行Unittest框架、數(shù)據(jù)驅(qū)動及discover方法設計[7]:

1.新建csv讀取文件csvdata.py

Import csv? #導入csv代碼庫

def read():? #將數(shù)據(jù)讀取存放在一個方法中,方便后面調(diào)用

path=r”D:\test\element1.csv”

stream=open(path,’r’)? #以只讀的形式打開文件

data=csv.reader(stream)? #進行數(shù)據(jù)格式轉(zhuǎn)換

list=[]? #將讀取的數(shù)據(jù)放到list中

i=0

for row in data:? #使用for循環(huán)進行讀取

if i!=0:

list.append(row)

i=i+1

rerurn list

2.建立測試用例文件csvtest.py

Import ddt

import unittest

import time

from selenium import webdriver

class denglu(unittest.TestCase):

def setUpClass(cls):? #定義setUpClass方法

cls.driver=webdriver.Chrome()

cls.driver=implicitly_wait(30)

def tearDownClass(cls):? #定義tearDownClass方法

cls.driver.quit()

def test_denglu(self):? #定義test_denglu方法

self.driver.get(“http://192.168.X.XXX/test/login”)? #進入資產(chǎn)管理系統(tǒng)登錄頁面

self.driver.find_element_by_name(“username”).send_keys(“zhanguser”)? #輸入用戶名

self.driver.find_element_by_name(“password”).send_keys(“*******”)? #輸入密碼

self.driver.find_element_by_class_name(“uppercase”).click()? #點擊登錄

time.sleep(3)

self.driver.find_element_by_link_text(“資產(chǎn)管理”).click()? #點擊資產(chǎn)管理按鈕

3.建立runtest.py文件

import unittest

test_dir=’./test_case’

discover=unittest.defaultTestLoader.discover(test_dir,pattern=”test*.py”)

if _name_=’__main__’:

runner=unittest.TextTestRunner()

runner.run(discover)

5? 結果分析

引入自動化測試的主要目的是減少重復工作,提高測試工作效率,而使用自動化測試使回歸測試更簡易方便,從而達到節(jié)約開發(fā)成本的目的。在固定資產(chǎn)管理系統(tǒng)的自動化測試過程中,共做過5次版本升級,版本升級都會編寫大量的測試用例對系統(tǒng)進行驗證。資產(chǎn)管理系統(tǒng)自動化測試使用了1 200個測試用例,為了對比自動化測試與手工測試的耗時情況。項目組對資產(chǎn)管理系統(tǒng)的系統(tǒng)增加用戶、增加資產(chǎn)信息、資產(chǎn)信息查詢、添加維修信息、維修信息查詢等模塊進行了自動化和手工測試耗時對比,結果如表1所示。

自動化測試的優(yōu)勢在于在多個平臺環(huán)境上運行相同的用例、大量組合性測試或其他重復性測試以及任務周期長的軟件產(chǎn)品開發(fā)項目,對于回歸測試更高效。為了對比自動化測試與手工測試的收益率,使用函數(shù)為:

其中,Thp為手工測試準備時間;Thr為手工測試日間;Tap為自動化測試準備時間;Tar為自動化測試時間。

自動化和手工測試收益率對比,結果如表2所示。

為了對比自動化測試和手工測試收益率,對固定資產(chǎn)管理系統(tǒng)分別進行了自動化測試和手工測試,通過對比發(fā)現(xiàn)測試初期,自動化測試收益率較低,但隨著回歸測試次數(shù)的增加,自動化測試的收益率顯著提高。這是因為自動化測試在前期需要開發(fā)大量復雜的測試腳本,隨著腳本的完成,自動化測試的優(yōu)勢就很快顯現(xiàn)。

6? 結? 論

項目根據(jù)固定資產(chǎn)管理系統(tǒng)的用戶需求以Selenium的Unittest框架為基礎,利用數(shù)據(jù)驅(qū)動和Page Object設計技術對框架進行了優(yōu)化,用優(yōu)化的Web應用自動化測試框架對資產(chǎn)管理系統(tǒng)執(zhí)行測試,同時還進行了手工測試,并將兩種測試結果進行對比。

在軟件測試中,當回歸測試的次數(shù)一次次增加,自動化測試的收益率顯著提高。自動化測試前期需要投入較多成本開發(fā)腳本,當自動化測試框架、腳本設計完成后,自動化執(zhí)行用例效率會遠遠高于手工測試。通過使用自動化和手工測試兩種方法及結果進行比較,自動化測試效率遠高于手工測試。

參考文獻:

[1] WOODWARD M R. Insights into software testing [J].Software Focus,2001,2(3):93-103.

[2] TEICH J. Hardware/Software Codesign:The Past,the Present,and Predicting theFuture [J].Proceedings of the IEEE,2012,100(s1):1411-1430.

[3] 杜麗潔.基于QTP自動化測試框架的開發(fā)與應用 [D].武漢:武漢理工大學,2012.

[4] 易彤,林茂春.基于關鍵字驅(qū)動的自動化測試研究與實現(xiàn) [J].電子技術與軟件工程,2015(5):76.

[5] 高宇.Web自動化測試系統(tǒng)的研究與實現(xiàn) [D].北京:北京工業(yè)大學,2017.

[6] 陳麗麗,林莉,傅曉娟.基于關鍵字驅(qū)動的自動化測試框架研究 [J].長春理工大學學報,2012,7(7):238-239.

[7] 李國強,張虹,王海瑞.軟件測試關鍵技術的研究與應用 [J].火控雷達技術,2014,43(2):112-117.

作者簡介:鄭根讓(1970.09—),男,漢族,陜西寶雞人,副教授,碩士,研究方向:軟件技術與測試、高等職業(yè)教育研究。

主站蜘蛛池模板: 人妻中文久热无码丝袜| 91在线播放免费不卡无毒| 国产主播一区二区三区| vvvv98国产成人综合青青| 一级毛片基地| 制服丝袜一区| 亚洲永久视频| 久草国产在线观看| 亚洲成人动漫在线观看| 精品一区二区三区波多野结衣| 伊人久久影视| 亚洲AV成人一区二区三区AV| 国产在线观看人成激情视频| 漂亮人妻被中出中文字幕久久| 国产哺乳奶水91在线播放| 中国一级特黄视频| 91精品国产综合久久不国产大片| 国产一区二区影院| 一区二区午夜| 国产va在线观看| 久久99精品久久久大学生| 一本大道无码高清| 日韩福利在线视频| 日本一本正道综合久久dvd| 亚洲一欧洲中文字幕在线| 欧美性天天| 中文字幕永久在线看| 国内嫩模私拍精品视频| 国产91线观看| 色天堂无毒不卡| 久99久热只有精品国产15| 日韩二区三区| 666精品国产精品亚洲| 亚洲成年人网| 国产精品jizz在线观看软件| 亚洲欧美日韩成人高清在线一区| 成人福利在线观看| 亚洲永久色| 国产精品第一区在线观看| 久久久久国产一级毛片高清板| 狠狠ⅴ日韩v欧美v天堂| 久久77777| 欧美一级一级做性视频| 国产人成在线观看| 国产欧美视频在线观看| 亚洲综合第一页| 国产精品免费露脸视频| 国产69囗曝护士吞精在线视频| 久久久久无码国产精品不卡| 亚洲全网成人资源在线观看| 国产区免费精品视频| 国产裸舞福利在线视频合集| jizz国产视频| 不卡无码网| 欧美人人干| 国内精品自在欧美一区| 日韩黄色大片免费看| 国产午夜人做人免费视频中文 | 久久黄色小视频| 99re在线视频观看| 国产理论一区| 国产女人在线观看| 久久女人网| 98精品全国免费观看视频| 伊人精品成人久久综合| 91免费国产高清观看| 欧美成人午夜视频| 免费99精品国产自在现线| 国产日韩欧美视频| 日韩天堂在线观看| 99在线视频免费| 在线99视频| 国禁国产you女视频网站| 午夜日韩久久影院| 91成人试看福利体验区| 国产精品私拍在线爆乳| 亚洲综合色婷婷中文字幕| 欧美日韩在线成人| 成人在线不卡视频| 欧美日韩中文字幕在线| 精品国产自在现线看久久| 日韩天堂视频|