軟件測試中是如何分類的
測試的目標:測試是為了發現程序中的錯誤而執行程序的過程;
好的測試方案是盡可能發現迄今為止尚未發現的錯誤的測試方案;
成功的測試是發現了至今為止尚未發現的錯誤。
也可以這樣說,測試的目標是以較少的用例、時間和人力找出軟件中潛在的各種錯誤和缺陷,以確保系統的質量。
從是否需要執行被測軟件的角度,可分為:
。靜態測試
。動態測試
從測試是否針對系統的內部結構和具體實現算法的角度來看,可分為:
。白盒測試
。诤袦y試1、黑盒測試和白盒測試
黑盒測試
指的是把被測軟件看作是一個黑盒子,我們不去關心盒子里面的結構是什么樣子,只關心軟件的輸入數據和輸出結果。
黑盒測試方法是在程序接口上進行測試,主要是為了發現以下錯誤: 是否有不正確或遺漏了的功能?
在接口上,輸入能否正確地接受? 能否輸出正確的結果?
是否有數據結構錯誤或外部信息(例如數據文件)訪問錯誤?
性能上是否能夠滿足要求?
是否有初始化或終止性錯誤?
用黑盒測試發現程序中的錯誤,必須在所有可能的輸入條件和輸出條件中確定測試數據,來檢查程序是否都能產生正確的輸出。 但這是不可能的。 n假設一個程序P有輸入量X和Y及輸出量Z。在字長為32位的計算機上運行。若X、Y取整數,按黑盒方法進行窮舉測試: n可能采用的
測試數據組: 232×232 =264 n如果測試一組數據需要1毫秒,一年工作365×24小時,完成所有測試需5億年。 黑盒測試的測試用例設計 等價劃分法
邊界值法
錯誤推測法
因果圖法
1.等價類劃分
1>等價類劃分是一種典型的黑盒測試方法,使用這一方法時,完全不考慮程序的內部結構,只依據程序的規格說明來設計測試用例。
2>等價類劃分方法把所有可能的輸入數據,即程序的輸入域劃分成若干部分,然后從每一部分中選取少數有代表性的數據做為測試用例。
3>使用這一方法設計測試用例要經歷劃分等價類(列出等價類表)和選取測試用例兩步。
4>劃分等價類
等價類是指某個輸入域的子集合。在該子集合中,各個輸入數據對于揭露程序中的錯誤都是等效的。測試某等價類的代表值就等價于對這一類其它值的測試。
等價類的劃分有兩種不同的情況:
、 有效等價類:是指對于程序的規格說明來說,是合理的,有意義的輸入數據構成的集合。
、 無效等價類:是指對于程序的規格說明來說,是不合理的,無意義的輸入數據構成的集合。
在設計測試用例時,要同時考慮有效等價類和無效等價類的設計。
劃分等價類的原則
(1) 如果輸入條件規定了取值范圍,或值的個數,則可以確立一個有效等價類和兩個無效等價類。
n例如,在程序的規格說明中,對輸入條件有一句話:
"…… 項數可以從1到999 ……"
則有效等價類是"1≤項數≤999"
兩個無效等價類是"項數<1"或"項
數>999"。在數軸上表示成:
1 999
無效等價類 有效等價類 無效等價類
(2) 如果輸入條件規定了輸入值的集合,或者是規定了"必須如何"的條件,這時可確立一個有效等價類和一個無效等價類。
例如,在Pascal語言中對變量標識符規定為"以字母打頭的……串"。那么所有以字母打頭的構成有效等價類,而不在此集合內(不以字母打頭)的歸于無效等價類。
(3) 如果輸入條件是一個布爾量,則可以確定一個有效等價類和一個無效等價類。
(4) 如果規定了輸入數據的一組值,而且程序要對每個輸入值分別進行處理。這時可為 每一個輸入值確立一個有效等價類,此外針對這組值確立一個無效等價類,它是所有不允許的輸入值的集合。
2.邊界值分析 邊界值分析也是一種黑盒測試方法,是對等價類劃分方法的補充。
人們從長期的測試工作經驗得知,大量的錯誤是發生在輸入或輸出范圍的邊界上,而不是在輸入范圍的內部。因此針對各種邊界情況設計測試用例,可以查出更多的錯誤。
比如,在做三角形計算時,要輸入三角形的三個邊長:A、B和C。 我們應注意到這三個數值應當滿足
A>0、B>0、C>0、
A+B>C、A+C>B、B+C>A,才能構成三角形。但如果把六個不等式中的任何一個大于號">"錯寫成大于等于號"≥",那就不能構成三角形。問題恰出現在容易被疏忽的邊界附近。
這里所說的邊界是指,相當于輸入等價類和輸出等價類而言,稍高于其邊界值及稍低于其邊界值的一些特定情況。
使用邊界值分析方法設計測試用例,首先應確定邊界情況。應當選取正好等于,剛剛大于,或剛剛小于邊界的值做為測試數據,而不是選取等價類中的典型值或任意值做為測試數據。
3.錯誤推測法 人們也可以靠經驗和直覺推測程序中可能存在的各種錯誤,從而有針對性地編寫檢查這些錯誤的例子。這就是錯誤推測法。 錯誤推測法的基本想法是:列舉出程序中所有可能有的錯誤和容易發生錯誤的特殊情況,根據它們選擇測試用例。 4.因果圖
因果圖的適用范圍
如果在測試時必須考慮輸入條件的各種組合,可使用一種適合于描述對于多種條件的組合,相應產生多個動作的形式來設計測試用例,這就需要利用因果圖。
因果圖方法最終生成的就是判定表。它適合于檢查程序輸入條件的各種組合情況。
(1) 分析軟件規格說明描述中,哪些是原因 (即輸入條件或輸入條件的等價類),哪些是結果 (即輸出條件),并給每個原因和結果賦予一個標識符。
(2) 分析軟件規格說明描述中的語義,找出原因與結果之間,原因與原因之間對應的是什么關系? 根據這些關系,畫出因果圖。
(3) 由于語法或環境限制,有些原因與原因之間,原因與結果之間的組合情況不可能出現。為表明這些特殊情況,在因果圖上用一些記號標明約束或限制條件。
(4) 把因果圖轉換成判定表。
(5) 把判定表的每一列拿出來作為依據,設計測試用例。
白盒測試指的是把盒子蓋打開,去研究里面的源代碼和程序結構。
白盒測試也稱結構測試或邏輯驅動測試,它是知道產品內部工作過程,可通過測試來檢測產品內部動作是否按照規格說明書的規定正常進行,按照程序內部的結構測試程序,檢驗程序中的每條通路是否都有能按預定要求正確工作,而不顧它的功能。
使用被測單元內部如何工作的信息,允許測試人員對程序內部邏輯結構及有關信息來設計和選擇測試用例,對程序的邏輯路徑進行測試;谝粋應用代碼的內部邏輯知識,測試是基于覆蓋全部代碼、分支、路徑、條件。
白盒測試的主要方法: 邏輯驅動測試
基本路徑測試
主要用于軟件驗證。
使用程序設計的控制結構導出測試用例。
邏輯驅動測試:
主要是測試覆蓋率,以程序內在邏輯結構為基礎的測試。包括以下6種類型: 語句覆蓋 判斷覆蓋 條件覆蓋
判定-條件覆蓋
條件組合覆蓋
路徑覆蓋
白盒測試的主要目的 保證一個模塊中的所有獨立路徑至少被執行一次;
對所有的邏輯值均需要測試真、假兩個分支;
在上下邊界及可操作范圍內運行所有循環;
檢查內部數據結構以確保其有效性
白盒測試的實施方案
在開發階段
要保證產品的質量,產品的生產過程應該遵循一定的行業標準。軟件產品也是同樣,沒有標準可依自然談不上質量的好壞。所有關心軟件開發質量的組織、單位,都要定義或了解軟件的質量標準、模型。其好處是保證公司實踐的均勻性,產品的可維護性、可靠性以及可移植性等。
在測試階段
與軟件產品的開發過程一樣,測試過程也需要有一定的準則,來指導、度量、評價軟件測試過程的質量。
定義測試準則
為控制測試的有效性以及完成程度,必須定義準則和策略,以判斷何時結束測試階段。準則必須是客觀的,可量化的元素,而不能是經驗或感覺。
根據應用的準則和項目相關的約束,項目領導可以定義使用的度量方法,和要達到的覆蓋率。
度量測試的有效性、完整性
對每個測試的測試覆蓋信息和累計信息,用圖形方式顯示覆蓋比率,并根據測試運行情況實時更新,隨時顯示新的測試所反映的測試覆蓋情況。
允許所有的測試運行依據其有效性進行管理,用戶可以減少不適用于非回歸測試的測試的過程。
概念:
1.語句覆蓋:語句覆蓋就是設計若干個測試用例,運行被測試程序,使得每一條可執行語句至少執行一次;
2.判定覆蓋(也稱為分支覆蓋):設計若干個測試用例,運行所測程序,使程序中每個判斷的取真分支和取假分支至少執行一次;
3.條件覆蓋:設計足夠多的測試用例,運行所測程序,使程序中每個判斷的每個條件的每個可能取值至少執行一次;
4.判定-條件覆蓋:設計足夠多的測試用例,運行所測程序,使程序中每個判斷的每個條件的所有可能取值至少執行一次,并且每個可能的判斷結果也至少執行一次,換句話說,即是要求各個判斷的所有可能的條件取值組合至少執行一次;
5.條件組合測試:設計足夠多的測試用例,運行所測程序,使程序中每個判斷的所有可能的條件取值組合至少執行一次;
6.路徑測試:設計足夠多的測試用例,運行所測程序,要覆蓋程序中所有可能的路徑。
靜態測試
是指不實際運行被測軟件,而只是靜態的檢查程序代碼、界面或文檔中可能存在的錯誤的過程。
其中包括代碼測試、界面測試和文檔測試3個方面。
對于代碼測試,主要測試代碼是否符合相應的標準和規范。
對于界面測試,主要測試軟件的實際界面與需求中的說明是否相符。
對于文檔測試,主要測試用戶手冊和需求說明是否符合用戶的實際要求。
動態測試
是指實際運行被測程序,輸入相應的測試數據,檢查實際輸出結果和預期結果是否相符的過程。
所以,我們判斷一個測試屬于動態還是靜態測試,唯一的標準就是看是否運行程序。
單元測試
文章來源于領測軟件測試網 http://www.k11sc111.com/