試面試高頻題與答題思路:從用例設(shè)計(jì)到自動(dòng)化性能)
先說(shuō)明一下軟件測(cè)試面試題這個(gè)東西網(wǎng)上一搜一大把但九成都是八股文堆砌背下來(lái)用處不大。我做過(guò)面試官也陪跑過(guò)不少轉(zhuǎn)行的朋友一個(gè)很深的感受是——面試官問(wèn)的從來(lái)不是題本身而是題背后的思考方式。這篇我按自己的經(jīng)驗(yàn)把高頻題重新梳理了一遍每個(gè)題都寫(xiě)了答案思路還加了一些“為什么這么答”的說(shuō)明希望能幫你真正理解面試官在想什么。1. 面試官到底在考察什么——先搞清楚題目的底層邏輯很多人準(zhǔn)備面試習(xí)慣把網(wǎng)上的題庫(kù)從頭背到尾結(jié)果一到現(xiàn)場(chǎng)就露餡。原因很簡(jiǎn)單你背的是答案面試官要的是思路。我做過(guò)一段時(shí)間的技術(shù)面試官自己面試時(shí)也有一個(gè)習(xí)慣就是不管對(duì)方答得對(duì)不對(duì)都會(huì)追問(wèn)一句“還有嗎”。這一追問(wèn)基本就能分辨出哪些人是真做過(guò)哪些人只是在背題。面試官出題通常只有四個(gè)目的驗(yàn)證基礎(chǔ)是否扎實(shí)。測(cè)試?yán)碚?、用例設(shè)計(jì)方法這些是你的基本功不要求你背書(shū)一樣背概念但要能用自己的話講清楚并且能舉出實(shí)際例子??疾爝壿嬍欠袂逦?。面對(duì)一個(gè)功能你能不能快速拆解出測(cè)試點(diǎn)能不能按優(yōu)先級(jí)排列能不能考慮到異常場(chǎng)景——這是測(cè)試思維的核心。檢驗(yàn)項(xiàng)目真實(shí)度。談到項(xiàng)目經(jīng)歷你的表述細(xì)節(jié)、數(shù)據(jù)、遇到的問(wèn)題決定了你是有真實(shí)經(jīng)驗(yàn)還是在編故事。編的很容易被連續(xù)追問(wèn)擊穿。評(píng)估潛力和匹配度。面對(duì)不會(huì)的問(wèn)題你的反應(yīng)是“這個(gè)我沒(méi)接觸過(guò)”還是“雖然沒(méi)做過(guò)但我會(huì)從XX角度去理解”這決定了你入職后的帶教成本。理解了這四點(diǎn)你會(huì)發(fā)現(xiàn)所謂面試題其實(shí)都圍繞著一個(gè)核心能力展開(kāi)對(duì)一個(gè)具體事物你能不能系統(tǒng)性地找出所有可能出問(wèn)題的點(diǎn)并設(shè)計(jì)出有效的驗(yàn)證方法。心態(tài)上還要注意一點(diǎn)遇到不會(huì)的題很正常關(guān)鍵是你怎么處理。我最建議的回答模板是——“這個(gè)方向我了解但不是特別深基于我目前的理解我會(huì)從XX角度分析大致思路是……”。這樣既誠(chéng)實(shí)又展示了你的思考過(guò)程遠(yuǎn)比硬編一個(gè)答案要好得多。2. 理論篇——測(cè)試基礎(chǔ)與用例設(shè)計(jì)的經(jīng)典問(wèn)答2.1 “給你一個(gè)登錄頁(yè)面你怎么設(shè)計(jì)測(cè)試用例”這基本是面試必問(wèn)也是區(qū)分新手和老手的一道分水嶺。新手的典型回答是“輸入正確的賬號(hào)密碼能登錄成功輸入錯(cuò)誤的提示錯(cuò)誤信息?!蓖炅?。這只能算是功能路徑的第一層。我建議的回答框架是分層展開(kāi)功能測(cè)試正確賬號(hào)密碼登錄成功正確賬號(hào)錯(cuò)誤密碼、錯(cuò)誤賬號(hào)正確密碼、賬號(hào)密碼都錯(cuò)誤分別驗(yàn)證提示是否準(zhǔn)確空賬號(hào)/空密碼時(shí)登錄按鈕是否置灰或提示密碼是否可見(jiàn)或可切換明文輸入框是否有長(zhǎng)度限制通常6-20位超長(zhǎng)是否被截?cái)嗷蛱崾臼欠裰С钟脩裘?、郵箱、手機(jī)號(hào)三種登錄方式記住密碼功能是否生效。界面測(cè)試排版是否錯(cuò)亂按鈕是否對(duì)齊不同分辨率下是否正常顏色是否符合設(shè)計(jì)稿。兼容性測(cè)試要覆蓋不同瀏覽器如Chrome、Firefox、Safari、Edge、不同操作系統(tǒng)、不同手機(jī)型號(hào)和屏幕尺寸。主流應(yīng)用最少要覆蓋前兩種瀏覽器和兩個(gè)主流手機(jī)型號(hào)。安全測(cè)試密碼傳輸是否加密抓包看是密文還是明文錯(cuò)誤登錄是否有次數(shù)限制連續(xù)輸錯(cuò)是否鎖定或出現(xiàn)驗(yàn)證碼是否支持SQL注入比如在密碼框中輸入 or 11這類(lèi)內(nèi)容看系統(tǒng)是否被繞過(guò)登錄狀態(tài)下的URL是否可被直接訪問(wèn)越權(quán)問(wèn)題。性能測(cè)試多人同時(shí)登錄是否卡頓通常在200個(gè)虛擬用戶并發(fā)登錄時(shí)平均響應(yīng)時(shí)間不應(yīng)該超過(guò)3秒錯(cuò)誤率不應(yīng)該超過(guò)1%。異常場(chǎng)景斷網(wǎng)時(shí)點(diǎn)擊登錄是否有提示服務(wù)器返回超時(shí)比如等待超過(guò)5秒時(shí)的提示文案是否友好快速重復(fù)點(diǎn)擊登錄按鈕是否會(huì)產(chǎn)生重復(fù)提交。大家感受一下同樣一道題這種答法和“輸入正確密碼能登錄”之間差的不是題量而是測(cè)試思維的體系化程度。面試官聽(tīng)到這種答案基本能確認(rèn)你有獨(dú)立負(fù)責(zé)模塊測(cè)試的能力。平時(shí)自己練的時(shí)候可以拿微信、淘寶這種日常應(yīng)用當(dāng)靶子隨手打開(kāi)一個(gè)功能在紙上拆測(cè)試點(diǎn)練多了自然就成條件反射。2.2 “說(shuō)說(shuō)你熟悉的測(cè)試用例設(shè)計(jì)方法并舉例”這個(gè)問(wèn)題注意一個(gè)坑不要只報(bào)菜名。很多人的回答是“等價(jià)類(lèi)、邊界值、因果圖、正交表、場(chǎng)景法”然后就沒(méi)然后了面試官只能繼續(xù)追問(wèn)“具體怎么用”。建議的口訣是“一個(gè)核心三個(gè)必答”。等價(jià)類(lèi)劃分法把無(wú)窮的輸入數(shù)據(jù)劃分成有限類(lèi)從每類(lèi)中取一個(gè)代表值測(cè)試。舉例年齡輸入框規(guī)定是18-60歲那有效等價(jià)類(lèi)就是18至60之間的任意值比如35無(wú)效等價(jià)類(lèi)就是小于18比如17和大于60比如61取一個(gè)代表值即可。邊界值分析法大量bug發(fā)生在邊界上所以取邊界及邊界兩側(cè)的值。上點(diǎn)剛好在邊界上的值如18和60、離點(diǎn)緊挨邊界的值如17和61、內(nèi)點(diǎn)邊界范圍內(nèi)的值如35測(cè)這三個(gè)點(diǎn)基本就夠了。場(chǎng)景法從用戶使用流程的角度出發(fā)設(shè)計(jì)用例比如購(gòu)買(mǎi)流程加入購(gòu)物車(chē)→提交訂單→支付→查收電子發(fā)票。正常流之外還要考慮備選流和異常流如支付超時(shí)、庫(kù)存被搶空、重復(fù)支付等。因果圖和正交表也最好作為補(bǔ)充提一下當(dāng)輸入條件較多、組合爆炸時(shí)比如3個(gè)條件每個(gè)2種取值全組合是8種條件一多就指數(shù)級(jí)上漲用正交表抽樣替代全組合能極大減少用例數(shù)量。你可以說(shuō)“我在某模塊配置項(xiàng)測(cè)試中用正交表把原本上百條組合用例精簡(jiǎn)到了20多條”這樣才有說(shuō)服力。2.3 “怎么理解測(cè)試計(jì)劃、測(cè)試策略和測(cè)試用例的關(guān)系”這道題考察你有沒(méi)有做過(guò)測(cè)試負(fù)責(zé)人的角色或者說(shuō)你對(duì)自己工作在整個(gè)研發(fā)鏈路中的位置是否有認(rèn)知。一句話可以概括測(cè)試計(jì)劃解決“做什么、誰(shuí)來(lái)做、什么時(shí)候做”的問(wèn)題測(cè)試策略解決“怎么做、做到什么程度”的問(wèn)題測(cè)試用例解決“具體檢查什么”的問(wèn)題。展開(kāi)講測(cè)試計(jì)劃講的是管理維度。范圍是什么排除哪些資源怎么分配里程碑怎么定風(fēng)險(xiǎn)有哪些。比如一個(gè)版本發(fā)了要上線一個(gè)支付模塊測(cè)試周期只有5天——計(jì)劃里會(huì)寫(xiě)清楚優(yōu)先保證主流程和資金安全相關(guān)用例的自動(dòng)化執(zhí)行花3天做功能測(cè)試1天做性能回歸1天做兼容性抽查剩余時(shí)間留作緩沖。測(cè)試策略講的是方法決策。比如哪些功能適合用自動(dòng)化回歸哪些模塊需要做安全測(cè)試哪些場(chǎng)景需要上性能壓測(cè)。策略的依據(jù)通常是風(fēng)險(xiǎn)評(píng)估——用戶量大的核心鏈路哪怕改動(dòng)小也要全量回歸邊緣功能可能只做冒煙。測(cè)試用例是具體執(zhí)行層面的產(chǎn)物前面第2.1題的登錄用例就是一個(gè)例子。這類(lèi)題沒(méi)有標(biāo)準(zhǔn)答案考察的是項(xiàng)目視角。你可以結(jié)合自己參與過(guò)的項(xiàng)目來(lái)展開(kāi)比如你是如何從計(jì)劃落到策略再落到用例的如果有偏差當(dāng)時(shí)是怎么調(diào)整的。2.4 “Bug的生命周期是什么你提的Bug被開(kāi)發(fā)打回了怎么辦”這是理論題也是情商題。前半部分很好答新建New→ 指派Open/Assigned→ 修復(fù)Fixed→ 回歸驗(yàn)證Verify/Retest→ 關(guān)閉Closed中間還會(huì)有拒絕Rejected、延期Deferred、重新打開(kāi)Reopen幾個(gè)狀態(tài)。后半部分才是關(guān)鍵。Bug被開(kāi)發(fā)打回先不要情緒上頭按下面這個(gè)順序處理第一步重新確認(rèn)操作步驟是否寫(xiě)清楚了環(huán)境是否有特殊配置。很多打回是因?yàn)椴襟E不完整開(kāi)發(fā)復(fù)現(xiàn)不了。第二步把日志、截圖、錄屏、接口返回?cái)?shù)據(jù)這一類(lèi)的證據(jù)補(bǔ)齊。一口咬定“就是有bug”不如甩出一條報(bào)錯(cuò)日志有說(shuō)服力。第三步如果證據(jù)齊全還是被拒跟開(kāi)發(fā)當(dāng)面或拉會(huì)溝通不要在企業(yè)群里反復(fù)來(lái)回。有時(shí)候是認(rèn)知差異比如開(kāi)發(fā)認(rèn)為這是需求之外的行為那就要拉產(chǎn)品經(jīng)理一起確認(rèn)到底按現(xiàn)狀做還是按預(yù)期做評(píng)審一下定個(gè)結(jié)論。第四步如果是低概率、難復(fù)現(xiàn)的bug寧可多花點(diǎn)時(shí)間做排除測(cè)試也別輕易關(guān)閉。真的復(fù)現(xiàn)不了寫(xiě)明現(xiàn)象、頻率和猜測(cè)原因后再掛起絕不能直接刪掉。我在實(shí)際項(xiàng)目里遇到過(guò)這樣一個(gè)case有個(gè)偶現(xiàn)的崩潰bug開(kāi)發(fā)一直說(shuō)復(fù)現(xiàn)不了拒絕修復(fù)。我沒(méi)有直接在bug單里跟他對(duì)線而是約了會(huì)議室?guī)先罩痉治龉ぞ攥F(xiàn)場(chǎng)一邊操作一邊抓日志終于在第17次操作的時(shí)候復(fù)現(xiàn)了。開(kāi)發(fā)當(dāng)場(chǎng)就無(wú)話可說(shuō)了下午就定位到了問(wèn)題。這事的經(jīng)驗(yàn)就是復(fù)現(xiàn)bug比說(shuō)服人更有效。3. 實(shí)戰(zhàn)篇——面試中躲不開(kāi)的場(chǎng)景題與手寫(xiě)用例3.1 “如果上線前發(fā)現(xiàn)嚴(yán)重Bug但產(chǎn)品經(jīng)理堅(jiān)持準(zhǔn)時(shí)上線你怎么處理”這道題考察的是風(fēng)險(xiǎn)意識(shí)、溝通能力、原則性。常見(jiàn)錯(cuò)誤回答是“那就提缺陷讓產(chǎn)品決定”太被動(dòng)了。綜合素質(zhì)高一些的答法是把方案講清楚先評(píng)估這個(gè)Bug的嚴(yán)重等級(jí)和影響范圍。如果屬于P0級(jí)比如支付金額算錯(cuò)了、主流程走不通我的建議是必須攔下但不能只丟一句“不能上線”就完事而是要給決策層提供帶風(fēng)險(xiǎn)分析的替代方案。比如“這個(gè)Bug影響的是XX渠道的YY場(chǎng)景占比約X%如果明天必須上線建議上線后立即關(guān)閉該渠道入口同時(shí)準(zhǔn)備好緊急回滾預(yù)案我這邊也會(huì)在這個(gè)窗口內(nèi)持續(xù)驗(yàn)證修復(fù)方案?!奔夹g(shù)層面你會(huì)被追問(wèn)“線上出現(xiàn)緊急bug怎么處理”回答的套路是止血 → 定位 → 修復(fù) → 復(fù)盤(pán)。止血通常是回滾版本或者下掉某個(gè)功能入口定位靠日志監(jiān)控和鏈路追蹤修復(fù)后先跑核心回歸再切量灰度最后復(fù)盤(pán)改進(jìn)流程補(bǔ)充測(cè)試用例和監(jiān)控告警確保同類(lèi)問(wèn)題不再出現(xiàn)。態(tài)度上要守住一個(gè)原則上線這件事質(zhì)量底線可以由測(cè)試來(lái)兜底但最終拍板一定是集體決策。你負(fù)責(zé)把風(fēng)險(xiǎn)和選項(xiàng)擺清楚而不是替產(chǎn)品做決定。這個(gè)回答既體現(xiàn)了專(zhuān)業(yè)度也避免了“測(cè)試故意卡上線”的刻板印象。3.2 “寫(xiě)一條簡(jiǎn)單的接口測(cè)試用例你會(huì)怎么寫(xiě)”有些面試官會(huì)直接給你一個(gè)接口文檔示例比如“獲取用戶信息接口/api/user/infoGET方法參數(shù)userId”讓你當(dāng)場(chǎng)口述用例。這時(shí)候不要只寫(xiě)“userId傳1返回成功”這種單一路徑。接口測(cè)試用例的核心維度是參數(shù)正確性必填參數(shù)傳正常值返回200和正確body。參數(shù)缺失userId不傳預(yù)期返回400或提示“userId為必填項(xiàng)”。參數(shù)類(lèi)型異常userId傳字符串“abc”預(yù)期返回參數(shù)類(lèi)型錯(cuò)誤。參數(shù)邊界userId傳0、傳負(fù)數(shù)、傳一個(gè)超大整數(shù)如99999999999各自預(yù)期是什么。鑒權(quán)校驗(yàn)不帶token請(qǐng)求預(yù)期返回401token過(guò)期、token偽造是否被攔截。異常場(chǎng)景模擬接口超時(shí)、服務(wù)端500錯(cuò)誤客戶端是否能夠處理并給出友好提示。敏感信息返回內(nèi)容中是否包含過(guò)多敏感字段如手機(jī)號(hào)、身份證號(hào)日志中是否打印了明文密碼。一條接口用例別拘泥于“給一個(gè)輸入看一個(gè)輸出”而是把所有可能出現(xiàn)的問(wèn)題都當(dāng)成系統(tǒng)的一部分去驗(yàn)證。另外提一嘴現(xiàn)在很多團(tuán)隊(duì)已經(jīng)用自動(dòng)化工具做接口測(cè)試了所以面試中關(guān)于接口的題很少脫離工具和框架來(lái)單獨(dú)問(wèn)詳見(jiàn)下一節(jié)。3.3 “給你一個(gè)余額提現(xiàn)功能你怎么做測(cè)試”這題比登錄頁(yè)面的題更進(jìn)階因?yàn)樯婕百Y金安全特別考察綜合能力。建議從下面幾個(gè)維度展開(kāi)功能流程正常提現(xiàn)路徑申請(qǐng)→確認(rèn)→到賬通知重復(fù)點(diǎn)擊提現(xiàn)按鈕是否會(huì)重復(fù)提交訂單提現(xiàn)過(guò)程中取消狀態(tài)是否正確回滾。金額邊界最小提現(xiàn)金額比如1元、最大提現(xiàn)金額、余額剛好等于提現(xiàn)金額、余額不足、提現(xiàn)手續(xù)費(fèi)是否計(jì)算正確。并發(fā)場(chǎng)景余額只有100元兩個(gè)設(shè)備同時(shí)發(fā)起提現(xiàn)80元只能有一筆成功同一賬號(hào)在手機(jī)端和網(wǎng)頁(yè)端同時(shí)操作是否會(huì)出現(xiàn)超提超提是資金類(lèi)系統(tǒng)的核心風(fēng)險(xiǎn)。冪等性網(wǎng)絡(luò)超時(shí)后重試提現(xiàn)會(huì)不會(huì)產(chǎn)生兩筆訂單這是接口測(cè)試?yán)锖苤匾囊粋€(gè)點(diǎn)也就是系統(tǒng)要用全局唯一請(qǐng)求號(hào)比如用UUID或雪花ID來(lái)判斷是否是同一筆請(qǐng)求防止重復(fù)扣款。數(shù)據(jù)一致性提現(xiàn)成功之后賬戶余額、流水記錄、訂單狀態(tài)三者的數(shù)據(jù)應(yīng)該保持一致??梢杂脭?shù)據(jù)庫(kù)事務(wù)的ACID特性去思考發(fā)起提現(xiàn)時(shí)余額扣減和訂單生成必須在一個(gè)事務(wù)里任何一個(gè)失敗都要整體回滾。異?;謴?fù)提現(xiàn)過(guò)程中斷網(wǎng)、斷點(diǎn)續(xù)傳、服務(wù)器宕機(jī)恢復(fù)后系統(tǒng)狀態(tài)是否仍是正確的。面試中遇到這種資金類(lèi)題目只要你能主動(dòng)提到“冪等”“事務(wù)一致性”“并發(fā)鎖”這些詞并且說(shuō)得有理有據(jù)面試官基本就覺(jué)得你有過(guò)真實(shí)項(xiàng)目經(jīng)驗(yàn)了。4. 進(jìn)階篇——自動(dòng)化、性能與工具類(lèi)問(wèn)題4.1 “你會(huì)搭建接口自動(dòng)化框架嗎”這道題沒(méi)有標(biāo)準(zhǔn)答案即使你只用過(guò)Postman也可以聊得很有價(jià)值。關(guān)鍵是你對(duì)框架的理解要成體系。比較標(biāo)準(zhǔn)的一套接口自動(dòng)化方案長(zhǎng)這樣工具選型接口調(diào)試時(shí)用Postman或Apifox做單接口調(diào)試斷言和導(dǎo)出測(cè)試集生產(chǎn)級(jí)自動(dòng)化可以用Python的Requests庫(kù)或Java的Rest Assured做二次封裝或者直接用現(xiàn)成的平臺(tái)比如JMeter、MeterSphere這類(lèi)工具團(tuán)隊(duì)成員通過(guò)平臺(tái)協(xié)作??蚣芊謱踊A(chǔ)層封裝通用的請(qǐng)求方法POST/GET/PUT/DELETE統(tǒng)一處理Header、超時(shí)、SSL校驗(yàn)用例層用數(shù)據(jù)文件Excel、YAML、JSON驅(qū)動(dòng)用例不寫(xiě)死代碼測(cè)試執(zhí)行層用pytestPython或TestNGJava做組織管理數(shù)據(jù)校驗(yàn)層用Json Schema或自定義斷言不只校驗(yàn)狀態(tài)碼還要校驗(yàn)關(guān)鍵字段和數(shù)據(jù)庫(kù)落地。數(shù)據(jù)隔離測(cè)試環(huán)境造數(shù)要自動(dòng)化——接口依賴(lài)的測(cè)試數(shù)據(jù)通過(guò)初始化SQL或調(diào)用數(shù)據(jù)工廠接口預(yù)置跑完用例后清理保證用例可重復(fù)執(zhí)行。持續(xù)集成用Jenkins/GitLab CI定時(shí)觸發(fā)測(cè)試任務(wù)結(jié)果推送到企業(yè)微信群或釘釘群、郵件失敗時(shí)自動(dòng)截取調(diào)用鏈數(shù)據(jù)和響應(yīng)報(bào)文??蚣艽罱ǖ乃悸氛f(shuō)完面試官一般會(huì)接著問(wèn)你“如何保證框架的穩(wěn)定性和執(zhí)行效率”。你可以回答a. 用例之間盡量獨(dú)立不要依賴(lài)執(zhí)行順序b. 跑批量任務(wù)時(shí)開(kāi)啟并發(fā)執(zhí)行把執(zhí)行時(shí)間從半小時(shí)壓到5分鐘c. 高頻接口加上測(cè)試結(jié)果自動(dòng)重試機(jī)制避免偶發(fā)網(wǎng)絡(luò)抖動(dòng)造成的誤報(bào)d. 關(guān)注誤報(bào)率接口本身的mock數(shù)據(jù)要通過(guò)接口文檔和開(kāi)發(fā)對(duì)齊。4.2 “性能測(cè)試你都做過(guò)哪些指標(biāo)怎么看性能測(cè)試報(bào)告”性能測(cè)試相關(guān)的題很多候選人都會(huì)答散。其實(shí)核心就四個(gè)指標(biāo)響應(yīng)時(shí)間RT從發(fā)請(qǐng)求到收到完整響應(yīng)的時(shí)間。一般接口要求P9595%的請(qǐng)求響應(yīng)時(shí)間在200毫秒以內(nèi)超過(guò)1秒用戶就能感覺(jué)到卡頓。要注意的是平均響應(yīng)時(shí)間很容易被少量長(zhǎng)尾請(qǐng)求拉高所以通常更關(guān)注P90、P95、P99P99超過(guò)3秒就要警惕了。吞吐量TPS/QPS每秒能處理的請(qǐng)求數(shù)或事務(wù)數(shù)。比如支付接口的TPS目標(biāo)值是500壓測(cè)到2000并發(fā)時(shí)如果TPS不能繼續(xù)上升就要排查瓶頸。并發(fā)用戶數(shù)系統(tǒng)在同一時(shí)刻能承載多少在線操作而不崩潰。注意“并發(fā)用戶數(shù)”和“在線用戶數(shù)”是兩碼事很多人喜歡混淆這兩個(gè)概念來(lái)解讀報(bào)告。資源利用率壓測(cè)過(guò)程中CPU、內(nèi)存、磁盤(pán)IO、網(wǎng)絡(luò)IO的占用情況。一般CPU超過(guò)80%要開(kāi)始優(yōu)化代碼內(nèi)存持續(xù)增長(zhǎng)可能有泄漏磁盤(pán)IO過(guò)高多半有慢查詢??吹揭环菪阅軋?bào)告我的讀法是這樣第一步看TPS曲線如果隨著并發(fā)數(shù)上升TPS先升后平甚至下降說(shuō)明系統(tǒng)已經(jīng)出現(xiàn)性能瓶頸第二步看響應(yīng)時(shí)間分布P95是否達(dá)標(biāo)第三步看瓶頸點(diǎn)是Web服務(wù)器連接數(shù)滿、數(shù)據(jù)庫(kù)連接池打滿還是慢SQL拖垮整體最后看資源水位定位是CPU計(jì)算密集還是IO等待密集。面試時(shí)把這個(gè)順序講出來(lái)比背概念強(qiáng)得多。4.3 “你做過(guò)哪些UI自動(dòng)化Selenium定位元素失敗你怎么排查”UI自動(dòng)化的核心價(jià)值是回歸測(cè)試而不是替代手工測(cè)試這個(gè)定位要先說(shuō)清楚。市面上主流是SeleniumWeb端和Appium移動(dòng)端現(xiàn)在也有很多人用Playwright、Cypress做Web自動(dòng)化選型思路可以從穩(wěn)定性、執(zhí)行速度、社區(qū)生態(tài)三個(gè)維度來(lái)比較。關(guān)于定位元素失敗這是UI自動(dòng)化最常見(jiàn)的日常問(wèn)題回答思路很明確按順序排查第一步看元素是否在iframe中如果頁(yè)面結(jié)構(gòu)里有iframe但沒(méi)有切換進(jìn)去那不管用什么選擇器都定位不到。這是新手漲經(jīng)驗(yàn)最快的一個(gè)坑。第二步看頁(yè)面是否還沒(méi)加載完成元素是動(dòng)態(tài)渲染的腳本跑得太快元素還沒(méi)出現(xiàn)。處理方式是顯式等待WebDriverWait expected_conditions而不是粗暴地sleep固定時(shí)間。第三步看元素屬性是不是動(dòng)態(tài)變化的比如id每次刷新都變那就改用CSS或者相對(duì)XPath定位。第四步看是不是頁(yè)面出現(xiàn)了遮擋層比如彈窗蓋住了元素點(diǎn)擊時(shí)報(bào)“element not clickable”。第五步如果是class屬性里有空格等特殊字符用XPath配合contains函數(shù)來(lái)模糊匹配。我曾遇到過(guò)一個(gè)詭異case腳本在本地跑得好好的一上CI就掛排查了很久才發(fā)現(xiàn)是測(cè)試環(huán)境Chrome版本跟docker里的chromedriver版本不匹配。后來(lái)把鏡像里的瀏覽器版本固定住才解決。自動(dòng)化的坑基本都是這類(lèi)環(huán)境層面的問(wèn)題面試時(shí)能講出一兩個(gè)真實(shí)排障場(chǎng)景會(huì)非常加分。5. 軟技能與開(kāi)放題——“三句話”穩(wěn)住項(xiàng)目介紹和HR面5.1 “介紹下你最近負(fù)責(zé)的一個(gè)項(xiàng)目”這幾乎是每場(chǎng)面試必有的題但掛在這道題上的人比想象中多。要么說(shuō)得太細(xì)面試官聽(tīng)不到重點(diǎn)要么說(shuō)得太泛像是在背宣傳文案。我建議用結(jié)構(gòu)化的方式來(lái)講一句話背景“我負(fù)責(zé)的是某電商平臺(tái)用戶端和訂單中臺(tái)的數(shù)據(jù)一致性測(cè)試覆蓋了下單、支付、庫(kù)存扣減、退款這四個(gè)核心鏈路。”你的角色和做的事情“我主要負(fù)責(zé)接口自動(dòng)化框架的搭建和核心鏈路的回歸策略設(shè)計(jì)另外獨(dú)立負(fù)責(zé)了訂單模塊的異常場(chǎng)景測(cè)試比如重復(fù)支付、部分退款、超時(shí)關(guān)單這類(lèi)業(yè)務(wù)分支。”過(guò)程中的挑戰(zhàn)“支付回調(diào)因?yàn)榫W(wǎng)絡(luò)超時(shí)導(dǎo)致訂單狀態(tài)不一致我們?cè)诰€下壓測(cè)中很難復(fù)現(xiàn)后來(lái)通過(guò)分析日志和主動(dòng)注入故障才定位到問(wèn)題并補(bǔ)齊了對(duì)應(yīng)的場(chǎng)景用例。”量化結(jié)果“把回歸測(cè)試的時(shí)間從1天壓縮到2小時(shí)核心鏈路的線上故障在3個(gè)月內(nèi)為零?!边@四段邏輯不是背給你聽(tīng)的而是讓你在講的時(shí)候心里有數(shù)每個(gè)環(huán)節(jié)都可能被追問(wèn)細(xì)節(jié)。所以講的一定是自己真實(shí)做過(guò)的東西多小都行別編。5.2 “你最大的缺點(diǎn)是什么”和“你為什么離開(kāi)上一家公司”說(shuō)“我最大的缺點(diǎn)是太追求完美”這類(lèi)答案面試官幾乎聽(tīng)膩了幾乎沒(méi)有效果。我比較推薦的是講一個(gè)真實(shí)的、正在改進(jìn)的缺點(diǎn)。舉例模板“我以前不太擅長(zhǎng)拒絕需求測(cè)試范圍總是不自覺(jué)地膨脹導(dǎo)致該深測(cè)的地方淺測(cè)了。后來(lái)我學(xué)會(huì)基于風(fēng)險(xiǎn)評(píng)估來(lái)劃定測(cè)試范圍在計(jì)劃階段就明確優(yōu)先級(jí)并在周報(bào)中同步風(fēng)險(xiǎn)現(xiàn)在個(gè)人測(cè)試效率提升了不少?!标P(guān)鍵是缺點(diǎn)要真實(shí)、可接受改進(jìn)方法和結(jié)果要具體。“為什么離開(kāi)”這道題的原則是不說(shuō)前東家和前同事壞話不抱怨只說(shuō)現(xiàn)實(shí)的合理原因。比如“上一份工作做的內(nèi)容比較單一成長(zhǎng)見(jiàn)頂了希望接觸更復(fù)雜的業(yè)務(wù)場(chǎng)景”或者“公司業(yè)務(wù)線調(diào)整崗位發(fā)展方向和我的規(guī)劃不太匹配了”。注意不要說(shuō)“之前公司加班太多了”這種話除非你想去的公司明確不加班否則這句話就是減分項(xiàng)。5.3 “如果開(kāi)發(fā)不按你提的用例去修改你怎么辦”這題跟前面被拒bug有點(diǎn)像但更偏向協(xié)作場(chǎng)景。我的回答思路是先搞清楚開(kāi)發(fā)不修改的背后原因。是覺(jué)得優(yōu)先級(jí)不高是工期排不滿還是認(rèn)為測(cè)試用例覆蓋的場(chǎng)景根本不存在不同原因處理方式不同——優(yōu)先級(jí)問(wèn)題拉產(chǎn)品經(jīng)理排期工期問(wèn)題評(píng)估自動(dòng)化和風(fēng)險(xiǎn)后給出一個(gè)“當(dāng)前修復(fù)哪些、后續(xù)優(yōu)化哪些”的建議認(rèn)知分歧就當(dāng)場(chǎng)演示bug復(fù)現(xiàn)路徑拿事實(shí)說(shuō)話。另外一個(gè)容易被忽略的點(diǎn)用例寫(xiě)得好不好直接影響開(kāi)發(fā)的接受度。用例描述里除了步驟和預(yù)期最好帶上“復(fù)現(xiàn)概率、影響用戶量、關(guān)聯(lián)模塊、參考日志”這些信息。開(kāi)發(fā)接到一條信息量充足的用例配合度會(huì)高很多。6. 面試現(xiàn)場(chǎng)的幾個(gè)真實(shí)加分細(xì)節(jié)6.1 別把“用例設(shè)計(jì)”和“執(zhí)行測(cè)試”混為一談面試官問(wèn)你“你怎么測(cè)”的時(shí)候他最想看的是你設(shè)計(jì)測(cè)試的出發(fā)邏輯而不是你點(diǎn)了什么按鈕?!笆褂玫葍r(jià)類(lèi)和邊界值設(shè)計(jì)用例”和“打開(kāi)頁(yè)面、輸入數(shù)據(jù)、看結(jié)果”是兩個(gè)完全不同的層次。平時(shí)你可以試著把所有功能測(cè)試都拆成“設(shè)計(jì)用例—執(zhí)行—再設(shè)計(jì)”三輪循環(huán)練的是思維。6.2 聊項(xiàng)目時(shí)主動(dòng)拋出你踩過(guò)的坑面試官如果問(wèn)“項(xiàng)目中有遇到什么困難嗎”不要只報(bào)喜不報(bào)憂。主動(dòng)講坑是一種自信的表現(xiàn)——例如你做了很久的自動(dòng)化用例最終發(fā)現(xiàn)穩(wěn)定性不足你如何分析失敗原因、怎么從固定等待改成顯式等待、怎么處理測(cè)試數(shù)據(jù)和測(cè)試環(huán)境之間的耦合——這比只講“我搭建了自動(dòng)化框架”更有說(shuō)服力。面試官想看到的不是你一切順利而是你遇到問(wèn)題時(shí)解決問(wèn)題的路徑。6.3 準(zhǔn)備一個(gè)“三分鐘技能圖譜”面試快結(jié)束時(shí)通常會(huì)讓你反問(wèn)。建議不要一開(kāi)口就問(wèn)薪資和加班而是用這幾分鐘展示你的思考深度。例如問(wèn)“咱們團(tuán)隊(duì)目前接口自動(dòng)化的覆蓋率大概是多少主要痛點(diǎn)是在用例穩(wěn)定性還是維護(hù)成本上”或者“新人入職后團(tuán)隊(duì)更希望他先補(bǔ)齊哪塊能力”這些問(wèn)題不是為了套話而是讓面試官覺(jué)得你入職后會(huì)快速產(chǎn)生價(jià)值。6.4 白紙手寫(xiě)用例時(shí)注意規(guī)范有些面試官會(huì)現(xiàn)場(chǎng)發(fā)一張白紙讓你寫(xiě)用例這時(shí)候要注意**先寫(xiě)模塊名、編寫(xiě)人、日期、優(yōu)先級(jí)這些頭部信息用例編號(hào)要有規(guī)律前置條件寫(xiě)清楚每個(gè)用例只驗(yàn)證一個(gè)點(diǎn)操作步驟要有數(shù)字標(biāo)號(hào)預(yù)期結(jié)果要具體可驗(yàn)證最后補(bǔ)一條異常場(chǎng)景。**我見(jiàn)過(guò)太多候選人邏輯沒(méi)問(wèn)題但格式一塌糊涂——真實(shí)的測(cè)試團(tuán)隊(duì)是很看重規(guī)范性的因?yàn)橛美嵌嗳藚f(xié)作產(chǎn)物規(guī)范就是溝通語(yǔ)言。7. 面試后的復(fù)盤(pán)與offer選擇——最后一公里的坑面試結(jié)束不是終點(diǎn)復(fù)盤(pán)才是漲經(jīng)驗(yàn)的關(guān)鍵節(jié)點(diǎn)。我的習(xí)慣是每面完一場(chǎng)立刻在手機(jī)上記下三類(lèi)信息——被問(wèn)了哪些題、哪些答得磕絆、面試官追問(wèn)的方向是什么。一個(gè)星期后回頭看你會(huì)發(fā)現(xiàn)自己其實(shí)有非常明確的短板清單比盲目刷題有效得多。拿到offer之后選擇時(shí)除了看薪資我會(huì)重點(diǎn)關(guān)注三件事團(tuán)隊(duì)的測(cè)試基礎(chǔ)設(shè)施怎么樣。有沒(méi)有自動(dòng)化框架沉淀有沒(méi)有獨(dú)立的測(cè)試環(huán)境有沒(méi)有灰度發(fā)布體系如果這些都沒(méi)有說(shuō)明你進(jìn)去可以搞建設(shè)但也說(shuō)明會(huì)比較累。誰(shuí)來(lái)帶你。面試時(shí)會(huì)聊二十分鐘以上的人他的技術(shù)水平和溝通風(fēng)格基本決定了你入職后的成長(zhǎng)速度。業(yè)務(wù)復(fù)雜度是否足夠。純后臺(tái)管理系統(tǒng)和涉及資金、供應(yīng)鏈、大數(shù)據(jù)處理的系統(tǒng)可學(xué)的東西完全是兩個(gè)量級(jí)。對(duì)一個(gè)測(cè)試來(lái)說(shuō)業(yè)務(wù)理解能力的成長(zhǎng)往往比工具鏈技術(shù)更值錢(qián)。還有一點(diǎn)很多人會(huì)忽略面試時(shí)加一個(gè)技術(shù)負(fù)責(zé)人的微信講禮貌地發(fā)一句感謝之后偶爾請(qǐng)教一個(gè)問(wèn)題保持聯(lián)系。這個(gè)圈子其實(shí)很小你未來(lái)的機(jī)會(huì)往往就藏在這些善緣里。最后再分享一個(gè)我個(gè)人的實(shí)用小技巧接到面試通知后別光顧著刷題用一小時(shí)把對(duì)方產(chǎn)品的核心頁(yè)面從上到下點(diǎn)一遍不管你是面功能測(cè)試還是自動(dòng)化測(cè)試面試中只要你能說(shuō)出“你們這個(gè)結(jié)算流程的XX狀態(tài)好像缺個(gè)預(yù)警機(jī)制”對(duì)面基本會(huì)眼前一亮。測(cè)試的本質(zhì)是找茬你提前演練了找茬上一考場(chǎng)就已經(jīng)贏了一半。