軟件開發者面試百問部分答案

1. 什麼是迴歸測試?怎樣知道新引入的變化沒有給現有的功能造成破壞?

【參考答案】由於軟件修改或變更,對修改後的工作版本所有可能影響的範圍進行的測試,就是迴歸測試。迴歸測試的目的是發現原來正常的功能特性出現新的問題——迴歸缺陷,從而確保原來正常的或符合要求的特性,不受其它區域修改的影響。迴歸測試,伴隨着測試過程,單元測試、集成測試和系統測試中,一旦有變更或修正,都要進行相應的迴歸測試。

通過代碼查看或代碼評審,可以基本知道新引入的變化是否會給現有的功能造成影響,但不能確定,所以需要進行迴歸測試。

2. 如果業務層和數據層之間有依賴關係,你該怎麼寫單元測試?

【參考答案】

在JAVA中,如果業務層與數據層之間有依賴關係,也就是說業務處理不單純,這時我們一般用Mock對象來模擬所需要的數據,來進行單元測試。簡單地說mock就是模型,模擬測試時需要的對象及測試數據。這類測試工具有MockObjectsXdocletEasyMockMockCreatorMockEJBObjcUnitjMock

比如,用過Struts的都知道,Struts中的action類要運行必須依靠服務器的支持,只有服務器可以提供HttpServletRequest,HttpServletResponse對象,如果不啓動服務器,那麼就沒有辦法對action類進行單元測試,而藉助mock,可以完成struts的Action的測試。

對業務層測試可以用Mock來模擬,而對數據層如何測試?有兩種方法:

使用Mock對象來測試DAO。它屏蔽了具體的關係數據庫,它的優點是測試代碼的編寫方便,可以快速運行。缺點:風險太大,對數據層測試的力度太小,屏蔽了很多與數據庫相關的問題,比如:對象和數據庫表之間映射,查詢語句的語法是否正確。

直接在關係數據庫中測試。優點:能對數據層進行完整的測試。缺點:單元測試運行速度太慢,要頻繁的對數據庫進行操作
FindBugs,第1 部分: 提高代碼質量
代碼檢測:Code Review與CheckStyle
代碼優化:Jalopy
4. 在產品部署之後,你最常碰到的是什麼類型的問題?
代碼覆蓋率工具Bullseye Coverage
使用 emma 測量測試覆蓋率

3. 你用哪些工具測試代碼質量?

【參考答案】這就取決於使用工具的經驗,而這方面的經驗,開發人員更多。主要的工具有適合Java代碼的CheckstyleFindbugsJalopyPMDParasoft JtestCoverity Prevent for Java;適合C++語言,有Parasoft C++Test、Coverity Prevent for C/C++

【參考答案】產品部署之後,容易碰到的問題是安裝配置上不對,測試環境和實際運行環境總是存在差異。其次,出現的問題,可能是系統穩定性問題、性能問題,可能由於髒數據、傳輸中的異常數據和大數據量等引起。

 5. 什麼是代碼覆蓋率?有多少種代碼覆蓋率?

【參考答案】當我們想了解測試是否充分、是否有些地方沒被測試過,就需要對所有測試過的地方有所瞭解,也就是了解測試的覆蓋程度。測試越充分,測試的覆蓋程度越高,產品的質量就越能得到保證。這種程度的量化就是測試覆蓋率,即測試覆蓋率是用來衡量測試完成程度、或評估測試活動覆蓋產品代碼的一種量化的結果,評估測試工作的質量,也是產品代碼質量的間接度量方法。如果用公式描述的話,可以看作測試過程中已驗證的區域或集合要求被測試的總的區域或集合的比值。

基於代碼的測試覆蓋評測是對被測試的程序代碼語句、代碼塊、類、函數(方法)、路徑或條件的覆蓋率分析。如果應用基於代碼的覆蓋率分析,一般需要藉助工具(如IBM Rational PureCoverageBullseye Coverage開源CloverEMMACoberturaNoUnit等)來執行。

 6. 功能測試和探索性測試的區別是什麼?你怎麼對網站進行測試?

【參考答案】這個題目本身有問題,把“功能測試”和“探索性測試”比較不合理。功能測試中包含了“按已完成的測試用例或已計劃的測試大綱等進行測試”和“探索性測試”,而探索性測試一般也是爲了發現功能中的問題,雖然探索性測試還會涉及安全性測試、性能測試等。

功能測試方法中包括等價類劃分、邊界值分析、因果圖、決策表、正交試驗法等,也包括錯誤猜測法,錯誤猜測法也可歸爲探索性測試。

探索性測試,也可以稱隨機測試(ad-hoc test),充分發揮測試人員最大的靈動性、創造性,進行各種猜測和試探,去發現一些相對隱藏比較深或偏僻的軟件缺陷。隨機(ad-hoc)測試,也可作爲一種重要的測試輔助手段,以幫助測試人員儘早地熟悉產品,發現測試用例的不足,添加或改進測試用例。我的書《全程軟件測試》對它們做了充分討論。

對網站進行測試時,不僅要做好功能測試,包括功能的逐項驗證、針對功能的負面測試、探索性測試等,還要進行安全性測試、性能測試、UI適用性測試等。

 7. 測試套件、測試用例、測試計劃,這三者之間的區別是什麼?你怎麼組織測試?

【參考答案】測試用例(test case)是爲了更有效地發現缺陷而設計的、可以獨立地執行的最小測試單元。測試套件(test suite)是爲了完成某個測試目標或任務而組織的若干個測試用例的集合。測試計劃(test plan)是對測試活動的事先策劃,包括確定測試範圍、估算測試工作量、識別測試風險、安排資源和進度等。測試計劃指導測試用例的設計和測試套件的創建,測試套件是由測試用例構成。測試計劃的實施需要藉助測試用例、測試套件來實現。

組織測試,簡單地說就是 計劃測試 -> 設計測試用例  ->  v創建測試套件  ->  執行測試套件 (轉化爲執行測試用例) -> 測試結果分析和評估 ->  調整測試計劃  ->   …… 詳細參見《全程軟件測試》

 8. 要對電子商務網站做冒煙測試,你會做哪些類型的測試?

【參考答案】冒煙測試(smoke test )這個名稱的來歷,大概是從電路板測試得來的。因爲當電路板做好以後,首先會加電測試,如果板子沒有冒煙在進行其它測試,否則就退回去。軟件中的冒煙測試就是在每日構建(daily build)軟件包後,對系統的基本功能進行快速的測試,以驗證基本功能是否能正常運行。如果有問題,就打回開發部門;如果正常運行,說明軟件包構建成功,接下來就可以進行常規測試或大規模測試。

對電子商務網站做冒煙測試,包括基本功能測試和性能測試。基本功能測試可以完成一個交易的完整過程,即從系統登錄 -> 商品查詢  ->  選擇商品 ->  提交訂單 ->確認  ->   付款   -> 結算等。 

 9. 客戶在驗收測試中會發現不滿意的東西,怎樣減少這種情況的發生?

【參考答案】 客戶可能發現功能或界面設計和他預想的不一致、或者會發現有些功能的操作不是很方便、或者發現一些錯別字等各種缺陷。針對不同的問題,有相應的一些辦法,概括起來就是和客戶進行充分溝通,真正理解客戶的需求,和客戶的理解達成一致。其次,在開發期間,還可以邀請客戶參與軟件設計規格說明書、測試計劃、測試用例等的評審,當軟件能基本正常工作時再次邀請客戶從頭到尾再看一遍(product walk-through)。最後,就是開發人員和測試人員做好自己的本職工作,構建高質量的軟件,進行充分的測試。

10. 你去年在測試和質量保證方面學到了哪些東西?

【參考答案】 通過自己遇到具體的問題,來說明。例如,某個特定的缺陷分析,使你認識到某個方面的問題,然後找到真正原因,並加以克服。或者,通過某個質量事故,增強了“質量第一”的意識,或者由於某些衝突導致項目質量問題,認識到“溝通”、“流程”或“規範”等的重要性。

當然,還有一些具體的知識或能力,如工具(Jmeter, Selenium, QTP, LoadRunner)的使用, CMM/CMMI, ISO9000等等。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章