目前,以云計(jì)算等為代表的新興技術(shù)得到了大量的運(yùn)用與普及。同時,憑借著眾多及其獨(dú)特的優(yōu)勢,OpenStack業(yè)已成為開源云計(jì)算技術(shù)領(lǐng)域的既定事實(shí)標(biāo)準(zhǔn)。 這是一本介紹OpenStack測試和CI/CD實(shí)踐的書,基于此,本書內(nèi)容以實(shí)踐操作為主,從理論到實(shí)踐,循序漸進(jìn)地講解了DevOps和CI/CD的理論概念;軟件測試基礎(chǔ)和有效設(shè)計(jì)OpenStack測試用例的方法;如何參與OpenStack社區(qū)貢獻(xiàn)及其溝通交流,以及OpenStack社區(qū)CI/CD系統(tǒng)和企業(yè)互操作性測試認(rèn)證;OpenStack不同維度測試的實(shí)現(xiàn)和方法;基于OpenStack構(gòu)建和運(yùn)行服務(wù)于企業(yè)研發(fā)測試的CI/CD應(yīng)用。
填補(bǔ)當(dāng)前OpenStack云計(jì)算測試領(lǐng)域圖書空白
針對OpenStack進(jìn)行不同維度、層次的系統(tǒng)化測試
詳解運(yùn)用DevOps和CI/CD促進(jìn)軟件項(xiàng)目的敏捷開發(fā)
結(jié)合OpenStack和Docker實(shí)現(xiàn)CI/CD應(yīng)用
前 言
一年前,在我即將離職之際,領(lǐng)導(dǎo)偶然對我說道:那么喜歡寫資料分享,考慮寫本書嗎?我默笑了下,后來這種感覺愈加強(qiáng)烈,驅(qū)使著我真應(yīng)該做點(diǎn)什么。
由于常寫博客的習(xí)慣,加之為了更方便地讓讀者閱讀和豐富OpenStack的整個測試體系,最終決定利用空閑時間寫成一本書予以分享。能堅(jiān)持下來,也算是最大的慰藉了。
現(xiàn)如今,各種容器技術(shù)及云計(jì)算、大數(shù)據(jù)、人工智能等技術(shù)應(yīng)用層出不窮,同時又不斷催生出一些諸如DevOps、CI/CD(持續(xù)集成/持續(xù)交付)、極限編程和敏捷開發(fā)等軟件開發(fā)模式。
在我初涉OpenStack工作時,亦曾在其相關(guān)的諸多崗位間徘徊,但隨著時間和工作事務(wù)的變化,愈加吸引了我對QA測試的興趣和探索。回頭看,無疑,測試為我開啟了一扇認(rèn)識OpenStack、QA測試和CI/CD的大門。
鑒于軟件測試體系博大、內(nèi)容眾多,為了更好地把握方向和主題,本書的內(nèi)容首先將重點(diǎn)放在了針對OpenStack不同維度的測試實(shí)踐上;其次是基于CI/CD服務(wù)的OpenStack研發(fā)和測試實(shí)踐;最后是基于OpenStack Docker技術(shù)設(shè)計(jì)與實(shí)現(xiàn)CI/CD應(yīng)用,以及相關(guān)的軟件測試?yán)碚摵头椒ǖ确矫妗?br />本書的目的旨在推動OpenStack測試的專業(yè)化、系統(tǒng)化。以解決實(shí)際問題為出發(fā)點(diǎn),用大量的實(shí)際操作來闡述測試的思想與實(shí)踐。并不是要告訴讀者如何使用一個測試工具,這并非我的初衷。我希望讀者在學(xué)習(xí)本書的內(nèi)容后能夠提高綜合或?qū)I(yè)的素質(zhì),擺脫簡單的手工或單一測試,以及對測試?yán)斫獾钠婊瑥亩蚋L遠(yuǎn)的目標(biāo)邁進(jìn)。誠然,本書也并非一本萬能書,并不是有了它,測試便可以永無Bug,解決一切困難。
OpenStack云計(jì)算由計(jì)算、存儲和網(wǎng)絡(luò)三大基礎(chǔ)構(gòu)成,相對于其他方面,OpenStack測試是一個相對狹窄的領(lǐng)域,但基于這樣的一個事實(shí)標(biāo)準(zhǔn)是,以O(shè)penStack為代表的云計(jì)算已經(jīng)成為一個既定事實(shí)。隨著行業(yè)的不斷滲透、生態(tài)環(huán)境的不斷拓展等,對云計(jì)算的測試需求,特別是對高質(zhì)量的復(fù)合型測試人才的需求將更加旺盛。在這里,希望本書能為有需要的讀者起到幫助。
我想,本書能夠出版需要感謝創(chuàng)造了這世界上僅次于Linux的第二大開源項(xiàng)目OpenStack的眾多社區(qū)開發(fā)者,以及對我有養(yǎng)育之恩的父母,是你們?yōu)檫@本書的出版創(chuàng)造了可能。
我深知,限于自身個人水平,加之時間有限,本書可能存在某些錯誤,如你發(fā)現(xiàn),懇請指出,不勝感激,聯(lián)系郵件:faq@phei.com.cn。
徐超
目前就職于中電科華云,現(xiàn)任云開發(fā)工程師,自2014年接觸OpenStack以來,一直從事企業(yè)內(nèi)部云計(jì)算自動化部署、QA測試和CI/CD設(shè)計(jì)與實(shí)現(xiàn)等相關(guān)工作,根據(jù)實(shí)踐經(jīng)驗(yàn),發(fā)表過多篇文章,研究領(lǐng)域包括Kolla容器化OpenStack應(yīng)用及部署、QA測試和CI/CD,深耕代碼自動化一切重復(fù)勞動目標(biāo)。
目 錄
第1章 DevOps的起源和應(yīng)用 1
1.1 DevOps的起源和發(fā)展 1
1.1.1 什么是DevOps 1
1.1.2 DevOps的起源 2
1.1.3 DevOps的發(fā)展 3
1.2 DevOps在研發(fā)測試中的應(yīng)用 3
1.2.1 軟件活動中的常見問題 4
1.2.2 DevOps的應(yīng)用 4
本章小結(jié) 7
第2章 CI/CD和軟件測試基礎(chǔ) 8
2.1 CI/CD介紹 8
2.1.1 什么是CI/CD 8
2.1.2 CI/CD的未來發(fā)展 13
2.2 CI/CD在軟件研發(fā)測試中的應(yīng)用 14
2.3 軟件測試的生命周期 16
2.3.1 需求分析 17
2.3.2 制定測試計(jì)劃 20
2.3.3 編寫測試用例 22
2.3.4 測試評審 23
2.3.5 測試執(zhí)行 23
2.3.6 測試分析和報告 24
2.4 軟件測試的分類 27
2.4.1 根據(jù)分層概念劃分 27
2.4.2 根據(jù)測試對代碼可見性劃分 28
2.4.3 根據(jù)測試時期劃分 29
2.4.4 根據(jù)面向服務(wù)劃分 29
2.5 ACC測試和PDCA螺旋式測試方法 31
2.5.1 ACC測試方法 31
2.5.2 PDCA螺旋式測試方法 33
2.6 如何讓用戶幫助做測試 34
2.7 如何設(shè)計(jì)OpenStack測試用例 35
2.7.1測試用例設(shè)計(jì)方法 35
2.7.2 軟件測試技巧 52
2.8 熟悉OpenStack在測試中的作用 53
本章小結(jié) 55
第3章 認(rèn)識和參與OpenStack社區(qū) 56
3.1 安裝OpenStack有哪些方法 56
3.2 如何體驗(yàn)最新的OpenStack版本 59
3.3 如何貢獻(xiàn)OpenStack社區(qū) 62
3.3.1 注冊賬號和提交Bug 62
3.3.2 配置賬號和提交代碼 66
3.4 如何參與OpenStack社區(qū)交流 70
3.4.1 通過郵件方式交流 70
3.4.2 通過IRC方式交流 71
本章小結(jié) 73
第4章 OpenStack社區(qū)CI/CD和互操作性認(rèn)證 74
4.1 Python測試基礎(chǔ) 74
4.1.1 Python異常處理 74
4.1.2 Python斷言和斷點(diǎn) 77
4.1.3 Python單元測試 78
4.1.4 Python代碼調(diào)試 84
4.2 深入理解OpenStack社區(qū)CI/CD 87
4.2.1 持續(xù)集成系統(tǒng)(Jenkins) 90
4.2.2 集群任務(wù)分發(fā)系統(tǒng)(Gearman) 93
4.2.3 任務(wù)組織系統(tǒng)(Zuul) 94
4.2.4 代碼評審系統(tǒng)(Gerrit) 99
4.2.5 OpenStack Solum項(xiàng)目的使用 101
4.2.6 Software Factory的使用 108
4.3 OpenStack社區(qū)互操作性測試認(rèn)證 110
4.3.1 社區(qū)互操作性測試認(rèn)證內(nèi)容 110
4.3.2 環(huán)境準(zhǔn)備 111
4.3.3 執(zhí)行測試認(rèn)證 112
4.3.4 上傳和查看測試結(jié)果 119
本章小結(jié) 121
第5章 如何實(shí)現(xiàn)OpenStack不同維度測試 122
5.1 OpenStack不同維度測試 122
5.2 OpenStack代碼平面測試 124
5.3 OpenStack數(shù)據(jù)平面測試 128
5.3.1 Shaker測試環(huán)境部署 129
5.3.2 Shaker測試實(shí)踐 132
5.4 OpenStack管理平面測試 134
5.5 OpenStack控制平面測試 135
5.5.1 基于Docker的Tempest API集成測試 135
5.5.2 基于Docker的Rally API性能測試 141
5.6 OpenStack Ceph存儲測試 147
5.6.1 測試環(huán)境介紹 147
5.6.2 Ceph測試介紹 148
5.6.3 服務(wù)器性能測試 150
5.6.4 Ceph集群性能測試 154
5.6.5 塊存儲性能測試 157
5.6.6 虛擬機(jī)性能測試 161
1.15.臺虛擬機(jī) 161
2.60臺虛擬機(jī)(最大數(shù)量) 163
5.7 物理基礎(chǔ)設(shè)施層測試 166
5.7.1 網(wǎng)卡測試 167
5.7.2 內(nèi)存測試 171
5.7.3 CPU測試 173
5.7.4 磁盤測試 174
5.8 OpenStack測試內(nèi)容 176
本章小結(jié) 181
第6章 OpenStack Dashboard前端自動化測試 182
6.1 Web測試工具和Selenium的使用 182
6.1.1 Web自動化測試工具 182
6.1.2 Selenium的使用 183
6.2 Web自動化測試框架 195
6.2.1 模塊驅(qū)動測試 196
6.2.2 數(shù)據(jù)驅(qū)動測試 197
6.2.3 頁面對象驅(qū)動測試 199
6.2.4 使用Dashboard默認(rèn)測試腳本 200
6.2.5 開發(fā)Dashboard自動化測試框架 204
6.2.6 基于數(shù)據(jù)驅(qū)動和模塊驅(qū)動的頁面對象測試 212
6.4 Web前端性能測試 216
6.4.1 前端性能測試的意義 216
6.4.2 提高前端性能的方法 217
6.4.3 前端性能測試工具 218
6.4.4 使用JMeter測試OpenStack前端性能 219
6.5 實(shí)現(xiàn)測試統(tǒng)一管理 225
本章小結(jié) 229
第7章 基于OpenStack Docker設(shè)計(jì)與實(shí)現(xiàn)CI/CD 230
7.1 OpenStack研發(fā)測試的挑戰(zhàn)與統(tǒng)一 231
7.1.1 OpenStack研發(fā)測試的挑戰(zhàn) 231
7.1.2 統(tǒng)一推動研發(fā)測試 232
7.2 OpenStack和Docker集成現(xiàn)狀 233
7.3 基于OpenStack Docker設(shè)計(jì)CI/CD 236
7.3.1 基于Docker的軟件持續(xù)交付 238
7.3.2 基于OpenStack Docker的應(yīng)用部署 240
7.3.3 基于OpenStack Docker的CI/CD流程設(shè)計(jì) 241
7.4 構(gòu)建鏡像倉庫管理系統(tǒng)(Harbor) 247
7.4.1 Docker鏡像的管理 247
7.4.2 安裝Harbor 249
7.4.3 使用Harbor 252
7.5 構(gòu)建持續(xù)集成系統(tǒng)(Jenkins) 253
7.5.1 Jenkins相關(guān)插件支持 254
7.5.2 部署和使用Jenkins 255
7.5.3 Jenkins備份和還原 260
7.6 構(gòu)建代碼倉庫系統(tǒng)(GitLab) 262
7.6.1 部署和使用GitLab 262
7.6.2 GitLab備份和還原 266
7.7 構(gòu)建代碼評審系統(tǒng)(Gerrit) 267
7.7.1 Gerrit安裝和配置 268
7.7.2 Gerrit備份和還原 275
本章小結(jié) 275
第8章 基于CI/CD的OpenStack研發(fā)測試實(shí)踐 276
8.1 GitLab Gerrit Jenkins集成 276
8.1.1 Gerrit GitLab集成 276
8.1.2 Gerrit Jenkins集成 280
8.2 在Jenkins上創(chuàng)建項(xiàng)目任務(wù) 281
8.2.1 在Jenkins上創(chuàng)建Gerrit項(xiàng)目測試任務(wù) 281
8.2.2 在Jenkins上創(chuàng)建Gerrit項(xiàng)目構(gòu)建任務(wù) 283
8.2.3 在Jenkins上創(chuàng)建GitLab項(xiàng)目構(gòu)建任務(wù) 288
8.3 基于CI/CD的OpenStack研發(fā)實(shí)踐 291
8.3.1 提交開發(fā)代碼 292
8.3.2 查看集成結(jié)果 293
8.4 基于CI/CD的OpenStack測試實(shí)踐 295
8.4.1 獲取Tempest測試用例 296
8.4.2 Tempest原理和測試分析 299
8.4.3 Tempest測試自動化輸出報告 302
本章小結(jié) 304