在互聯網飛速發展的今天,系統的復雜度及迭代速度都在不斷提升,這對質量保障工作提出巨大挑戰。那么如何在快速迭代發布下保障系統質量呢?閱讀《京東系統質量保障技術實戰》或許會找到一些答案!毒〇|系統質量保障技術實戰》由京東商城研發 POP 平臺—測試與質量管理團隊傾力打造,開篇從基礎業務測試、測試過程管理及 SOA 架構下的軟件測試等基本質量保障內容入手,逐步展開討論了自動化測試、測試環境管理等提升質量保障效能的實踐內容,實現將質量保障從手工測試推向自動化的進階。《京東系統質量保障技術實戰》中間篇章聚焦于持續集成及靜態代碼掃描實戰經驗的總結和質量保障提效工具的開發實踐。此外,《京東系統質量保障技術實戰》還介紹了大量安全測試的實戰經驗。《京東系統質量保障技術實戰》內容的最后部分深入描述了如何有效管理質量團隊,從質量保障流程的制定到推行再到優化,從打造靠譜團隊到團隊成長等方面來向讀者分享管理團隊過程中這些必須面對的問題!毒〇|系統質量保障技術實戰》內容涉獵廣泛以實戰為主線, 是近年來質量保障領域不可多得的圖書, 適合關心互聯網質量保障領域技術及發展的各類讀者。
“質量保障”貫穿本書始終,也是本書的靈魂之所在。本書從完善的業務質量保障流程制定,到前后端自動化測試框架的搭建,從代碼掃描使質量保障前置,到持續集成的逐步落地,從測試環境的集中化管理,到安全測試理論及安全工具的使用,從數據化的精細團隊管理到以人為本的團隊提升策略應用,都是本書所關注的內容。
背景
本書成書之時,正值京東618年中大促之際,一場紅色的備戰浪潮牽動著線上線下的每一個京東人。六月的經海路(京東集團總部所在地),即使在凌晨依舊車水馬龍,熱鬧非凡,每一盞亮起的明燈都在述說著京東人奮斗的故事,每一個在此奮斗的兄弟姐妹都承載著為大促保障的榮耀使命。筆者所在質量保障團隊已經不知經歷了多少次這樣緊張刺激的奮戰,此時用戶的每一次點擊都牽動著質量保障人員的心,保障系統穩定地為客戶提供服務是我們始終不移的追求。
全面
質量保障體系的搭建,是一個復雜且長久的過程,是在千百次實踐中不斷打磨并積累出來的。因此本書著重體現“實戰”性,向讀者展示真實電商系統保障技術的實踐經驗,內容涵蓋了POP測試與質量管理團隊工作的各個方面:主要包含業務質量保障介紹、SOA架構下的軟件質量保障、自動化測試實戰、測試環境管理實戰、持續集成及持續代碼掃描工程實踐實戰、質量保障工具開發實戰、Web安全測試技術實戰及質量團隊管理實戰等。筆者列舉大量詳實的案例從質量保障的各個維度進行了深入介紹,相信不論讀者身處質量保障團隊的何種角色,都能夠在本書中找到對自己有益的知識或經驗。
致謝
本書從選題到定稿都得到了公司領導及編委會成員的大力支持,大家在工作之余將各自在質量保障實踐中最具代表性的案例選取出來并經過編委會評審后作為本書的實戰案例向大家分享,感謝編委會成員的辛勤付出,同時感謝所有參與本書創作的人員。本書的精彩源于你們辛勤的付出與智慧的結晶。
商城研發POP平臺
作者序言:
質效合一,構建全程質量保障機制
商城研發POP平臺負責人王彪
京東十三年,風華正茂。剛剛過去的618大促,已經由京東的生日演變成了一個全民購物狂歡節。“技術引領、正道成功”是2017年618的主題,更是未來京東長期堅持的戰略。隨著業務的高速發展,京東的系統越來越多,架構也越來越復雜。如何在業務高速增長的過程中做好系統的質量保障工作,是我們需要解決的難題。正是京東人不斷拼搏的精神一直鼓舞著我們去不斷嘗試與探索,逐漸在系統研發過程中實現了質量與效率的雙重保障。
在傳統的系統研發過程中需要投入大量的測試資源,并且經過較長的時間才能夠完成質量保障工作。而互聯網企業要求快速的響應變化,那就必須縮短交付周期。這時候持續集成和自動測試就能夠很好地發揮其作用。通過質量過程的前置,在軟件開發階段就能夠通過自動代碼掃描來盡早發現代碼中的缺陷,從而保障開發階段的系統質量。到了提交測試階段,又可以通過持續的自動化測試來極大節省手工測試的時間成本,并且能夠及時反饋結果,從而讓研發團隊成員在第一時間了解到系統的質量情況,并不斷優化調整。系統部署上線后,還可以通過自動化的核心功能驗證來確保交付給用戶使用的系統是一個高質量的系統。經過這樣全流程的系統質量保證過程,不但實現了快速交付,而且很好地保障了系統質量。
整套質量保障體系的形成,是質量團隊在成熟的理論基礎上結合工作中系統不斷快速迭代的特征,并通過大量的實踐與總結,最終建立起來的。當然,所有的體系和方法都不是一成不變的,要隨著業務和技術復雜度的變化而不斷去調整和優化,期望本書中介紹的一些關于質量保障的實踐和方法能夠給廣大讀者提供一些思路和啟發。
收起全部↑
商城研發POP平臺部專注于POP開放平臺的系統建設,致力于為京東第三方商家提供豐富的合作模式、優秀的電商系統和工具,打造健康開放的智慧生態。團隊有店鋪運營、市場營銷、數據產品經理等方面的資深專家。他們熟悉京東開放平臺營銷工具,有豐富的電商運營經驗,致力于運用全平臺營銷的方法和理念指導店鋪運營,提高運營效率,提升店鋪業績和服務水平。
第1章業務質量保障介紹 1
1.1 電商行業項目的特點 2
1.2 測試流程中的重點工作 3
1.2.1 測試前的工作 3
1.2.2 測試中的工作 6
1.2.3 上線后的工作 10
1.3 小結 10
第 2 章 SOA 架構下的軟件質量保障 11
2.1 功能模塊測試 12
2.1.1 接口測試 12
2.1.2 接口自動化測試 14
2.1.3 UI 測試 15
2.1.4 UI 自動化測試 16
2.2 聯調測試 17
2.2.1 聯調測試的意義 17
2.2.2 如何開展聯調測試 17
2.3 小結 19
第 3 章 自動化測試實戰 20
3.1 WebUI 實戰 21
3.1.1 Selenium 21
3.1.2 PageFactory 26
3.1.3 構建一款基于 Selenium 的易用 WebUI 框架 30
3.2 接口測試實戰 32
3.2.1 HTTP 接口實戰 32
3.2.2 自研 RPC 接口實戰 34
3.2.3 一款簡單易用的接口測試框架 35
3.3 Mock 實戰 39
3.3.1 對象 Mock 實戰 39
3.3.2 接口 Mock 實戰 40
3.4 分層測試的思考 42
3.4.1 分層測試的理解 42
3.4.2 京東怎么做分層測試 43
3.4.3 收益可視化 44
3.5 小結 45
第 4 章 測試環境管理 46
4.1 軟件構建工具介紹及使用 47
4.1.1 Ant 47
4.1.2 Maven 49
4.1.3 Gradle 52
4.1.4 Jenkins 54
4.2 互聯網系統運行環境及軟件介紹 55
4.2.1 Nginx 55
4.2.2 Docker 56
4.3 測試環境分層 57
4.4 測試環境搭建 59
4.5 測試環境自動化運維 62
4.5.1 測試環境管理平臺 62
4.5.2 測試服務器管理 65
4.5.3 穩定環境每日自動部署 65
4.5.4 日常測試自動部署 67
4.6 小結 69
第 5 章 持續集成實踐 70
5.1 持續集成介紹 71
5.1.1 持續集成的起源與發展 71
5.1.2 持續集成常用工具 73
5.2 為什么要做持續集成 73
5.2.1 避免集成地獄 74
5.2.2 如何做到快速交付 74
5.3 如何實施持續集成 75
5.3.1 從零開始構建持續集成 76
5.3.2 持續集成演進 77
5.3.3 工程師文化的重要性 80
5.3.4 持續集成流程優化 80
5.3.5 小團隊的成功因素 81
5.3.6 規;瘜嵤┏掷m集成的一些困境 81
5.3.7 分步驟實現持續集成 82
5.4 小結 82
第 6 章 持續代碼掃描實踐 83
6.1 如何構建高質量的軟件系統 84
6.1.1 質量是測試出來的嗎 84
6.1.2 關注開發質量 85
6.1.3 測試人員如何參與代碼評審 86
6.1.4 常見代碼掃描工具介紹 87
6.2 從 0 到 1 實現持續代碼掃描 89
6.2.1 SonarQube 的應用 89
6.2.2 從最簡單的維度開始關注代碼質量 92
6.2.3 測試人員的職責擴展 94
6.2.4 小團隊的優秀案例 94
6.3 基于 SonarQube 的持續代碼掃描方案演進 95
6.3.1 大規模應用代碼掃描遇到的一些瓶頸 95
6.3.2 由人工驅動向技術驅動的轉變 96
6.3.3 由目標驅動向以服務研發為主的轉變 97
6.3.4 由統一化向多樣化的轉變 97
6.3.5 規模化持續代碼掃描的成功案例 98
6.4 小結 98
第 7 章 質量保障工具開發實戰 99
7.1 質量保障工具開發技術棧 100
7.1.1 建站(Spring+SpringMVC+MyBatis+Velocity+JQuery+
Bootstrap) 100
7.1.2 Spring 100
7.1.3 Spring MVC 103
7.1.4 MyBatis 107
7.1.5 前端技術 112
7.1.6 框架搭建 119
7.2 如何快速構建一個質量保障工具 124
7.2.1 需求調研 124
7.2.2 設計 127
7.2.3 任務管理 131
7.2.4 效果度量 135
7.3 小結 136
第 8 章 Web 安全測試技術實戰 138
8.1 Web 安全概述 139
8.2 客戶端繞過實戰 139
8.2.1 HTML 繞過 139
8.2.2 URL 參數繞過 141
8.2.3 Http-Cookie 繞過 142
8.2.4 隱藏表單繞過 143
8.3 SQL 注入(SQL Injection)實戰 144
8.3.1 注入原理剖析 144
8.3.2 注入產生條件 147
8.3.3 注入方法實戰 148
8.3.4 Java+JDBC 代碼注入檢測 149
8.3.5 MyBatis 框架代碼注入檢測 151
8.3.6 手工注入實戰滲透 151
8.3.7 工具注入實戰滲透 159
8.3.8 注入預防措施 163
8.4 文件上傳實戰 165
8.4.1 解析漏洞 165
8.4.2 上傳滲透實戰 167
8.5 跨站腳本攻擊(XSS) 170
8.5.1 XSS 概述 170
8.5.2 XSS 原理分析 170
8.5.3 XSS 類型分類 172
8.5.4 探測方法實戰 172
8.5.5 工具實戰演練 176
8.5.6 BEEF 平臺實戰攻擊利用 177
8.5.7 XSS 防御措施 180
8.6 跨站請求偽造(CSRF) 183
8.6.1 CSRF 原理分析 183
8.6.2 CSRF 預防 183
8.7 小結 184
第 9 章 測試團隊管理實戰 185
9.1 測試流程制定與效率提升 186
9.1.1 測試流程的制定 186
9.1.2 工作流程的推行 187
9.1.3 流程優化與提效 188
9.2 打造一支靠譜的團隊 188
9.2.1 時刻讓團隊清楚目標 189
9.2.2 目標的衡量 190
9.2.3 目標達成的核心所在 191
9.2.4 言行合一,數據說話 192
9.2.5 互信合作,分享共贏 193
9.2.6 團隊文化與正能量打造 194
9.3 團隊成長 195
9.3.1 改變團隊的行為習慣 195
9.3.2 建立團隊技能模型 197
9.3.3 建立團隊分享機制 200
9.3.4 業務能力提升 201
9.3.5 技術能力提升 202
9.3.6 有效利用績效這把利劍 202
9.4 團隊管理漫談 203
9.4.1 團隊管理要“千人千法” 204
9.4.2 承認不足,方能更近一步 205
9.4.3 關于問責 206
9.5 小結 208
1.1電商行業項目的特點
近年來,中國電子商務蓬勃發展,電子商務與日常百姓生活關系越來越密切,購物消費、上門服務、訂購機票、預訂酒店、旅游門票、手機充值等覆蓋了生活的方方面面。筆者一直在電子商務類公司做軟件質量團隊的相關管理工作,參與了不少電商項目的測試。下面筆者根據觀察到的一些現象,站在測試的角度對電商行業項目的特點進行如下總結。
。1)注重易用性
電子商務作為市場熱門行業,激烈的市場競爭是必須面對的事實。大家都想吸引更多的用戶,對于用戶而言方便易用的軟件更受歡迎。軟件的易用性是軟件質量中重要的特性,簡單地說就是用戶在使用過程中是否感覺方便舒適。在2003年頒布的GB/T16260-2003(ISO9126-2001)《軟件工程產品質量》質量模型中,提出易用性包含易理解性、易學習性和易操作性。關于易用性,在具體的項目測試中我們通常首先要關注UI(用戶界面,UserInterface)。用戶在接觸軟件時首先看到的就是UI,為了給用戶留下良好的第一印象,重要系統都有自己的UI規范,其定義了界面細致的標準,如導航、表單、表格、標簽、按鈕、翻頁、進度條、文字錯誤提示等。除了符合規范,我們還要關注是否舒適直觀、潔凈、不唐突。易用性方面還要關注產品功能是否容易理解,操作是否簡單不繁雜等。在實際項目中,這些內容往往是產品部門的同事做的工作比較多,但是作為測試工程師在測試過程中要有這方面的意識。
。2)注重安全性
據統計,電商企業在營銷過程中,有90%的客戶會因為缺乏安全感和對網絡信任度低而流失,安全問題是電子商務的核心問題。據2016年京東財報顯示,京東年度活躍用戶數已經達到2.266億,如此龐大的用戶量如果安全沒有保障,則將帶來巨大的損失。京東有專門的網絡安全團隊,對重要系統上線前都會進行安全掃描,也會定期對線上運行的系統進行安全檢查。如果發現有安全漏洞,則會第一時間聯系對應系統負責人解決處理。但是京東的系統和業務數量非常龐大,有些業務上的業務質量保障介紹安全問題全部依靠有限的安全部門同事檢查并不夠。所以在各系統功能測試階段,測試工程師需要首先進行一輪安全測試。
。3)項目周期短,需求變化快
在傳統的軟件項目中,需求一般是十分確定的,交付時只要與需求一致即可,往往采用瀑布模式,項目周期相對較長。電子商務行業作為市場熱門行業,激烈的市場競爭是必須面對的事實。電子商務項目相比傳統項目需求變化快,當一個需求提出后,如果項目周期太長,那么交付時可能已經不適用當前的環境了。所以一個需求或項目從提出到上線交付根據功能復雜程度一般周期為幾天到幾個月。作為測試工程師在保障軟件質量的同時應盡力通過技術和工作方法提高效率,縮短測試時間從而縮短整個項目的周期。
……