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

        ?

        Python語言在自動化測試系統(tǒng)中的應(yīng)用

        2017-05-10 23:49:29華劍南
        電子技術(shù)與軟件工程 2017年8期

        華劍南

        摘 要

        自動化測試系統(tǒng)在敏捷開發(fā)、持續(xù)集成和持續(xù)交付中起著非常重要的作用。它對加快新功能發(fā)布,縮短現(xiàn)場問題解決時間,提升用戶感受度,乃至提高企業(yè)競爭力都至關(guān)重要。本文結(jié)合筆者在自動化測試系統(tǒng)建設(shè)中的實踐,具體描述了利用Python語言設(shè)計完成的基于機器人框架,關(guān)鍵字驅(qū)動的案例。最后指出了這套系統(tǒng)進一步改進的方向。

        【關(guān)鍵詞】自動化測試系統(tǒng) 機器人框架(Robot Framework,RF) 關(guān)鍵字驅(qū)動 Python

        1 自動化測試系統(tǒng)實現(xiàn)簡介

        筆者參與開發(fā)的自動化測試系統(tǒng),和編譯服務(wù)器關(guān)聯(lián),由系統(tǒng)掃描偵測,實現(xiàn)基于某種策略的版本自動下載(最大頻度測試,最相關(guān)版本測試,如包含本測試組發(fā)現(xiàn)的軟件缺陷版本優(yōu)先,或指定版本測試等),然后分發(fā)到相應(yīng)設(shè)備,進行版本升級安裝,觸發(fā)測試用例的運行,生成測試報告,發(fā)送郵件給項目干系人,更新測試記錄等。

        自動化測試系統(tǒng),能實現(xiàn)在第一時間觸發(fā)測試,能更頻繁地測試各個版本,能運行更多、更繁瑣的測試,進而在缺陷出現(xiàn)時及時發(fā)現(xiàn),幫助開發(fā)團隊縮小缺陷出現(xiàn)的代碼范圍,便于定位問題,解決問題,這為敏捷開發(fā)持續(xù)集成,持續(xù)發(fā)布提供了強有力的支撐。

        自動化測試系統(tǒng),基于機器人框架(robot Framework,RF),RF有豐富的庫,使用關(guān)鍵字驅(qū)動技術(shù),可以實現(xiàn)循環(huán),選擇等邏輯,測試用例中支持變量的使用,測試人員可以創(chuàng)建自己需要的關(guān)鍵字,具有很大的靈活性和可擴展性,可以實現(xiàn)定制的復(fù)雜或特殊的功能。ride 是RF的編輯工具,測試用例可以用表格輸入,使得測試人員以類似于自然語言的方式(關(guān)鍵字)來描述測試用例, 即使沒有編程基礎(chǔ)的測試人員也容易上手,而RF會將關(guān)鍵字轉(zhuǎn)化為測試動作(底層即Python類方法,函數(shù)的調(diào)用)。

        Python是一種面向?qū)ο蟆⒔忉屝?、跨平臺的高級程序設(shè)計語言,可以應(yīng)用于自動化測試,數(shù)據(jù)分析等眾多領(lǐng)域,Python用代碼縮進來代替花括號,表示語句塊邏輯層次,既使得源程序風(fēng)格接近,又提高了可讀性;Python的類庫齊全并且產(chǎn)出率高,實現(xiàn)相同的功能,Python 比很多其他語言代碼量少,這意味著易維護,出現(xiàn)問題的概率也下降。RF就是一種基于Python的可擴展關(guān)鍵字驅(qū)動的通用自動化測試框架。

        2 Python語言在自動化測試系統(tǒng)中的應(yīng)用

        利用RF編寫定制的測試用例,需要開發(fā)自己的關(guān)鍵字,編寫自定義python庫。下文通過一個實例來介紹這個過程。

        首先,在python安裝目錄c:\Python27\Lib\site-packages\下新建一個文件夾NewUE,文件夾名就是庫名,然后,在該文件夾內(nèi)創(chuàng)建一個python文件ueclass.py,代碼中定義一個UEClass類,類中定義了一個ue1Behavior方法,該方法即RF中的新關(guān)鍵字。

        在NewUE文件夾內(nèi)再創(chuàng)建文件名 __init__.py 文件,RF通過這個初始化文件獲取新關(guān)鍵字類。它的類名和庫名相同, 括號里的類是ueclass.py中定義的類:

        fromueclass import UEClass

        classNewUE(UEClass):

        ROBOT_LIBRARY_SCOPE = 'GLOBAL'

        自定義的NewUE庫就創(chuàng)建好了,在RF的編輯器ride中導(dǎo)入這個庫,然后即可使用新創(chuàng)建的關(guān)鍵字。如果要新增關(guān)鍵字ue2Behavior,只要在UEClass類中增加名為ue2Behavior的方法即可。

        導(dǎo)入新庫,若庫名顯示為黑色,表明導(dǎo)入成功,若紅色則表明導(dǎo)入失敗??梢酝ㄟ^在一個python文件中import NewUE來調(diào)試,通??梢愿鶕?jù)出錯消息提示框,排除源文件中的錯誤。修正錯誤后,把原來的 *.pyc 全刪除,運行如下命令編譯,然后重新導(dǎo)入:

        python -m compileallueclass.py

        python -m compileall __init__.py

        如圖1所示。

        自動化測試系統(tǒng)的理想目標(biāo)是全自動,在策略和任務(wù)定義好后,免予人工干預(yù)。為達到這一目標(biāo),需要實現(xiàn)RF和其他系統(tǒng)的配合。下文介紹在這套系統(tǒng)中開發(fā)的三個重要模塊:下載,定制測試報告,郵件分發(fā)模塊。

        編譯隨時可能完成,系統(tǒng)需要有自動下載功能(關(guān)鍵字Auto_DL)以免浪費時間, 基本的過程如下, 首先系統(tǒng)處于空閑狀態(tài),即還未開始測試或上次測試任務(wù)已完成, Auto_DL會定時登錄到指定服務(wù)器,檢測是否有新版本編譯完成,并判斷該版本是否可用:按上文提及的某種特定的策略選擇新版本,判斷該版本是否符合自動化測試的最低要求,例如已通過冒煙測試,通過則可下載該版本,退出Auto_DL, 觸發(fā)下一個環(huán)節(jié),升級安裝該版本。這個過程循環(huán)往復(fù),以達到盡快測試符合策略的版本或盡可能多地測試各種版本等目的.本系統(tǒng)用Python 自帶的標(biāo)準(zhǔn)模塊urllib2, re實現(xiàn)新版本偵測和判斷是否為可用版本,發(fā)送HTTP request,在獲取的返回信息中,利用正則表達式標(biāo)準(zhǔn)模塊re中的搜索函數(shù)findall和符合指定特征的正則表達式判斷是否需要下載新版本;用Python 自帶的標(biāo)準(zhǔn)模塊ftplib實現(xiàn)文件下載, 直接導(dǎo)入ftplib,生成一個FTP對象,連接到ftp服務(wù)器, 以寫模式在本地打開接收文件, 接收服務(wù)器上的文件并寫入本地文件,最后關(guān)閉文件,完成下載工作。

        下載完成后,系統(tǒng)自動安裝并執(zhí)行測試用例。RF能產(chǎn)生測試報告,但是無法定制測試報告,新開發(fā)的定制測試報告模塊就是根據(jù)測試管理團隊的特殊要求,提供符合需求的報告, 可以包括測試團隊名字,測試時間,測試環(huán)境的硬件配置,軟件版本信息, 測試用例運行結(jié)果匯總情況, 是否更新測試記錄或需要進一步分析等。測試結(jié)果由網(wǎng)頁和附件的形式發(fā)送給指定接收人。同時,除了測試結(jié)果文件,還提供超鏈接,可以查看測試日志等,特別是當(dāng)測試用例失敗后,測試人員可以進一步分析日志,確定是哪個領(lǐng)域出現(xiàn)了軟件缺陷,對應(yīng)的開發(fā)人員也可以根據(jù)日志,修正軟件缺陷,提供新版本給測試人員再次驗證。

        定制報告生成后,需要發(fā)送測試結(jié)果,郵件發(fā)送模塊利用Python 自帶的標(biāo)準(zhǔn)庫,smtplib, configparser, email等。為把數(shù)據(jù)和業(yè)務(wù)邏輯分離, 通常把郵件服務(wù)器地址,用戶名,密碼,發(fā)件人等寫入配置文件, 在主程序中這些信息由configparser來解析,可以把主機名傳遞給SMTP構(gòu)造函數(shù),然后用smtplib.SMTP()創(chuàng)建一個smtp對象,用smtp.login()進行登錄操作, 最后用smtp.sendmail()發(fā)送郵件,用smtp.quit()方法關(guān)閉連接。

        Sendmail(sender,recipients,message)方法可用于發(fā)送電子郵件,參數(shù)Sender,recipients分別是郵件發(fā)送者和接收者地址列表,從配置文件中讀取,參數(shù)Message是一個長字符串格式的消息,本模塊中將網(wǎng)頁形式的測試報告解析后作為郵件正文發(fā)送給接收方。創(chuàng)建MIMEMultipart對象,獲取郵件主題等信息,創(chuàng)建MIMEText對象,讀取網(wǎng)頁文件內(nèi)容,再用MIMEMultipart對象的attach,把網(wǎng)頁文件內(nèi)容包含到MIMEMultipart對象中。Sendmail()方法最終完成郵件發(fā)送。

        改進方向:

        本測試系統(tǒng)主要是回歸測試,不可能完全取代手工測試,有些情況下不適合自動化測試,例如探索性測試,軟件版本很不穩(wěn)定,測試儀表未提供腳本控制接口等。產(chǎn)品新的功能開發(fā)完成后,一般先經(jīng)手工測試,所以通常自動測試比手工測試發(fā)現(xiàn)的缺陷要少些,但由于RF的可擴展性,我們可以方便地將新測試用例加入到自動化測試系統(tǒng)里來,不斷提高該系統(tǒng)的測試覆蓋率。

        另一方面,可以進一步提高自動化測試系統(tǒng)的智能,實現(xiàn)對日志文件的分析。測試專家了解預(yù)期測試結(jié)果,熟悉日志和缺陷的映射關(guān)系,根據(jù)日志可推斷可能的錯誤分支,出錯模塊等。本系統(tǒng)擬增加日志分析模塊,用于替代人工判斷,利用Python強大的文本分析和正則表達式搜索功能,結(jié)合業(yè)務(wù)知識及測試專家的經(jīng)驗,對失敗的測試用例日志進行分析,由系統(tǒng)給出日志分析結(jié)果。

        3 結(jié)論

        本測試系統(tǒng)主要用于發(fā)現(xiàn)已知的缺陷,確保新功能加入后原有功能不受影響。同時,由于自動化系統(tǒng)很方便進行相同測試用例的大量重復(fù),進而可能發(fā)現(xiàn)手工測試不易檢出的偶發(fā)問題。

        由于新關(guān)鍵字易于擴展,隨著產(chǎn)品功能的不斷增加,測試用例集合也可以不斷地擴充。由于RF的可擴充性,可以在自動化測試系統(tǒng)中增加新的模塊,進一步提高系統(tǒng)的智能,大大提高測試效率并降低測試工程師重復(fù)勞動的強度。測試人員把精力放在深入理解業(yè)務(wù)邏輯,設(shè)計新測試用例,再把新用例應(yīng)用于自動化測試系統(tǒng)中,進而形成測試工作的良性循環(huán)。

        參考文獻

        [1]Steven F. Lott.譯者:張心韜,蘭亮.責(zé)編:陳冀康.Python面向?qū)ο缶幊讨改蟍M].人民郵電出版社,2016.

        李白姓白白又白类似的套路| 大地资源网更新免费播放视频| 久久av无码精品人妻糸列| 国产精品女同学| 热99re久久精品这里都是免费| 第十色丰满无码| 色噜噜亚洲精品中文字幕| 婷婷色综合视频在线观看| 少妇高清精品毛片在线视频| 欧美日韩亚洲成色二本道三区 | 岳毛多又紧做起爽| 久久中文字幕av一区二区不卡| 久久国产亚洲中文字幕| 国产一区亚洲一区二区| 亚洲另类丰满熟妇乱xxxx| 真实国产老熟女无套中出| 国产99r视频精品免费观看| 蜜臀av中文人妻系列| 久久99精品国产麻豆| 久久精品国产免费观看| 欧洲色综合| 国产av区亚洲av毛片| 亚洲精品1区2区在线观看| 免费观看性欧美大片无片| 9久久精品视香蕉蕉| 亚洲αv在线精品糸列| av在线播放亚洲天堂| 人妻少妇无码精品视频区| 国产xxxx99真实实拍| 国产女人91精品嗷嗷嗷嗷| 日本精品久久中文字幕| 91久久精品色伊人6882| 精品国产人妻一区二区三区| 91精品国产免费青青碰在线观看 | 亚洲av无码精品色午夜在线观看| 国产成人一区二区三中文| 香蕉亚洲欧洲在线一区| 国产av剧情久久精品久久| 精品卡一卡二乱码新区| 国产内射999视频一区| 亚洲福利视频一区|