軟件測試基礎
1:什么是軟件缺陷?
a.軟件未達到產品設計規范表明的功能;
b.軟件出現了產品設計規范指明不會出現的錯誤;
c.軟件功能超出產品設計規范指明的范圍;
d.軟件未達到產品設計規范雖未指出但應達到的目標;
e.軟件測試人員認為軟件難以理解、不易使用、運行速度慢,或者最終用戶認為不好。
2:為什么會出現軟件缺陷?
a.需求變化 b.設計錯誤 c.軟件復雜 d.開發工具
e.時間壓力 f.缺乏交流 g.文檔缺乏
3:優秀的軟件測試人員應該具備的素質?
(一)a.溝通能力 b.技術能力 c.細心、信心、耐心
(二)軟件測試員自身素質
a.應對軟件測試感興趣和對自己有自信。
b.善於懷疑,世界上沒有絕對正確的,總有錯誤的地方,具有叛逆心理,別人認為不可能發生的事,我卻認為可能發生。別人認為是對的,我卻認為不是對的。
c.打破砂鍋問到底的精神,對於只出現過一次的bug,一定找出原因,不解決誓不罷休。
d.保持一個良好的心情,否則可能無法把測試做好。不要把生活中的不愉快的情緒帶到工作中來。
e.做測試時要細心,不是所有的bug都能很容易的找出,一定要細心才能找出這些bug。
f.靈活一些,聰明一點,多制造一些容易產生bug的例子。
g.在有條件的情況下,多和客戶溝通,他們身上有你所需要的。
(三)
a.設身處地為客戶着想,從他們的角度去測試系統。
b.不要讓程序員,以“這種情況不可能發生”這句話說服你,相反,你應該去說服他,告訴他在客戶心里,並不是這樣的。
c.考慮問題要全面,結合客戶的需求、業務的流程、和系統的構架,等多方面考慮問題。
d.提出問題不要復雜化,這一點和前面的有點矛盾,如果你是一新手,暫時不要管這一點,因為最終將有你的小組成員討論解決。
e.追求完美,對於新測試員來說,努力地追求完美,這對你很好,盡管有些事無法做到,但你應該去嘗試。
f.能和開發小組很好地溝通是關鍵。
6:什么是軟件測試?(軟件測試的概念)
a.1983年IEEE提出的軟件工程術語中給軟件測試下的定義是:“使用人工或自動的手段來運行或測定某個軟件系統或系統部件的過程,其目的在於檢驗它是否滿足規定的需求或弄清預期結果與實際結果之間的差別”。
b.軟件測試是根據軟件需求分析、設計說明和程序的內部結構而精心設計一批測試用例,並按照這些測試用例去運行程序,以發現程序錯誤的過程。簡單地說就是找Bug,驗證需求。
c.軟件測試是為了發現錯誤而執行程序的過程。
d.軟件測試是保證軟件質量的重要手段。
7:軟件測試的目標?
目標:是在軟件分發到最終用戶手中之前,盡早地、以最少的時間和人力找出軟件中潛在的各種缺陷。
8:軟件測試的原則?
a.應盡早地和不斷地進行軟件測試
b.測試用例應包含測試輸入數據和與之對應的預期輸出結果
c.程序員應避免檢查自己的程序
d.設計測試用例時,應包括合理的輸入條件和不合理的輸入條件
e.充分注意測試中的群集現象。經驗表明,測試后程序中殘存的錯誤數目與該程序中已發現的錯誤數目成正比。
f.嚴格按照測試計划、測試用例執行,排除測試的隨意性
g.應當對每一個測試結果做全面檢查
h.妥善保存測試過程中的相關文檔,為維護提供方便
9:軟件測試的分類?以及它們的概念?
(一)軟件測試方法分類
A.白盒測試:又稱結構測試、邏輯驅動測試或基於軟件本身的測試,白盒測試是對軟件的內部細節做細致的檢查,對軟件的所有邏輯路徑進行測試,而並不關心軟件的功能要求,主要用於單元測試、集成測試。
B.黑盒測試:又稱功能測試、數據驅動測試或基於軟件需求的測試,通過黑盒測試可以知道軟件是否符合用戶的預期要求。黑盒測試不考慮軟件內部的邏輯結構,主要適用於集成測試、系統測試、驗收測試。
C.灰盒測試:是介於白盒測試和黑盒測試之間的一種測試方法,它不僅關注輸入、輸出的正確性,同時也關注軟件的內部情況。多用於集成測試。
(二)軟件測試階段分類
A.單元測試:是指對軟件中的最小可測試單元進行檢查和驗證。
B.集成測試:是在軟件系統集成過程中所進行的測試,目的是檢查軟件單元之間的接口是否正確。
C.系統測試:是將整個軟件系統看做一個整體進行測試,包括對功能、性能,以及軟件所運行的軟硬件環境進行測試。
回歸測試:是指修改了代碼后,重新執行測試。
D.驗收測試:是以用戶測試為主,或有測試人員等質量保障人員共同參與的測試,它也是軟件正式交給用戶使用前的最后一道工序。
E.驗收測試又分為Alpha測試和Beta測試,其中Alpha測試指的是由用戶、 測試人員、開發人員等共同參與,在非實際環境(開發環境或測試環境)下進行的內部測試;而Beta測試指的是內測后的公測,即完全交給最終用戶,在實際環境中進行的測試。
(三)軟件測試內容分類(一)
(1)功能測試:是對軟件的各功能進行驗證,以檢查是否滿足需求的要求。
(2)性能測試:是通過自動化測試工具模擬多種正常、峰值以及異常負載條件,來對系統的各項性能指標進行測試。
(2.1)軟件的性能主要有時間性能和空間性能
A.時間性能:主要指軟件的一個具體事務的響應時間。
B.空間性能:主要指軟件運行時所消耗的系統資源。
(2.2)軟件性能測試又分為:
A.一般性能測試:指的是讓被測系統在正常的軟硬件環境下運行,不向其施加任何壓力的性能測試。
B.穩定性測試:也叫可靠性測試:是指連續運行被測系統檢查系統運行時的穩定程度。
C.負載測試:是指讓被測系統在其能忍受的壓力的極限范圍之內連續運行,來測試系統的穩定性。
D.壓力測試:是指持續不斷的給被測系統增加壓力,直到將被測系統壓垮為止,用來測試系統所能承受的最大壓力。
(四)軟件測試內容分類(二)
A.接口測試:廣義上是指被測系統與外部系統之間的接口測試,狹義上是指對客戶端與服務器端的接口測試,實際中大多數情況下指的是后者。
B.安全測試:檢查系統對非法入侵的防范能力。
C.兼容性測試:是測試系統在不同軟、硬件環境下是否能夠正常運行。
D.易用性測試:是指從軟件使用的合理性和方便性等角度對軟件進行檢查,來發現軟件中不方便用戶使用的地方。
E.界面測試:指的檢查軟件界面是否美觀。
(五)、軟件測試其他分類
A.動態測試:是指實際運行被測軟件,輸入相應的測試數據,檢查輸出結果和預期結果是否相符的過程。
B.靜態測試:是指不實際運行被測軟件,而只是靜態地檢查程序代碼、界面或文檔可能存在的錯誤的過程。
(B.1).靜態測試包括:
a.對於代碼測試:主要是測試代碼是否符合相應的標准和規范。
b.對於界面測試:對於界面測試,主要測試軟件的實際界面與需求中的說明是否相符。
c.對於文檔測試:主要測試用戶手冊和需求說明是否真正符合用戶的實際需求。
C.手工測試:是指手工操作軟件,來進行的測試。
D.自動化測試:是指使用測試工具或編寫好的測試腳本,自動運行操作軟件,來進行的測試。
E.冒煙測試:在對一個新版本進行系統大規模測試之前,先驗證一下軟件的基本功能是否實現,是否具備可測性。
F.隨機測試:是指測試中所有的輸入數據都是隨機的,其目的是模擬用戶的真實操作,並發現一些邊緣性的錯誤。
10:軟件測試各階段的主要測試內容?
測試階段 主要依據 測試人員、測試方式 主要測試內容
測試階段 | 主要依據 | 測試人員、測試方式 | 主要測試內容 |
單元測試 | 系統設計文檔 | 由開發小組執行白盒測試 | 接口測試、路徑測試 |
集成測試 | 系統設計文檔 需求文檔 |
由開發小組執行白盒測試和黑盒測試 | 接口測試、路徑測試 功能測試、性能測試 |
系統測試 | 需求文檔 | 由獨立測試小組執行黑盒測試 | 功能測試、性能測試、用戶界面測試、安全性測試、壓力測試、可靠性測試、安裝/反安裝測試 |
驗收測試 | 需求文檔 | 由用戶執行黑盒測試 |
11:軟件測試的流程?
a.測試需求分析:根據軟件需求,分析出測試點。
b.測試計划:確定測試范圍、測試策略、測試人員時間安排。
c.測試用例設計及評審:根據測試需求分析,編寫測試用例,並進行測試用例評審。評審分為內部評審及外部評審。
d.測試執行;執行測試用例,提交BUG,跟蹤BUG,進行多輪測試。
e.測試總結,完成測試報告。
12:軟件測試的模型?
(一)“V”型
這是一種古老的瀑布模型,反映了實際和測試之間的關系。
局限:僅僅把測試過程作為編碼之后的一個階段,忽視了測試對需求分析,系統設計的驗證,如果前面設計錯誤,得一直到后期的驗收測試才被發現,耗時耗力。

特點:【活動串行】測試與開發同時進行,在V模型的基礎上,增加了在開發階段的同步測試
局限:仍然不支持迭代,減少了一定錯誤發生率,但是需按照流水線進行設計、編碼和測試
(三)“H”型
特點:【活動並行】過程活動完全獨立,貫穿於整個產品的周期,與其他流程並發地進行,某個測試點准備就緒時,就可以從測試准備階段進行到測試執行階段;軟件測試可以進行盡早的進行;軟件測試可以根據被測物的不同而分層次進行。

13:開發人員與測試人員矛盾?(面試題)
開發人員和測試人員的目標是一致的:要讓最終用戶對軟件的質量滿意,所以不是敵對關系。可以通過制定相關的規范流程來方便大家的工作。如:《提測標准》、《bug等級定義》、《提測單》等。
測試人員的注意事項:
發現缺陷時不要嘲笑開發人員,別說他的程序真臭、到處是Bug。應及時記錄到bug跟蹤系統,看法不一致時,可以找產品經理或項目經理來裁定。
在開發人員壓力太大時或心情不好時不要火上澆油,發現缺陷時別大聲嚷嚷。
不要相互諷刺對方,例如:
A對B說:你唯一的特點就是無能。
B對A說:你唯一的特點就是粗魯