本書是餓了么企業(yè)訂餐團隊在軟件質(zhì)量保障方面的經(jīng)驗總結(jié)。它通過講解該團隊如何從0到1構(gòu)建軟件質(zhì)量體系以及該體系如何逐步演進,分享了餓了么在軟件質(zhì)量保障方面的技術(shù)積累、實戰(zhàn)經(jīng)驗、解決問題的思考過程,以及質(zhì)量保障團隊的建設(shè)與發(fā)展。
【全書一共18章,分為六篇,具體內(nèi)容如下】
第壹篇 規(guī)劃(第1章)
介紹了餓了么企業(yè)訂餐業(yè)務(wù)的背景、團隊背景、面臨的挑戰(zhàn)以及團隊在制定技術(shù)規(guī)劃時是如何考慮的。
第二篇 基礎(chǔ)(第2~5章)
總結(jié)了QA團隊在功能測試、安全測試、兼容性測試、線上問題治理等方面的技術(shù)見解和經(jīng)驗積累。
第三篇 提效(第6~9章)
介紹在團隊人員與業(yè)務(wù)穩(wěn)定之后,QA團隊應(yīng)如何提高測試和研發(fā)的效率。包括API測試框架、自動生成框架代碼技術(shù)、框架代碼場景化改造、FSM場景化代碼動態(tài)組合技術(shù)等。
第四篇 賦能(第10~13章)
從持續(xù)集成、代碼質(zhì)量、Story QA等技術(shù)角度介紹了企業(yè)訂餐QA團隊是如何賦能研發(fā)人員以提高軟件質(zhì)量的。
第五篇 探索(第14~16章)
介紹了團隊在契約測試、探索性測試、流量測試等方面的經(jīng)驗。
第六篇 管理(第17~18章)
分享了如何打造有實力、有格局和有凝聚力的團隊,以及項目管理的關(guān)鍵問題和解決問題的思路。
【讀者對象】
本書適合各種水平的測試人員、測試開發(fā)人員、測試組長、測試經(jīng)理、項目經(jīng)理等,以及其他在軟件質(zhì)量保證的道路上持續(xù)進行修煉的讀者閱讀。
(1)餓了么企業(yè)訂餐團隊官方出品,餓了么聯(lián)合創(chuàng)始人、CTO等近20位專家聯(lián)袂推薦!
(2)從技術(shù)、方法、經(jīng)驗等多個維度全面講解餓了么軟件質(zhì)量體系的搭建與演進過程,既能指導讀者從0開始搭建質(zhì)量體系,又能讓讀者了解餓了么質(zhì)量體系建設(shè)的功過得失。
(3)書中既有可借鑒的方法論和案例成果,又給出了團隊解決問題的思考過程,而且將這個過程立體化、可視化地呈現(xiàn)了出來。
【為何寫作本書】
我們曾經(jīng)思考過這樣一個問題,如何才能將自己積累的技術(shù)和知識進行抽象總結(jié),將逐步解決問題的過程立體化、可視化地展現(xiàn)給大家,而不只是簡單地介紹一個結(jié)果。我們技術(shù)團隊之所以決定寫這本書,就是希望通過介紹我們的實戰(zhàn)經(jīng)驗和解決問題的思路,幫助大家在“質(zhì)量與效率”的提升上打開新的思路。
“質(zhì)量與效率”一直是我們關(guān)注的焦點。相對于軟件開發(fā),軟件測試起步較晚,缺乏擁有專業(yè)知識的人才。即便是大學開設(shè)的軟件工程專業(yè),針對軟件測試的介紹也只是涉及少量的概念和設(shè)計測試用例的方法。專業(yè)的測試并不是簡單地翻譯需求。目前有很多測試人員只是在簡單地執(zhí)行需求翻譯的工作,沒有結(jié)合業(yè)務(wù)實現(xiàn)、質(zhì)量模型和測試用例,沒有用科學的方法設(shè)計測試場景,這就導致測試用例質(zhì)量低下,只能應(yīng)用于單個特定點的測試場景。
有些人認為功能測試很低端(從效率、技術(shù)含量和市場反饋的價值綜合得出如此結(jié)論),甚至有相當一部分測試人員也認為,功能測試意義不大,希望從事測試工具的開發(fā)工作,因為那樣看上去更高端,更具有挑戰(zhàn)性。
其實,功能測試、自動化測試、性能測試、安全測試、測試框架開發(fā)、平臺研發(fā)等工作都是為了提高軟件測試的質(zhì)量,沒有高低貴賤之分,都是必要的輔助手段?梢詫④浖䴗y試類比為一個兵團,上述這些工作是不同的兵種,在面對一場戰(zhàn)役的時候,我們需要考慮的是如何排兵布陣,以贏得戰(zhàn)役,而不是排列兵種的等級。
不同的時代對測試人員有不同的要求。
起初是“保姆時代”,以發(fā)現(xiàn)Bug為榮,對測試人員的基本要求是具備良好的測試思維,測試人員主要利用系統(tǒng)測試方法進行測試。業(yè)內(nèi)關(guān)注的焦點是黑盒測試,白盒測試和灰盒測試偏少,效率偏低。由于黑盒測試大部分是通過人工在系統(tǒng)界面中手動進行的,從而導致業(yè)界普遍認為測試就是“點點點”。
隨著軟件復雜度的不斷提高,交付質(zhì)量變得越來越重要,我們急需提升測試的效率,壓力測試和安全測試等各種專項測試以及各種測試平臺和工具隨之出現(xiàn)。
時代的進一步發(fā)展對測試提出了更高的要求,從產(chǎn)品研發(fā)后期尋找Bug轉(zhuǎn)變?yōu)樘崆邦A防Bug。
小步迭代、快速上線的敏捷開發(fā)時代,再次對測試提出了更高的要求,持續(xù)集成、快速驗證、全方位監(jiān)控線上質(zhì)量,需要測試人員更早地介入產(chǎn)品研發(fā)的整個過程,以便更好、更全面地了解產(chǎn)品。測試左移到開發(fā)階段進行代碼評審、單元測試,右移到運維階段進行持續(xù)部署、線上監(jiān)控,從而可以更加立體地保障軟件的質(zhì)量。
如今是一個輸出測試能力的時代,測試人員不僅要提升自己的效率,而且要賦能研發(fā)人員,幫助他們提升自己的自測水平。
【本書主要內(nèi)容】
第一篇:規(guī)劃
本篇簡要介紹了我們的業(yè)務(wù)背景、團隊背景、測試的一般規(guī)律,以及我們團隊在制定技術(shù)規(guī)劃時是如何考慮的。
第二篇:基礎(chǔ)
當團隊從零開始的時候,QA(Quality Assurance,質(zhì)量保證)基礎(chǔ)設(shè)施落后、資源有限、技術(shù)改造頻繁,應(yīng)快速形成戰(zhàn)斗力,以業(yè)務(wù)為先,保證產(chǎn)品的質(zhì)量,此時QA團隊的主要任務(wù)是發(fā)現(xiàn)產(chǎn)品中的Bug。本篇主要介紹了QA團隊在功能測試、安全測試、兼容性測試等不同階段的特點及不同之處。
第三篇:提效
當團隊人員與業(yè)務(wù)基本穩(wěn)定,而且功能迭代基本可以正常運行之后,我們就開始思考如何提高測試和研發(fā)的效率,例如,如何構(gòu)建可用于提升效率的小工具和平臺,如何實現(xiàn)API自動化,以及框架的搭建、分層思想、性能測試、環(huán)境的部署、CI(Continuous Integration,持續(xù)集成)流程的建立等,從而使得QA人員能夠從大量的手工勞動中解放出來,提高工作效率,將更多的時間和精力投入到測試分析、發(fā)現(xiàn)Bug、預防Bug的工作中。
第四篇:賦能
在提效之后,我們開始思考,軟件質(zhì)量是“構(gòu)建”出來的,是由軟件開發(fā)整個過程的質(zhì)量所決定的。所以,QA人員的工作不能總是停留在最后一個環(huán)節(jié),在敏捷開發(fā)的大環(huán)境下,開發(fā)人員也要開始注重自測質(zhì)量,作為QA人員,我們需要考慮如何賦能開發(fā)人員,使其能夠?qū)ψ约洪_發(fā)的產(chǎn)品進行自測。本篇主要從技術(shù)的角度(比如,可視化度量、自動化用例開放、工具開發(fā),以及如何在流程上使用story_QA來使項目過程數(shù)據(jù)可視化)介紹了企業(yè)訂餐業(yè)務(wù)的QA人員是如何賦能開發(fā)人員以提高軟件質(zhì)量的。
第五篇:探索
當前,業(yè)務(wù)開發(fā)周期越來越短,幾乎每隔一天就有新版本發(fā)布。針對這種迭代速度快、回歸量比較大的特點,自動化測試的穩(wěn)定性正面臨著巨大的挑戰(zhàn),除了傳統(tǒng)的集成之外,我們還引入了契約測試、流量測試、探索性測試等輔助手段來提高測試質(zhì)量,同時提高QA人員的工作效率。
第六篇:管理
本篇主要講解了新型團隊如何不拘泥于傳統(tǒng)管理方法地勾勒團隊畫像,同時還介紹了技術(shù)分享的改革,以及如何讓團隊變成有格局、有原則、有自我認知、有凝聚力的健康團隊。
【讀者對象】
本書適合各種水平的測試人員、測試開發(fā)人員、測試組長、測試經(jīng)理、項目經(jīng)理等,以及其他在軟件質(zhì)量保證的道路上持續(xù)進行修煉的讀者閱讀。
張丙振
高級測試專家、企業(yè)訂餐質(zhì)量負責人,9年工作經(jīng)驗。擅長自動化測試、測試框架搭建、質(zhì)量交付團隊管理等。2017年入職餓了么中后臺研發(fā)部,負責商家開放平臺,多次參與公司S級別跨團隊合作項目并擔任測試總owner,曾擔任上海站技術(shù)沙龍測試講師。2019年轉(zhuǎn)入阿里巴巴本地生活企業(yè)訂餐團隊,目前專注于QA團隊建設(shè)、基礎(chǔ)設(shè)施建設(shè)及質(zhì)量交付。
檀飛翔
測試專家,從事測試行業(yè)7年,擅長測試框架開發(fā)、CI集成、自動化測試、功能測試以及大型項目測試管理。2016年加入餓了么,主要負責餓了么商家配送、商戶訂單、商家商品以及企業(yè)訂餐等業(yè)務(wù)領(lǐng)域的QA工作,多次參與和負責公司級別項目,目前負責阿里巴巴本地生活企業(yè)訂餐供給交易領(lǐng)域的QA工作,專注于測試提效和賦能工作。
侯佳剛
測試專家,一直積極探索正確的質(zhì)量保障之道。從事質(zhì)量工作多年,擅長測試自動化及測試工具開發(fā)。先后研發(fā)多個測試工具和質(zhì)量平臺,并將其應(yīng)用在產(chǎn)品研發(fā)過程中。目前主要負責企業(yè)訂餐質(zhì)量平臺研發(fā)及推廣工作。
伍菊紅
資深測試開發(fā)工程師,有較豐富的測試經(jīng)驗。曾參與多個公司級項目的業(yè)務(wù)測試,如企餐新零售入淘、覆蓋率工具開發(fā)等,擅長自動化測試、工具開發(fā)。目前專注于測試前沿知識探索,如精準測試、流量回放等。
李京蓉
資深測試工程師,從事軟件測試工作5年。2018年入職餓了么,負責餓了么商戶端交易業(yè)務(wù)測試,轉(zhuǎn)入企業(yè)訂餐團隊后負責供給交易領(lǐng)域的業(yè)務(wù)測試以及整個事業(yè)部的安全測試。
張晏婷
資深測試工程師。先后從事訂單、財務(wù)等領(lǐng)域測試工作,功能測試、自動化測試經(jīng)驗豐富,參與多個提效工具、測試平臺開發(fā)工作。
蔡輝
5年從業(yè)經(jīng)驗,資深測試工程師。有證券、金融、企業(yè)餐飲服務(wù)相關(guān)工作經(jīng)驗,擅長平臺服務(wù)開發(fā)、質(zhì)量交付。入職企業(yè)訂餐后負責測試平臺開發(fā),自動化測試工具建設(shè)。
李南昊
高級測試工程師,主要負責企業(yè)訂餐的業(yè)務(wù)測試、自動化測試、壓測的工作。參與企業(yè)訂餐三條業(yè)務(wù)線外賣、團餐、到店從0到1的搭建過程。
楊亮亮
資深測試工程師,負責企業(yè)訂餐基礎(chǔ)及到店相關(guān)領(lǐng)域QA工作。從事測試工作9年,曾獨立負責多個大型項目(支付、基金、發(fā)票等)的測試工作。擅長后端自動化及測試工具、平臺的搭建,具有豐富的行業(yè)知識背景及測試經(jīng)驗。
常娜
高級測試工程師。先后在阿里、百度、餓了么等企業(yè)工作,實戰(zhàn)經(jīng)驗豐富。參與多個公司/BU級項目(廣告、開放平臺、訂單等多領(lǐng)域)的測試工作,并協(xié)助完成多個測試平臺的開發(fā)工作。
第一篇 規(guī) 劃
第1章 技術(shù)保障規(guī)劃2
1.1 業(yè)務(wù)特點2
1.2 面臨的挑戰(zhàn)3
1.3 測試進程的演進4
1.4 繪制戰(zhàn)略圖5
1.5 本章小結(jié)7
第二篇 基 礎(chǔ)
第2章 功能測試10
2.1 業(yè)務(wù)梳理10
2.1.1 接手新業(yè)務(wù)的痛點11
2.1.2 業(yè)務(wù)梳理的構(gòu)想11
2.1.3 過程實戰(zhàn)13
2.2 用例設(shè)計16
2.2.1 用例設(shè)計面臨的問題17
2.2.2 解決思路17
2.2.3 用例設(shè)計原則確立18
2.2.4 用例設(shè)計模板化19
2.2.5 設(shè)計用例框架20
2.3 用例評審23
2.3.1 評審的意義23
2.3.2 評審的價值24
2.3.3 思考與破局24
2.3.4 合格用例的特點24
2.3.5 用例評審的準則25
2.4 本章小結(jié)26
第3章 安全測試27
3.1 全面清掃當前漏洞27
3.2 團隊安全知識賦能28
3.2.1 引入安全測試工具28
3.2.2 增強安全意識29
3.3 安全測試常態(tài)化29
3.3.1 下沉QA流程30
3.3.2 研發(fā)流程增設(shè)安全保障31
3.4 本章小結(jié)32
第4章 兼容性測試33
4.1 兼容性測試的挑戰(zhàn)33
4.2 兼容性測試的步驟34
4.3 案例分析:性能測試對比36
4.3.1 案例背景36
4.3.2 測試策略及過程36
4.3.3 測試結(jié)論39
4.4 關(guān)于測試機器資源40
4.5 本章小結(jié)41
第5章 線上問題治理42
5.1 線上問題的現(xiàn)狀42
5.2 工具的抉擇43
5.3 線下反饋線上化44
5.3.1 釘釘機器人接入44
5.3.2 簡化線上問題反饋45
5.4 線上問題數(shù)據(jù)沉淀及可視化46
5.5 FAQ 轉(zhuǎn)化47
5.6 線上問題規(guī)約49
5.7 本章小結(jié)49
第三篇 提 效
第6章 API測試框架52
6.1 API測試基礎(chǔ)知識52
6.1.1 RPC53
6.1.2 RESTful54
6.1.3 Thrift57
6.2 常見API測試手段58
6.2.1 cURL 59
6.2.2 常見工具分析61
6.3 測試框架的演進與分析62
6.3.1 什么是框架62
6.3.2 測試框架思想的變遷63
6.3.3 測試框架的特點66
6.4 測試框架搭建67
6.4.1 常見的框架結(jié)構(gòu)設(shè)計68
6.4.2 框架的升級改造方案69
6.4.3 框架的分層解耦70
6.4.4 數(shù)據(jù)分類處理72
6.4.5 多協(xié)議的封裝74
6.4.6 多環(huán)境的處理76
6.5 測試框架結(jié)果自動對比驗證80
6.5.1 驗收結(jié)果思路對比81
6.5.2 hook函數(shù)擴展82
6.5.3 數(shù)據(jù)庫設(shè)計83
6.5.4 對比引擎設(shè)計84
6.6 API覆蓋率統(tǒng)計86
6.6.1 覆蓋率介紹86
6.6.2 覆蓋統(tǒng)計的思考87
6.6.3 接口覆蓋率統(tǒng)計實戰(zhàn)87
6.7 本章小結(jié)91
第7章 自動生成框架代碼技術(shù)92
7.1 底層框架代碼自動生成92
7.1.1 傳統(tǒng)自動化框架的痛點93
7.1.2 代碼自動生成的解決方案94
7.1.3 代碼自動生成實戰(zhàn)95
7.2 手工用例自動轉(zhuǎn)化代碼97
7.2.1 接口用例撰寫現(xiàn)狀98
7.2.2 代碼自動轉(zhuǎn)化實戰(zhàn)98
7.3 冒煙測試代碼自動化生成101
7.3.1 冒煙測試的挑戰(zhàn)與方案102
7.3.2 拼裝請求102
7.3.3 構(gòu)造參數(shù)數(shù)據(jù)103
7.4 本章小結(jié)105
第8章 框架代碼場景化改造106
8.1 Journey模式BDD106
8.1.1 Journey模式簡介106
8.1.2 Journey模式原理107
8.2 問題與解決方案108
8.2.1 自動化問題109
8.2.2 解決方案109
8.3 過程實戰(zhàn)110
8.3.1 梳理場景需求110
8.3.2 實例化用戶故事110
8.3.3 轉(zhuǎn)化為自動化驗收代碼110
8.4 框架與BDD的融合解析111
8.4.1 框架與BDD融合所面臨的問題111
8.4.2 框架的設(shè)計思路113
8.4.3 過程實戰(zhàn)113
第9章 FSM場景化代碼動態(tài)組合技術(shù)116
9.1 訂單代碼組合的常態(tài)116
9.2 FSM 賦能方案117
9.3 業(yè)務(wù)建模118
9.4 動態(tài)繪制流程圖119
9.4.1 Graphviz使用介紹119
9.4.2 使用簡化模式繪圖120
9.5 構(gòu)建解析器122
9.5.1 解析器方案122
9.5.2 過程實戰(zhàn)122
9.6 本章小結(jié)124
第四篇 賦 能
第10章 數(shù)據(jù)工廠128
10.1 數(shù)據(jù)工廠迭代背景128
10.1.1 造數(shù)常見的場景128
10.1.2 數(shù)據(jù)工廠演變歷史129
10.2 數(shù)據(jù)工廠腳本化129
10.2.1 腳本化面臨的挑戰(zhàn)129
10.2.2 從RESTful API轉(zhuǎn)向SOA API130
10.3 數(shù)據(jù)工廠平臺化131
10.3.1 平臺化面臨的挑戰(zhàn)131
10.3.2 關(guān)于平臺化的思考132
10.3.3 如何新增一個造數(shù)工具133
10.4 數(shù)據(jù)工廠服務(wù)化的思考137
10.5 本章小結(jié)137
第11章 持續(xù)集成138
11.1 持續(xù)集成是什么138
11.2 持續(xù)集成前后實踐的對比139
11.3 持續(xù)集成全景141
11.3.1 研發(fā)模式143
11.3.2 代碼準入144
11.3.3 自動化方案145
11.4 本章小結(jié)152
第12章 代碼質(zhì)量153
12.1 代碼質(zhì)量背景知識153
12.1.1 怎樣衡量代碼質(zhì)量154
12.1.2 糟糕的代碼156
12.2 構(gòu)建代碼質(zhì)量體系158
12.2.1 為什么選擇SonarQube159