資源描述:
《python語言在自動化測試系統(tǒng)中的應(yīng)用》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。
1、Python語言在自動化測試系統(tǒng)中的應(yīng)用 摘要 自動化測試系統(tǒng)在敏捷開發(fā)、持續(xù)集成和持續(xù)交付中起著非常重要的作用。它對加快新功能發(fā)布,縮短現(xiàn)場問題解決時間,提升用戶感受度,乃至提高企業(yè)競爭力都至關(guān)重要。本文結(jié)合筆者在自動化測試系統(tǒng)建設(shè)中的實(shí)踐,具體描述了利用Python語言設(shè)計(jì)完成的基于機(jī)器人框架,關(guān)鍵字驅(qū)動的案例。最后指出了這套系統(tǒng)進(jìn)一步改進(jìn)的方向。 【關(guān)鍵詞】自動化測試系統(tǒng)機(jī)器人框架(RobotFramework,RF)關(guān)鍵字驅(qū)動Python 1自動化測試系統(tǒng)實(shí)現(xiàn)簡介 筆者參與開發(fā)的自動化測試系統(tǒng),和編譯服務(wù)器關(guān)聯(lián),由系統(tǒng)掃描偵測,實(shí)現(xiàn)基于某種策略的版本自動
2、下載(最大頻度測試,最相關(guān)版本測試,如包含本測試組發(fā)現(xiàn)的軟件缺陷版本優(yōu)先,或指定版本測試等),然后分發(fā)到相應(yīng)設(shè)備,進(jìn)行版本升級安裝,觸發(fā)測試用例的運(yùn)行,生成測試報告,發(fā)送郵件給項(xiàng)目干系人,更新測試記錄等?! ∽詣踊瘻y試系統(tǒng),能實(shí)現(xiàn)在第一時間觸發(fā)測試,能更頻繁地測試各個版本,能運(yùn)行更多、更繁瑣的測試,進(jìn)而在缺陷出?F時及時發(fā)現(xiàn),幫助開發(fā)團(tuán)隊(duì)縮小缺陷出現(xiàn)的代碼范圍,便于定位問題,解決問題,這為敏捷開發(fā)持續(xù)集成,持續(xù)發(fā)布提供了強(qiáng)有力的支撐?! ∽詣踊瘻y試系統(tǒng),基于機(jī)器人框架(robotFramework,RF),RF有豐富的庫,使用關(guān)鍵字驅(qū)動技術(shù),可以實(shí)現(xiàn)循環(huán),選擇等邏輯,測試
3、用例中支持變量的使用,測試人員可以創(chuàng)建自己需要的關(guān)鍵字,具有很大的靈活性和可擴(kuò)展性,可以實(shí)現(xiàn)定制的復(fù)雜或特殊的功能。ride是RF的編輯工具,測試用例可以用表格輸入,使得測試人員以類似于自然語言的方式(關(guān)鍵字)來描述測試用例,即使沒有編程基礎(chǔ)的測試人員也容易上手,而RF會將關(guān)鍵字轉(zhuǎn)化為測試動作(底層即Python類方法,函數(shù)的調(diào)用)?! ython是一種面向?qū)ο?、解釋型、跨平臺的高級程序設(shè)計(jì)語言,可以應(yīng)用于自動化測試,數(shù)據(jù)分析等眾多領(lǐng)域,Python用代碼縮進(jìn)來代替花括號,表示語句塊邏輯層次,既使得源程序風(fēng)格接近,又提高了可讀性;Python的類庫齊全并且產(chǎn)出率高,實(shí)現(xiàn)
4、相同的功能,Python比很多其他語言代碼量少,這意味著易維護(hù),出現(xiàn)問題的概率也下降。RF就是一種基于Python的可擴(kuò)展關(guān)鍵字驅(qū)動的通用自動化測試框架?! ?Python語言在自動化測試系統(tǒng)中的應(yīng)用 利用RF編寫定制的測試用例,需要開發(fā)自己的關(guān)鍵字,編寫自定義python庫。下文通過一個實(shí)例來介紹這個過程?! ∈紫?,在python安裝目錄c:\Python27\Lib\site-packages\下新建一個文件夾NewUE,文件夾名就是庫名,然后,在該文件夾內(nèi)創(chuàng)建一個python文件ueclass.py,代碼中定義一個UEClass類,類中定義了一個ue1Behavi
5、or方法,該方法即RF中的新關(guān)鍵字。 在NewUE文件夾內(nèi)再創(chuàng)建文件名__init__.py文件,RF通過這個初始化文件獲取新關(guān)鍵字類。它的類名和庫名相同,括號里的類是ueclass.py中定義的類: fromueclassimportUEClass classNewUE(UEClass): ROBOT_LIBRARY_SCOPE='GLOBAL' 自定義的NewUE庫就創(chuàng)建好了,在RF的編輯器ride中導(dǎo)入這個庫,然后即可使用新創(chuàng)建的關(guān)鍵字。如果要新增關(guān)鍵字ue2Behavior,只要在UEClass類中增加名為ue2Behavior的方法即可?! ?dǎo)入新庫,
6、若庫名顯示為黑色,表明導(dǎo)入成功,若紅色則表明導(dǎo)入失敗??梢酝ㄟ^在一個python文件中importNewUE來調(diào)試,通??梢愿鶕?jù)出錯消息提示框,排除源文件中的錯誤。修正錯誤后,把原來的*.pyc全刪除,運(yùn)行如下命令編譯,然后重新導(dǎo)入: python-mcompileallueclass.py python-mcompileall__init__.py 如圖1所示?! ∽詣踊瘻y試系統(tǒng)的理想目標(biāo)是全自動,在策略和任務(wù)定義好后,免予人工干預(yù)。為達(dá)到這一目標(biāo),需要實(shí)現(xiàn)RF和其他系統(tǒng)的配合。下文介紹在這套系統(tǒng)中開發(fā)的三個重要模塊:下載,定制測試報告,郵件分發(fā)模塊?! 【幾g隨時
7、可能完成,系統(tǒng)需要有自動下載功能(關(guān)鍵字Auto_DL)以免浪費(fèi)時間,基本的過程如下,首先系統(tǒng)處于空閑狀態(tài),即還未開始測試或上次測試任務(wù)已完成,Auto_DL會定時登錄到指定服務(wù)器,檢測是否有新版本編譯完成,并判斷該版本是否可用:按上文提及的某種特定的策略選擇新版本,判斷該版本是否符合自動化測試的最低要求,例如已通過冒煙測試,通過則可下載該版本,退出Auto_DL,觸發(fā)下一個環(huán)節(jié),升級安裝該版本。這個過程循環(huán)往復(fù),以達(dá)到盡快測試符合策略的版本或盡可能多地測試各種版本等目的.本系統(tǒng)用Python自帶的標(biāo)準(zhǔn)模塊urllib2,re