Pyhton自動(dòng)化測試持續(xù)集成和Jenkins
持續(xù)集成
官方術(shù)語:
持續(xù)集成(Continuous Integration),也就是我們經(jīng)常說的 CI
持續(xù)集成(CI)是一種實(shí)踐,可以讓團(tuán)隊(duì)在持續(xù)的基礎(chǔ)上收到反饋并進(jìn)行改進(jìn),不必等到開發(fā)周期后期才尋找和修復(fù)缺陷。
持續(xù)集成流程
在軟件的生命周期過程中,從需求,到實(shí)現(xiàn),到測試,到用戶手中,是一個(gè)持續(xù)的過程。
在這個(gè)過程當(dāng)中,不止是開發(fā)工作,有很多的環(huán)節(jié)都可以利用自動(dòng)化的手段去持續(xù)的定期的執(zhí)行任務(wù),來提升整體的軟件質(zhì)量和效率。
下圖為我畫的在軟件生命周期過程中,開發(fā)人員和測試人員和配置管理人員的流程圖。
圖中紅色字體部分均是可以持續(xù)定期的去執(zhí)行。

將上圖中的內(nèi)容綜合一下,那么我們可以得到下圖的持續(xù)集成流程。

Jenkins
一款持續(xù)集成工具,可以在 jenkins 當(dāng)中完成以上持續(xù)集成流程中的每一個(gè)環(huán)節(jié)。
jenkins 中有 3 大重要概念:
1、Job(任務(wù)/工程)
在 jenkins 平臺(tái)中,都是以 Job(任務(wù)/工程)為單位去完成一件事情的。
在使用jenkins時(shí),都是會(huì)在jenkins管理界面當(dāng)中創(chuàng)建一個(gè)job/item。在job/item中來組織任務(wù)。
2、plugin(插件)
jenkins 提供平臺(tái),集成各種插件來完成一個(gè) Job。想用 jenkins 平來做什么,先找找有沒有相應(yīng)的插件。
比如:windows 命令、Linux 命令的支持、SVN 和 Git 代碼獲取、郵件發(fā)送,測試報(bào)告集成等都需要安裝相應(yīng)的插件才能夠在 jenkins 當(dāng)中使用這些功能。
3、workspace(工作空間)
jenkins 是通過文件形式來存儲(chǔ)和管理數(shù)據(jù)的。
所以,在安裝jenkins,要指定一個(gè)Jenkins_Home目錄。所有jenkins相關(guān)的數(shù)據(jù)都存放在此目錄下。
workspace即給jenkins指定一個(gè)專門的目錄來存儲(chǔ)其所有的配置和數(shù)據(jù)。jenkins的workspace是根目錄 ,其下每個(gè)Job都有屬于自己的workspace。
每個(gè)job的workspace當(dāng)中用來存放本任務(wù)涉及到的數(shù)據(jù)/文件,以及任務(wù)執(zhí)行完成后生成的數(shù)據(jù)/文件。
相當(dāng)于,給每一個(gè)job開辟了一個(gè)獨(dú)立的文件夾。


4、jenkins 管理(Jenkins Manager)
整個(gè) jenkins 的全局配置。
包括權(quán)限管理、插件管理、節(jié)點(diǎn)管理等。

在 Jenkins 當(dāng)中要完成一個(gè)任務(wù),首先要?jiǎng)?chuàng)建一個(gè) Job/Item。
通過配置 Job/Item,來配置任務(wù)的觸發(fā)條件、任務(wù)的代碼從哪獲取、任務(wù)的執(zhí)行過程涉及哪些步驟、任務(wù)執(zhí)行完成之后要做哪些通知/展示工作。

一個(gè) Job/Item 的配置項(xiàng)如下:
1、基本信息配置(General)
Job 名字、指定當(dāng)前 Job 的工作空間、指定當(dāng)前 Job 綁定到哪個(gè)執(zhí)行機(jī)上執(zhí)行等。。。

2、源碼管理(Source Code Management)
svn/git 等,需要相應(yīng)的插件支撐。
配置好源碼管理后,在執(zhí)行 Job 時(shí)會(huì)自動(dòng)從相應(yīng)的源碼庫里下載代碼到當(dāng)前 Job 的工作空間中。

3、構(gòu)建觸發(fā)器(Build Triggers)
觸發(fā)器:執(zhí)行當(dāng)前任務(wù)的條件。
常用定時(shí)構(gòu)建:類似 windows/linux 的定時(shí)任務(wù)。指定當(dāng)前 Job 執(zhí)行的時(shí)間。

定時(shí)任務(wù)配置規(guī)則如下:
首先,一共有 5 個(gè)配置選項(xiàng)(每個(gè)選項(xiàng)之間用空格隔開),分別是:
MINUTE(分鐘) HOUR(小時(shí)) DOM(每月的天數(shù)) MONTH(一年的月份) DOW(每周的天數(shù))
- MINUTE(分鐘): 指一小時(shí)內(nèi)的分鐘數(shù)。有效值為:0-59
- HOUR(小時(shí)):指一天內(nèi)的小時(shí)數(shù)。有效值為:0-23
- DOM(每月的天數(shù)):指一個(gè)月內(nèi)的天數(shù)。有效值為:1-31
- MONTH(一年的月份):指一年當(dāng)中的月份數(shù)。有效值為:1-12
- DOW(每周的天數(shù)):指一周當(dāng)中的天數(shù)。有效值為 0-7。0 和 7 都表示周日。1-6 分別表示周一到周六。
支持以下操作:
- *****表示匹配所有有效值。
- M-N 表示一個(gè)連續(xù)的有效值范圍。比如在 DOW 中用 1-5,表示取周一到周五。
- M-N/X 或者 */X 表示以 X 為步長,取指定連續(xù)范圍或所有有效值范圍內(nèi)的值。比如在 DOW 中用 1-5/2,表示取周一,周三,周五。
- A,B,.....Z 表示枚舉。比如在 DOW 中用 1,2,6,表示取周一,周二,周六。
示例:
每周一、三、五,每天上午 10 點(diǎn)整,自動(dòng)觸發(fā)任務(wù)的執(zhí)行。
定時(shí)配置如下:0 10 * * 1,3,5
MINUTE(分鐘): 值為 0。
HOUR(小時(shí)):值為 10
DOM(每月的天數(shù)):值為* 沒有指定一個(gè)月當(dāng)中,只有哪幾天運(yùn)行。所以用*匹配所有有效值。
MONTH(一年的月份):值為* 沒有指定一年當(dāng)中,只有哪個(gè)月運(yùn)行。所以用*匹配所有有效值。
DOW(每周的天數(shù)):值為 1,3,5。用枚舉方式。因?yàn)榧床皇撬兄担膊皇沁B續(xù)的有效值。

4、構(gòu)建(Build)
此一步是用來實(shí)現(xiàn)所有你想用此 Job 做的事情。
添加構(gòu)建步驟:按順序執(zhí)行構(gòu)建步驟。
構(gòu)建步驟的下拉列表選項(xiàng)多少,由 jenkins 中已安裝的相關(guān)插件決定 。因?yàn)樵S多功能都是由插件來支撐的。

5、構(gòu)建后行為(Post-build Actions)
此一步主要在任務(wù)執(zhí)行完成之后,要做的事情。
比如要發(fā)送郵件、要展示任務(wù)執(zhí)行的結(jié)果。
方式與 4 中一樣,都是選擇相應(yīng)的插件功能。
構(gòu)建后操作步驟的下拉列表選項(xiàng)多少,由 jenkins 中已安裝的相關(guān)插件決定 。因?yàn)樵S多功能都是由插件來支撐的。

任務(wù)配置完成之后,點(diǎn)擊 立即構(gòu)建 ,測試任務(wù)在執(zhí)行時(shí)是否有錯(cuò)誤。

到此這篇關(guān)于Pyhton自動(dòng)化測試持續(xù)集成和Jenkins的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家
相關(guān)文章
Python根據(jù)給定模型進(jìn)行特征權(quán)值計(jì)算
在機(jī)器學(xué)習(xí)中,特征權(quán)重的計(jì)算是理解模型如何做出預(yù)測的重要步驟,本文將詳細(xì)介紹如何使用Python根據(jù)給定模型計(jì)算特征權(quán)重,希望對(duì)大家有一定的幫助2024-11-11
Python中多繼承與菱形繼承問題的解決方案與實(shí)踐
在Python這個(gè)靈活且功能強(qiáng)大的編程語言中,多繼承是一個(gè)既強(qiáng)大又復(fù)雜的概念,它允許一個(gè)類繼承自多個(gè)父類,從而能夠復(fù)用多個(gè)父類的屬性和方法,本文將深入解釋Python中的多繼承概念,詳細(xì)剖析菱形繼承問題,并探討Python是如何解決這一難題的,需要的朋友可以參考下2024-07-07
python?spotlight庫簡化交互式方法探索數(shù)據(jù)分析
這篇文章主要為大家介紹了python?spotlight庫簡化的交互式方法探索數(shù)據(jù),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01
Python 比較文本相似性的方法(difflib,Levenshtein)
今天小編就為大家分享一篇Python 比較文本相似性的方法(difflib,Levenshtein),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-10-10
Python中Scrapy+adbapi提高數(shù)據(jù)庫寫入效率實(shí)現(xiàn)
本文主要介紹了Python中Scrapy+adbapi提高數(shù)據(jù)庫寫入效率實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10

