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