技術中臺之DevOps自動化測試實踐

2021-01-12 EAWorld

轉載本文需註明出處:微信公眾號EAWorld,違者必究。

Devops作為技術中臺的重要組成部分之一,其下「自動化測試」功能也是不可或缺的一環,如何結合DevOps自身提供的自動化測試功能,做好DevOps的接口自動化呢?首先要先了解DevOps為自動化測試提供了哪些功能,如何使用該功能進行自動化測試,以及如何設計測試框架等等,本文將會為大家一一解答。

DevOps作為技術中臺的「效率&精益「平臺,集成了多方測試工具供使用。目前集成的自動化測試工具有:robot-framework 、Jmeter。

目錄:

1.為什麼採用RobotFramework?

2.什麼是RobotFramework?

3.RF如何做接口測試?

4.如何在DevOps中執行rf腳本並生成測試報告

一、為什麼採用RobotFramework?

針對接口、web網頁、app自動化測試的工具有很多:selenium、jmeter、soapui、robotFramework、postman等,如何選擇適合自己的自動化測試工具?此時便要看具體需求和業務。

應需求:為DevOps產品做自動化接口測試,那DevOps自身集成了jmeter和rf框架,且採用jmeter或者rf工具,能使自動化測試過程在DevOps中「數據可視化」,每次執行後的各項測試數據指標(包括測試結果、測試報告、成功率、失敗率等)直接在DevOps中進行展示、更是省略了自行配置jenkins進行自動化執行部署等操作,對於管理人員以及測試人員而言,均有受益。

又考慮到測試人員技術水平,相對而言,rf簡單易上手,所以rf突出重圍,成為此次自動化工具角逐的「冠首」。

二、什麼是RobotFramework?

Robot Framework是一款python編寫的功能自動化測試框架,可導入各第三方測試庫(例如:Selenium2Library、RequestsLibrary、DatabaseLibrary、HttpLibrary.HTTP),通過關鍵字進行web或接口自動化測試。

RF特性:

1、rf測試用例支持文本文件保存,使用制表符分隔數據,可方便使用任何文本編輯器,或者excel編輯測試用例,也可使用HTML格式創建用例;

2、測試用例支持變量使用,可使用IF、ELSE以及For循環語句;

3、支持關鍵字驅動、數據驅動和行為驅動;

4、利用已有關鍵字,測試人員可進一步「封裝」,形成更高級別的行為;

5、測試人員可使用Python編寫自己所需的關鍵字;

6、測試報告和日誌為HTML格式,便於閱讀;

7、使用簡單,更好理解以及上手等

三、RF如何做接口測試?

1、RF腳本編輯工具:可通過RED工具(該工具百度文獻參考多,這裡不做介紹)或者eclipse來編輯Robot FrameWork測試用例;個人用的eclipse,更方便進行關鍵字的查看,具體可參考文獻:https://www.cnblogs.com/Simple-Small/p/9229397.html。

2、準備好rf環境【python環境、robotframework安裝、JDK1.8+Eclipse+RED插件】;

3、安裝第三方庫,提供接口測試的關鍵字:RequestsLibrary(在rf中,python語言的接口測試庫名稱為RequestsLibrary)、DatabaseLibrary、HttpLibrary.HTTP等;

若導入httplibrary庫出錯,可參考以下文獻進行調試:

4、在robot腳本中引入所需各庫:

5、認識RequestLibrary以及DatabaseLibrary中的關鍵字。

掌握各關鍵字含義以及用法,是利用RF做自動化測試的核心。在.robot文件中,滑鼠懸浮在關鍵字上,會顯示該關鍵字用法,或者按住CTRL鍵,滑鼠點擊可進入到py文件中,直接查看該關鍵字的實現和描述,RF接口測試主要用到以下紅框關鍵字,還有其他語法例如FOR循環、json數據格式轉換等需要掌握。RF基本語法以及關鍵字用法此處不做詳細解析,對此有興趣者可通過各學習網站搜索關鍵字:robotframework,查看對應視頻學習即可;接下來主要以筆者實踐rf接口自動化框架的二次封裝為主線展開(為筆者個人實踐,多處還有待後期改善,不完善處請諒解)。

6、下圖為筆者根據使用場景和需求,設計的RF接口自動化的基本框架:

這裡將rf框架封裝為5層:工具類層、關鍵字層、基礎數據層、測試數據層和用例層。

工具類層:若rf已存的關鍵字不滿足需求,可自行編寫py函數實現;

關鍵字層:將復用率高的代碼塊進行提取封裝,成為新關鍵字。例如:

connectDatabase -連接資料庫;initDocData -執行資料庫腳本;

點擊「Test cases」Tab頁,可以表格形式展示rf測試用例;也可切換到「source」Tab頁,直接以源碼形式展示,看個人習慣選擇視圖編寫腳本即可;

測試數據層:分為「sql腳本」 和「 py文件」兩類。

sql腳本中存儲insert語句,為「刪改查」接口準備基礎數據,在測試用例執行之前進行資料庫腳本初始化操作(使用Suite Setup);

Py文件 : LIST__addIDoc為新增接口的測試數據,其校驗數據對應為:LIST__assertAddIDoc。.py文件中存儲list類型數據,作為「增」[post]接口的測試數據以及各接口的校驗數據;如圖所示,其中「刪改查」[delete/put/get]接口的校驗數據需根據sql中的數據進行設計,一條測試數據對應一條校驗數據,其List下標相同,保證進行數據遍歷時測試數據和校驗數據能一一對應。

測試用例層:使用關鍵字,編寫測試用例腳本。

獲取測試數據組,利用FOR循環,根據測試數據的List長度【即測試數據組數】遍歷請求參數:

發送相應請求,獲取返回值,同時校驗返回值是否與預期相符:

關鍵字assertResult:為自定義關鍵字,參數有三個:接口返回值response、當前接口校驗數據List、測試數據下標,若返回值狀態碼與預期狀態碼一致,則繼續通過testcase關鍵字校驗responseContent值是否與預期值相等,若狀態碼不相等,則直接跳過進入下一循環【這裡校驗和測試數據需嚴格按照「下標一一對應」規則 ,否則在校驗時則無法正確匹配,且測試數據有幾組,則校驗數據也應有幾組,否則將報錯】。

關鍵字testcase:有兩個參數:response返回值和對應的校驗數據,主要用作responseContent內容與校驗數據的比對,若校驗數據中所有key對應的value值,都與responseContent裡同一key的value值相同【responseContent包含校驗數據】,則校驗通過。

總結:

1、預置測試數據和校驗數據(通過sql腳本和Py文件中存儲List類型數據) ;

2、通過testcase前置條件,連接資料庫並執行sql腳本初始化數據,且進行登錄操作,將「認證」值設置為全局變量,供後續接口使用;

3、編寫測試用例,利用for循環遍歷測試數據,發送請求,並獲取同List下標的校驗數據,進行返回值的校驗;

至此整個測試流程結束。小夥伴們get到我的整個框架設計了嗎?

四、如何在DevOps中

執行RF腳本並生成測試報告

到這裡可能會有人問:測試報告和日誌如何處理?這時候就要結合我們的DevOps產品,前言講過DevOps為自動化測試做了哪些工作,是的,就是利用DevOps集成的rf任務,和拉取代碼庫代碼任務,進行rf腳本的執行,執行完畢後,會將生成的測試報告存儲在:與發布到nexus的工件路徑一致。

1)添加Robotframework任務,輸入測試用例路徑以及介質倉庫,選擇測試執行機(測試執行機需提前安裝好robotframework運行環境),點擊執行。

2)robotframework任務執行完畢後,點擊進入「自動化測試」tab頁,顯示本次運行相關信息(包括測試環境、運行開始結束以及持續時間)和測試報告、日誌連結。

查看每次運行後的測試報告。這就讓我們的自動化工作變得更加簡單,只考慮如何將測試用例寫好即可,無需考慮CICD工作。

題外話:

普元devops產品,以自身提供的RF自動化測試功能為基礎,極大程度的簡化了自動化測試的CICD工作,讓測試工程師更專注於維護測試用例和框架的編寫,且提供自動化測試報表,讓自動化過程透明化。整個rf框架歷時兩個月,中間不斷修正,在這個過程中又接觸到其他的自動化測試方案,還有很多需要完善和更改的地方,期待後面的框架訂正吧【測試數據將更改為寫在excel中,從excel中讀取測試數據,並將每條測試用例的測試結果寫在excel中】。歡迎各位小夥伴來溝通RF或者其他自動化測試方案~

關於作者:冰糖糯米,普元測試工程師,目前參與Devops項目的功能測試以及接口自動化測試工作。致力於測試技術的研究和開發。

相關焦點

  • 中小團隊基於Docker的devops實踐
    dev、qa、hidden、product四個環境,數百臺機器,在各個系統之間疲於奔命,解決各種瑣碎的問題,如何從這些瑣碎的事情中解放出來?devops成了我們不二的選擇。  文章是基於目前的環境和團隊規模做的devops實踐總結,方案簡單易懂,容易落地且效果顯著。  實現方法  先來看下流程圖:
  • 你了解DevOps的自動化架構GitOps嗎?
    【51CTO.com快譯】如今,許多團隊都在各種項目中爭相使用著諸如:版本控制、代碼審查、以及CI/CD管道等,與DevOps有關的優秀實踐。不過,您是否注意到,這些方法主要針對的是軟體開發生命周期中的自動化。而在涉及到基礎架構的設置和部署時,項目團隊仍然主要依賴的是手動的過程。
  • 全球IT管理最佳實踐之DevOps Master 認證
    2010年在美國山景城 (Mountain View) 舉辦的DevOpsDays 年會活動中,Damon Edwards先生用一個縮寫「CAMS」詮釋了DevOps,即文化(Culture)、自動化(Automation)、測量(Measurement or Metrics)和 分享(Sharing)。
  • 錘子的墨村 之 程序猿眼中的REA DevOps
    錘子回顧了一下自己維護項目時的噩夢,斟酌著用詞說:「這需要好多自動化的工具支持,怎麼測試,怎麼接入不同的網絡,怎麼部署不同的環境,還有資料庫的data migration和回滾,個頂個的都是痛點。」之前錘子所做過的系統都是Monolith(單體)架構,所以,每次需要重啟生產環境時,真得一而再,再而三地確認。
  • 技術掌舵人齊聚Gdevops峰會,解讀資料庫、智慧運維、Fintech轉型精要
    依託迄今成功舉辦的17場大會在分享議題上的精心打磨、在技術圈子裡的口碑傳播,Gdevops在展開新一年技術巡演中邀請到更頂級的嘉賓陣容,將帶來更重磅的科技成果與獨家實踐。Gdevops北京站從中精選出多家大型商業銀行、頭部互金企業等在中臺建設、資料庫遷移、運維轉型上的典型成功案例,助力Fintech戰略落地。
  • 企業對DevOps的偏見,及幾個轉型建議
    對DevOps感興趣的企業往往實踐或採用了一個對運維需求非常搞的敏捷技術,比如建立一個測試環境,或者測試節後發布軟體到生產環境。持續加快的步伐給運維團隊施加了很大的壓力,因為大多時候工作集中在項目後期(例如,是時候發布到生產環境中)。迫於時間壓力或者過量工作,運營團隊很難完成相對請求,甚至有時聽到開發者埋怨想親力親為。
  • 2020Gdevops北京站 中郵消費金融李遠鑫解讀敏捷運維背後的深度...
    維峰會在京舉辦,中郵消費金融有限公司部門負責人、資深架構師李遠鑫受邀出席,並發表「敏捷消費金融中臺架構下的深度服務治理」主題演講,系統分享了中郵消費金融現代化服務治理體系以及在敏捷開發過程中的實踐經驗。
  • DevOps實踐一:DevOps概述
    前言DevOps系列文章包含了本人在工作中的實踐和認知理論,現總結並分享出來,希望能夠給「迷你型」團隊在DevOps上的實踐提供一個「反面教材」和可行性建議。本系列主要包含以下文章(過程中可能也會有所更改):1. DevOps 的產生人類曾有長達250萬年的時間靠採集及狩獵維生,並不會特別幹預動植物的生長情形。
  • DevOps術語表-徵集協作者
    這個術語表目前主要基於《DevOps Handbook》,DevOps社區強調去中心化,不存在集中的、唯一的核心和權威,重在對DevOps實踐經驗的分享
  • 自動化測試實踐經驗分享(附視頻)
    這個項目的技術架構底層採用了亞馬遜AWS雲,上面是mongoDB資料庫,再往上採用容器技術和微服務架構,然後通過暴露的RestfulAPI給到前端,前端用Angular  JS來實現,這是技術層的介紹。同時在開發模式上引用了兩個敏捷實踐:一個是Scrum,Scrum大家聽了很多,很多人也都在用Scrum;另外一個是BDD行為驅動開發。
  • 接口自動化測試與Tesla自動化測試平臺
    引言我們今天要講的tesla,不是電動汽車,而是字節跳動內部的服務端自動化測試平臺——Tesla。在服務端測試中,接口測試是非常重要的。【使用代碼來進行接口測試】簡單來說,代碼對測試用例的組織和抽象能力更強,並且執行和驗證的能力更強,所以接口測試進階的形態是使用代碼來進行描述。但同時需要注意的是,代碼和自動化不是萬能的,也不是唯一決定測試水平的要素。【流水線技術】流水線的使用標誌著測試真正進入了自動化。
  • 網易CI/CD實踐(下):測試自動化及API版本管理
    解決完 CI/CD 的連接問題,接下來我們就要關注測試的部分。梅光輝表示:「自動化測試是打通持續集成和持續交付的核心,沒有有效的自動化測試保證,持續集成與持續交付就僅僅是一個沒有靈魂的空殼。因此,網易輕舟在 CI/CD 中引入了對自動化測試的全方位支持。」通常來講,自動化測試分為單元測試自動化、接口測試自動化、集成(UI)測試自動化這三個層面。
  • Gdevops北京站:網際網路、金融與運營商的智慧運維、資料庫、Fintech...
    依託迄今成功舉辦的17場大會在分享議題上的精心打磨、在技術圈子裡的口碑傳播,Gdevops在展開新一年技術巡演中邀請到更頂級的嘉賓陣容,將帶來更重磅的科技成果與獨家實踐。2020 Gdevops北京站突破點3:金融科技數位化轉型下新舊技術平滑過渡的挑戰近年來,金融行業在金融科技的探索和改造中匍匐前行,試圖通過金融科技賦能數位化轉型的金融企業前赴後繼,由此也造就了許多優秀
  • 【引薦有獎】傳智教育「億元級」投資教研,招募網際網路技術精英!
    Python Web開發框架(Django、Flask、Tornado),並深入了解其底層原理;2、深入理解各種資料庫(如MySQL、PostgreSQL)和NoSQL(如Redis、MongoDB)系統,具有豐富的資料庫性能調優及高可用、集群實戰經驗;3、具有分布式服務設計及開發經驗,Kafka、RabbitMQ等消息隊列使用經驗;4、具有大型網站的後端架構實踐經驗
  • 江蘇蘇寧銀行出席中國DevOps社區交流會 分享DevOps實踐經驗
    江蘇蘇寧銀行出席會議,與業界200多位技術專家展開深入交流,共同探討DevOps技術趨勢及金融業務數位化轉型升級之道。 DevOps(Development和Operations的組合詞),是一種新的軟體工程方法,也稱「研發運營一體化」,用於促進開發(應用程式/軟體工程)、技術運營和質量保障(QA)部門之間的溝通、協作與整合。
  • ​序|自動化測試概述
    這是Airtest團隊五年以來一直在努力做的事情:通過不斷完善工具鏈來讓用戶以極低的門檻進行自動化測試。無論您是一位初入職場的新人,還是剛開始學習自動化的測試工程師,相信這個教程都可以幫助您理清自動化測試的知識脈絡,掌握自動化測試的學習路徑,以及通過Airtest的實踐教程幫助您完成自動化測試的入門。
  • Python自動化測試踩坑記錄(企業中如何實施自動化測試)
    自然你的自動化做不起來,自動化的價值體現不出來。所以,我針對我們Python自動化測試中基礎容易遇到的一些坑,進行一些實戰的案例講解。在講這一些坑之前,先給大家分享一下我對自動化測試概念的理解。在做自動化測試之前,我們要思考一個問題。自動化不是說你會寫一點簡單的自動化腳本,你就能來實施。你要有一個規劃,再去慢慢的推進落地。
  • 七款做好DevOps的強大工具
    「Chef可自動化操作一些時間密集型和資源密集型的複雜任務,更重要的是它使我們能夠集中精力進行創新和提高服務質量,」該校的技術總監Sanjay Modi在Chef網站的個案分析上說,「Chef也將為組織內的協作和工作效率提高帶來更多的可能。」 Chef已被使用於沃頓商學院的Amazon EC2資源、Linux節點和本地虛擬機的自動化配置管理。3.