開發(fā)者面試百問-測(cè)試部分答案 收藏
這里先回答 軟件開發(fā)者面試百問 中測(cè)試部分,以后有時(shí)間再回答軟件工程、軟件項(xiàng)目管理等各個(gè)部分。這些問題的答案一般沒有正確與否,各個(gè)人回答不同,只不過希望這里的答案相對(duì)不錯(cuò),對(duì)你有所幫助。
1. 什么是回歸測(cè)試?怎樣知道新引入的變化沒有給現(xiàn)有的功能造成破壞? 【參考答案】由于軟件修改或變更,對(duì)修改后的工作版本所有可能影響的范圍進(jìn)行的測(cè)試,就是回歸測(cè)試?;貧w測(cè)試的目的是發(fā)現(xiàn)原來正常的功能特性出現(xiàn)新的問題——回歸缺陷,從而確保原來正常的或符合要求的特性,不受其它區(qū)域修改的影響?;貧w測(cè)試,伴隨著測(cè)試過程,單元測(cè)試、集成測(cè)試和系統(tǒng)測(cè)試中,一旦有變更或修正,都要進(jìn)行相應(yīng)的回歸測(cè)試。 通過代碼查看或代碼評(píng)審,可以基本知道新引入的變化是否會(huì)給現(xiàn)有的功能造成影響,但不能確定,所以需要進(jìn)行回歸測(cè)試。
2. 如果業(yè)務(wù)層和數(shù)據(jù)層之間有依賴關(guān)系,你該怎么寫單元測(cè)試? 【參考答案】 在JAVA中,如果業(yè)務(wù)層與數(shù)據(jù)層之間有依賴關(guān)系,也就是說業(yè)務(wù)處理不單純,這時(shí)我們一般用Mock對(duì)象來模擬所需要的數(shù)據(jù),來進(jìn)行單元測(cè)試。簡單地說mock就是模型,模擬測(cè)試時(shí)需要的對(duì)象及測(cè)試數(shù)據(jù)。這類測(cè)試工具有MockObjects、Xdoclet、EasyMock、MockCreator、MockEJB、ObjcUnit、jMock等 比如,用過Struts的都知道,Struts中的action類要運(yùn)行必須依靠服務(wù)器的支持,只有服務(wù)器可以提供HttpServletRequest,HttpServletResponse對(duì)象,如果不啟動(dòng)服務(wù)器,那么就沒有辦法對(duì)action類進(jìn)行單元測(cè)試,而借助mock,可以完成struts的Action的測(cè)試。 對(duì)業(yè)務(wù)層測(cè)試可以用Mock來模擬,而對(duì)數(shù)據(jù)層如何測(cè)試?有兩種方法: 使用Mock對(duì)象來測(cè)試DAO。它屏蔽了具體的關(guān)系數(shù)據(jù)庫,它的優(yōu)點(diǎn)是測(cè)試代碼的編寫方便,可以快速運(yùn)行。缺點(diǎn):風(fēng)險(xiǎn)太大,對(duì)數(shù)據(jù)層測(cè)試的力度太小,屏蔽了很多與數(shù)據(jù)庫相關(guān)的問題,比如:對(duì)象和數(shù)據(jù)庫表之間映射,查詢語句的語法是否正確。 還可以參考下列文章:
3. 你用哪些工具測(cè)試代碼質(zhì)量? 【參考答案】這就取決于使用工具的經(jīng)驗(yàn),而這方面的經(jīng)驗(yàn),開發(fā)人員更多。主要的工具有適合Java代碼的Checkstyle、Findbugs、Jalopy、PMD、Parasoft Jtest、Coverity Prevent for Java;適合C++語言,有Parasoft C++Test、Coverity Prevent for C/C++
4. 在產(chǎn)品部署之后,你最常碰到的是什么類型的問題? 【參考答案】產(chǎn)品部署之后,容易碰到的問題是安裝配置上不對(duì),測(cè)試環(huán)境和實(shí)際運(yùn)行環(huán)境總是存在差異。其次,出現(xiàn)的問題,可能是系統(tǒng)穩(wěn)定性問題、性能問題,可能由于臟數(shù)據(jù)、傳輸中的異常數(shù)據(jù)和大數(shù)據(jù)量等引起。
5. 什么是代碼覆蓋率?有多少種代碼覆蓋率? 【參考答案】當(dāng)我們想了解測(cè)試是否充分、是否有些地方?jīng)]被測(cè)試過,就需要對(duì)所有測(cè)試過的地方有所了解,也就是了解測(cè)試的覆蓋程度。測(cè)試越充分,測(cè)試的覆蓋程度越高,產(chǎn)品的質(zhì)量就越能得到保證。這種程度的量化就是測(cè)試覆蓋率,即測(cè)試覆蓋率是用來衡量測(cè)試完成程度、或評(píng)估測(cè)試活動(dòng)覆蓋產(chǎn)品代碼的一種量化的結(jié)果,評(píng)估測(cè)試工作的質(zhì)量,也是產(chǎn)品代碼質(zhì)量的間接度量方法。如果用公式描述的話,可以看作“測(cè)試過程中已驗(yàn)證的區(qū)域或集合”和“要求被測(cè)試的總的區(qū)域或集合”的比值。 基于代碼的測(cè)試覆蓋評(píng)測(cè)是對(duì)被測(cè)試的程序代碼語句、代碼塊、類、函數(shù)(方法)、路徑或條件的覆蓋率分析。如果應(yīng)用基于代碼的覆蓋率分析,一般需要借助工具(如IBM Rational PureCoverage、Bullseye Coverage、開源Clover、EMMA、Cobertura和NoUnit等)來執(zhí)行。
6. 功能測(cè)試和探索性測(cè)試的區(qū)別是什么?你怎么對(duì)網(wǎng)站進(jìn)行測(cè)試? 【參考答案】這個(gè)題目本身有問題,把“功能測(cè)試”和“探索性測(cè)試”比較不合理。功能測(cè)試中包含了“按已完成的測(cè)試用例或已計(jì)劃的測(cè)試大綱等進(jìn)行測(cè)試”和“探索性測(cè)試”,而探索性測(cè)試一般也是為了發(fā)現(xiàn)功能中的問題,雖然探索性測(cè)試還會(huì)涉及安全性測(cè)試、性能測(cè)試等。 功能測(cè)試方法中包括等價(jià)類劃分、邊界值分析、因果圖、決策表、正交試驗(yàn)法等,也包括錯(cuò)誤猜測(cè)法,錯(cuò)誤猜測(cè)法也可歸為探索性測(cè)試。 探索性測(cè)試,也可以稱隨機(jī)測(cè)試(ad-hoc test),充分發(fā)揮測(cè)試人員最大的靈動(dòng)性、創(chuàng)造性,進(jìn)行各種猜測(cè)和試探,去發(fā)現(xiàn)一些相對(duì)隱藏比較深或偏僻的軟件缺陷。隨機(jī)(ad-hoc)測(cè)試,也可作為一種重要的測(cè)試輔助手段,以幫助測(cè)試人員盡早地熟悉產(chǎn)品,發(fā)現(xiàn)測(cè)試用例的不足,添加或改進(jìn)測(cè)試用例。我的書《全程軟件測(cè)試》對(duì)它們做了充分討論。 對(duì)網(wǎng)站進(jìn)行測(cè)試時(shí),不僅要做好功能測(cè)試,包括功能的逐項(xiàng)驗(yàn)證、針對(duì)功能的負(fù)面測(cè)試、探索性測(cè)試等,還要進(jìn)行安全性測(cè)試、性能測(cè)試、UI適用性測(cè)試等。
7. 測(cè)試套件、測(cè)試用例、測(cè)試計(jì)劃,這三者之間的區(qū)別是什么?你怎么組織測(cè)試? 【參考答案】測(cè) 試用例(test case)是為了更有效地發(fā)現(xiàn)缺陷而設(shè)計(jì)的、可以獨(dú)立地執(zhí)行的最小測(cè)試單元。測(cè)試套件(test suite)是為了完成某個(gè)測(cè)試目標(biāo)或任務(wù)而組織的若干個(gè)測(cè)試用例的集合。測(cè)試計(jì)劃(test plan)是對(duì)測(cè)試活動(dòng)的事先策劃,包括確定測(cè)試范圍、估算測(cè)試工作量、識(shí)別測(cè)試風(fēng)險(xiǎn)、安排資源和進(jìn)度等。測(cè)試計(jì)劃指導(dǎo)測(cè)試用例的設(shè)計(jì)和測(cè)試套件的創(chuàng)建, 測(cè)試套件是由測(cè)試用例構(gòu)成。測(cè)試計(jì)劃的實(shí)施需要借助測(cè)試用例、測(cè)試套件來實(shí)現(xiàn)。 組織測(cè)試,簡單地說就是 計(jì)劃測(cè)試 -> 設(shè)計(jì)測(cè)試用例 -> v創(chuàng)建測(cè)試套件 -> 執(zhí)行測(cè)試套件 (轉(zhuǎn)化為執(zhí)行測(cè)試用例) -> 測(cè)試結(jié)果分析和評(píng)估 -> 調(diào)整測(cè)試計(jì)劃 -> …… 詳細(xì)參見《全程軟件測(cè)試》
8. 要對(duì)電子商務(wù)網(wǎng)站做冒煙測(cè)試,你會(huì)做哪些類型的測(cè)試? 【參考答案】冒煙測(cè)試(smoke test )這個(gè)名稱的來歷,大概是從電路板測(cè)試得來的。因?yàn)楫?dāng)電路板做好以后,首先會(huì)加電測(cè)試,如果板子沒有冒煙在進(jìn)行其它測(cè)試,否則就退回去。軟件中的冒煙測(cè)試就是在每日構(gòu)建(daily build)軟件包后,對(duì)系統(tǒng)的基本功能進(jìn)行快速的測(cè)試,以驗(yàn)證基本功能是否能正常運(yùn)行。如果有問題,就打回開發(fā)部門;如果正常運(yùn)行,說明軟件包構(gòu)建成功,接下來就可以進(jìn)行常規(guī)測(cè)試或大規(guī)模測(cè)試。 對(duì)電子商務(wù)網(wǎng)站做冒煙測(cè)試,包括基本功能測(cè)試和性能測(cè)試?;竟δ軠y(cè)試可以完成一個(gè)交易的完整過程,即從系統(tǒng)登錄 -> 商品查詢 -> 選擇商品 -> 提交訂單 ->確認(rèn) -> 付款 -> 結(jié)算等。
9. 客戶在驗(yàn)收測(cè)試中會(huì)發(fā)現(xiàn)不滿意的東西,怎樣減少這種情況的發(fā)生? 【參考答案】 客 戶可能發(fā)現(xiàn)功能或界面設(shè)計(jì)和他預(yù)想的不一致、或者會(huì)發(fā)現(xiàn)有些功能的操作不是很方便、或者發(fā)現(xiàn)一些錯(cuò)別字等各種缺陷。針對(duì)不同的問題,有相應(yīng)的一些辦法,概 括起來就是和客戶進(jìn)行充分溝通,真正理解客戶的需求,和客戶的理解達(dá)成一致。其次,在開發(fā)期間,還可以邀請(qǐng)客戶參與軟件設(shè)計(jì)規(guī)格說明書、測(cè)試計(jì)劃、測(cè)試用 例等的評(píng)審,當(dāng)軟件能基本正常工作時(shí)再次邀請(qǐng)客戶從頭到尾再看一遍(product walk-through)。最后,就是開發(fā)人員和測(cè)試人員做好自己的本職工作,構(gòu)建高質(zhì)量的軟件,進(jìn)行充分的測(cè)試。
10. 你去年在測(cè)試和質(zhì)量保證方面學(xué)到了哪些東西? 【參考答案】 通過自己遇到具體的問題,來說明。例如,某個(gè)特定的缺陷分析,使你認(rèn)識(shí)到某個(gè)方面的問題,然后找到真正原因,并加以克服?;蛘?,通過某個(gè)質(zhì)量事故,增強(qiáng)了“質(zhì)量第一”的意識(shí),或者由于某些沖突導(dǎo)致項(xiàng)目質(zhì)量問題,認(rèn)識(shí)到“溝通”、“流程”或“規(guī)范”等的重要性。 當(dāng)然,還有一些具體的知識(shí)或能力,如工具(Jmeter, Selenium, QTP, LoadRunner)的使用, CMM/CMMI, ISO9000等等。
|
|