軟體測試常見面試題及答案

  1. 軟體測試方法有哪些分類?各有什麼特點?設計測試用例的主要方法有哪些?

軟體測試方法分類

1)白盒、黑盒、灰盒

2)單元測試、集成測試、系統測試、驗收測試、回歸測試、Alpha 測試、Beta 測試

3)靜態測試和動態測試

設計測試用例的主要方法

1)等價類劃分

2)邊界值分析法

3)因果圖法

4)場景法

2.系統測試是什麼?需要考慮哪些方面?

1)系統測試是將已經確認的軟體、計算機硬體、外設、網路等其他元素結合在一起,進行信息系統的各種組裝測試和確認測試,其目的是通過與系統的需求相比較,發現所開發的系統與用戶需求不符或矛盾的地方,從而提出更加完善的方案.。

2)它的的任務是儘可能徹底地檢查出程序中的錯誤,提高軟體系統的可靠性,其目的是檢驗系統"做得怎樣?"。這階段又可分為三個步驟:模塊測試,測試每個模塊的程序是否有錯誤;組裝測試,測試模塊之間的介面是否正確;確認測試,測試整個軟體系統是否滿足用戶功能和性能的要求。該階段結束應交付測試報告,說明測試數據的選擇,測試用例以及測試結果是否符合預期結果。

3)測試發現問題之後要經過調試找出錯誤原因和位置,然後進行改正。是基於系統整體需求說明書的黑盒類測試,應覆蓋系統所有聯合的部件。

4)系統測試是針對整個產品系統進行的測試,目的是驗證系統是否滿足了需求規格的定義,找出與需求規格不相符合或與之矛盾的地方。

系統測試的對象不僅僅包括需要測試的產品系統的軟體,還要包含軟體所依賴的硬體、外設甚至包括某些數據、某些支持軟體及其介面等。因此,必須將系統中的軟體與各種依賴的資源結合起來,在系統實際運行環境下來進行測試

3.怎樣才能成為一個合格的軟體測試工程師?

1)計算機專業技能

2)測試專業技能

3)軟體編程技能

4)網路、操作系統、資料庫、中間件等知識

5)較強的責任心,對待測試工作要有不厭其煩的態度,與需求人員、研發人員多交流多溝通

4.一名軍官要求24名士兵站成6排,每排都是5人,士兵們全犯傻了。最後一名士兵終於想出了一個好辦法。他是怎樣安排的?

只要排成一個六邊形即可

01.為什麼要在一個團隊中開展軟體測試工作?

保證軟體質量的最後一道關口。

02.您是否了解以往所工作的企業的軟體測試過程?如果了解,請試述在這個過程中都有哪些工作要做?分別由哪些不同的角色來完成這些工作?

測試計劃->測試設計(測試用例,測試數據)->測試執行(單元測試,集成測試,系統測試,回歸測試)

03. 您所熟悉的軟體測試類型都有哪些?請試著分別比較這些不同的測試類型的區別與聯繫(如功能測試、性能測試……)

易用性測試-界面的友好性,操作方便性等。

功能測試-系統中功能性需求的滿足

安全性測試-系統是否存在安全隱患和漏洞

性能測試-系統在大並發下的響應速度和健壯性

04.請試著比較一下黑盒測試、白盒測試、單元測試、集成測試、系統測試、驗收測試的區別與聯繫。

黑盒/白盒:主要區別在是否了解系統或程序的內部結構和代碼

單元測試:關注某一個單元,函數,模塊的正確性,一般需要編寫相關測試代碼。

集成測試:模塊或模塊直接的集成介面測試,單個模塊測試

系統測試:一個完整功能的完全測試。

05.測試計劃工作的目的是什麼?測試計劃工作的內容都包括什麼?其中哪些是最重要的?

提前安排出測試工具選擇,測試類型選擇,人員需求,保證和項目開發協調一致,保證測試工作順利進行。

06.您認為做好測試計劃工作的關鍵是什麼?

了解項目或系統的業務需求

和項目經理協調好,了解項目的進度計劃安排情況

07.您所熟悉的測試用例設計方法都有哪些?請分別以具體的例子來說明這些方法在測試用例設計工作中的應用。

邊界值/等價類/業務流程圖分析和狀態轉換分析/業務邏輯分析

08.您認為做好測試用例設計工作的關鍵是什麼?

對業務和軟體需求非常清楚,可以根據需求不同選擇不同的測試用例設計

09.您以往的工作中是否曾開展過測試用例的評審工作?如果有,請描述測試用例評審的過程和評審的內容。

評審計劃->預審->評審;

評審內容主要是測試用例對軟體需求的覆蓋程度,對於相關邊界是否考慮,是否針對複雜流程準備多套測試數據,是否有專門針對非功能性需求的測試。

10.您以往是否曾經從事過性能測試工作?如果有,請儘可能的詳細描述您以往的性能測試工作的完整過程。

制訂計劃->選擇測試功能->選擇測試工具->錄製腳本->運行測試->分析結果

11.您在從事性能測試工作時,是否使用過一些測試工具?如果有,請試述該工具的工作原理,並以一個具體的工作中的例子描述該工具是如何在實際工作中應用的。

微軟WAS,LoadRunner

12.您認為性能測試工作的目的是什麼?做好性能測試工作的關鍵是什麼?

關鍵是測試腳本的錄製,測試時候測試環境的乾淨。

13.在您以往的工作中,一條軟體缺陷(或者叫Bug)記錄都包含了哪些內容?如何提交高質量的軟體缺陷(Bug)記錄?

缺陷名詞/描述/缺陷等級/嚴重程度/發現模塊/發現步驟和過程/是否可以重現

14.您以往所從事的軟體測試工作中,是否使用了一些工具來進行軟體缺陷(Bug)的管理?如果有,請結合該工具描述軟體缺陷(Bug)跟蹤管理的流程。

CQ,也可以使用BugFree等免費工具。

15.您如何看待軟體過程改進?在您曾經工作過的企業中,是否有一些需要改進的東西呢?您期望的理想的測試人員的工作環境是怎樣的?

將先進的經驗或思想固化到過程中,通過過程改進和能力提高來改進軟體質量。

1、根據你的經驗說說你對軟體測試/質量保證的理解?

軟體質量保證與測試是根據軟體開發階段的規格說明和程序的內部結構而精心設計的一批測試用例(即輸入數據和預期的輸出結果),並利用這些測試用例去運行程序,以發現錯誤的過程。它是對應用程序的各個方面進行測試以檢查其功能、語言有效性及外觀排布.

2、軟體測試的流程是什麼?

需求調查: 全面了解您的系統概況、應用領域、軟體開發周期、軟體開發環境、開發組織、時間安排、功能需求、性能需求、質量需求及測試要求等

根據系統概況進行項目所需的人員、時間和工作量估計及項目報價。

制定初步的項目計劃: 在與您充分共同和協商的基礎上制定我們的測試計劃。

測試準備: 組織測試團隊、培訓、建立測試和管理環境等。

測試設計: 按照測試要求進行每個測試項的測試設計,包括測試用例的設計及測試腳本的開發等。

測試實施: 按照測試計划進行實施測試。

測試評估: 根據測試的結果,出具測試評估報告。

3、(1) 你對SQA的職責和工作活動(如軟體度量)的理解:

SQA就是獨立於軟體開發的項目組,通過對軟體開發過程的監控,來保證軟體的開發流程按照指定的CMM規程(如果有相應的CMM規程),對於不符合項及時提出建議和改進方案,必要是可以要高層經理彙報以求問題的解決。通過這樣的途徑來預防缺陷的引入,從而減少後期軟體的維護成本。SQA主要的工作活動包括制定SQA工作計劃,參與階段產物的評審,進行過程質量、功能配置及物理配置的審計等;對項目開發過程中產生的數據進行度量等等;

(2) 說說你對軟體配置管理的理解:

項目在開發的過程中要用相應的配置管理工具對配置項(包括各個階段的產物)進行變更控制,配置管理的使用取決於項目規模和複雜性能及風險的水平。軟體的規模越大,配置管理就顯得越重要。還有在配置管理中,有一個很重要的概念,那就是基線,是在一定階段各個配置項的組合,一個基線就提供了一個正式的標準,隨後的工作便基於此標準,並且只有經過授權後才能變更這個標準。配置管理工具主要有CC,VSS,CVS等,偶只用過CVS,對其它的不熟悉

(3) 怎樣寫測試計劃和測試用例:

簡單點,測試計劃里應有詳細的測試策略(測試方法等),合理詳盡的資源安排等,至於測試用例,那是依賴於需求(包括功能與非功能需求)是否細化到功能點,是否可測試等。

(4) 說說主流的軟體工程思想(如CMM,CMMI,RUP,XP,PSP,TSP等)的大致情況以及對它們的理解:

CMM:SW Capability Maturity Model 軟體能力成熟度模型,其作用是用於軟體過程的改進、評估及軟體能力的評鑒

CMMI:Capability Maturity Model Integration 能力成熟度模型集成 CMMI融入了大部分最新的軟體管理實踐,同時彌補了SW-CMM模型中的缺陷

RUP:rational unified process 是軟體工程化過程。

XP:extreme program,即極限編程的意思,適用於小型團隊的軟體開發,想上面第三個問題就可以結合原型法採用這樣的開發流程。要明白測試對於xp開發的重要性,強調測試(重點是單元測試)先行的理念。編程可以明顯提高代碼的質量,持續集成對於快速定位問題很有好處。

PSP ,TSP 分別是個體軟體過程(Personal Software Process),群組軟體過程(Team Software Process)大家都知道,CMM只是告訴你怎麼做但並沒有告訴你如何做,所以PSP/TSP就是告訴你企業在實施CMM的過程中如何做,PSP強調建立個人技能(如何制定計劃、控制質量及如何與其他人相互協作等等)而TSP著重於生產並交付高質量的軟體產品(如何有效地規劃和管理所面臨的項目開發任務等等)。總之,單純實施CMM,永遠不能真正做到能力成熟度的升級,只有將實施CMM與實施PSP和TSP有機地結合起來,才能發揮最大的效力。因此,軟體過程框架應該是CMM/PSP/TSP的有機集成。

4、還有問一下你是怎樣保證軟體質量的,也就是說你覺得怎樣才能最大限度地保證軟體質量?

測試並不能夠最大限度的保證軟體的質量,軟體的高質量是開發和設計出來的,而不是測試出來的,它不僅要通過對軟體開發流程的監控,使得軟體開發的各個階段都要按照指定的規程進行,通過對各個階段產物的評審,QA對流程的監控,對功能及配置的審計來達到開發的最優化。當然測試也是保證軟體質量的一個重要方式,是軟體質量保證工程的一個重要組成部分。

5、然後緊接著就基於目前中國的國情,大多數公司的軟體項目進度緊張、人員較少、需求文檔根本沒有或者很不規範,你認為在這種情況下怎樣保證軟體的質量?(大多數公司最想知道的就是在這種困難面前你該怎麼保證軟體的質量,因為這些公司一般就是這種情況—–既不想投入過多又想保證質量,faint )

出現以上的情況,如果僅僅想通過測試來提高軟體質量,那幾乎是不可能,原因是沒有足夠的時間讓你去測試,少而不規範的文檔導致測試需求無法細化何談足夠且有針對性進行測試。所以,作為公司質量保證的你應該先和項目經理確定符合項目本身最適合的軟體生命周期模型(比如RUP的剪裁,原型法),明確項目的開發流程並督促項目組按照此流程開展工作,所有項目組成員(項目經理更加重要)都要制定出合理的工作計劃,加強代碼的單元測試,在客戶既定的產品交付日期範圍之內,進行產品的持續集成等等,如果時間允許可以再配合客戶進行必要的系統功能測試。

6、一個測試工程師應具備那些素質和技能?

1、掌握基本的測試基礎理論 ;

2、本著找出軟體存在的問題的態度進行測試,即客觀吧,不要以挑刺形象出現

3、可熟練閱讀需求規格說明書等文檔 ;

4、以用戶的觀點看待問題

5、有著強烈的質量意識 ;

6、細心和責任心 ;

7、良好的有效的溝通方式(與開發人員及客戶)

8、具有以往的測試經驗 ;能夠及時準確地判斷出高危險區在何處.

9、為什麼要在一個團隊中開展軟體測試工作?

因為沒有經過測試的軟體很難在發布之前知道該軟體的質量,就好比ISO質量認證一樣,測試同樣也需要質量的保證,這個時候就需要在團隊中開展軟體測試的工作。在測試的過程發現軟體中存在的問題,及時讓開發人員得知並修改問題,在即將發布時,從測試報告中得出軟體的質量情況。

10、您所熟悉的軟體測試類型都有哪些?

測試類型有:功能測試,性能測試,界面測試。

功能測試在測試工作中占的比例最大,功能測試也叫黑盒測試。

性能測試是通過自動化的測試工具模擬多種正常、峰值以及異常負載條件來對系統的各項性能指標進行測試。負載測試和壓力測試都屬於性能測試,兩者可以結合進行。

界面測試,界面是軟體與用戶交互的最直接的層,界面的好壞決定用戶對軟體的第一印象。

11、您認為做好測試用例設計工作的關鍵是什麼?

白盒測試用例設計的關鍵是以較少的用例覆蓋儘可能多的內部程序邏輯結果

黑盒用例設計的關鍵同樣也是以較少的用例覆蓋模塊輸出和輸入介面。不可能做到完全測試,以最少的用例在合理的時間內發現最多的問題

軟體的黑盒測試意味著測試要在軟體的介面處進行。這種方法是把測試對象看做一個黑盒子,測試人員完全不考慮程序內部的邏輯結構和內部特性,只依據程序的需求規格說明書,檢查程序的功能是否符合它的功能說明。因此黑盒測試又叫功能測試或數據驅動測試。黑盒測試主要是為了發現以下幾類錯誤:

1、是否有不正確或遺漏的功能?

2、在介面上,輸入是否能正確的接受?能否輸出正確的結果?

3、是否有數據結構錯誤或外部信息(例如數據文件)訪問錯誤?

4、性能上是否能夠滿足要求?

5、是否有初始化或終止性錯誤?

軟體的白盒測試是對軟體的過程性細節做細緻的檢查。這種方法是把測試對象看做一個打開的盒子,它允許測試人員利用程序內部的邏輯結構及有關信息,設計或選擇測試用例,對程序所有邏輯路徑進行測試。通過在不同點檢查程序狀態,確定實際狀態是否與預期的狀態一致。因此白盒測試又稱為結構測試或邏輯驅動測試。白盒測試主要是想對程序模塊進行如下檢查:

1、對程序模塊的所有獨立的執行路徑至少測試一遍。

2、對所有的邏輯判定,取「真」與取「假」的兩種情況都能至少測一遍。

3、在循環的邊界和運行的界限內執行循環體。

4、測試內部數據結構的有效性,等等。4、驗收測試是部署軟體之前的最後一個測試操作。驗收測試的目的是確保軟體準備就緒,並且可以讓最終用戶將其用於執行軟體的既定功能和任務。驗收測試是向未來的用戶表明系統能夠像預定要求那樣工作。經集成測試後,已經按照設計把所有的模塊組裝成一個完整的軟體系統,介面錯誤也已經基本排除了,接著就應該進一步驗證軟體的有效性,這就是驗收測試的任務,即軟體的功能和性能如同用戶所合理期待的那樣。

12、測試計劃工作的目的是什麼?測試計劃工作的內容都包括什麼?其中哪些是最重要的?

軟體測試計劃是指導測試過程的綱領性文件,包含了產品概述、測試策略、測試方法、測試區域、測試配置、測試周期、測試資源、測試交流、風險分析等內容。藉助軟體測試計劃,參與測試的項目成員,尤其是測試管理人員,可以明確測試任務和測試方法,保持測試實施過程的順暢溝通,跟蹤和控制測試進度,應對測試過程中的各種變更。

測試計劃和測試詳細規格、測試用例之間是戰略和戰術的關係,測試計劃主要從宏觀上規劃測試活動的範圍、方法和資源配置,而測試詳細規格、測試用例是完成測試任務的具體戰術。所以其中最重要的是測試策略和測試方法(最好是能先評審)

13、您認為做好測試計劃工作的關鍵是什麼?

1. 明確測試的目標,增強測試計劃的實用性

編寫軟體測試計劃得重要目的就是使測試過程能夠發現更多的軟體缺陷,因此軟體測試計劃的價值取決於它對幫助管理測試項目,並且找出軟體潛在的缺陷。因此,軟體測試計劃中的測試範圍必須高度覆蓋功能需求,測試方法必須切實可行,測試工具並且具有較高的實用性,便於使用,生成的測試結果直觀、準確

2.堅持「5W」規則,明確內容與過程

「5W」規則指的是「What(做什麼)」、「Why(為什麼做)」、「When(何時做)」、「Where(在哪裡)」、「How(如何做)」。利用「5W」規則創建軟體測試計劃,可以幫助測試團隊理解測試的目的(Why),明確測試的範圍和內容(What),確定測試的開始和結束日期(When),指出測試的方法和工具(How),給出測試文檔和軟體的存放位置(Where)。

3.採用評審和更新機制,保證測試計劃滿足實際需求

測試計劃寫作完成後,如果沒有經過評審,直接發送給測試團隊,測試計劃內容的可能不準確或遺漏測試內容,或者軟體需求變更引起測試範圍的增減,而測試計劃的內容沒有及時更新,誤導測試執行人員。

4. 分別創建測試計劃與測試詳細規格、測試用例

應把詳細的測試技術指標包含到獨立創建的測試詳細規格文檔,把用於指導測試小組執行測試過程的測試用例放到獨立創建的測試用例文檔或測試用例管理資料庫中。測試計劃和測試詳細規格、測試用例之間是戰略和戰術的關係,測試計劃主要從宏觀上規劃測試活動的範圍、方法和資源配置,而測試詳細規格、測試用例是完成測試任務的具體戰術。

14、 您所熟悉的測試用例設計方法都有哪些?

1.等價類劃分

2.邊界值分析法

3.錯誤推測法

4.因果圖方法

15、你的測試職業發展是什麼?

測試經驗越多,測試能力越高。所以我的職業發展是需要時間累積的,一步步向著高級測試工程師奔去。而且我也有初步的職業規劃,前3年累積測試經驗,按如何做好測試工程師的11,12點要求自己,不斷的更新自己改正自己,做好測試任務。

17、你自認為測試的優勢在哪裡?

優勢在於我對測試堅定不移的信心和熱情,雖然經驗還不夠,但測試需要的基本技能我有信心在工作中得以發揮。

18、當開發人員說不是BUG時,你如何應付?

開發人員說不是bug,有2種情況,一是需求沒有確定,所以我可以這麼做,這個時候可以找來產品經理進行確認,需不需要改動,3方商量確定好後再看要不要改。二是這種情況不可能發生,所以不需要修改,這個時候,我可以先儘可能的說出是BUG的依據是什麼?如果被用戶發現或出了問題,會有什麼不良結果?程序員可能會給你很多理由,你可以對他的解釋進行反駁。如果還是不行,那我可以給這個問題提出來,跟開發經理和測試經理進行確認,如果要修改就改,如果不要修改就不改。其實有些真的不是bug,我也只是建議的方式寫進TD中,如果開發人員不修改也沒有大問題。如果確定是bug的話,一定要堅持自己的立場,讓問題得到最後的確認。

各位考官好,今天能夠站在這裡參加面試,有機會向各位考官請教和學習,我感到非常的榮幸。希望通過這次面試能夠把自己展示給大家,希望大家記住我.我的性格比較開朗,隨和。能關係周圍的任何事,和親人朋友能夠和睦相處,並且對生活充滿了信心。我以前在檢察院實習過,所以有一定的實踐經驗。在外地求學的四年中,我養成了堅強的性格,這種性格使我克服了學習和生活中的一些困難,積極進取成為一名法律工作者是我多年以來的強烈願望。如果我有機會被錄用的話,我想,我一定能夠在工作中得到鍛煉並實現自身的價值,同時,我也認識到,人和工作的關係是建立在自我認知的基礎上的,我認為我有能力也有信心做好這份工作。公務員是一個神聖而高尚的職業,它追求的是公共利益的最大化,它存在的根本目的是為人民服務,為國家服務。雷鋒說過:人的生命是有限的,而為人民服務是無限的,我要把有限的生命投入到無限的為人民服務當中去,這也是我對公務員認知的最好詮釋,所以,這份工作能夠實現我的社會理想和人生價值,希望大家能夠認可我,給我這個機會!

各位考官好,今天能夠站在這裡參加面試,有機會向各位考官請教和學習,我感到非常的榮幸.希望通過這次面試能夠把自己展示給大家,希望大家記住我.我叫....,今年..歲.漢族,..本科.我平時喜歡看書和上網瀏覽信息.我的性格比較開朗,隨和.能關係周圍的任何事,和親人朋友能夠和睦相處,並且對生活充滿了信心.我以前在..實習過,所以有一定的實踐經驗.在..求學的..年中,(簡單的但是有重點的介紹自己拿手的技術 比如:我精通了Hibernate框架 能很好的做持久化操作 還有...等等)並且讓我養成了堅強的性格,這種性格使我克服了學習和生活中的一些困難,積極進去.成為一名JAVA軟體工程師是我多年以來的強烈願望.如果我有機會被錄用的話,我想,我一定能夠在工作中得到鍛煉並實現自身的價值.同時,我也認識到,人和工作的關係是建立在自我認知的基礎上的,我認為我有能力也有信心做好這份工作.所以,這份工作能夠實現我的理想和人生價值,希望在這麼多的應聘者中,您能給我一次機會,我將獻上我最真誠的一面以及個人才能。我相信自己能夠很快的融入到貴公司的工作中!謝謝!! !


推薦閱讀:

軟體測試工程師的職責和10大城市薪資對比

TAG:軟體測試 | 軟體測試工程師 | 軟體測試培訓 |