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