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

基于Selenium的unittest框架與數據驅動技術研究及應用

2021-04-04 10:48:17鄭根讓
現代信息科技 2021年18期

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

關鍵詞:Selenium;unittest;框架;數據驅動

中圖分類號: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? 引? 言

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

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

1? Selenium自動化測試

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

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

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

2? Unittest單元測試框架

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

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

3? 資產管理軟件測試需求分析

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

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

4? 框架、數據驅動和discover方法設計

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

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

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

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

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

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

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

Import csv? #導入csv代碼庫

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

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

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

data=csv.reader(stream)? #進行數據格式轉換

list=[]? #將讀取的數據放到list中

i=0

for row in data:? #使用for循環進行讀取

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”)? #進入資產管理系統登錄頁面

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(“資產管理”).click()? #點擊資產管理按鈕

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? 結果分析

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

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

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

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

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

6? 結? 論

項目根據固定資產管理系統的用戶需求以Selenium的Unittest框架為基礎,利用數據驅動和Page Object設計技術對框架進行了優化,用優化的Web應用自動化測試框架對資產管理系統執行測試,同時還進行了手工測試,并將兩種測試結果進行對比。

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

參考文獻:

[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自動化測試框架的開發與應用 [D].武漢:武漢理工大學,2012.

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

[5] 高宇.Web自動化測試系統的研究與實現 [D].北京:北京工業大學,2017.

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

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

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

主站蜘蛛池模板: 一本无码在线观看| 国产精品99r8在线观看 | 国产美女在线免费观看| 欧美人在线一区二区三区| 亚洲中文字幕无码爆乳| 欧美日韩精品一区二区在线线 | 国产精品漂亮美女在线观看| 99r在线精品视频在线播放 | 波多野结衣无码视频在线观看| 国产一级无码不卡视频| 欧美国产日本高清不卡| 四虎永久免费在线| 国产一级在线观看www色 | 国产高清无码第一十页在线观看| 久久久久亚洲精品成人网| 人人妻人人澡人人爽欧美一区| 久草中文网| 欧美日韩国产综合视频在线观看| 91网址在线播放| 激情六月丁香婷婷四房播| 97在线免费视频| 国产成人啪视频一区二区三区| 国产精品99在线观看| 狠狠干综合| 亚国产欧美在线人成| 久久精品66| 婷婷六月天激情| 免费激情网站| 欧美精品H在线播放| 四虎在线观看视频高清无码| 国产精品成人AⅤ在线一二三四| 亚洲国产成熟视频在线多多| 久久国产精品影院| 国产香蕉在线| 亚洲中字无码AV电影在线观看| 免费毛片视频| 孕妇高潮太爽了在线观看免费| 国产一级片网址| 久一在线视频| 在线亚洲精品福利网址导航| 亚洲日韩精品欧美中文字幕| 免费Aⅴ片在线观看蜜芽Tⅴ| 日韩中文字幕免费在线观看| 色哟哟精品无码网站在线播放视频| 人人爽人人爽人人片| 91年精品国产福利线观看久久| 国产欧美视频在线| 波多野结衣AV无码久久一区| 国产在线观看91精品亚瑟| 欧美激情,国产精品| 亚洲,国产,日韩,综合一区| 欧美国产日韩在线观看| 日韩欧美一区在线观看| 国产成人精品高清在线| Jizz国产色系免费| a级免费视频| 99热国产这里只有精品9九| 亚洲国产中文欧美在线人成大黄瓜 | 国内精品免费| 久久综合丝袜日本网| 视频在线观看一区二区| 在线精品欧美日韩| 日韩av无码精品专区| 一本大道香蕉中文日本不卡高清二区 | 久久久久久久蜜桃| 亚洲综合第一区| 亚洲AV无码久久精品色欲| 亚洲天堂成人在线观看| 欧美成人午夜影院| 欧美精品在线免费| 67194成是人免费无码| 天天综合色天天综合网| 国产一级毛片yw| 国产三级毛片| 国产综合在线观看视频| 国产91无码福利在线| 乱人伦99久久| 亚洲午夜久久久精品电影院| 真实国产乱子伦高清| 极品尤物av美乳在线观看| 日本午夜三级| 国产人在线成免费视频|