校招筆試核心考點(diǎn):從美團(tuán)真題看崗位能力模型與備考策略)
現(xiàn)在市面上關(guān)于校招測試開發(fā)崗位的真題分析要么是零散的題目回憶要么是純答案堆砌很少有從崗位能力模型出發(fā)、把考點(diǎn)和測試思維串起來的復(fù)盤。借著美團(tuán)2017秋招測試開發(fā)工程師卷A這套題我想認(rèn)真聊聊這類筆試到底在篩什么人、每個(gè)模塊背后想考察什么能力以及如果你現(xiàn)在正準(zhǔn)備測試開發(fā)崗這套題能帶給你哪些值得借鑒的東西。這套題的好處在于它很典型覆蓋面廣、層次分明既有基礎(chǔ)理論的記憶題也有需要現(xiàn)場設(shè)計(jì)測試用例的場景題還有考代碼功底的算法題基本代表了互聯(lián)網(wǎng)大廠校招測試開發(fā)崗筆試的常見結(jié)構(gòu)。無論你現(xiàn)在是大三準(zhǔn)備暑期實(shí)習(xí)還是研二開始投秋招這套題都值得拿來自測一遍再對照本文的拆解查漏補(bǔ)缺。1. 整體考點(diǎn)布局測試開發(fā)崗筆試到底在考什么1.1 從崗位職責(zé)反推考查維度在聊具體題目之前我們先想清楚一個(gè)問題測試開發(fā)工程師在校招筆試?yán)锎髲S到底希望篩出什么樣的人答案其實(shí)藏在這個(gè)崗位的日常職責(zé)里。測試開發(fā)不是傳統(tǒng)意義上的“點(diǎn)點(diǎn)點(diǎn)”手工測試它要做的是把測試工作自動化、平臺化、工具化同時(shí)還要能深入理解業(yè)務(wù)邏輯、發(fā)現(xiàn)潛在風(fēng)險(xiǎn)這就決定了筆試的考查維度是復(fù)合型的。概括起來測試開發(fā)崗筆試通常覆蓋四大類能力第一類是軟件測試基礎(chǔ)理論比如測試流程、用例設(shè)計(jì)方法、缺陷生命周期、白盒黑盒測試的區(qū)別這部分是入行的基本功第二類是計(jì)算機(jī)基礎(chǔ)知識包括數(shù)據(jù)結(jié)構(gòu)、算法、操作系統(tǒng)、計(jì)算機(jī)網(wǎng)絡(luò)、數(shù)據(jù)庫這部分決定了你的技術(shù)下限第三類是編程能力至少熟練掌握一門語言能夠現(xiàn)場寫代碼解決具體問題第四類是邏輯思維與場景分析能力通常通過設(shè)計(jì)測試用例、分析系統(tǒng)異常等場景題來考查。1.2 美團(tuán)這套題的模塊構(gòu)成美團(tuán)2017秋招測試開發(fā)卷A的題目構(gòu)成基本就是上述能力模型的具體落地。整套題分為幾個(gè)明顯的模塊選擇題部分覆蓋了計(jì)算機(jī)網(wǎng)絡(luò)、操作系統(tǒng)、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)庫等基礎(chǔ)科目簡答題部分重點(diǎn)考查測試用例設(shè)計(jì)和測試思維編程題則考查代碼實(shí)現(xiàn)能力和邊界處理能力。這種設(shè)置本質(zhì)上是在用一套卷子完成“基礎(chǔ)廣度”和“專業(yè)深度”的雙重篩選。值得注意的是這套題里測試?yán)碚摵蜏y試設(shè)計(jì)的占比并不低。很多同學(xué)備考時(shí)容易陷入一個(gè)誤區(qū)花大量時(shí)間刷算法題卻忽略了測試基礎(chǔ)知識。但在實(shí)際筆試中測試?yán)碚擃}恰恰是區(qū)分“懂測試”和“不懂測試”的關(guān)鍵也是面試官判斷你是否真正了解這個(gè)崗位的重要依據(jù)。1.3 這套題適合誰、怎么用價(jià)值最大如果你是正在準(zhǔn)備測試開發(fā)崗位校招的同學(xué)這套題建議按以下方式使用第一遍先不看答案完整做一遍計(jì)時(shí)90分鐘左右模擬真實(shí)筆試環(huán)境第二遍對照錯(cuò)題回歸知識點(diǎn)把錯(cuò)題涉及的基礎(chǔ)理論復(fù)習(xí)一遍第三遍重點(diǎn)琢磨簡答題和編程題嘗試給出比參考答案更完善的邊界分析。如果你已經(jīng)工作了想轉(zhuǎn)崗測試開發(fā)這套題也能幫你快速摸清崗位的知識邊界。說實(shí)話筆試真題的價(jià)值不僅是“刷題”更是通過題目去理解出題人的思路他在這個(gè)知識點(diǎn)上想考察什么深度他希望看到怎樣的答題邏輯。帶著這個(gè)視角去復(fù)盤效果會完全不一樣。2. 測試基礎(chǔ)理論容易被忽視的送分題與陷阱題2.1 測試用例設(shè)計(jì)方法的實(shí)際應(yīng)用測試用例設(shè)計(jì)是測試開發(fā)崗筆試的核心考點(diǎn)也是校招生最容易“眼高手低”的地方。很多同學(xué)能背出等價(jià)類劃分、邊界值分析、因果圖、判定表這些方法的名字但一到具體場景就不知道怎么用、用哪個(gè)、為什么用。這套卷的簡答題部分就很好地檢驗(yàn)了這一點(diǎn)給一個(gè)具體的功能場景要求設(shè)計(jì)測試用例并且要充分考慮正常流程、異常流程和邊界條件。以經(jīng)典的登錄功能為例一個(gè)完整的測試用例設(shè)計(jì)應(yīng)該覆蓋以下維度功能方面包括正確的用戶名密碼登錄、錯(cuò)誤密碼提示、空用戶名/空密碼的提示、密碼大小寫敏感性、用戶名前后空格的處理安全性方面包括SQL注入嘗試、密碼是否加密傳輸、連續(xù)登錄失敗是否鎖定兼容性方面包括不同瀏覽器、不同操作系統(tǒng)的表現(xiàn)異常場景方面包括網(wǎng)絡(luò)斷開時(shí)的提示、服務(wù)器異常的兜底頁面。這遠(yuǎn)遠(yuǎn)不是一個(gè)“輸入正確賬號密碼就能登錄”那么簡單。2.2 等價(jià)類與邊界值分析的精髓我見過太多同學(xué)在筆試?yán)锇训葍r(jià)類劃分寫成“有效等價(jià)類和無效等價(jià)類”的分類羅列卻忽略了核心等價(jià)類劃分的目的是用最少的用例覆蓋最多的場景而邊界值分析則是針對“最容易出錯(cuò)”的邊界區(qū)域補(bǔ)充用例。這兩者通常是配合使用的而不是割裂的。舉個(gè)例子一個(gè)輸入框要求輸入1到100的整數(shù)。有效等價(jià)類是1-100之間的整數(shù)無效等價(jià)類是小于1的數(shù)、大于100的數(shù)、非整數(shù)、非數(shù)字字符。但如果只測這些你可能測不出“小于1”和“大于100”這些邊界附近的問題所以還需要補(bǔ)充0、1、100、101這幾個(gè)邊界值再配合負(fù)數(shù)、小數(shù)、字母、特殊字符、空值等異常輸入。這套思路在筆試中表現(xiàn)出來就是一份讓面試官覺得“這個(gè)同學(xué)真的懂測試”的答案。2.3 缺陷報(bào)告與軟件測試流程的常見問法測試流程相關(guān)的題目在這套卷里也有體現(xiàn)。軟件測試的基本流程包括需求分析、測試計(jì)劃、測試設(shè)計(jì)、測試執(zhí)行、缺陷跟蹤、測試報(bào)告這幾個(gè)階段筆試中常見的問題是讓你排列流程、補(bǔ)充某個(gè)階段的關(guān)鍵活動或者結(jié)合敏捷開發(fā)模式分析測試角色的變化。這類題目屬于需要記憶但不難理解的內(nèi)容復(fù)習(xí)到位就是送分題。缺陷報(bào)告相關(guān)的考點(diǎn)也不容忽視包括缺陷的狀態(tài)流轉(zhuǎn)新建、已分配、已修復(fù)、已關(guān)閉、重新打開、缺陷的優(yōu)先級與嚴(yán)重級別的區(qū)別、一份優(yōu)秀的缺陷報(bào)告應(yīng)該包含哪些要素。這里有一個(gè)常見的理解誤區(qū)優(yōu)先級和嚴(yán)重級別是兩個(gè)不同的維度。一個(gè)低嚴(yán)重級別但高頻復(fù)現(xiàn)的UI錯(cuò)位問題優(yōu)先級可能很高一個(gè)嚴(yán)重級別很高但只在極端罕見條件下觸發(fā)的問題優(yōu)先級反而可能不高。這種辨析題在筆試中經(jīng)常以選擇題或判斷題形式出現(xiàn)值得重點(diǎn)準(zhǔn)備。3. 三大基礎(chǔ)課計(jì)算機(jī)網(wǎng)絡(luò)、操作系統(tǒng)與數(shù)據(jù)庫3.1 網(wǎng)絡(luò)協(xié)議考點(diǎn)從HTTP到TCP的層層拆解計(jì)算機(jī)網(wǎng)絡(luò)是測試開發(fā)崗筆試的必考科目美團(tuán)這套卷也不例外。選擇題中出現(xiàn)的網(wǎng)絡(luò)協(xié)議相關(guān)內(nèi)容主要集中在HTTP協(xié)議、TCP/UDP協(xié)議、DNS解析過程、HTTP與HTTPS的區(qū)別這些高頻考點(diǎn)上。這背后的邏輯很好理解測試開發(fā)工程師日常要調(diào)試接口、定位網(wǎng)絡(luò)問題如果對網(wǎng)絡(luò)協(xié)議沒有扎實(shí)的理解排查問題會非常困難。復(fù)習(xí)網(wǎng)絡(luò)協(xié)議時(shí)我建議不要死記硬背而是按“一條請求的完整旅程”來組織知識體系。從用戶在瀏覽器輸入U(xiǎn)RL開始DNS解析域名得到IP地址TCP三次握手建立連接如果是HTTPS還需要TLS握手協(xié)商密鑰然后發(fā)送HTTP請求服務(wù)器響應(yīng)后瀏覽器解析渲染頁面最后TCP四次揮手?jǐn)嚅_連接。把這條鏈路串下來你會發(fā)現(xiàn)所有零散的知識點(diǎn)都串起來了考試時(shí)遇到任何網(wǎng)絡(luò)協(xié)議相關(guān)的問題都能快速定位到具體環(huán)節(jié)。3.2 操作系統(tǒng)核心概念進(jìn)程線程與死鎖操作系統(tǒng)在測試開發(fā)筆試中同樣占據(jù)重要位置主要考點(diǎn)集中在進(jìn)程與線程的區(qū)別、進(jìn)程調(diào)度算法、死鎖產(chǎn)生的必要條件與處理方法、內(nèi)存管理的基本概念等。這其中的重點(diǎn)依然是理解而不是背誦。比如死鎖的四個(gè)必要條件互斥、持有并等待、不可剝奪、循環(huán)等待看起來很簡單但考試時(shí)往往換一個(gè)場景讓你判斷是否會產(chǎn)生死鎖這就考查你對概念的本質(zhì)理解。我自己的備考經(jīng)驗(yàn)是操作系統(tǒng)部分要學(xué)會用生活中的例子輔助記憶。把計(jì)算機(jī)內(nèi)存比作一個(gè)宿舍樓進(jìn)程就是住在宿舍樓里的各個(gè)房間線程就是房間里活動的人死鎖就像是兩個(gè)人在窄走廊里迎面相遇誰都不肯讓路必須有一個(gè)機(jī)制來打破僵局。這樣一比喻很多抽象概念就具象化了遇到選擇題能更快鎖定正確答案。順便說一句進(jìn)程間通信方式管道、消息隊(duì)列、共享內(nèi)存、信號量、Socket也是高頻考點(diǎn)建議重點(diǎn)整理。3.3 數(shù)據(jù)庫知識SQL編寫與索引失效場景數(shù)據(jù)庫在測試開發(fā)崗位的重要性不言而喻——測試執(zhí)行過程中需要造數(shù)據(jù)、查數(shù)據(jù)、驗(yàn)證數(shù)據(jù)一致性這些都需要扎實(shí)的SQL功底。美團(tuán)這套卷中數(shù)據(jù)庫相關(guān)的內(nèi)容集中在SQL查詢語句的編寫、多表連接、聚合函數(shù)的使用以及索引相關(guān)的基礎(chǔ)知識上。關(guān)于SQL復(fù)習(xí)我給一個(gè)操作性很強(qiáng)的建議不要只看題要真的在本地裝一個(gè)MySQL環(huán)境或者用在線SQL練習(xí)平臺把各種查詢實(shí)際跑一遍。筆試和面試中常見的SQL題目類型包括但不限于查詢某個(gè)條件下滿足要求的數(shù)據(jù)、使用GROUP BY配合HAVING做分組篩選、多表關(guān)聯(lián)查詢INNER JOIN、LEFT JOIN的區(qū)別、子查詢的嵌套、以及窗口函數(shù)ROW_NUMBER、RANK等的使用。如果你能在筆試前把這幾類題目練熟數(shù)據(jù)庫部分基本就穩(wěn)了。索引相關(guān)的考題里有一個(gè)高頻陷阱是索引失效。比如對索引列使用函數(shù)、隱式類型轉(zhuǎn)換、LIKE前置通配符、OR條件連接非索引列等場景都可能導(dǎo)致索引失效。這類題目在筆試?yán)锝?jīng)常讓考生“判斷以下SQL是否走索引”區(qū)分度很高建議專門花時(shí)間整理一遍。4. 編程題與場景題區(qū)分高分與及格分的關(guān)鍵4.1 大廠筆試編程題的共性特征編程題在測試開發(fā)崗筆試中往往占總分的40%甚至更高是拉開差距的核心模塊。美團(tuán)這套卷中的編程題與大部分互聯(lián)網(wǎng)公司測試開發(fā)崗的編程題風(fēng)格一致傾向于考查基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)和算法的靈活應(yīng)用而不是偏題怪題。常見的題型包括數(shù)組處理、字符串操作、鏈表操作、二叉樹遍歷、動態(tài)規(guī)劃基礎(chǔ)題等。這里想特別提醒一個(gè)測試開發(fā)崗的特殊性編程題往往帶有測試色彩比如要求你寫一個(gè)函數(shù)然后補(bǔ)充測試用例或者要求你實(shí)現(xiàn)某個(gè)功能并考慮異常輸入。這意味著你不僅要寫出正確的代碼還要展示出對邊界條件和異常情況的敏感度這正是測試開發(fā)工程師與普通開發(fā)工程師在答題風(fēng)格上的重要區(qū)別。4.2 一個(gè)典型的編程題解題流程復(fù)盤以這套卷中比較有代表性的編程題為例解題時(shí)可以遵循一個(gè)固定的思考框架第一步仔細(xì)審題明確輸入輸出的格式和約束條件尤其注意數(shù)據(jù)范圍——數(shù)據(jù)范圍暗示了應(yīng)該使用什么時(shí)間復(fù)雜度的算法第二步先想暴力解法再逐步優(yōu)化筆試中能寫出可以AC的暴力解法已經(jīng)能拿到基本分優(yōu)化到最優(yōu)解才是加分項(xiàng)第三步設(shè)計(jì)代碼結(jié)構(gòu)時(shí)考慮可讀性命名清晰、邏輯分層這不僅是給閱卷人看的也是測試開發(fā)工程師應(yīng)具備的代碼素養(yǎng)第四步寫完代碼后在草稿紙上模擬幾組測試數(shù)據(jù)包括正常用例、邊界用例和異常用例確保代碼能正確處理。這個(gè)流程說起來簡單但真正能嚴(yán)格按照執(zhí)行的人并不多。很多同學(xué)拿到題目就開始敲代碼敲了一半發(fā)現(xiàn)邏輯錯(cuò)了再重寫浪費(fèi)了大量時(shí)間。養(yǎng)成“先想清楚再動手”的習(xí)慣在筆試中可以幫你節(jié)省至少30%的時(shí)間。4.3 場景題中體現(xiàn)測試思維的方法論場景題是測試開發(fā)崗筆試中最有特色的題型也是這套卷中很有區(qū)分度的部分。所謂場景題就是給你一個(gè)具體的產(chǎn)品功能或系統(tǒng)設(shè)計(jì)讓你從測試的角度分析需要驗(yàn)證哪些方面、設(shè)計(jì)哪些測試用例、排查哪些潛在問題。比如經(jīng)典的“如何測試一個(gè)水杯”“如何測試微信發(fā)紅包功能”“如何測試電梯”等。解答這類題目許多同學(xué)容易犯的毛病是“想到哪說到哪”答案零散無序。正確的答題方法應(yīng)該是有一個(gè)清晰的層次結(jié)構(gòu)首先考慮功能測試覆蓋正常流程和異常流程其次考慮接口測試關(guān)注參數(shù)校驗(yàn)和返回值再次考慮兼容性測試覆蓋不同設(shè)備、不同系統(tǒng)版本、不同網(wǎng)絡(luò)環(huán)境然后考慮性能測試關(guān)注響應(yīng)時(shí)間、并發(fā)能力、資源消耗最后考慮安全測試考慮數(shù)據(jù)加密、越權(quán)訪問、惡意輸入等場景。如果能按這個(gè)層次去組織答案即使覆蓋的用例不是最全也會讓閱卷人一眼看出你具備系統(tǒng)性的測試思維。5. 備考策略與避坑指南從這套題延伸出的學(xué)習(xí)路線5.1 時(shí)間規(guī)劃三個(gè)月備考周期的分階段安排如果你現(xiàn)在距離秋招還有三個(gè)月左右的時(shí)間可以參考以下備考節(jié)奏來安排復(fù)習(xí)計(jì)劃。第一個(gè)月是基礎(chǔ)夯實(shí)階段重點(diǎn)復(fù)習(xí)計(jì)算機(jī)網(wǎng)絡(luò)、操作系統(tǒng)、數(shù)據(jù)庫三大基礎(chǔ)課同時(shí)每天保持1-2道編程題的練習(xí)量這個(gè)階段的目標(biāo)是建立完整的知識框架不追求深度而追求廣度。第二個(gè)月是專項(xiàng)突破階段針對測試基礎(chǔ)知識做系統(tǒng)梳理尤其加強(qiáng)測試用例設(shè)計(jì)方法的訓(xùn)練同時(shí)把編程題的練習(xí)量提升到每天3道并開始做整套真題模擬。第三個(gè)月是沖刺模擬階段每兩天完成一套完整的筆試題嚴(yán)格按照真實(shí)考試的時(shí)間和環(huán)境來要求自己練完以后認(rèn)真復(fù)盤錯(cuò)題把薄弱知識點(diǎn)逐一攻克。5.2 測試開發(fā)崗筆試的特殊準(zhǔn)備維度與普通開發(fā)崗不同測試開發(fā)崗在筆試中還有一些需要額外準(zhǔn)備的維度這里重點(diǎn)說三個(gè)。第一個(gè)是測試思維的語言化表達(dá)你不僅要會設(shè)計(jì)測試用例還要能夠用結(jié)構(gòu)化的語言表達(dá)出來。平時(shí)練習(xí)時(shí)可以試著把自己設(shè)計(jì)的用例寫下來而不是只在腦子里想這樣考試時(shí)寫答案會順暢很多。第二個(gè)是常見測試框架和工具的了解雖然筆試不直接考框架使用但了解JUnit、Selenium、JMeter、Postman這些工具的基本功能和適用場景在回答一些開放性題目時(shí)會有加分效果。第三個(gè)是日志分析和問題定位能力筆試和面試中經(jīng)常出現(xiàn)“線上環(huán)境出現(xiàn)XX異常你如何排查”這類問題掌握“先復(fù)現(xiàn)、再定位、后驗(yàn)證”的排查思路比背具體的命令更有效。5.3 這套題背后的崗位勝任力模型復(fù)盤完這套題我們可以看到美團(tuán)在2017年的測試開發(fā)崗筆試中其實(shí)是在傳遞一個(gè)清晰的崗位預(yù)期測試開發(fā)工程師不是簡單的測試執(zhí)行者而是具備代碼能力、測試素養(yǎng)、系統(tǒng)性思維和問題定位能力的復(fù)合型技術(shù)人才。當(dāng)前行業(yè)中測試開發(fā)崗位的價(jià)值早已不只是“保證產(chǎn)品質(zhì)量”而是通過自動化工具、測試平臺、性能分析等手段提升整個(gè)研發(fā)團(tuán)隊(duì)的交付效率和線上穩(wěn)定性。這種勝任力模型到今天依然適用甚至要求更高了?,F(xiàn)在的測試開發(fā)崗還需要了解持續(xù)集成/持續(xù)交付CI/CD相關(guān)知識、掌握容器化技術(shù)的基本概念、能夠編寫自動化測試腳本并接入流水線這些雖然不一定在校招筆試中直接出題但在面試環(huán)節(jié)被問到的概率越來越高。所以在準(zhǔn)備筆試的同時(shí)也建議同步關(guān)注行業(yè)的新技術(shù)趨勢不要只埋頭刷題。5.4 應(yīng)對筆試的實(shí)操技巧與心態(tài)調(diào)整最后分享幾個(gè)筆試現(xiàn)場的實(shí)操經(jīng)驗(yàn)這些是我自己在多次校招筆試中總結(jié)出來的。第一拿到試卷后不要急著做題先花兩到三分鐘瀏覽一遍所有題目對題目數(shù)量、難度分布心里有數(shù)再決定答題節(jié)奏。第二選擇題如果在某個(gè)選項(xiàng)上糾結(jié)超過兩分鐘先標(biāo)記跳過最后有時(shí)間再回來斟酌不要因?yàn)橐坏李}影響了整體進(jìn)度。第三編程題即使不能完全AC也要把暴力解法的代碼寫出來因?yàn)楣P試通常按用例通過比例給分部分用例通過也有對應(yīng)的分?jǐn)?shù)。第四簡答題和場景題千萬不要空著把你認(rèn)為合理的分析層次寫清楚大概率也能拿到步驟分。心態(tài)上我想多說一句。測試開發(fā)崗的筆試題目量通常偏大時(shí)間會比較緊張遇到做不完的情況很正常。這時(shí)候重要的不是慌張而是果斷放棄難題、保住通過率把能夠拿到的分都拿到。大廠的筆試通過率通常在20%到30%之間能夠穩(wěn)定輸出你已經(jīng)超過了大部分競爭者。如果在模擬練習(xí)時(shí)發(fā)現(xiàn)自己距離通過還有差距也不用焦慮針對性地補(bǔ)薄弱項(xiàng)效果往往比盲目刷題好得多。把美團(tuán)這套2017秋招測試開發(fā)崗筆試題好好做一遍再結(jié)合本文的復(fù)盤思路去擴(kuò)展復(fù)習(xí)范圍我相信你在面對同類筆試時(shí)會更加從容。校招這條路準(zhǔn)備得越充分運(yùn)氣就越好。