(轉)《Google軟體測試之道》讀書筆記(大綱)

2021-02-15 織雀聊測試

《Google軟體測試之道》這本書想必很多做測試的人都聽過,但不一定看過,今天小編轉載了一篇該書的讀書筆記大綱,方便沒讀過的人對該書有個大概的了解。

少則清晰,測試人員的稀缺導致測試資源很昂貴。(不要招聘太多的測試人員)

開發對質量負責(預防,不行為是檢測) 
衛生間張貼著最佳測試實踐

- 100%時間在編寫代碼,SET和SWE是合作夥伴 
- 工作重心在可測試性和通用測試基礎框架 
- 參與設計評審 
- 為了增加可測試性,甚至會對代碼重構 
- 關注質量提升和測試覆蓋率增加

- 產品專家,質量顧問和風險分析師 
- 大量時間在模擬用戶的使用場景的代碼上。

測試是獨立的部門(工程生產力團隊),以租借的方式進入產品

不同項目組的借調,時刻保持新鮮感,也方便好的測試想法快速蔓延。

推廣創新技術,直接借調創新的發明者是一個很好的辦法

金絲雀版本(每日構建)

開發版本(每周)

測試版本(每月最佳)

發布版本(穩定的測試版本)

Google用小型,中型,大型測試(對應我們的單元,集成,系統測試)

小型測試 
函數或模塊,需要使用mock、fake

中型測試 
模塊之間的交互

大型測試 
真實用戶場景和數據

理想的軟體世界,有test harness, test infrastructure,mock and fake任你使用(如,模擬的資料庫) 
測試代碼的主要思路是去破壞,怎樣寫測試代碼以擾亂分離用戶及其數據

公共庫,共享代碼。可復用性大於功能複雜性和設計巧妙性 
公共模塊必須經過審核 
開發人員有編寫出乾淨代碼的記錄,會被授予「良好可讀性」證書 

每種語言都有統一的編譯器(類似我們的統一開發伺服器) 
構建系統使用統一的打包規範(和語言無關,Linux rpm) 
一個產品有多個服務組成,服務之間並行開發,項目早期定下服務之間的接口。早期測試,接口都是虛假的實現 

SET非常難招聘(又懂開發又懂測試) 
「只有軟體產品變的重要的時候質量才顯得重要」 
產品早期一般不投入測試(可能重新設計),正式批准後,才會尋求測試資源。 
項目初期,設計文檔(動態更新) 

SET有一個巨大的優勢,就是產品方面最寬廣的視野 
SET審核初期階段的設計文檔 
接口、協議,採用protocol buffer 
可測試性如何,是否需要新增testing hook(為了測試增加接口,顯示系統內部狀態)

protocol buffer定義的接口和協議由SET實現(SET第一個實現所有的接口和協議),集成測試的運行依賴這些接口,因此SET針對各個模塊的依賴提供了mock和fake

試圖自動化所有端到端的測試用例,是一個常見的錯誤(SWE也不會感興趣) 
自動化投入越多,維護成本越大。自動化計劃,應該規模更小,目的性更強 
端到端的自動化測試投入過度,會把產品特定功能綁定在一起,產品穩定之前都不會特別有用。SET應該投入到提高質量,而不是維護不穩定的測試套件上。

SET第一要務是可測試性,提供程序結構和代碼風格建議給開發人員 
代碼審查需要工具和文化的支持,google將代碼審查作為開發流程的中心,代碼審查比編寫代碼更值得炫耀。 
只有被證明是值得信賴的開發者,才有往代碼庫提交代碼的資格。用「可讀性」區分有資格的提交者和新開發人員。 

CL(change list),持續提交優秀的CL,獲得「可讀性」的代碼審查資格。 
自動化檢查代碼風格是否符合要求 
在與外部公共庫(或框架)有交互的地方需要依賴集成測試 
項目成員輪流做「構建警察」(我們可以借鑑,每人輪流跟蹤jenkins的輸出) 
TAP(Test Automation Program)

google可以做到修改一個代碼,只跑這個模塊關聯的單元測試

(基於googletest,樣例中,將_test後置xxxx.cc(正式文件),xxxx_test.cc(測試文件))

只有能加速開發過程的自動化測試才有意義,測試不應拖慢開發的速度 
新增測試程序,會創建一個構建說明文件(測試名稱,源碼文件,依賴庫及數據,規模大小)。工程師通過一條指令即可觸發構建、運行自動化和展示結果

小型測試,外部服務(文件系統,資料庫,網絡)必須通過mock和fake裡實現 
中型測試,主要目標是驗證指定模塊之間的交互

測試規模在共享測試平臺的使用

資源

小型測試

中型測試

網絡服務

模擬

僅本地

資料庫

模擬

訪問文件系統

模擬

訪問用戶界面系統

模擬

不鼓勵

系統調用

不鼓勵

多線程

不鼓勵

睡眠狀態

系統屬性

強制時間限制

1分鐘

5分鐘

google維護著不同測試類型之間的健康比例,全部使用大型的端到端自動化測試是錯誤;全部使用小型的單元測試也是錯誤的 
不同類型的測試都有覆蓋率報告(命令行加一個選項即可在瀏覽器查看覆蓋率) 
經驗法則:70%是小型;20%是中型;10%是大型 

如果面向用戶,集成度高,用戶接口複雜,增加中大型測試比例 
基礎平臺或面向數據,增加小型測試比例 
(google的Harvester是一個可視化工具)

可以設置一個標記以隨機順序執行用例(任意順序也意味著可以並發) 
google的持續集成做了優化,利用依賴分析技術,一個代碼變更只運行影響模塊的測試

對開發人員做測試這個文化有巨大的幫助 
測試認證是一個富有聲望的事情,從1級到5級(有徽章,可以炫耀) 
(1-5級對應的內容在書的Page55,56)

級別1:基本操作,還有去除所有非確定性測試(結果不確定的測試),挑選冒煙測試; 
級別2:提高增量覆蓋率 
級別3:測試新增代碼 
級別4:測試歷史遺留代碼(針對可測試性做重構) 
級別5:更高的覆蓋率,每個缺陷對應增加測試用例 

通過ToTT(Testing on the Toilet)和其他活動把測試搞得充滿激情、趣味和吸引力,包括fixit 
針對沒有」測試時間」的狀況,尋找下面的團隊:有興趣;沒有太多冗餘代碼;有測試戰神 
試點項目,測試教練幫助團隊,各種宣傳,積分系統等 

團隊的測試認證級別代表提高測試的重視程度,是工程生產團隊決定是否投入有限測試資源的重要參考指標 
最困難的一步「所有的重要代碼變更,都需要測試」,遺留代碼缺少可測試性(長遠角度就是重構增加可測試性) 

如何用acount(void *s)返回字符串中』A』的次數,有詳細的區分普通、更好、優秀的候選人的方法(Page63-67)(這個可以借鑑,嚴)

TE starting from middle(從頭介入不適用於google,因為早期功能不斷變化,TE沒有太多工作可做) 
配備多少測試人員,取決於項目風險和投資回報率 
Google只有少數團隊採用word文檔通過郵件來傳遞(很老派) 
google的文化是分布式和自我管理(大政府理念會受到嘲弄) 

ACC(AttributeComponent Capability)是測試計劃的替代方法 
Attribute是區別於競爭對手的關鍵。測試用例關聯到這些標籤,就知道哪些Attribute已經完成多少測試。 
Attribute和Component要求簡潔,Capability描述完整的功能 
能力最重要的一個特點就是可測試性 

Attribute作為行,Component作為列,形成的表格,每個單元格裡都是不同的能力(多條)。 
用戶故事可以用一系列能力來描述 
採用風險分析,將單元格附上顏色 
風險分析需要不同人的意見。有個方法很給力,先完成一份,然後發給不同的人,他們發現偏差就會提出意見(樹個靶子)

google使用buganizer管理bug,分為P0到P5(P0最糟) 
當bug到達的速度超過團隊修復的能力時,不進行新功能的開發(google強烈推薦這種實踐),有助於控制住bug

尋找正面的價值觀:用不那麼極端的輸入,一遍又一遍的測試用以模擬真實使用場景,保證通用情況下,軟體的運行不會出錯

海盜領導力:船員武裝到牙齒,才能卓著,不愁去處,船長怎麼管理這些人?(無法通過強力和恐懼,船員的動力在於劫掠的生活方式和下一次收成的興奮感) 
要靠技術洞察力,令人興奮的技術冒險,有趣的停靠港口來領導團隊 
谷歌領導和管理:mentoring and guiding, not dictating

(已經開源)

Go-to tester(有困難就找她) 
從頭到尾理解產品,包括各種文檔 
代表客戶 
坦誠某個組件或領域不由自己負責,開發反而尊敬你

測試工程經理具備TE和SET技能,並具有足夠的管理技能 
獨立貢獻者向測試經理(manager)匯報,資深工程師和技術負責人直接向總監(director)匯報

google特別強調影響力

進入一個新項目,頭幾個星期都是在傾聽(無法接受醫生觀察我不到5分鐘就開出抗生素的藥) 
問為什麼要做這個測試,很多開發不思考,只做他們知道怎麼做的東西或看別人怎麼做就怎麼做。應該是能提高產品質量,提高工程師開發效率的東西 

團隊的文化和氛圍很大程度來自團隊那個資深的人 
管理的同時保持技術敏銳 
- 留下一部分工作自己做 
- 排除幹擾(去了另外一個地方工作,幹擾少,產能很高) 
只選用最好的人,絕不動搖 

經驗: 
- 測試和開發採用相同的語言 
- 關注測試基礎設施建設,讓測試更容易 
- 20%的用例覆蓋了80%的使用場景(自動化這些) 
年輕的測試工程師可能一上來就幹,沒有思考為什麼要寫這些測試

如果自動化不能帶來明確的價值,我們就廢棄它

Shelton Mar

測試技術必須融入項目團隊,需要非常強的工程師

Brad Green

google聘用的都是極端自我驅動力的傢伙,「按我說的做」用多了,這群聰明的傢伙就會不理你而去做他們覺得最該做的事情(google style,表面上答應你,後面幹自己的事情)

James Whittaker

我發現沒有比開發工具更能激發測試人員的創造性和團隊士氣了 
我對google最滿意的兩件事:測試人員向測試人員匯報;測試人員自己決定自己的發展 
Google測試的秘方:技能(測試人員的技術能力)、稀缺性(獲得開發人員的幫助)、自動化、迭代集成

google的測試流程概況:讓每個工程師都注重質量

SET的未來就是開發 
測試代碼要成為一等公民,由PM管理,由SWE編寫 
測試功能特性開發應有團隊的新成員負責(必須學習產品的所有東西,包括內部設計),是一個非常理想、最佳的熱身項目。

軟體開發的問題已經徹底改變,繼續死守數十年之久的測試教條無異於刻舟求劍 
集中測試部門逐漸下發到項目,讓他們更敏捷,更少關注測試流程,更多關注產品本身。 
測試工程經理是最強的產品專家

相關焦點

  • 好用的讀書筆記app軟體推薦
    特意在手機應用商店搜了下「讀書筆記」四個字,發現出來的都是一些有道雲筆記、印象筆記這些在工作辦公中使用的筆記工具,再往下翻就是一些微信閱讀、愛奇藝閱讀之類的看書app,真正針對讀書做筆記這個場景使用的讀書筆記app軟體很少。
  • 用小築筆記app軟體,做有效積累的讀書筆記
    書籍是他人的智慧、經驗,是進步的階梯,很多愛讀書的人都有做讀書筆記的習慣,我也曾積累下厚厚的讀書筆記,堆積在那裡,很難再好好翻閱。後來有了軟體電子筆記,可總的來說除了搜索方便些,對於讀書學習筆記,益處並不大。
  • Google搜索背景轉黑底測試中!省電派、護眼派支持
    Google搜索背景轉黑底測試中 省電派、護眼派支持▲google搜索背景轉黑底測試中。夜間模式黑背景的Google搜索頁面在Android和iOS上很普遍,但在PC大屏幕上較少見,國外網站《9to5google》指出,Google目前正在測試讓計算機上搜索頁面也有黑底模式,但是否正式推出還未知。網友則表示,很期待,因為平常也使用深色的閱讀器,所以很需要這項功能,認為Google推出應是遲早的事。
  • <讀書筆記> 代碼整潔之道
    概述本文引用地址:http://www.eepw.com.cn/article/201608/294841.htm  1、本文檔的內容主要來源於書籍《代碼整潔之道》作者Robert C.Martin,屬於讀書筆記。
  • 軟體測試課程教與學(教學大綱)
    本課程與培養目標的關係是:軟體測試工作要求學生具備軟體測試基本理論、技術方法和項目測試實施及項目測試管理等職業能力,使學生能夠設計測試用例、使用自動化工具完成完整的項目測試和項目測試管理,使學生能基本承擔起軟體測試的工作任務,具備軟體測試崗位必備的職業能力,同時為學生獲取軟體測試工程師職業資格證書奠定基礎。
  • 高階五期之蔡仁厚《中國哲學史大綱》教學筆記
    繼《理則學》之後,高階班又利用三天時間研習完蔡仁厚《中國哲學史大綱》,現將教學筆記與學員心得摘錄記錄如下。
  • 測試大綱寫作模板-個人拙見
    測試大綱寫作模板測試大綱在一般情況下是由一位對整個系統設計熟悉的設計人員編寫的,他要明確測試的內容和測試通過的準則,能設計出完整合理的測試用例,以便系統實現後進行全面測試。測試大綱的主要內容是:測試策略是什麼、需要做哪些測試、測試過程如何組織、測試人員包括哪些?測試大綱是測試單位為了獲得測試任務,在項目招標階段編制的文件,它是測試單位參與投標時投標書內容的重要組成部分。編制測試大綱的目的是要使建設單位信服,採用本測試單位制定的測試方案,能夠圓滿實現建設單位的投資目標和建設意圖,進而贏得競爭投標的勝利。
  • 50字讀書筆記大全-讀書筆記摘抄
    ,將好的讀書筆記摘抄,大家可以參考範文,總結讀書筆記格式,了解讀書筆記怎麼寫。更多內容推薦: 讀書筆記大全:中外名著讀書筆記摘抄1031篇1101篇讀書筆記大全告訴你讀書筆記該怎麼寫   讀書筆記怎麼寫?
  • 軟體測試工程師具體工作內容是什麼?
    使用各種測試技術和方法來測試和發現軟體中存在的軟體缺陷。測試技術主要分為黑盒測試和白盒測試兩大類。
  • 《法律之道》讀書筆記
    《法律之道》讀書筆記ps:下文的p-x,除非特別標明其它論文或著作時代表頁碼,均指原文的段落序號,eg:p1=原文第1段。本筆記的譯文摘自姚遠老師譯本,載《廈門大學法學評論》總第二十六輯。(參見姚遠譯《法律之道》(載廈大法評)160頁注1,又見p13,《霍姆斯法律理論的建構》,姚遠)1.2.3、對霍姆斯法律預測理論的批評:a、法律預測理論無法解釋法官的行為,對一個法官來說,法律不可能是去預測他自己怎樣判決,法官對於法律必須持不同程度的內在視角。
  • 用紙筆寫讀書筆記,還是用軟體來記?看完你會毫不猶豫地做出選擇
    寫讀書筆記有兩種方式,一種是傳統的用紙筆來寫,一種是使用筆記軟體來寫。前者是大部分人一直採用的方法,後者是隨著網絡科技發展而出現的一種新潮流。據說,用過筆記軟體的人都已經回不到手寫模式了。使用筆記軟體來寫讀書筆記有哪些優點呢?
  • 讀書筆記的三種形式
    一本書,一篇文章,真正觸動你心靈的句子其實並不多,將這些集中抄寫在筆記中,筆記便成為了我們的錦囊,以後想查閱,只需翻閱筆記就行。做讀書筆記,其實就是在「斷舍離」。現在有很多軟體,可以直接用電腦做思維導圖,隨意添加,隨便改動,這也給想用思維導圖來做筆記的讀者提供了便利。
  • 【轉】除了google scholar ,還有16種學術搜尋引擎
    3.cnki 主要應用包括中國期刊全文資料庫、中國優秀博士碩士論文全文資料庫、中國重要報紙全文資料庫、中國醫院知識倉庫、中國重要會議論文全文資料庫。cnpLINKer即「中圖連結服務」,目前主要提供約3600種國外期刊的目次和文摘的查詢檢索、電子全文連結及期刊國內館藏查詢功能.並時時與國外出版社保持數據內容的一致性和最新性.點評:只提供了外文檢索的功能,但是無法得到全文。個人認為不是很理想.
  • 做筆記的方法
    大綱筆記法(Outline): 做大綱是有效的表現觀點間的邏輯關係的方式。事項之間可以寫一條簡短的描述。並像這樣一層層做下去。做大鋼是一個做讀書筆記等邏輯性較強的內容的好方法,著者通常都已經把信息按照一個有效的方式組織起來,我們要做的是理清相互關係,方便理解記憶。
  • 不知道如何做讀書筆記?這裡有4種筆記方法,總有一款適合你
    我們可以按照不同的讀書目的,使用不同的讀書筆記。下面我根據4種不同的讀書目的,分享了4種不同的讀書筆記。1.思維導圖式筆記思維導圖式筆記,是現在非常流行的一種讀書筆記方式。尤其是使用一些思維導圖軟體進行筆記整理,會使讀書的效率非常高,傳送與保存也非常方便。使用思維導圖式筆記,主要是為了幫助我們梳理這本書的內容與結構,也就是幫助我們更好的了解這本書的框架。那我們如何去製作思維導圖筆記呢?首先,我們要找到合適的工具。我自己平時經常用的一款思維導圖工具是幕布。
  • 讀書筆記大全:英語讀書筆記
    讀書筆記大全:英語讀書筆記 2013-08-22 11:43 來源:讀書筆記網 作者:
  • 看到別人厚厚的讀書筆記就羨慕,如何做好真正的讀書筆記?
    生活中看到不少閱讀者會在讀完一本書後,寫下自己的讀書筆記,然後坐下來翻看自己厚厚的筆記本的時候,都會十分羨慕這種姿態。我經常做讀書筆記就是摘抄原文,其實那不算是真正的讀書筆記。心裡不免會犯嘀咕:讀書筆記到底怎麼做呢?摘抄原文嗎?做讀書筆記有什麼意義和價值呢?
  • 測試從零開始之三:工作內容
    轉|石頭哥 微信公眾號 石頭哥怎麼說上一章我們主要介紹了一個黑盒測試工程師的主要工作任務和一些經驗
  • 讀書筆記——典型FTP軟體的模糊測試和漏洞利用
    材料一:《滲透測試完全初學者指南》中有關 War-FTP 1.65 的內容1.1 概述背景描述:在該書的第17、18章中,編寫了一個基於棧溢出和 SEH 機制的漏洞利用程序,使用 Python 以 TCP socket 的方式連接 FTP 軟體,用工具ImmunityDebugger
  • 讀書筆記大全:活著讀書筆記
    讀書筆記大全:活著讀書筆記 2013-08-22 11:56 來源:讀書筆記網 作者: