軟件測試知識
1、什麽是軟件測試
軟件測試是為了發現錯誤而執行程序的過程,或者說軟件測試是根據軟件開發各個階段的規格說明和程序的內部結構而精心設計的一批測試用例(即輸入數據及其預期的輸出結果),並利用這些測試用例去執行程序,以發現程序錯誤的過程。
2、軟件測試的目的
測試的目的是想以最少的人力、物力和時間找出軟件中潛在的各個錯誤和缺陷,通過修正錯誤和缺陷提高軟件質量,回避軟件發布後由於潛在的軟件缺陷和錯誤造成的隱患帶來的商業風險。
3、需求文檔測試
主要是測試需求中是否存在邏輯矛盾以及需求在技術上是否可以實現。
4、設計文檔測試
測試設計是否符合全部需求以及設計是否合理。
5、α測試
Alpha測試是由一個用戶在開發環境下進行的測試,也可以是公司內部的用戶在模擬實際操作環境下進行的受控測試,Alpha測試不能由程序員或測試員完成。
Alpha測試發現的錯誤,可以在測試現場立刻反饋給開發人員,由開發人員及時分析和處理。目的是評價軟件產品的功能、可適用性、可靠性、性能和支持。尤其註重產品的界面和特色。Alpha測試可以從軟件產品編碼結束後開始,或在模塊(子系統)測試完成之後開始,也可以在確認測試過程中產品達到一定的穩定性和可靠程度之後再開始。有關的手冊(草稿)等應該在Alpha測試前準備好。
6、β測試
Beta測試是軟件的多個用戶在一個或者多個用戶的實際使用環境下進行的測試。開發者通常不在測試現場,Beta不能由程序員或測試員完成。因而Beta測試是在開發者無法控制的環境下進行的軟件現場應用。
在Beta測試中,由用戶記下遇到的所有問題,包括真實的以及主管認定的,定期向開發者報告,開發者在綜合用戶的報告後,做出修改,最終將軟件產品交付給全體用戶使用。Beta測試著重於產品的支持性,包括文檔、客戶培訓和支持產品的生產能力。只有當Alpha測試達到一定的可靠程度之後,才能開始Beta測試。由於Beta測試的主要目標是測試可支持性,所以應該盡可能由主持產品發行的人員來管理。
7、驅動模塊
驅動模塊在大多數場合稱為”主程序“,它接受測試數據並將這些數據傳遞到被測試模塊。單元測試一個函數單元時,被測單元本身是不能獨立運行的需要為其傳送數據,為此寫驅動模塊主要完成以下事情:
1)接受測試輸入
2)對輸入進行判斷
3)將輸入傳給被測單元,驅動被測單元執行
4)接受被測單元執行結果,並對結果進行判斷
5)將判斷結果作為用例執行結果輸出測試報告
8、樁模塊
比如對函數A做單元測試時,被測的函數單元下還包括了一個函數B,為了更好的定位錯誤,就要為函數B寫樁,來模擬函數B的功能,保證其正確。
9、白盒測試
又稱邏輯驅動測試,結構測試。它知道產品的內部工作過程,可以通過測試來檢驗產品內部動作是否按照規格說明書的規定正常運行,按照程序內部的結構測試程序,檢驗程序中的每條通路是否都能按照預定要求工作,而不顧它的功能。
白盒測試的主要方法有邏輯驅動、基路測試等,主要用於軟件驗證。
對開發語言的支持:白盒測試的工具是對源代碼進行的測試,測試的主要工作內容包括詞法分析與語法分析、靜態錯誤分析、動態監測等。目前測試工具主要支持的開發語言包括:標準C、C++、Java等
10、靜態測試
通過運行程序測試軟件稱為動態測試,通常使用白盒測試和黑盒測試從不同角度設計測試用例,查找軟件代碼中的錯誤。
通過評審文檔、閱讀代碼等方式測試軟件的方法稱為靜態測試。靜態測試方法指不運行程序本身,僅通過分析或查找源程序的語法、結構、過程、接口等來檢驗程序的正確性。對需求規格說明書、軟件設計說明書、源程序做結構分析、流程圖分析、符號執行來找錯。靜態方法通過程序靜態特性的分析、找出欠缺和可疑之處,例如不匹配的參數,不適當的循環嵌套和分之嵌套、不允許的遞歸、未使用過的變量、空指針的引用和可疑的計算等。靜態測試的結果可用於進一步的查錯,並未測試用例選取提供指導。
11、回歸測試
回歸測試的目的是在程序有修改的情況下,保證原有功能正常的一種測試策略和方法。
說白了就是測試人員在對程序測試時發現bug,然後返還給程序員修改,程序員修改後發布新的軟件包或者新的軟件補丁包給我們測試人員,我們就要重新對這個程序測試,用來保證程序在修改了原有bug的情況下,正常運行,而且不會帶來新的錯誤的這樣一個過程。一般情況下是不需要全面測試的,而是根據修改的情況進行有效的測試。
12、白盒測試的方法
白盒測試也稱結構測試或邏輯驅動測試,它是知道產品內部工作過程,可通過測試來檢驗產品內部動作是否按照規格說明書的規定正常運行,按照程序的內部結構測試程序,檢測程序中的每條通路是否能夠按照預定的要求正確工作,而不顧它的功能。
白盒測試的主要方法有邏輯驅動、基路測試等,主要用於軟件驗證。”白盒“法全面了解程序的內部邏輯結構、對所有的邏輯路徑進行測試。白盒法是窮舉路徑測試。
13、軟件的缺陷等級劃分
軟件缺陷的等級可以用嚴重性和優先級來描述:
嚴重性:衡量缺陷對客戶滿意度影響的滿意程度,分為:
1)致命錯誤,可能引起本模塊以及其他相關模塊異常、死機等問題;
2)嚴重錯誤,問題局限在本模塊,導致模塊功能失常或異常退出;
3)一般錯誤,模塊功能部分失效;
4)建議模塊,有問題提出人對測試模塊的改進建議;
優先級:缺陷被修復的緊急程度
1)立即解決(P1級):缺陷導致系統功能幾乎不能使用或者測試不能繼續,需要立即修復;
2)高優先級(P2級):缺陷嚴重,影響測試,需優先考慮;
3)正常排隊(P3級):缺陷需要正常排隊等待修復;
4)低優先級(P4級):缺陷可以在有時間的時候被修正;
14、白盒與黑盒的區別
黑盒測試:已知產品的功能設計規格,可以進行測試證明每個實現了的功能是否符合要求。
白盒測試:已知產品的內部工作過程,可以通過測試證明每個內部操作是否符合設計規格要求,所有內部成分是否已經過檢查
軟件的黑盒測試意味著測試要在軟件的接口處進行。這種方法是把測試對象看作一個黑盒子,測試人員完全不考慮程序內部的邏輯結構和內部特性,只依據程序的需求規格說明書,檢查程序的功能是否符合它的功能說明。黑盒測試主要是為了發現以下幾類錯誤:
1)是否有不正確或遺漏的功能
2)在接口上,輸入是否能正確接受,是否能輸出正確結果
3)是否有數據結構錯誤或外部信息(例如數據文件)訪問錯誤
4)性能上是否能夠滿足要求
5)是否有初始化或者終止性錯誤
軟件的白盒測試是對軟件的過程性細節進行細致的檢查。這種方法是把測試對象看作一個打開的盒子,它允許測試人員利用程序內部的邏輯結構及有關信息,設計或者選擇測試用例,對程序所有邏輯路徑進行測試。通過在不同點檢查程序狀態,確定實際狀態是否與預期的狀態一致。因此白盒測試又稱為結構測試或邏輯驅動測試。白盒測試主要是對程序模塊進行如下檢查:
1)對程序模塊的所有獨立的執行路徑至少測試一遍;
2)對所有的邏輯判定,取”真“和取”假“的兩種情況至少都能至少測試一遍;
3)在循環的邊界和運行的界限內執行循環體;
4)測試內部數據結構的有效性,等等
以上事實說明,軟件測試有個致命的缺陷,即測試的不完全、不徹底性。由於任何程序只能進行少量(相對於窮舉的巨大數量而言)的有限的測試,在未發現錯誤時,不能說明程序中沒有錯誤。
15、軟件測試應劃分為幾個階段,簡述各個階段應重點測試的點,各個階段的含義
大體上來說,軟件測試可分為單元測試,集成測試,系統測試,驗收測試;
每個階段又分為以下五個步驟:測試計劃,測試設計,用例設計,執行結果,測試報告。
初始測試集中在每個模塊上,保證源代碼的正確性,該階段為單元測試,主要用白盒測試的方法;
接下來是模塊集成,集成測試集中在證實程序構成問題上,主要采用黑盒測試方法,輔之以白盒測試;
軟件集成後需要完成確認和系統測試,確認測試提供軟件滿足所有功能、性能需求的最後保證。確認測試僅僅應用黑盒測試方法。
16、什麽是單元測試?
單元測試是對軟件中的基本組成單位進行的測試,如一個模塊、一個過程等等。它是軟件動態測試的最基本的部分,也是最重要的部分之一,其目的是檢驗軟件基本組成單位的正確性。
17、什麽是集成測試?
集成測試是在軟件系統集成過程中所進行的測試,其目的是檢查軟件單位之間的接口是否正確。
18、什麽是系統測試?
系統測試是對已經集成好 的軟件系統進行徹底的測試,以驗證軟件系統的正確性和性能等滿足其規約所制定的要求,檢查軟件的行為和輸出是否正確並非一項簡單的任務,它被稱為測試的”先知者問題“。
19、什麽是驗收測試?
驗收測試旨在向軟件的購買者展示該軟件系統滿足其用戶的需求。它的測試數據集通常是系統測試數據的子集。
20、什麽是回歸測試?
回歸測試是在軟件維護階段、對軟件進行修改之後進行的測試。其目的是檢驗對軟件的修改是否正確。
21、針對缺陷采取怎樣的管理措施?
要更好地管理缺陷,必須引入缺陷管理工具。根據缺陷的生命周期考慮缺陷提交的管理、缺陷狀態的管理和缺陷分析的管理。
1)缺陷提交的管理:所有發現的缺陷(不管是測試發現的還是走讀代碼發現的)都必須全部及時的、準確的提交到缺陷管理工具中,這是缺陷提交的管理;
2)缺陷狀態的管理:缺陷提交後,需要即時的指派給相應的開發人員,提交缺陷的人需要密切註意缺陷的狀態,幫助缺陷盡快的解決,缺陷解決後需要即時對缺陷的修復進行驗證。這樣的目的有兩個:一是讓缺陷盡快的解決;二是方便後面缺陷的分析(保證缺陷相關的信息準確,如齡期等),這是缺陷的狀態管理;
3)缺陷分析的管理:為了更好地改進開發過程和測試過程,需要對缺陷進行分析,總結如缺陷的類別、缺陷的齡期分布等信息,這是缺陷分析的管理。
22、單元測試,集成測試和系統測試的側重點是什麽?
1)單元測試是在軟件開發過程中要進行的最低級別的測試活動,在單元測試活動中,軟件的獨立單元將在於程序的其他部分相隔離的情況下進行測試,
測試的重點是系統的模塊,包括子程序的正確性驗證等;
2)集成測試也叫組裝測試或聯合測試,在單元測試的基礎上,將所有模塊按照設計要求組裝成子系統或系統,進行集成測試。實踐證明,一些子模塊雖然能單獨的工作,但並不能保證連接起來也能正常工作,程序在某些局部反映不出來的問題,在全局上很有可能暴露出來,影響功能的實現。
測試重點在於模塊間的銜接以及參數的傳遞等。
3)系統測試是將經過測試的子系統組裝成一個完整的系統來測試。它是檢驗系統能否提供系統方案說明書中指定功能的有效方法,
測試重點在於整個系統的運行以及與其他軟件的兼容性。
23、設計用例的方法、依據有哪些?
白盒測試用例設計有如下方法:基本路徑測試、邊界值分析、覆蓋測試、循環測試、數據流測試、程序插樁測試、變異測試。依據詳細設計說明書以及代碼結構。
黑盒測試用例設計方法:基於用戶需求的測試、功能圖分析方法、等價類劃分方法、邊界值分析方法、錯誤推測方法、因果分析方法、判定表驅驅動分析方法、正交實驗設計方法。依據是用戶需求規格說明書,詳細設計說明書。
24、描述使用bugzilla缺陷管理工具對軟件缺陷(BUG)跟蹤管理的流程
1)測試人員或開發人員發現bug後,判定屬於哪個模塊的問題,填寫bug報告後,系統自動通過Email通知項目組長或直接通知開發者;
2)經驗證無誤後,修改狀態為VERIFIED,待整個產品發布後,修改為CLOSED;
3)還有問題,REOPEND,狀態重新變為"NEW",並發郵件通知;
4)項目組長根據具體情況,重新分配reassigined給bug所屬的開發者;
5)開發者收到Email信息後,判斷是否為自己的修改範圍;
6)若是,進行處理resolved,並給出解決方案(可以創建補丁附件及補充說明);
7)若不是,重新分配給項目組長或應該分配的開發者;
8)測試人員查詢開發者已修改的bug,進行重新測試。
軟件測試知識