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

Python語言在自動化測試系統中的應用

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

華劍南

摘 要

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

【關鍵詞】自動化測試系統 機器人框架(Robot Framework,RF) 關鍵字驅動 Python

1 自動化測試系統實現簡介

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

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

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

Python是一種面向對象、解釋型、跨平臺的高級程序設計語言,可以應用于自動化測試,數據分析等眾多領域,Python用代碼縮進來代替花括號,表示語句塊邏輯層次,既使得源程序風格接近,又提高了可讀性;Python的類庫齊全并且產出率高,實現相同的功能,Python 比很多其他語言代碼量少,這意味著易維護,出現問題的概率也下降。RF就是一種基于Python的可擴展關鍵字驅動的通用自動化測試框架。

2 Python語言在自動化測試系統中的應用

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

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

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

fromueclass import UEClass

classNewUE(UEClass):

ROBOT_LIBRARY_SCOPE = 'GLOBAL'

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

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

python -m compileallueclass.py

python -m compileall __init__.py

如圖1所示。

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

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

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

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

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

改進方向:

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

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

3 結論

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

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

參考文獻

[1]Steven F. Lott.譯者:張心韜,蘭亮.責編:陳冀康.Python面向對象編程指南[M].人民郵電出版社,2016.

主站蜘蛛池模板: 综合社区亚洲熟妇p| 色亚洲成人| 最新痴汉在线无码AV| www.av男人.com| 无码电影在线观看| 国产精彩视频在线观看| 久久综合伊人 六十路| 99久久免费精品特色大片| 亚洲精品你懂的| 国产白浆视频| 中文字幕在线日本| 亚洲婷婷丁香| 456亚洲人成高清在线| 欧美丝袜高跟鞋一区二区| 国产精品亚洲专区一区| 欧美成人A视频| 国产区网址| 国产成人精品高清不卡在线| 亚洲黄网在线| 国产正在播放| 欧美精品在线看| 成人精品视频一区二区在线| 沈阳少妇高潮在线| 91人妻日韩人妻无码专区精品| 国产精品美女免费视频大全| 成人福利在线视频| 精品福利视频网| 国产呦视频免费视频在线观看| 亚洲国产无码有码| 美女被操黄色视频网站| 无码福利日韩神码福利片| 欧美啪啪视频免码| 日韩在线中文| 国产成人三级在线观看视频| 91九色视频网| 91色爱欧美精品www| 亚洲三级色| 欧美一区国产| 亚洲精品动漫在线观看| 国产美女视频黄a视频全免费网站| 综合色婷婷| 国产精品成人一区二区不卡| 色爽网免费视频| 精品国产成人高清在线| 国产三级成人| 亚洲成aⅴ人在线观看| Aⅴ无码专区在线观看| 午夜视频日本| 欧美成人区| 日韩无码视频播放| 国产成人精品一区二区| 无码国产伊人| 国产一二三区视频| 99久久精品国产综合婷婷| 久久窝窝国产精品午夜看片| 美女潮喷出白浆在线观看视频| 亚洲精品日产精品乱码不卡| 日韩人妻无码制服丝袜视频| 亚洲国产综合第一精品小说| 91精品国产福利| 亚洲第一天堂无码专区| 毛片最新网址| 亚洲人成高清| 亚洲成人一区二区| 免费不卡视频| 久久综合干| 毛片在线区| 日本一区二区三区精品国产| 国内视频精品| 999国产精品| 亚洲精品午夜无码电影网| 国产女主播一区| 欧美高清三区| 中文字幕在线播放不卡| 国产菊爆视频在线观看| 亚洲精品无码在线播放网站| 思思99热精品在线| 精品国产美女福到在线不卡f| аv天堂最新中文在线| 538精品在线观看| 国产成人亚洲综合A∨在线播放 | 日韩色图区|