軟件測試之道(google)

軟件測試介紹

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

質(zhì)量不等于測試

開發(fā)對質(zhì)量負(fù)責(zé)(預(yù)防行為品洛,不是檢測)

衛(wèi)生間張貼著最佳測試實踐

角色介紹

  • SWE(Software Engineer)

  • SET(Software Test Engineer)

  • TE(Test Enginee)

SET也是開發(fā)角色裁赠,100%時間(不可能吧问窃,嚴(yán))在編寫代碼峰髓,SET和SWT是合作伙伴

工作重心在可測試性和通用測試基礎(chǔ)框架

參與設(shè)計評審

為了增加可測試性傻寂,甚至?xí)Υa重構(gòu)

關(guān)注質(zhì)量提升和測試覆蓋率增加

SET和SWT是合作伙伴

TE是產(chǎn)品專家,質(zhì)量顧問和風(fēng)險分析師

大量時間在模擬用戶的使用場景的代碼上携兵。

組織結(jié)構(gòu)

測試是獨立的部門(工程生產(chǎn)力團(tuán)隊)疾掰,以租借的方式進(jìn)入產(chǎn)品

不同項目組的借調(diào),時刻保持新鮮感徐紧,也方便好的測試想法快速蔓延个绍。

推廣創(chuàng)新技術(shù)勒葱,直接借調(diào)創(chuàng)新的發(fā)明者是一個很好的辦法

爬走跑

金絲雀版本(每日構(gòu)建)

開發(fā)版本(每周)

測試版本(每月最佳)

發(fā)布版本(穩(wěn)定的測試版本)

測試類型

Google用小型,中型巴柿,大型測試(對應(yīng)我們的單元凛虽,集成,系統(tǒng)測試)

小型測試

函數(shù)或模塊广恢,需要使用mock凯旋、fake

中型測試

模塊之間的交互

大型測試

真實用戶場景和數(shù)據(jù)

軟件測試開發(fā)工程師

理想的軟件世界,有test harness钉迷, test infrastructure至非,mock and fake任你使用(如,模擬的數(shù)據(jù)庫)

測試代碼的主要思路是去破壞糠聪,怎樣寫測試代碼以擾亂分離用戶及其數(shù)據(jù)

SET的工作

公共庫荒椭,共享代碼〗Ⅲ。可復(fù)用性大于功能復(fù)雜性和設(shè)計巧妙性

公共模塊必須經(jīng)過審核

開發(fā)人員有編寫出干凈代碼的記錄趣惠,會被授予“良好可讀性”證書

每種語言都有統(tǒng)一的編譯器(類似我們的統(tǒng)一開發(fā)服務(wù)器)

構(gòu)建系統(tǒng)使用統(tǒng)一的打包規(guī)范(和語言無關(guān),linux rpm)

一個產(chǎn)品有多個服務(wù)組成身害,服務(wù)之間并行開發(fā)味悄,項目早期定下服務(wù)之間的接口。早期測試塌鸯,接口都是虛假的實現(xiàn)

SET非常難招聘(又懂開發(fā)又懂測試)

“只有軟件產(chǎn)品變的重要的時候質(zhì)量才顯得重要”

產(chǎn)品早期一般不投入測試(可能重新設(shè)計)侍瑟,正式批準(zhǔn)后,才會尋求測試資源丙猬。

項目初期涨颜,設(shè)計文檔(動態(tài)更新)

SET有一個巨大的優(yōu)勢,就是產(chǎn)品方面最寬廣的視野

SET審核初期階段的設(shè)計文檔

接口茧球、協(xié)議庭瑰,采用protocol buffer

可測試性如何,是否需要新增testing hook(為了測試增加接口袜腥,顯示系統(tǒng)內(nèi)部狀態(tài))

協(xié)議與接口

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

自動化計劃

試圖自動化所有端到端的測試用例羹令,是一個常見的錯誤(SWE也不會感興趣)
自動化投入越多,維護(hù)成本越大损痰。自動化計劃福侈,應(yīng)該規(guī)模更小,目的性更強

端到端的自動化測試投入過度卢未,會把產(chǎn)品特定功能綁定在一起肪凛,產(chǎn)品穩(wěn)定之前都不會特別有用堰汉。SET應(yīng)該投入到提高質(zhì)量,而不是維護(hù)不穩(wěn)定的測試套件上伟墙。

可測試性

SET第一要務(wù)是可測試性翘鸭,提供程序結(jié)構(gòu)和代碼風(fēng)格建議給開發(fā)人員
代碼審查需要工具和文化的支持,google將代碼審查作為開發(fā)流程的中心戳葵,代碼審查比編寫代碼更值得炫耀就乓。
只有被證明是值得信賴的開發(fā)者,才有往代碼庫提交代碼的資格拱烁。用“可讀性”區(qū)分有資格的提交者和新開發(fā)人員生蚁。
CL(change list),持續(xù)提交優(yōu)秀的CL戏自,獲得“可讀性”的代碼審查資格邦投。(先要寫好代碼,才能當(dāng)這方面的評委擅笔,嚴(yán))志衣。
自動化檢查代碼風(fēng)格是否符合要求(這一塊,我們需要補上剂娄,嚴(yán))
在與外部公共庫(或框架)有交互的地方需要依賴集成測試
項目成員輪流做“構(gòu)建警察”(我們可以借鑒蠢涝,每人輪流跟蹤jenkins的輸出)
TAP(Test Automation Program)

SET工作流程(實例)

詳見書籍
(google可以做到修改一個代碼,只跑這個模塊的單元測試阅懦?嚴(yán))
基于googletest
樣例中和二,將_test后置
xxxx.cc(正式文件)
xxxx_test.cc(測試文件)

測試執(zhí)行

只有能加速開發(fā)過程的自動化測試才有意義,測試不應(yīng)拖慢開發(fā)的速度
新增測試程序耳胎,會創(chuàng)建一個構(gòu)建說明文件(測試名稱惯吕,源碼文件,依賴庫及數(shù)據(jù)怕午,規(guī)模大蟹系恰)。工程師通過一條指令即可觸發(fā)構(gòu)建郁惜、運行自動化和展示結(jié)果(我們有這樣的東西嗎堡距?現(xiàn)在的方式是必須提交代碼,jenkins才會運行兆蕉,嚴(yán))

測試大小的定義

小型測試羽戒,外部服務(wù)(文件系統(tǒng),數(shù)據(jù)庫虎韵,網(wǎng)絡(luò))必須通過mock和fake里實現(xiàn)
中型測試易稠,主要目標(biāo)是驗證指定模塊之間的交互

測試規(guī)模在共享測試平臺的使用

資源 小型測試 中型測試
網(wǎng)絡(luò)服務(wù) 模擬 僅本地
數(shù)據(jù)庫 模擬
訪問文件系統(tǒng) 模擬
訪問用戶界面系統(tǒng) 模擬 不鼓勵
系統(tǒng)調(diào)用 不鼓勵
多線程 不鼓勵
睡眠狀態(tài)
系統(tǒng)屬性
強制時間限制 1分鐘 5分鐘

測試規(guī)模的益處

google維護(hù)著不同測試類型之間的健康比例,全部使用大型的端到端自動化測試是錯誤包蓝;全部使用小型的單元測試也是錯誤的
不同類型的測試都有覆蓋率報告(命令行加一個選項即可在瀏覽器查看覆蓋率)(我們的中驶社、大型測試還沒有覆蓋率報告)
經(jīng)驗法則:70%是小型企量;20%是中型;10%是大型
如果面向用戶亡电,集成度高届巩,用戶接口復(fù)雜,增加中大型測試比例
基礎(chǔ)平臺或面向數(shù)據(jù)份乒,增加小型測試比例
(google的Harvester是一個可視化工具)

測試運行要求

可以設(shè)置一個標(biāo)記以隨機順序執(zhí)行用例(任意順序也意味著可以并發(fā))
google的持續(xù)集成做了優(yōu)化姆泻,利用依賴分析技術(shù),一個代碼變更只運行影響模塊的測試(我們能做到嗎冒嫡?嚴(yán))

測試認(rèn)證

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

與測試認(rèn)證計劃創(chuàng)始人的訪談

級別1:基本操作孝凌,還有去除所有非確定性測試(結(jié)果不確定的測試)方咆,挑選冒煙測試;
級別2:提高增量覆蓋率
級別3:測試新增代碼
級別4:測試歷史遺留代碼(針對可測試性做重構(gòu))
級別5:更高的覆蓋率蟀架,每個缺陷對應(yīng)增加測試用例
通過ToTT(Testing on the Toilet)和其他活動把測試搞得充滿激情瓣赂、趣味和吸引力,包括fixit
針對沒有”測試時間”的狀況片拍,尋找下面的團(tuán)隊:有興趣煌集;沒有太多冗余代碼;有測試戰(zhàn)神
試點項目捌省,測試教練幫助團(tuán)隊苫纤,各種宣傳,積分系統(tǒng)等
團(tuán)隊的測試認(rèn)證級別代表提高測試的重視程度纲缓,是工程生產(chǎn)團(tuán)隊決定是否投入有限測試資源的重要參考指標(biāo)
最困難的一步“所有的重要代碼變更卷拘,都需要測試”,遺留代碼缺少可測試性(長遠(yuǎn)角度就是重構(gòu)增加可測試性)0生巨大的影響
如何用acount(void *s)返回字符串中'A'的次數(shù)祝高,有詳細(xì)的區(qū)分普通栗弟、更好、優(yōu)秀的候選人的方法(Page63-67)(這個可以借鑒工闺,嚴(yán))

測試工程師

TE starting from middle(從頭介入不適用于google乍赫,因為早期功能不斷變化,TE沒有太多工作可做)
配備多少測試人員陆蟆,取決于項目風(fēng)險和投資回報率
Google只有少數(shù)團(tuán)隊采用word文檔通過郵件來傳遞(很老派)
google的文化是分布式和自我管理(大政府理念會受到嘲弄)
ACC(Attribute Component Capability)是測試計劃的替代方法
Attribute是區(qū)別于競爭對手的關(guān)鍵雷厂。測試用例關(guān)聯(lián)到這些標(biāo)簽,就知道哪些Attribute已經(jīng)完成多少測試遍搞。
Attribute和Component要求簡潔罗侯,Capability描述完整的功能
能力最重要的一個特點就是可測試性
Attribute作為行器腋,Component作為列溪猿,形成的表格钩杰,每個單元格里都是不同的能力(多條)。
用戶故事可以用一系列能力來描述
采用風(fēng)險分析诊县,將單元格附上顏色
風(fēng)險分析需要不同人的意見讲弄。有個方法很給力,先完成一份依痊,然后發(fā)給不同的人避除,他們發(fā)現(xiàn)偏差就會提出意見(樹個靶子)

bug的生命周期

google使用buganizer管理bug,分為P0到P5(P0最糟)
當(dāng)bug到達(dá)的速度超過團(tuán)隊修復(fù)的能力時胸嘁,不進(jìn)行新功能的開發(fā)(google強烈推薦這種實踐)瓶摆,有助于控制住bug

TE的招聘

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

google的測試領(lǐng)導(dǎo)和管理工作

海盜領(lǐng)導(dǎo)力:船員武裝到牙齒,才能卓著毫胜,不愁去處书斜,船長怎么管理這些人?(無法通過強力和恐懼酵使,船員的動力在于劫掠的生活方式和下一次收成的興奮感)
要靠技術(shù)洞察力荐吉,令人興奮的技術(shù)冒險,有趣的涂谟妫靠港口來領(lǐng)導(dǎo)團(tuán)隊
谷歌領(lǐng)導(dǎo)和管理:mentoring and guiding, not dictating

Google Test Analytics

是否有GTA類似的軟件供我們使用

與lindsay webster訪談

go-to tester(有困難就找她)
從頭到尾理解產(chǎn)品样屠,包括各種文檔
代表客戶
坦誠某個組件或領(lǐng)域不由自己負(fù)責(zé),開發(fā)反而尊敬你

測試工程經(jīng)理

測試工程經(jīng)理具備TE和SET技能缺脉,并具有足夠的管理技能
獨立貢獻(xiàn)者向測試經(jīng)理(manager)匯報瞧哟,資深工程師和技術(shù)負(fù)責(zé)人直接向總監(jiān)(director)匯報

影響力

google特別強調(diào)影響力

ankit mehta的訪談

進(jìn)入一個新項目,頭幾個興趣都是在傾聽(無法接受醫(yī)生觀察我不到5分鐘就開出抗生素的藥)
問為什么要做這個測試枪向,很多開發(fā)不思考勤揩,只做他們知道怎么做的東西或看別人怎么做就怎么做。應(yīng)該是能提高產(chǎn)品質(zhì)量秘蛔,提高工程師開發(fā)效率的東西
團(tuán)隊的文化和氛圍很大程度來自團(tuán)隊那個資深的人
管理的同時保持技術(shù)敏銳

  • 留下一部分工作自己做
  • 排除干擾(去了另外一個地方工作陨亡,干擾少,產(chǎn)能很高)
    只選用最好的人深员,絕不動搖
    經(jīng)驗:
  • 測試和開發(fā)采用相同的語言
  • 關(guān)注測試基礎(chǔ)設(shè)施建設(shè)负蠕,讓測試更容易
  • 20%的用例覆蓋了80%的使用場景(自動化這些)
    年輕的測試工程師可能一上來就干,沒有思考為什么要寫這些測試

Hung Dang的訪談

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

測試總監(jiān)

Shelton Mar

測試技術(shù)必須融入項目團(tuán)隊遮糖,需要非常強的工程師

Brad Green

google聘用的都是極端自我驅(qū)動力的家伙,“按我說的做”用多了叠赐,這群聰明的家伙就會不理你而去做他們覺得最該做的事情(google style欲账, 表面上答應(yīng)你屡江,后面干自己的事情)

James Whittaker

我發(fā)現(xiàn)沒有比開發(fā)工具更能激發(fā)測試人員的創(chuàng)造性和團(tuán)隊士氣了(我們是否可以借用,嚴(yán))
我對google最滿意的兩件事:測試人員向測試人員匯報赛不;測試人員自己決定自己的發(fā)展
Google測試的秘方:技能(測試人員的技術(shù)能力)惩嘉、稀缺性(獲得開發(fā)人員的幫助)、自動化踢故、迭代集成

google軟件測試改進(jìn)

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

google測試流程的致命缺陷

  • 測試成了開發(fā)的拐杖(測試變得越簡單文黎,開發(fā)越不會去做測試)
  • 測試人員更關(guān)注自己的角色,而不是他們的產(chǎn)品
  • 測試人員崇拜測試產(chǎn)物勝過軟件本身(所有測試產(chǎn)物的價值殿较,在于他對代碼的影響耸峭,再通過產(chǎn)品來體現(xiàn))、

SET的未來

SET的未來就是開發(fā)
測試代碼要成為一等公民淋纲,由PM管理抓艳,由SWE編寫
測試功能特性開發(fā)應(yīng)有團(tuán)隊的新成員負(fù)責(zé)(必須學(xué)習(xí)產(chǎn)品的所有東西,包括內(nèi)部設(shè)計)帚戳,是一個非常理想玷或、最佳的熱身項目。

結(jié)論

軟件開發(fā)的問題已經(jīng)徹底改變片任,繼續(xù)死守數(shù)十年之久的測試教條無異于刻舟求劍
集中測試部門逐漸下發(fā)到項目偏友,讓他們更敏捷,更少關(guān)注測試流程对供,更多關(guān)注產(chǎn)品本身位他。
測試工程經(jīng)理是最強的產(chǎn)品專家

糕)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市产场,隨后出現(xiàn)的幾起案子鹅髓,更是在濱河造成了極大的恐慌,老刑警劉巖京景,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件窿冯,死亡現(xiàn)場離奇詭異,居然都是意外死亡确徙,警方通過查閱死者的電腦和手機醒串,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鄙皇,“玉大人芜赌,你說我怎么就攤上這事“橐荩” “怎么了缠沈?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我洲愤,道長颓芭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任禽篱,我火速辦了婚禮,結(jié)果婚禮上馍惹,老公的妹妹穿的比我還像新娘躺率。我一直安慰自己,他們只是感情好万矾,可當(dāng)我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布悼吱。 她就那樣靜靜地躺著,像睡著了一般良狈。 火紅的嫁衣襯著肌膚如雪后添。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天薪丁,我揣著相機與錄音遇西,去河邊找鬼。 笑死严嗜,一個胖子當(dāng)著我的面吹牛粱檀,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播漫玄,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼茄蚯,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了睦优?” 一聲冷哼從身側(cè)響起渗常,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎汗盘,沒想到半個月后皱碘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡隐孽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年尸执,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缓醋。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡如失,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出送粱,到底是詐尸還是另有隱情褪贵,我是刑警寧澤,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站脆丁,受9級特大地震影響世舰,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜槽卫,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一跟压、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧歼培,春花似錦震蒋、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至噪窘,卻和暖如春笋庄,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背倔监。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工直砂, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人浩习。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓哆键,卻偏偏與公主長得像,于是被迫代替她去往敵國和親瘦锹。 傳聞我的和親對象是個殘疾皇子籍嘹,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內(nèi)容