亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Selenium的Web軟件自動(dòng)化測(cè)試

        2018-09-21 10:03:20劉立康
        關(guān)鍵詞:頁(yè)面

        姜 文,劉立康

        (西安電子科技大學(xué) 通信工程學(xué)院,陜西 西安 710071)

        0 引 言

        隨著互聯(lián)網(wǎng)技術(shù)和云計(jì)算技術(shù)的發(fā)展,很多軟件產(chǎn)品都通過(guò)Web頁(yè)面進(jìn)行操作。Web頁(yè)面具有操作簡(jiǎn)單、操作場(chǎng)景繁瑣等特點(diǎn);之前Web頁(yè)面測(cè)試大都使用手動(dòng)的方法來(lái)進(jìn)行測(cè)試,測(cè)試過(guò)程比較耗費(fèi)人力,技術(shù)含量也較低。隨著軟件技術(shù)的發(fā)展,軟件測(cè)試也逐漸從純手動(dòng)測(cè)試過(guò)渡到手動(dòng)測(cè)試與自動(dòng)化測(cè)試并存。

        近年來(lái),軟件自動(dòng)化測(cè)試技術(shù)發(fā)展很快,出現(xiàn)了很多成熟的自動(dòng)化測(cè)試工具,常見(jiàn)的Web自動(dòng)化測(cè)試工具有:QTP、Silk Test、Selenium等。其中Selenium[1-5]是一款開(kāi)源的、表現(xiàn)非常優(yōu)秀的自動(dòng)化測(cè)試工具。它最大的特點(diǎn)就是可以完全模擬用戶在瀏覽器上進(jìn)行各種Web操作,擁有足夠好的用戶體驗(yàn),是站在用戶的角度對(duì)網(wǎng)站性能進(jìn)行測(cè)試。Web自動(dòng)化測(cè)試工具Selenium的逐漸風(fēng)行,為原本通過(guò)手動(dòng)方式進(jìn)行Web頁(yè)面測(cè)試,提供了相對(duì)簡(jiǎn)單、廉價(jià)的自動(dòng)化方法。

        1 Selenium與Python

        文中使用Selenium和Python工具開(kāi)展Web軟件自動(dòng)化測(cè)試[6-10],以下簡(jiǎn)單介紹這兩個(gè)工具。

        1.1 Selenium

        Selenium是一款開(kāi)源的Web應(yīng)用程序測(cè)試工具。Selenium測(cè)試腳本直接運(yùn)行在瀏覽器中,模擬用戶操作網(wǎng)頁(yè)的過(guò)程。支持在IE、Chrome和FireFox等通用瀏覽器上使用,可以在Windows、Linux、Mac和Solaris 等多種操作系統(tǒng)上運(yùn)行。

        目前廣泛使用的是Selenium2.0以上版本,Selenium2=Selenium1+WebDriver。

        WebDriver是一款自動(dòng)化測(cè)試Web應(yīng)用程序的工具,提供友好的API,使測(cè)試更易于理解和維護(hù)。它不依賴于任何特定的測(cè)試框架,是完全獨(dú)立的,應(yīng)用它不需要啟動(dòng)任何額外的進(jìn)程或者運(yùn)行其他程序。

        Selenium 2[11-13](Selenium WebDriver)是將WebDriver API集成到Selenium 1,解決提供替代編程接口所帶來(lái)的局限性。Selenium 2工具的主要功能包括:對(duì)Web頁(yè)面進(jìn)行功能測(cè)試,支持腳本錄制,支持Java、Python、Ruby和C#等語(yǔ)言的測(cè)試腳本。

        1.2 Python

        Python是一款面向?qū)ο蟮哪_本語(yǔ)言,語(yǔ)法比較簡(jiǎn)單但功能卻很強(qiáng)大。Python語(yǔ)言易讀、易維護(hù),受廣大用戶所歡迎、用途十分廣泛。

        Unittest也稱為PyUnit[14-16],是Python語(yǔ)言的單元測(cè)試框架。自Python2.1版本后,Unittest已經(jīng)成為了Python的標(biāo)準(zhǔn)庫(kù)。Unittest類庫(kù)中包含許多方法可供編程時(shí)調(diào)用,提高了開(kāi)發(fā)測(cè)試腳本的效率和質(zhì)量。

        2 Web軟件項(xiàng)目案例

        在某視頻直播轉(zhuǎn)碼軟件項(xiàng)目中,與Web頁(yè)面相關(guān)的部分作為一個(gè)單獨(dú)的軟件模塊開(kāi)發(fā)。該模塊作為項(xiàng)目的業(yè)務(wù)功能模塊之一,支持從Web頁(yè)面對(duì)視頻文件進(jìn)行直播轉(zhuǎn)碼。

        2.1 軟件開(kāi)發(fā)技術(shù)

        該軟件模塊采用MVC設(shè)計(jì)模式,使用當(dāng)前最流行的Struts2+Spring3+Hibernate框架進(jìn)行開(kāi)發(fā)。前臺(tái)采用JSP進(jìn)行頁(yè)面開(kāi)發(fā)和用戶界面管理,使用JavaScript結(jié)合開(kāi)源的前端插件jQuery EasyUI進(jìn)行前端頁(yè)面開(kāi)發(fā)。后臺(tái)采用Java與MySQL數(shù)據(jù)庫(kù)進(jìn)行開(kāi)發(fā),采用當(dāng)前主流的Java開(kāi)源開(kāi)發(fā)工具Eclipse和Tomcat服務(wù)器進(jìn)行程序開(kāi)發(fā)和發(fā)布。

        2.2 jQuery EasyUI

        jQuery是一套簡(jiǎn)潔、靈活的JavaScript腳本庫(kù),可以幫助Web頁(yè)面開(kāi)發(fā)工程師簡(jiǎn)化JavaScript代碼。jQuery由于簡(jiǎn)便易用的特點(diǎn),在Web前端開(kāi)發(fā)中被廣泛使用。

        EasyUI作為一款開(kāi)源前端插件集合,功能十分強(qiáng)大。應(yīng)用這些插件可以極大地減少Web開(kāi)發(fā)方面的工作量。EasyUI與jQuery結(jié)合在一起應(yīng)用,jQuery負(fù)責(zé)把EasyUI的各種插件搬運(yùn)到Web項(xiàng)目合適的地方,并且讓它真正運(yùn)轉(zhuǎn)起來(lái)。

        2.3 軟件功能測(cè)試點(diǎn)

        Web軟件功能測(cè)試點(diǎn)覆蓋Web頁(yè)面上各場(chǎng)景的正常與異常功能測(cè)試點(diǎn)。Web頁(yè)面的功能測(cè)試包括以下場(chǎng)景:Web頁(yè)面登錄與注銷(xiāo);Web頁(yè)面登錄密碼修改;直播頻道增、刪、改、選中、多頻道翻頁(yè);頻道顯示條數(shù)、頻道各參數(shù)配置;直播頻道啟用和禁用;瀏覽器兼容性測(cè)試,等等。

        3 自動(dòng)化測(cè)試軟件開(kāi)發(fā)過(guò)程

        自動(dòng)化測(cè)試軟件開(kāi)發(fā)過(guò)程主要包括:仔細(xì)研讀軟件需求說(shuō)明書(shū)、分析測(cè)試需求、提交測(cè)試策略、設(shè)計(jì)測(cè)試用例、搭建測(cè)試環(huán)境。手動(dòng)執(zhí)行測(cè)試、選擇自動(dòng)化測(cè)試用例、開(kāi)展自動(dòng)化測(cè)試工作。具體過(guò)程如圖1所示。

        圖1 自動(dòng)化測(cè)試軟件開(kāi)發(fā)過(guò)程

        3.1 制定測(cè)試計(jì)劃

        明確自動(dòng)化測(cè)試的對(duì)象、目的、內(nèi)容、方法、進(jìn)度要求,并確保測(cè)試所需的人力、軟硬件設(shè)備、數(shù)據(jù)等資源準(zhǔn)備充分。

        3.2 分析測(cè)試需求

        根據(jù)需求說(shuō)明書(shū),測(cè)試架構(gòu)師(TSE)編寫(xiě)測(cè)試策略,設(shè)計(jì)測(cè)試功能點(diǎn)。Web功能測(cè)試需要覆蓋頁(yè)面鏈接、控件、頁(yè)面功能、數(shù)據(jù)處理、模塊業(yè)務(wù)邏輯等多種功能的測(cè)試。

        3.3 設(shè)計(jì)測(cè)試用例

        TSE針對(duì)正常和異常情況進(jìn)行測(cè)試用例設(shè)計(jì),測(cè)試用例覆蓋所有測(cè)試功能點(diǎn),共涉及測(cè)試用例288個(gè),并編寫(xiě)測(cè)試用例文檔。

        3.4 搭建測(cè)試環(huán)境

        搭建測(cè)試所需的各種軟硬件環(huán)境,如數(shù)據(jù)、網(wǎng)絡(luò)、測(cè)試工具的安裝和設(shè)置等。

        3.5 手動(dòng)測(cè)試

        手動(dòng)測(cè)試可以發(fā)現(xiàn)Web軟件存在的各種問(wèn)題,同時(shí)也可以檢查測(cè)試用例設(shè)計(jì)中存在的問(wèn)題,為開(kāi)展自動(dòng)化測(cè)試奠定堅(jiān)實(shí)的基礎(chǔ)。

        3.6 選擇自動(dòng)化測(cè)試用例

        選擇可以自動(dòng)化測(cè)試的測(cè)試用例,共選定測(cè)試用例238個(gè),自動(dòng)化率為82.64%。通常兼容性測(cè)試用例不能實(shí)現(xiàn)自動(dòng)化測(cè)試。

        3.7 編寫(xiě)測(cè)試腳本開(kāi)展自動(dòng)化測(cè)試

        采用Python與Selenium工具編寫(xiě)自動(dòng)化測(cè)試腳本,腳本基于Unittest自動(dòng)化測(cè)試框架。完成用例的測(cè)試腳本編寫(xiě)工作后,采取測(cè)試庫(kù)框架優(yōu)化測(cè)試用例腳本,從眾多的腳本中提取出公共函數(shù),供測(cè)試用例調(diào)用。通過(guò)腳本連跑實(shí)現(xiàn)對(duì)Web軟件的自動(dòng)化測(cè)試。

        4 基于Selenium+Python的自動(dòng)化測(cè)試軟件開(kāi)發(fā)

        測(cè)試軟件開(kāi)發(fā)選擇Python作為開(kāi)發(fā)語(yǔ)言,使用Selenium提供的資源進(jìn)行測(cè)試軟件開(kāi)發(fā)。工作內(nèi)容包括安裝各種測(cè)試工具、搭建測(cè)試環(huán)境;錄制、編寫(xiě)測(cè)試腳本;基于測(cè)試庫(kù)框架優(yōu)化軟件代碼;自動(dòng)化腳本連跑;測(cè)試結(jié)果分析。

        4.1 安裝測(cè)試工具

        在執(zhí)行測(cè)試任務(wù)的PC機(jī)(執(zhí)行機(jī))安裝所需的各種測(cè)試工具。

        4.1.1 Python工具

        安裝包為python-2.7.3.msi。安裝完成后,在環(huán)境變量中增加Python工具的相關(guān)目錄路徑。Python工具自帶了一個(gè)輕量級(jí)的集成開(kāi)發(fā)工具IDLE,IDLE可以進(jìn)行測(cè)試腳本的編輯、調(diào)試和執(zhí)行。

        4.1.2 Selenium工具

        網(wǎng)上下載基于Python語(yǔ)言的軟件包selenium-2.50.1-py2-none-any.whl,執(zhí)行pip install selenium-2.50.1-py2-none-any.whl進(jìn)行軟件包安裝。安裝完成后Selenium軟件包安裝在Python工具的lib目錄下。

        4.1.3 安裝Firefox瀏覽器和Selenium IDE工具

        首先安裝Firefox瀏覽器,然后在該瀏覽器上安裝Selenium IDE工具。Selenium IDE是Firefox瀏覽器的插件,只能安裝在Firefox瀏覽器上。

        4.1.4 安裝MySQL數(shù)據(jù)庫(kù)的相關(guān)工具

        在Python程序中讀寫(xiě)MySQL數(shù)據(jù)庫(kù),需要安裝相關(guān)的工具。

        (1)安裝MySQL-python工具,安裝包為MySQL-python-1.2.5.win32-py2.7.exe。

        (2)安裝MySQL連接器,安裝包為mysql-gui-tools-5.0-r17-win32.msi。

        安裝完成后,可以通過(guò)SQL語(yǔ)句對(duì)MySQL數(shù)據(jù)庫(kù)表單進(jìn)行操作。

        4.1.5 pycharm工具安裝

        pycharm工具的安裝包為pycharm-community-5.0.3.exe。pycharm工具是Python重量級(jí)IDE,功能強(qiáng)大,自動(dòng)檢測(cè)語(yǔ)法,可以幫助開(kāi)發(fā)者寫(xiě)出更規(guī)范的Python代碼。

        4.2 搭建測(cè)試環(huán)境

        Java Web軟件[17]基本組成如圖2所示。搭建測(cè)試環(huán)境需要安裝瀏覽器和Web應(yīng)用軟件。文中的Web軟件選擇Chrome或者Firefox瀏覽器作為客戶端瀏覽器。

        圖2 Java Web軟件基本組成

        4.2.1 安裝瀏覽器

        在測(cè)試執(zhí)行機(jī)上安裝瀏覽器,目前安裝的Python與Selenium工具要求谷歌瀏覽器的版本不能低于43.0.2357.0。谷歌瀏覽器安裝包為48.0.2564.116_chrome_installer.exe。安裝完谷歌瀏覽器后,還需要安裝谷歌瀏覽器驅(qū)動(dòng)程序chromedriver.exe,將其安裝在指定的目錄下。

        4.2.2 Web軟件測(cè)試環(huán)境部署

        Web軟件測(cè)試環(huán)境部署在操作系統(tǒng)為Windows 7的PC機(jī)上。

        (1)安裝JDK、Tomcat與MySQL。

        JDK安裝包為jdk-7u15-windows-is86.exe(1.7.0_15版本)。Tomcat安裝包為apache-tomcat-7.0.29-windows-x86.zip,直接解壓、安裝。MySQL數(shù)據(jù)庫(kù)安裝包為mysql-5.5.8-win32.msi。完成三個(gè)軟件安裝后,在環(huán)境變量中添加JDK、Tomcat、MySQL工具的相關(guān)目錄路徑。

        (2)安裝Web產(chǎn)品軟件包。

        Web產(chǎn)品軟件包為*.war格式的軟件包,將軟件包部署到Tomcat安裝路徑下的webapps文件夾中,部署完成之后,切換目錄到Tomcat安裝路徑下的bin文件夾下,執(zhí)行startup.bat文件啟動(dòng)Tomcat服務(wù)。網(wǎng)頁(yè)的IP地址為部署Web軟件PC機(jī)的IP地址。

        4.3 錄制測(cè)試腳本

        在Firefox瀏覽器上啟動(dòng)Web軟件程序,找到菜單欄“工具”下的Selenium IDE,單擊后出現(xiàn)錄制頁(yè)面,點(diǎn)擊紅色錄制按鈕,開(kāi)始錄制。根據(jù)測(cè)試用例進(jìn)行手動(dòng)測(cè)試操作,測(cè)試操作完成后,按下紅色按鈕停止錄制。從Selenium IDE工具導(dǎo)出錄制的Python腳本,該腳本文件名與測(cè)試用例編號(hào)相對(duì)應(yīng)。

        目前Web頁(yè)面的登錄、注銷(xiāo)以及修改密碼等簡(jiǎn)單的場(chǎng)景采用Selenium IDE工具錄制之后,可以導(dǎo)出正確可用的測(cè)試腳本。其他包含復(fù)雜測(cè)試場(chǎng)景的Web自動(dòng)化測(cè)試用例錄制后并不能生成真正可用的腳本。某些測(cè)試場(chǎng)景不支持通過(guò)Selenium IDE工具錄制腳本。

        腳本錄制完成之后通常還需要修改、完善。錄制的測(cè)試用例腳本擁有Unittest測(cè)試框架,為腳本的進(jìn)一步編寫(xiě)工作提供了良好的基礎(chǔ)。

        4.4 編寫(xiě)自動(dòng)化測(cè)試用例腳本

        測(cè)試用例腳本采用Python進(jìn)行程序設(shè)計(jì)。對(duì)于Python而言,代碼縮進(jìn)是一種語(yǔ)法,Python沒(méi)有像其他語(yǔ)言一樣采用{}或者begin...end分隔代碼塊,而是采用代碼縮進(jìn)和冒號(hào)來(lái)區(qū)分代碼之間的層次??s進(jìn)的空白數(shù)量是可變的,但是所有代碼塊語(yǔ)句必須包含相同的縮進(jìn)空白數(shù)量,這個(gè)必須嚴(yán)格執(zhí)行。Python腳本中出現(xiàn)未對(duì)齊的行,該行下方就會(huì)出現(xiàn)紅色曲線??梢允褂每崭矜I調(diào)整格式,直到紅色曲線消失。

        當(dāng)腳本中一行的字符數(shù)過(guò)多時(shí),會(huì)報(bào)PEP 8的告警。應(yīng)該將長(zhǎng)字符串分隔成多行顯示。

        4.4.1 自動(dòng)化測(cè)試腳本框架

        下面是一個(gè)簡(jiǎn)單測(cè)試用例腳本示例:

        #-*- coding:utf-8 -*-

        from selenium importwebdriver

        importunittest

        ......

        class BaiduTest(unittest.TestCase):

        def setUp(self):

        self.driver=webdriver.Chrome ()

        self.base_url=u"http://www.baidu.com"

        deftest_baidu_search(self):

        driver=self.driver

        driver.get(self.base_url)

        self.assertEqual(driver.title, u"百度一下,你就知道")

        driver.find_element_by_id("kw").clear()

        ……

        def tearDown(self):

        self.driver.quit()

        if __name__=="__main__":

        unittest.main()

        從腳本示例中可以看出,通常測(cè)試腳本由5部分組成:

        (1)導(dǎo)入需要調(diào)用的程序模塊。

        (2)定義繼承unittest.TestCase的測(cè)試類,從而可以使用unittest.TestCase類中的各種方法。

        (3)在初始化方法setUp中,初始化webdriver,設(shè)置測(cè)試環(huán)境。該方法自動(dòng)執(zhí)行。

        (4)定義測(cè)試方法,首先定位Web元素,然后開(kāi)展相關(guān)測(cè)試場(chǎng)景的操作。

        (5)在清理方法tearDown中,執(zhí)行測(cè)試用例運(yùn)行后的清理工作,如退出webdriver、關(guān)閉驅(qū)動(dòng)、恢復(fù)用例執(zhí)行前的狀態(tài)等。該方法自動(dòng)執(zhí)行。

        4.4.2 Web元素定位

        Web元素定位就是在Web頁(yè)面上找到待測(cè)試的Web元素。手工測(cè)試時(shí),測(cè)試人員容易在Web頁(yè)面上找到Web元素開(kāi)展測(cè)試工作。自動(dòng)化測(cè)試通過(guò)測(cè)試程序在Web頁(yè)面對(duì)應(yīng)的HTML文件中定位Web元素,這是進(jìn)行Web元素測(cè)試的第一步。Web元素定位有多種方法,文中的軟件項(xiàng)目測(cè)試過(guò)程中主要采用如下四種方法。

        (1)基于元素ID的定位。

        該方法通過(guò)查找Web頁(yè)面上的元素ID值來(lái)獲取元素,比較簡(jiǎn)單,適合Web元素ID固定的情況來(lái)使用,對(duì)于動(dòng)態(tài)分配Web元素ID的情況不能使用。

        (2)基于元素XPATH的定位方法。

        元素XPATH的定位類似查找一個(gè)人的地址,通過(guò)頁(yè)面html文件中的標(biāo)簽名的層級(jí)關(guān)系定位元素的絕對(duì)路徑。這種定位元素方法在實(shí)際使用過(guò)程中,可以針對(duì)元素的XPATH進(jìn)行修改,添加上、下層級(jí)的腳本標(biāo)示,增加元素獲取的準(zhǔn)確性。

        (3)基于元素CSS的定位方法。

        該定位方法查找Web元素的CSS屬性來(lái)獲取元素。CSS(cascading style sheets)層疊樣式表是用來(lái)表現(xiàn)HTML或XML的標(biāo)記語(yǔ)言。CSS使用選擇器來(lái)為頁(yè)面元素綁定屬性。元素CSS定位方法,相對(duì)前兩種方法要復(fù)雜一些,元素的CSS屬性選擇比較靈活多樣。

        (4)基于元素LINK的定位。

        該定位方法僅適用于文本鏈接的場(chǎng)景,通過(guò)元素標(biāo)簽對(duì)應(yīng)的文本信息來(lái)定位元素,相對(duì)其他的元素定位方法,適用的場(chǎng)景比較有限。

        4.4.3 測(cè)試方法

        完成Web元素定位后,需要對(duì)相關(guān)的場(chǎng)景進(jìn)行各種操作,開(kāi)展測(cè)試工作。文獻(xiàn)[14]介紹了采用Python語(yǔ)言在各種常見(jiàn)場(chǎng)景中的操作方法。文獻(xiàn)[15]采用Java語(yǔ)言介紹了同樣的內(nèi)容。網(wǎng)上也可以查到大量測(cè)試場(chǎng)景操作方法。編寫(xiě)測(cè)試方法是腳本編寫(xiě)的核心內(nèi)容。

        下面介紹測(cè)試腳本編寫(xiě)過(guò)程中兩種場(chǎng)景的處理方法:

        (1)Web頁(yè)面中包含iframe框架。

        Web頁(yè)面中包含iframe框架時(shí),如果要提取iframe框架中的元素,需要在腳本中使用swtich_to_iframe實(shí)現(xiàn)框架切換。在該iframe框架上的相關(guān)操作完成后,需要從該iframe框架切換回來(lái),在腳本中使用swtich_to_default_content來(lái)實(shí)現(xiàn)。

        (2)文本框或數(shù)字框輸入非法值場(chǎng)景。

        Web頁(yè)面上很多元素是使用EasyUI制作的,其中包含大量的文本框和數(shù)字框場(chǎng)景。由于填入文本或數(shù)字都有一定的取值范圍限制,當(dāng)文本框或數(shù)字框中填入非法值時(shí),文本框或數(shù)字框的右側(cè)通常會(huì)彈出tooltip類型的提示框,提示填入的內(nèi)容非法。填入非法值之后,tooltip提示框會(huì)在鼠標(biāo)移動(dòng)出對(duì)應(yīng)文本框或數(shù)據(jù)框之后消失。測(cè)試腳本需要定位tooltip類型的提示框。

        解決辦法:當(dāng)文本框與數(shù)字框中輸入非法值時(shí),可以通過(guò)基于元素CSS的方法來(lái)定位tooltip元素,檢測(cè)tooltip中所提示的文本內(nèi)容。具體方法如下:

        Tip=driver.find_element_by_css_selector(“div[class‘tooltip tooltip-right’]”).text

        4.4.4 MySQL數(shù)據(jù)庫(kù)操作

        測(cè)試腳本對(duì)Web軟件進(jìn)行頻道添加、頻道修改以及各類頻道參數(shù)配置后,相關(guān)數(shù)據(jù)會(huì)寫(xiě)入MySQL數(shù)據(jù)庫(kù)中對(duì)應(yīng)的數(shù)據(jù)表中。在編寫(xiě)測(cè)試腳本時(shí),需要通過(guò)MySQL-python工具來(lái)實(shí)現(xiàn)對(duì)MySQL數(shù)據(jù)庫(kù)的操作,腳本實(shí)現(xiàn)時(shí)首先需要在腳本的最前面加上import MySQLdb,然后在測(cè)試腳本的測(cè)試方法中添加對(duì)MySQL數(shù)據(jù)庫(kù)的操作語(yǔ)句,實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的讀寫(xiě)操作。代碼內(nèi)容如下所示:

        conn=MySQLdb.connect(host=‘10.185.31.52’,port=‘3306’,

        user=‘root’,password=‘huawei’,db=‘hwwebom’,charset=‘utf8’)

        cur=conn.cursor()

        cur.execute(“select name from hwwebom.t_channel where name=‘%s’ ” % channel_name)

        for cha_name in cur.fetchall():

        print cha_name

        cur.close()

        conn.commit()

        conn.close()

        4.4.5 執(zhí)行用例腳本生成測(cè)試報(bào)告

        測(cè)試用例腳本為*.py類型文件,在執(zhí)行機(jī)上點(diǎn)擊該文件就可以自動(dòng)運(yùn)行。希望在測(cè)試用例腳本執(zhí)行之后生成測(cè)試報(bào)告,需要使用Unittest的第三方測(cè)試報(bào)告模塊HTMLTestRunner(該模塊不在標(biāo)準(zhǔn)庫(kù)中,需要自行下載),加載該模塊后可以生成HTML格式的測(cè)試報(bào)告。將HTMLTestRunner.py文件保存Python的Lib目錄下,就可以在測(cè)試腳本中調(diào)用該模塊,具體實(shí)現(xiàn)過(guò)程如下所示:

        if __name__==“__main__”:

        now=time.strftime(“%Y-%m-%d-%H-%M-%S”)

        filename=report_dir+‘/’+now+’_Web_Login_result.html’

        fp=open(filename,‘wb’)

        runner=HTMLTestRunner(

        stream=fp,

        title=unicode(‘測(cè)試報(bào)告’),

        description=Unicode(‘測(cè)試執(zhí)行情況:’)

        )

        runner.run(discover)

        fp.close()

        在生成測(cè)試報(bào)告文件時(shí),將測(cè)試報(bào)告生成的時(shí)間作為測(cè)試報(bào)告文件名的一部分,并將測(cè)試報(bào)告文件生成的時(shí)間、測(cè)試用例運(yùn)行結(jié)果寫(xiě)入測(cè)試報(bào)告。

        4.5 基于測(cè)試庫(kù)框架優(yōu)化測(cè)試軟件

        測(cè)試庫(kù)框架(test library framework)把應(yīng)用程序分成過(guò)程和函數(shù)。該框架創(chuàng)建應(yīng)用程序函數(shù)的庫(kù)文件,庫(kù)文件中的函數(shù)供應(yīng)用程序調(diào)用。測(cè)試庫(kù)架構(gòu)框架的優(yōu)點(diǎn)在于能夠刪除明顯重復(fù)的部分,優(yōu)化腳本代碼。

        獨(dú)立編寫(xiě)的測(cè)試用例腳本,整體結(jié)構(gòu)凌亂。需要將很多的公共場(chǎng)景與Web頁(yè)面上的公共元素參數(shù)提取出來(lái)作為公共函數(shù)與共享參數(shù);重新修改測(cè)試腳本,規(guī)范優(yōu)化測(cè)試腳本;減少代碼冗余,提高腳本質(zhì)量;同時(shí)也方便業(yè)務(wù)擴(kuò)展之后的腳本修改和維護(hù)。

        4.5.1 測(cè)試軟件目錄結(jié)構(gòu)

        測(cè)試軟件的目錄結(jié)構(gòu)如圖3所示。測(cè)試腳本按功能分類存放在各自文件夾中。公共函數(shù)與公共配置文件存放在Public文件夾中。執(zhí)行連跑任務(wù)的Python 腳本存放在根(Root)目錄中。測(cè)試報(bào)告存放在Tesst_report目錄中。

        圖3 測(cè)試軟件目錄結(jié)構(gòu)

        4.5.2 公共函數(shù)的功能

        Public文件夾中共包含了5個(gè)公共函數(shù)文件。其他文件夾中測(cè)試腳本可以調(diào)用Public文件中公共函數(shù)文件中的函數(shù),在Public文件夾中需要添加__init__.py文件。5個(gè)公共函數(shù)文件實(shí)現(xiàn)的功能如表1所示。

        表1 公共函數(shù)的功能

        4.5.3 公共配置文件

        Python標(biāo)準(zhǔn)庫(kù)的ConfigParser[18]模塊提供一套API來(lái)讀取和操作配置文件。ConfigParser是用來(lái)讀取配置文件的包,可以把一些常用的參數(shù)放在配置文件中,供多個(gè)腳本共同使用。

        公共配置文件中主要寫(xiě)入元素定位參數(shù)。在測(cè)試腳本編寫(xiě)中,多個(gè)測(cè)試腳本需要對(duì)同一Web元素定位,將該元素的定位參數(shù)值寫(xiě)入配置文件,方便編程時(shí)共同使用。

        以場(chǎng)景登錄(Login)時(shí)輸入“用戶名”和“密碼”為例,敘述公共配置文件的使用方法。

        (1)在腳本開(kāi)頭添加:import ConfigParser。

        (2)打開(kāi)公共配置文件。

        all_dir=os.path.split(os.getcwd())

        ini_dir=all_dir[0]

        css_selector_filename=os.path.join(ini_dir,‘css_selector.ini’)

        (3)獲取配置文件中指定的配置信息。

        [global]

        Tip_Username_Null=/html/body/div[2]/div[3]/form/div[1]/div/small[1]

        Tip_Password _Null=/html/body/div[2]/div[3]/form/div[2]/div/small

        (4)將獲取的元素定位信息賦值給元素定位函數(shù)的參數(shù)變量,進(jìn)行定位場(chǎng)景操作。

        4.6 測(cè)試腳本連跑

        測(cè)試腳本連跑是指全部測(cè)試腳本在程序控制下依次自動(dòng)運(yùn)行。

        4.6.1 測(cè)試腳本連跑實(shí)現(xiàn)方法

        腳本連跑使用discover方法,具體實(shí)現(xiàn)方式如下所示:

        test_dir=‘./Web_Login’

        report_dir=‘./Test_Report’

        #discover方法定義

        discover=unittest.defaultTestLoader.discover(test_dir,patter n=‘*.py’)

        定義連跑路徑變量和測(cè)試結(jié)果報(bào)告存放路徑變量,然后調(diào)用discover方法執(zhí)行連跑路徑下所有的測(cè)試腳本,連跑完成之后生成每個(gè)測(cè)試腳本的測(cè)試報(bào)告。

        4.6.2 設(shè)定定時(shí)腳本連跑任務(wù)

        采用相關(guān)工具設(shè)定定時(shí)連跑任務(wù)。

        (1)BAT腳本啟動(dòng)連跑任務(wù)。

        編寫(xiě)B(tài)AT腳本,調(diào)用根(Root)目錄下的Python連跑腳本,啟動(dòng)連跑任務(wù)。腳本內(nèi)容如下所示:

        @echo off

        set Script_path=D:Python_27_3Project_Live_New

        set Report_path=D:Python_27_3Project_Live_NewTest_Report

        taskkill /f /im FireFox.exe /t

        cd /d % Script_path %

        ::調(diào)用Python腳本執(zhí)行連跑

        python Report_Test_Mod_Password.py-v

        (2)Windows的任務(wù)計(jì)劃程序定時(shí)連跑。

        若執(zhí)行機(jī)的操作系統(tǒng)是Windows,在操作系統(tǒng)的附件中啟動(dòng)任務(wù)計(jì)劃程序,設(shè)置Bat腳本定時(shí)運(yùn)行任務(wù)。

        4.6.3 持續(xù)集成工具定時(shí)連跑

        在執(zhí)行機(jī)上安裝持續(xù)集成工具Jenkin或者ICP-CI,編寫(xiě)Ant腳本,創(chuàng)建持續(xù)集成工程,進(jìn)行Web自動(dòng)化腳本定時(shí)連跑。

        5 測(cè)試結(jié)果分析

        基于Selenium+Python的自動(dòng)化測(cè)試軟件開(kāi)發(fā)完成后,使用效果良好。

        (1)提高測(cè)試效率。

        手動(dòng)執(zhí)行288個(gè)Web測(cè)試用例耗時(shí)7人/天,且無(wú)法實(shí)現(xiàn)反復(fù)測(cè)試,整理測(cè)試報(bào)告也需要花費(fèi)大量時(shí)間與人力。Web自動(dòng)化測(cè)試腳本實(shí)現(xiàn)了82.64%的測(cè)試場(chǎng)景自動(dòng)化,238個(gè)自動(dòng)化測(cè)試用例連跑大約需要3個(gè)小時(shí),同時(shí)可以實(shí)現(xiàn)測(cè)試報(bào)告自動(dòng)輸出,可以利用非工作時(shí)間反復(fù)執(zhí)行測(cè)試任務(wù)。

        (2)預(yù)測(cè)試。

        可用于軟件集成測(cè)試、系統(tǒng)測(cè)試、驗(yàn)收測(cè)試的預(yù)測(cè)試。

        6 結(jié)束語(yǔ)

        結(jié)合Web軟件項(xiàng)目詳細(xì)敘述了基于Selenium+Python的自動(dòng)化測(cè)試軟件開(kāi)發(fā)過(guò)程, 介紹了開(kāi)發(fā)過(guò)程中遇到的許多技術(shù)細(xì)節(jié)。工作實(shí)踐表明,該測(cè)試軟件在使用過(guò)程中效果良好,可以提高軟件開(kāi)發(fā)與測(cè)試的效率,降低軟件的開(kāi)發(fā)成本。同時(shí)彌補(bǔ)了手工測(cè)試時(shí)重復(fù)勞動(dòng)的缺點(diǎn),減少了測(cè)試人員大量的重復(fù)測(cè)試驗(yàn)證工作;也有助于做好軟件項(xiàng)目的管理工作。

        猜你喜歡
        頁(yè)面
        微信群聊總是找不到,打開(kāi)這個(gè)開(kāi)關(guān)就好了
        大狗熊在睡覺(jué)
        刷新生活的頁(yè)面
        在本機(jī)中輕松完成常見(jiàn)PDF操作
        移動(dòng)頁(yè)面設(shè)計(jì):為老人做設(shè)計(jì)
        Web安全問(wèn)答(3)
        同一Word文檔 縱橫頁(yè)面并存
        網(wǎng)站結(jié)構(gòu)在SEO中的研究與應(yīng)用
        幾種頁(yè)面置換算法的基本原理及實(shí)現(xiàn)方法
        淺析ASP.NET頁(yè)面導(dǎo)航技術(shù)
        国产精品妇女一区二区三区| 国产午夜亚洲精品一级在线| 日本高清视频在线一区二区三区| 丰满少妇被爽的高潮喷水呻吟| 乱子轮熟睡1区| 中文字幕一区二区三区精彩视频| 欧美日韩一区二区三区色综合| 美女把内衣内裤脱了给男人舔| 色偷偷激情日本亚洲一区二区| 国产午夜无码片在线观看影院| 亚洲成av人片无码不卡播放器| 精品女同一区二区三区免费播放| 亚洲中文字幕久久精品品| 亚洲av无码久久精品蜜桃| 亚洲天堂免费视频| 亚洲精品乱码久久麻豆| 亚洲av免费手机在线观看| 亚洲综合精品伊人久久| 无码国产精品第100页| 午夜视频手机在线免费观看| 日韩人妻熟女中文字幕a美景之屋| 国外亚洲成av人片在线观看| www.91久久| av在线播放中文专区| 久久97久久97精品免视看| 色爱区综合激情五月综合小说 | 欧美日韩精品一区二区三区高清视频| 欧美日韩性视频| 国产精品久久久看三级| 亚洲线精品一区二区三区| 色欲av亚洲一区无码少妇| 无码人妻专区一区二区三区| 国产一区二区黄色网页| 亚洲成av人片天堂网| 加勒比无码专区中文字幕| 日本不卡一区二区三区在线观看| 久久久久亚洲av成人网人人软件| 精品国精品国产自在久国产应用| 又大又粗又爽18禁免费看| 日韩国产欧美| 国产剧情亚洲一区二区三区|