測開新手:從0到1,自動化測試接入Jenkins學習

狂師 發表於 2021-04-20

大家好,我叫董鑫,一個在測試開發道路上的新手,之前一直從事手工功能測試,前段時間抽空又溫習了一遍老師全棧測開訓練營中自動化測試、CICD的知識,最近公司正好有一個專案可以實踐練手,趁熱打鐵,將自動化測試指令碼接入到Jenkins中,在這裡做個簡單分享,同時也是自我的小結。若有不對的地方,還請各位同行,同學,老師及時指正。

1. 背景

本地實現了自動化指令碼之後,公司需要統一管理和定時構建執行。所以接到了使用Jenkins來做持續整合管理的任務。下面開始我一步步構建的過程。

當時公司運維的同學已經搭建了jenkins的環境,我們從建立job開始。

1.1 建立job

點選“新建Item”

測開新手:從0到1,自動化測試接入Jenkins學習

輸入名稱(建議不要帶“+”這類的字元),選擇自由風格的型別(紅框標註的),點選確定。

測開新手:從0到1,自動化測試接入Jenkins學習

填寫一般資訊,這裡我只用到了儲存構建天數和構建最大個數。

測開新手:從0到1,自動化測試接入Jenkins學習

增加構建步驟,由於我們是在windows系統上執行命令,所以選擇我選擇Execute Windows batch command。

命令框中輸入你要執行的指令,這裡的指令就是你本地執行使用的指令。

測開新手:從0到1,自動化測試接入Jenkins學習

點選儲存。這樣一個簡單的job就建立好了。可以點選build now按鈕可以立刻開始構建。

這樣就結束了嗎?當然不是。領導提出我們的指令碼需要使用公司的gitlab來管理,不可能手動複製過來。這樣我們的job就需要改造。

1.2 改造一:增加git能力

在建立的job中的原始碼管理選擇git,填寫我們自動化指令碼的倉庫地址,以及拉取的賬號密碼資訊和分支名稱。如下面顯示:

測開新手:從0到1,自動化測試接入Jenkins學習

每次寫完指令碼提交到倉庫,然後在Jenkins上點選構建,這樣就可以自動去拉取最新程式碼下來執行測試了。

這樣改造之後擁有了git的能力,那我們也需要想想,這樣持續整合之後領導想要看到什麼,最起碼需要直接看到測試結果和報告吧,所有還需要接著改造,加入報告的能力。

1.3 改造二:加入直接檢視報告的能力

在本地執行時,我們是allure可執行檔案來生成報告,那整合到Jenkins,我們需要先安裝allure的外掛

  1. 在外掛管理中搜尋alluer外掛進行安裝

測開新手:從0到1,自動化測試接入Jenkins學習

  1. 在全域性工具中配置allure相關

測開新手:從0到1,自動化測試接入Jenkins學習

然後繼續改造job,在構建後的操作中新增allure報告的資訊。

測開新手:從0到1,自動化測試接入Jenkins學習

這樣之後,我們就可以在構建後,在Jenkins上直接檢視執行後的報告了。

這樣使用之後,感覺還是差點東西,差什麼呢,因為用例很多,每次構建的時間都很長,這就導致我無法知道什麼時候結束,來第一時間檢視結果並反饋執行情況。所以我們還需要繼續改造,加入通知的能力。

1.4 改造三:增加通知的能力

在和專案組溝通後,確定了兩種方式的通知,企業微信通知郵件通知。

研究一番之後,發現,Jenkins使用外掛來實現企業微信通知,只能顯示少量的資訊(如:開始時間),並不能達到我們想的顯示大致的執行結果的能力,所以這部分,我就直接使用python指令碼來實現了,不使用Jenkins。

這裡就不做詳細說明了,大致的思路是:解析執行生成的xml檔案來獲取執行結果資訊,然後按照企業微信機器人的方式來通知。附上一張我除錯的效果圖:

測開新手:從0到1,自動化測試接入Jenkins學習

雖然企業微信通知沒有使用Jenkins,但是郵件的通知,Jenkins還是很好用的,我們用Jenkins來進行郵件的通知傳送,接著改造job。

在構建後的操作中新增Editable Email Notfication,填寫傳送郵件的資訊。

測開新手:從0到1,自動化測試接入Jenkins學習

這樣改造之後,我們也擁有了通知的能力。

這時候領導又提要求了,現在想晚上使用指令碼來巡檢,早上檢視結果。這樣不可能每天晚上登入Jenkins來構建,所以我們需要繼續改造,加入定時構建的能力。

1.5 改造四:增加定時構建

在job的構建觸發器中選擇Build periodically

H 2 * * 1,2,3,4,5表示週一到週五每天凌晨2點左右開始構建,填寫後,可以檢視到下面顯示的下次構建的時間

這樣改造之後,每天晚上就自動構建了。

測開新手:從0到1,自動化測試接入Jenkins學習

到這裡我們就擁有了git,檢視報告,郵件通知,定時構建的能力。

這個時候運維的小夥伴又提要求了,給我們自動化測試分配了一臺伺服器,讓我們在那臺裝置上測試,不想和開發釋出的混在一起。

1.6 改造五:指定節點執行

我們需要在指定節點構建,通過Jenkins來排程。這樣我還需要接著改造了。

1. 新增節點

進入系統管理(configuer system)》管理節點(manage nodes and clouds),點選新增節點。

測開新手:從0到1,自動化測試接入Jenkins學習

測開新手:從0到1,自動化測試接入Jenkins學習

注意:節點的標籤不要用中文

再配置節點屬性和工具

測開新手:從0到1,自動化測試接入Jenkins學習

如果啟動方式沒有上方選擇的選項,需要到全域性安全配置中勾選如圖的地方:

測開新手:從0到1,自動化測試接入Jenkins學習

2. 連線節點

新增的節點是沒有連線Jenkins服務的,需要啟動一個agent來主動連線到服務。

測開新手:從0到1,自動化測試接入Jenkins學習

按照如下步驟來操作:

到從節點(執行機)上登入Jenkins,點選剛剛新增的節點中,會如下圖顯示

測開新手:從0到1,自動化測試接入Jenkins學習

點選紅框標記的圖示,會下載下來一個檔案

測開新手:從0到1,自動化測試接入Jenkins學習

雙擊開啟下載的檔案,會顯示一個小視窗,自動連線(需要jdk環境)

測開新手:從0到1,自動化測試接入Jenkins學習

連線後會新增到執行機的服務中執行,之後不用再操作。

注意:如果連線提示失敗,可能是埠沒有開放,配置時選擇的隨機生成埠,如果連線提示埠沒有開啟,將Jenkins所在的伺服器上剛使用的埠開啟即可。

測開新手:從0到1,自動化測試接入Jenkins學習

  1. 改造job,配置使用執行的節點

在一般資訊中勾選限制專案的執行節點,填寫我們新增的節點的標籤。

測開新手:從0到1,自動化測試接入Jenkins學習

到此,我們的job改造就全部完成了。

2. 總結

通過以上操作,就完成了自動化測試使用jenkins來構建管理。從接到任務到一步步搭建完成,中間也遇到了很多坑,通過老師課程的學習以及指導,最終完成了搭建。

有幸得到這次機會將自己的經歷分享出來,也給自己做了一次總結。這次理論與實踐的結合也讓我對Jenkins的使用有了更加深刻的理解。當然這只是一次小小的實踐,還有很多要學習的。在測試進階的道路上,不斷的知識儲備才是最重要的。