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