測試工程師
軟件測試開發(fā)工程師(SET)負(fù)責(zé)可測試性和測試自動(dòng)化體系的長期有效性燕锥。測試工程師(Test Engineer酌住,后文簡寫TE)的職責(zé)與之有所不同羡洛,TE的重點(diǎn)在于評(píng)估對(duì)用戶的影響以及軟件產(chǎn)品整體目標(biāo)上的風(fēng)險(xiǎn)峻呛。與Google的其他大多數(shù)技術(shù)崗位一樣筒捺,TE的工作涉及到一些編程,但編程只是一小部分势就,實(shí)際上,在所有工程師中他們的職責(zé)范圍堪稱最廣脉漏。TE對(duì)產(chǎn)品的貢獻(xiàn)很大苞冯,但他們承擔(dān)的很多任務(wù)不需要編程(注:這只是通常的說法。許多TE所從事的工作與SET非常類似侧巨,需要編寫大量的代碼舅锄,而另外一些TE的職責(zé)更類似發(fā)布工程師,只需要編寫很少量的代碼)司忱。
Google的TE綜合了開發(fā)者仰慕的技術(shù)能力和以用戶為中心檢查軟件質(zhì)量而對(duì)開發(fā)者產(chǎn)生一定制約的能力皇忿。
TE的職位描述是最難定義的,因?yàn)槠渎氊?zé)范圍很廣而且不確定坦仍。人們期望TE在各種各樣的構(gòu)建物的完成鳍烁、集成、最終形成完整的產(chǎn)品過程中監(jiān)督所有產(chǎn)物的質(zhì)量繁扎。因此幔荒,大多數(shù)的TE都會(huì)從事一些基礎(chǔ)技術(shù)層的、需要另外一種視角和較強(qiáng)的專業(yè)技術(shù)能力的工作梳玫。這一切都與風(fēng)險(xiǎn)有關(guān):TE以對(duì)某種特定的產(chǎn)品最合適的方式發(fā)現(xiàn)軟件中風(fēng)險(xiǎn)最大的地方并嘗試減少或消除它爹梁。如果需要做SET的工作,TE就去做提澎;如果需要代碼審查姚垃,那就只管去做。如果缺少測試工具盼忌,那就花一些時(shí)間在上面积糯。
接下來掂墓,同一個(gè)人還會(huì)在項(xiàng)目的其他時(shí)段去領(lǐng)導(dǎo)探索式測試,或者管理內(nèi)部試用版(或beta版)的測試工作絮宁。在不同的項(xiàng)目階段梆暮,SET和TE的重點(diǎn)不同,早期的工作涉及到更多的面向SET的任務(wù)绍昂,而項(xiàng)目后期才是面向TE的任務(wù)啦粹。還有一些情況是TE的個(gè)人選擇,他們可以在不同的角色間切換窘游。但凡事沒有絕對(duì)唠椭,我們?cè)谙旅嫠龅拿枋觯皇谴砹死硐氲那闆r忍饰。
在研發(fā)的早期階段贪嫂,功能還在不斷變化,最終功能列表和范疇還沒有確定艾蓝,TE通常沒有太多的工作可做力崇。
當(dāng)TE進(jìn)入產(chǎn)品的時(shí)候,并不需要從零開始赢织。SWE和SET已經(jīng)在測試技術(shù)和質(zhì)量方面做了大量的工作亮靴,可以作為TE的起點(diǎn)。TE在進(jìn)入產(chǎn)品時(shí)于置,需要考慮以下一些問題茧吊。
- 當(dāng)前軟件的薄弱點(diǎn)在哪里?
- 有沒有安全八毯、隱私搓侄、性能、可靠性话速、可用性讶踪、兼容性、全球化和其他方面的問題泊交?
- 主要用戶場景是否功能正常俊柔?對(duì)于全世界不同國家的用戶都是這樣么?
- 這個(gè)產(chǎn)品能與其他產(chǎn)品(軟件和硬件)互操作嗎活合?
- 當(dāng)發(fā)生問題的時(shí)候雏婶,是否容易診斷問題所在?
當(dāng)然這只是一個(gè)不完全列表白指。所有這些加起來留晚,構(gòu)成發(fā)布待評(píng)估軟件的風(fēng)險(xiǎn)概要。TE并不需要自己去解決所有這些問題,但必須保證這些問題被解決掉错维,他們可以請(qǐng)其他人幫忙評(píng)估還有多少工作需要去做奖地。TE的根本使命是保護(hù)用戶和業(yè)務(wù)的利益,使之不受到糟糕的設(shè)計(jì)赋焕、令人困惑的用戶體驗(yàn)参歹、功能bug、安全和隱私等問題的困擾隆判。在Google犬庇,TE是一個(gè)團(tuán)隊(duì)中全職地負(fù)責(zé)從整體角度發(fā)現(xiàn)產(chǎn)品或服務(wù)弱點(diǎn)的唯一角色。因此侨嘀,與SET相比臭挽,TE的工作并不是那么確定。TE會(huì)介入項(xiàng)目的各個(gè)階段:從產(chǎn)品的構(gòu)思階段到第8個(gè)版本咬腕,甚至是照看一個(gè)已經(jīng)下線的項(xiàng)目欢峰。一個(gè)TE同時(shí)參與幾個(gè)項(xiàng)目也很常見,尤其是那些具備安全涨共、隱私或全球化等專門技能的TE纽帖。
這個(gè)角色需要敏銳的洞察力和領(lǐng)導(dǎo)力,因此很多Google的高級(jí)測試經(jīng)理們都來自于TE举反。
TE的工作經(jīng)常需要去打破常規(guī)流程懊直。TE可以在任何時(shí)間進(jìn)入項(xiàng)目,必須迅速評(píng)估項(xiàng)目照筑、代碼吹截、設(shè)計(jì)和用戶的當(dāng)前狀態(tài)瘦陈,然后決定首要的關(guān)注點(diǎn)凝危。如果項(xiàng)目剛剛開始,測試計(jì)劃是第一優(yōu)先級(jí)晨逝。有時(shí)蛾默,TE在產(chǎn)品后期被拉進(jìn)來幫助評(píng)估項(xiàng)目是否可以發(fā)布,或者在beta版本發(fā)布之前確認(rèn)還有哪些主要的問題捉貌。當(dāng)TE進(jìn)入了一個(gè)新被收購的應(yīng)用或缺少相關(guān)應(yīng)用經(jīng)驗(yàn)的時(shí)候支鸡,他們經(jīng)常會(huì)先去做一些不怎么需要計(jì)劃的探索式測試。有時(shí)趁窃,項(xiàng)目已經(jīng)很久沒有發(fā)布了牧挣,只是需要去做一些修飾、安全補(bǔ)丁或界面更新醒陆,這需要迥然不同的方法瀑构。
在Google,TE需要在不同的項(xiàng)目中做不同的事情刨摩。我們經(jīng)常將TE的工作描述為"從中間開始(starting in the middle)"寺晌,因?yàn)門E必須保持足夠的靈活世吨,能夠迅速融入一個(gè)產(chǎn)品團(tuán)隊(duì)的文化和現(xiàn)狀。如果做測試計(jì)劃已經(jīng)來不及了呻征,那就干脆不做了耘婚。如果一個(gè)項(xiàng)目最需要的是測試,那就做一個(gè)簡單夠用的指導(dǎo)性計(jì)劃陆赋。一些測試教條所倡導(dǎo)的從頭就介入的模式沐祷,在Google并不適用。
下面是我們關(guān)于TE職責(zé)的一般性描述奏甫。
- 測試計(jì)劃和風(fēng)險(xiǎn)分析戈轿;
- 評(píng)審需求、設(shè)計(jì)阵子、代碼和測試思杯;
- 探索式測試;
- 用戶場景挠进;
- 編寫測試用例色乾;
- 執(zhí)行測試用例;
- 眾包(譯注:crowdsourcing领突,是互聯(lián)網(wǎng)帶來的新的生產(chǎn)組織形式暖璧。一個(gè)公司或機(jī)構(gòu)把過去由員工執(zhí)行的工作任務(wù),以自由自愿的形式外包給非特定的(通常是大型的)大眾網(wǎng)絡(luò)的做法)君旦;
- 使用統(tǒng)計(jì)澎办;
- 用戶反饋。
測試人員要處理的是真正的文檔和其他臨時(shí)性的事物金砍。在項(xiàng)目的早期階段局蚀,測試人員編寫測試計(jì)劃;然后恕稠,他們創(chuàng)建和執(zhí)行測試用例琅绅,編寫bug報(bào)告;接下來是準(zhǔn)備覆蓋度報(bào)告鹅巍,收集用戶滿意度和軟件質(zhì)量數(shù)據(jù)千扶。在軟件成功發(fā)布(或失敗)之后骆捧,很少有人會(huì)問及測試產(chǎn)物是什么澎羞。如果軟件深受人們喜愛,大家就會(huì)認(rèn)為測試所作所為是理所應(yīng)當(dāng)?shù)牧参蝗绻浖茉愀庾苯剩藗兛赡芫蜁?huì)質(zhì)疑測試工作。但其實(shí)也沒人真正想去了解測試到底做了什么。
測試計(jì)劃是最早出現(xiàn)摆碉、最先被遺忘的測試產(chǎn)物塘匣。
下面是我們希望測試計(jì)劃具有的一些特性。
- 及時(shí)地更新巷帝。
- 描述了軟件的目標(biāo)和賣點(diǎn)忌卤。
- 描述了軟件的結(jié)構(gòu)、各種組件和功能特性的名稱楞泼。
- 描述了軟件的功能和操作簡介驰徊。
從純粹測試的角度看,我們擔(dān)心的是測試計(jì)劃的投入和價(jià)值產(chǎn)出是否匹配堕阔。
- 不必花過多的時(shí)間去撰寫棍厂,必須隨時(shí)可以被修改。
- 應(yīng)該描述必測點(diǎn)超陆。
- 應(yīng)該能在測試中提供有用的信息牺弹,從而幫助確定進(jìn)展以及覆蓋率上的不足。
ACC(Attribute Component Capability时呀,即特質(zhì)张漂、組件、能力谨娜。這是一種測試計(jì)劃的替代方法航攒,參見http://googletesting.blogspot.com/2011/10/google-test-analytics-now-in-open.html)可以做測試計(jì)劃的替代。
特質(zhì)是系統(tǒng)的形容詞趴梢,代表了產(chǎn)品的品質(zhì)和特色漠畜,是區(qū)別于競爭對(duì)手的關(guān)鍵。
源碼工具:一系列用于簡化創(chuàng)建工作環(huán)境坞靶、提交代碼變更憔狞、代碼風(fēng)格檢查的工具√渤睿可以用工具瀏覽數(shù)億萬行的代碼躯喇,發(fā)現(xiàn)并預(yù)防重復(fù)的代碼辫封。還有用于建立大規(guī)模索引和代碼重構(gòu)的工具硝枉。
開發(fā)工具:集成開的發(fā)環(huán)境的一些插件,讓其他各種工具適應(yīng)google的代碼并連接后端的云服務(wù)倦微。代碼審查工具妻味,通過在審查階段嵌入相關(guān)的信號(hào),來快速完成高質(zhì)量的代碼審查欣福。
構(gòu)建框架:構(gòu)建系統(tǒng)支持自動(dòng)式责球,交互式,可以把原本需要數(shù)小時(shí)的任務(wù)縮短到數(shù)秒
測試基礎(chǔ)架構(gòu):規(guī)模化的持續(xù)集成雏逾,開發(fā)人員的每次代碼提交都會(huì)引發(fā)自動(dòng)測試嘉裤;另一方面是規(guī)模化的web測試栖博,每個(gè)google產(chǎn)品都會(huì)啟動(dòng)數(shù)十萬個(gè)瀏覽器會(huì)話屑宠,對(duì)各種不同的瀏覽器平臺(tái)組合進(jìn)行測試。
本地化工具
度量仇让,可視化和報(bào)表:管理所有產(chǎn)品的bug典奉,跟蹤所有研發(fā)活動(dòng)中工程師的各項(xiàng)指標(biāo)。
技能丧叽、稀缺性卫玖、自動(dòng)化和迭代集成。
參考資料
- 討論 釘釘群21745728 qq群144081101 567351477
- 本文最新版本地址
- 本文英文原版書籍
- 本文源碼地址
- 本文涉及的python測試開發(fā)庫 謝謝點(diǎn)贊踊淳!
- 本文相關(guān)海量書籍下載