版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
軟測(cè)基礎(chǔ)理論軟件測(cè)試方法內(nèi)容復(fù)習(xí)軟件的定義軟件測(cè)試的定義軟件的生命周期軟件測(cè)試的生命周期一條缺陷報(bào)告包括哪些主要內(nèi)容一條用例包括哪些主要內(nèi)容測(cè)試計(jì)劃包括哪些內(nèi)容V模型缺陷的管理流程軟件測(cè)試的相關(guān)原則軟件測(cè)試的分類(lèi)軟件測(cè)試可按照不同的角度,有不同的分類(lèi)方法。按照開(kāi)發(fā)階段劃分——單元測(cè)試、集成測(cè)試、確認(rèn)測(cè)試、系統(tǒng)測(cè)試和驗(yàn)收測(cè)試。按照測(cè)試實(shí)施組織劃分——開(kāi)發(fā)方測(cè)試、用戶(hù)測(cè)試和第三方測(cè)試。按照測(cè)試技術(shù)劃分——白盒測(cè)試、黑盒測(cè)試和灰盒測(cè)試。按照測(cè)試方式劃分——靜態(tài)測(cè)試和動(dòng)態(tài)測(cè)試、手工測(cè)試、自動(dòng)測(cè)試。按照測(cè)試目的劃分——功能測(cè)試、健壯性測(cè)試、性能測(cè)試、壓力測(cè)試、用戶(hù)界面測(cè)試、可靠性測(cè)試、安全性測(cè)試、文檔測(cè)試、恢復(fù)測(cè)試、兼容性測(cè)試等、冒煙測(cè)試、回歸測(cè)試、安裝測(cè)試。2.1軟件測(cè)試方法概述2.2靜態(tài)測(cè)試與動(dòng)態(tài)測(cè)試2.3黑盒測(cè)試2.4白盒測(cè)試2.5黑盒測(cè)試與白盒測(cè)試比較小結(jié)第2章軟件測(cè)試方法軟件測(cè)試的策略和方法靜態(tài)測(cè)試方法動(dòng)態(tài)測(cè)試方法人工測(cè)試方法計(jì)算機(jī)輔助靜態(tài)分析方法白盒測(cè)試方法黑盒測(cè)試方法2.1軟件測(cè)試方法概述1.從是否需要執(zhí)行被測(cè)軟件的角度分類(lèi)靜態(tài)測(cè)試——通過(guò)對(duì)被測(cè)程序的靜態(tài)審查,發(fā)現(xiàn)代碼中潛在的錯(cuò)誤。它一般用人工方式脫機(jī)完成,故亦稱(chēng)人工測(cè)試或代碼評(píng)審(CodeReview);也可借助于靜態(tài)分析器在機(jī)器上以自動(dòng)方式進(jìn)行檢查,但不要求程序本身在機(jī)器上運(yùn)行。動(dòng)態(tài)測(cè)試——使用和運(yùn)行被測(cè)軟件,通常意義上的測(cè)試。動(dòng)態(tài)測(cè)試的對(duì)象必須是能夠由計(jì)算機(jī)真正運(yùn)行的被測(cè)試的程序,它包含黑盒測(cè)試和白盒測(cè)試。
2.從軟件測(cè)試用例設(shè)計(jì)方法的角度分類(lèi)黑盒測(cè)試——從用戶(hù)角度出發(fā)的測(cè)試,又稱(chēng)為功能測(cè)試、數(shù)據(jù)驅(qū)動(dòng)測(cè)試和基于規(guī)格說(shuō)明的測(cè)試。
把被測(cè)試程序當(dāng)作一個(gè)黑盒,忽略程序內(nèi)部的結(jié)構(gòu)的特性,測(cè)試者在只知道該程序輸入和輸出之間的關(guān)系或程序功能的情況下,依靠能夠反映這一關(guān)系和程序功能需求規(guī)格的說(shuō)明書(shū),來(lái)確定測(cè)試用例和推斷測(cè)試結(jié)果的正確性。白盒測(cè)試——基于產(chǎn)品的內(nèi)部結(jié)構(gòu)來(lái)進(jìn)行測(cè)試,又稱(chēng)為結(jié)構(gòu)測(cè)試,邏輯驅(qū)動(dòng)測(cè)試或基于程序的測(cè)試。主要檢查內(nèi)部操作是否按規(guī)定執(zhí)行,軟件各個(gè)部分功能是否得到充分利用,即根據(jù)被測(cè)程序的內(nèi)部結(jié)構(gòu)設(shè)計(jì)測(cè)試用例,測(cè)試者需要預(yù)先了解被測(cè)試程序的結(jié)構(gòu)。3.從軟件測(cè)試的策略和過(guò)程的角度分類(lèi)。單元測(cè)試——針對(duì)每個(gè)單元的測(cè)試,它確保每個(gè)模塊能正常工作,主要采用白盒測(cè)試方法,用以發(fā)現(xiàn)內(nèi)部錯(cuò)誤。集成測(cè)試——對(duì)已測(cè)試過(guò)的模塊進(jìn)行組裝后的測(cè)試,主要檢驗(yàn)與軟件設(shè)計(jì)相關(guān)的程序結(jié)構(gòu)問(wèn)題。主要采用黑盒測(cè)試和白盒測(cè)試兩種方法,來(lái)驗(yàn)證多個(gè)單元模塊集成到一起后是否能夠協(xié)調(diào)工作。確認(rèn)測(cè)試——檢驗(yàn)所開(kāi)發(fā)的軟件能否滿(mǎn)足所有功能和性能需求的最后手段,通常采用黑盒測(cè)試方法。系統(tǒng)測(cè)試——是檢測(cè)被測(cè)軟件與系統(tǒng)的其他部分的協(xié)調(diào)性,通常采用黑盒測(cè)試方法。驗(yàn)收測(cè)試——是軟件產(chǎn)品質(zhì)量的最后一關(guān),主要從用戶(hù)的角度著手,其參與者主要是用戶(hù)和少量的程序開(kāi)發(fā)人員,通常采用黑盒測(cè)試方法。2.1軟件測(cè)試方法概述2.2靜態(tài)測(cè)試與動(dòng)態(tài)測(cè)試2.3黑盒測(cè)試2.4白盒測(cè)試2.5黑盒測(cè)試與白盒測(cè)試比較小結(jié)第2章軟件測(cè)試方法根據(jù)程序是否運(yùn)行而分。2.2靜態(tài)測(cè)試與動(dòng)態(tài)測(cè)試靜態(tài)方法的主要特征是對(duì)軟件進(jìn)行分析、檢查和審閱,不實(shí)際運(yùn)行被測(cè)試的軟件。因此,靜態(tài)方法常稱(chēng)為“分析”,靜態(tài)分析是對(duì)被測(cè)程序進(jìn)行特性分析的一些方法的總稱(chēng)。所謂靜態(tài)分析,就是不需要執(zhí)行所測(cè)試的程序,而只是通過(guò)掃描程序正文,對(duì)程序的數(shù)據(jù)流和控制流等信息進(jìn)行分析,找出系統(tǒng)的缺陷,得出測(cè)試報(bào)告。通過(guò)靜態(tài)測(cè)試,可找出30~70%的邏輯設(shè)計(jì)錯(cuò)誤。2.2.1靜態(tài)測(cè)試靜態(tài)測(cè)試包括:代碼檢查靜態(tài)結(jié)構(gòu)分析代碼質(zhì)量度量它可以由人工進(jìn)行,充分發(fā)揮人的邏輯思維優(yōu)勢(shì),也可以借助軟件工具自動(dòng)進(jìn)行。靜態(tài)測(cè)試的內(nèi)容:軟件配置(需求規(guī)格說(shuō)明書(shū)、軟件設(shè)計(jì)說(shuō)明書(shū)、源程序等)做檢查和審閱,包括:是否符合標(biāo)準(zhǔn)和規(guī)范;通過(guò)結(jié)構(gòu)分析、流圖分析、符號(hào)執(zhí)行指出軟件缺陷;
動(dòng)態(tài)方法是通過(guò)運(yùn)行軟件來(lái)檢驗(yàn)軟件的動(dòng)態(tài)行為和運(yùn)行結(jié)果的正確性。
動(dòng)態(tài)測(cè)試是真正運(yùn)行被測(cè)程序,在執(zhí)行過(guò)程中,通過(guò)輸入有效的測(cè)試用例,對(duì)其輸入與輸出的對(duì)應(yīng)關(guān)系進(jìn)行分析,以達(dá)到檢測(cè)的目的。兩個(gè)基本要素:被測(cè)試程序、測(cè)試數(shù)據(jù)(測(cè)試用例)2.2.2動(dòng)態(tài)測(cè)試動(dòng)態(tài)測(cè)試方法的基本步驟:選取定義域的有效值,或選取定義域外的無(wú)效值;對(duì)已選取值決定預(yù)期的結(jié)果;用選取值執(zhí)行程序;執(zhí)行結(jié)果與預(yù)期的結(jié)果相比,不吻合則說(shuō)明程序有錯(cuò)。不同的測(cè)試方法各自的目標(biāo)和側(cè)重點(diǎn)不一樣,在實(shí)際工作中要將靜態(tài)測(cè)試和動(dòng)態(tài)測(cè)試結(jié)合起來(lái),以達(dá)到更加完美的效果。在動(dòng)態(tài)測(cè)試中,又可有基于程序結(jié)構(gòu)的白盒測(cè)試(或稱(chēng)為覆蓋測(cè)試)和基于功能的黑盒測(cè)試。2.1軟件測(cè)試方法概述2.2靜態(tài)測(cè)試與動(dòng)態(tài)測(cè)試2.3黑盒測(cè)試2.4白盒測(cè)試2.5黑盒測(cè)試與白盒測(cè)試比較小結(jié)第2章軟件測(cè)試方法黑盒測(cè)試(Black-boxTesting)又稱(chēng)為功能測(cè)試、數(shù)據(jù)驅(qū)動(dòng)測(cè)試和基于規(guī)格說(shuō)明的測(cè)試。2.3.1黑盒測(cè)試方法概述2.3黑盒測(cè)試方法軟件輸入輸出“黑盒”可理解為程序或軟件裝在一個(gè)漆黑的盒子里,故盒子內(nèi)的程序內(nèi)部結(jié)構(gòu)和內(nèi)部特性對(duì)測(cè)試人員是不可見(jiàn)的,只明確要做到什么。測(cè)試人員根據(jù)軟件的需求規(guī)格說(shuō)明書(shū)設(shè)計(jì)測(cè)試用例,依靠被測(cè)程序輸入和輸出之間的關(guān)系或程序的功能設(shè)計(jì),對(duì)程序功能和程序接口進(jìn)行測(cè)試。黑盒測(cè)試是從用戶(hù)角度出發(fā)進(jìn)行的測(cè)試。很明顯,如果外部特性本身有問(wèn)題或規(guī)格說(shuō)明書(shū)的規(guī)定有誤,用黑盒測(cè)試方法是發(fā)現(xiàn)不了的。黑盒測(cè)試主要是為了發(fā)現(xiàn)以下錯(cuò)誤:是否有不正確或遺漏了的功能;在接口上,輸入能否正確地接受,能否輸出正確的結(jié)果;是否有數(shù)據(jù)結(jié)構(gòu)錯(cuò)誤或外部信息(例如數(shù)據(jù)文件)訪(fǎng)問(wèn)錯(cuò)誤;性能上是否能夠滿(mǎn)足要求;是否有初始化或終止性錯(cuò)誤。黑盒測(cè)試的優(yōu)點(diǎn):黑盒測(cè)試不考慮軟件的具體實(shí)現(xiàn)過(guò)程,當(dāng)在軟件實(shí)現(xiàn)的過(guò)程發(fā)生變化時(shí),測(cè)試用例仍然可以使用;黑盒測(cè)試用例的設(shè)計(jì)可以和軟件實(shí)現(xiàn)同時(shí)進(jìn)行,這樣能夠壓縮總的開(kāi)發(fā)時(shí)間,從而加快了軟件測(cè)試與開(kāi)發(fā)的速度。黑盒測(cè)試不僅能夠找到大多數(shù)其他測(cè)試方法無(wú)法發(fā)現(xiàn)的錯(cuò)誤,而且一些外購(gòu)軟件、參數(shù)化軟件包以及某些自動(dòng)生成的軟件,由于無(wú)法得到源程序,在一些情況下只能選擇黑盒測(cè)試。黑盒測(cè)試的局限性:從程序的界面上進(jìn)行測(cè)試,有時(shí)難以查找出錯(cuò)誤的具體原因和位置;無(wú)法發(fā)現(xiàn)需求規(guī)格說(shuō)明本身存在的問(wèn)題。典型的黑盒測(cè)試方法包括主要包括等價(jià)類(lèi)劃分法、邊界值分析法、錯(cuò)誤推測(cè)法、因果圖法、決策表表法、正交試驗(yàn)法、場(chǎng)景法等。這些方法是比較實(shí)用的,在項(xiàng)目中采用什么方法,在設(shè)計(jì)具體的測(cè)試方案時(shí)自然要針對(duì)開(kāi)發(fā)項(xiàng)目的特點(diǎn)對(duì)設(shè)計(jì)方法進(jìn)行適當(dāng)?shù)倪x擇。1.等價(jià)類(lèi)劃分法概述
等價(jià)類(lèi)劃分法是把所有可能的輸入數(shù)據(jù),即程序的輸入域劃分成若干部分(子集),然后從每一個(gè)子集中選取少數(shù)具有代表性的數(shù)據(jù)作為測(cè)試用例。2.3.2等價(jià)類(lèi)劃分法等價(jià)類(lèi)是被測(cè)程序輸入域的一個(gè)子集合,該輸入集合中的數(shù)據(jù)對(duì)于揭露程序中的錯(cuò)誤是都是等效的,它們具有等價(jià)特性,所有等價(jià)類(lèi)的并集就是整個(gè)輸入域。對(duì)某等價(jià)類(lèi)中的代表值的測(cè)試就相當(dāng)于對(duì)等價(jià)類(lèi)中所有值的測(cè)試。如果某一類(lèi)中的一個(gè)例子發(fā)現(xiàn)了錯(cuò)誤,這一等價(jià)類(lèi)中的其他例子也能發(fā)現(xiàn)同樣的錯(cuò)誤;如果某一類(lèi)中的一個(gè)例子沒(méi)有發(fā)現(xiàn)錯(cuò)誤,則這一類(lèi)中的其他例子也不會(huì)查出錯(cuò)誤。使用等價(jià)類(lèi)劃分法時(shí),應(yīng)仔細(xì)分析需求規(guī)格說(shuō)明書(shū)來(lái)劃分等價(jià)類(lèi)。軟件不能只接收合理有效的數(shù)據(jù),也要具有處理異常數(shù)據(jù)的功能,因此,等價(jià)類(lèi)又分為有效等價(jià)類(lèi)和無(wú)效等價(jià)類(lèi)。有效等價(jià)類(lèi)是指該等價(jià)類(lèi)中的輸入數(shù)據(jù)是符合需求規(guī)格說(shuō)明的。利用有效等價(jià)類(lèi)可以檢驗(yàn)程序是否滿(mǎn)足規(guī)格說(shuō)明所規(guī)定的功能和性能。無(wú)效等價(jià)類(lèi)是指該等價(jià)類(lèi)中的數(shù)據(jù)是違反需求規(guī)格說(shuō)明的。利用無(wú)效等價(jià)類(lèi)可以檢驗(yàn)程序異常情況的處理。有效等價(jià)類(lèi)和無(wú)效等價(jià)類(lèi)都是使用等價(jià)類(lèi)法時(shí)所必需的。使用等價(jià)類(lèi)劃分法設(shè)計(jì)測(cè)試用例步驟:首先必須在分析需求規(guī)格說(shuō)明的基礎(chǔ)上劃分等價(jià)類(lèi);然后建立等價(jià)類(lèi)表,列出所有劃分出的等價(jià)類(lèi);再根據(jù)已列出的等價(jià)類(lèi)表,按以下步驟確定測(cè)試用例:為每一個(gè)等價(jià)類(lèi)規(guī)定一個(gè)唯一的編號(hào);設(shè)計(jì)一個(gè)新的測(cè)試用例,使其盡可能多地覆蓋尚未被覆蓋的有效等價(jià)類(lèi),重復(fù)這個(gè)過(guò)程,直至所有的有效等價(jià)類(lèi)均被測(cè)試用例所覆蓋;設(shè)計(jì)一個(gè)新的測(cè)試用例,使其僅覆蓋一個(gè)無(wú)效等價(jià)類(lèi),重復(fù)這個(gè)過(guò)程,直至所有的無(wú)效等價(jià)類(lèi)均被測(cè)試用例所覆蓋。劃分等價(jià)類(lèi)的規(guī)則:
(1)如果輸入條件規(guī)定了取值范圍,可定義一個(gè)有效等價(jià)類(lèi)和兩個(gè)無(wú)效等價(jià)類(lèi)。例如,
輸入值是學(xué)生成績(jī),范圍是0~1000100
有效等價(jià)類(lèi)0≤成績(jī)≤100無(wú)效等價(jià)類(lèi)成績(jī)>100無(wú)效等價(jià)類(lèi)
成績(jī)<0(2)如果輸入條件代表集合的某個(gè)元素,則可定義一個(gè)有效等價(jià)類(lèi)和一個(gè)無(wú)效等價(jià)類(lèi)。例如,程序要進(jìn)行平方根函數(shù)的運(yùn)算,則“≥0”的數(shù)為有效等價(jià)類(lèi),“<0”的數(shù)為無(wú)效等價(jià)類(lèi)。(3)如規(guī)定了輸入數(shù)據(jù)的一組值,且程序?qū)Σ煌斎胫底霾煌幚?,則每個(gè)允許的輸入值是一個(gè)有效等價(jià)類(lèi),并有一個(gè)無(wú)效等價(jià)類(lèi)(所有不允許的輸入值的集合)。例如,說(shuō)明學(xué)歷輸入條件可為:專(zhuān)科、本科、碩士、博士四種之一,則分別取這四個(gè)值作為四個(gè)有效等價(jià)類(lèi),把四種學(xué)歷之外的任何學(xué)歷作為無(wú)效等價(jià)類(lèi)。以三角形問(wèn)題為例,輸入條件是:三個(gè)數(shù),分別作為三角形的三條邊都是整數(shù)取值范圍在1~100之間認(rèn)真分析上述的輸入條件,可以得出相關(guān)的等價(jià)類(lèi)表(包括有效等價(jià)類(lèi)和無(wú)效等價(jià)類(lèi)),如下表所示。2.常見(jiàn)等價(jià)類(lèi)劃分形式(1)標(biāo)準(zhǔn)等價(jià)類(lèi)測(cè)試標(biāo)準(zhǔn)等價(jià)類(lèi)測(cè)試不考慮無(wú)效數(shù)據(jù)值,測(cè)試用例使用每個(gè)等價(jià)類(lèi)中的一個(gè)值。通常,標(biāo)準(zhǔn)等價(jià)類(lèi)測(cè)試用例的數(shù)量和最大等價(jià)類(lèi)中元素的數(shù)目相等。(2)健壯等價(jià)類(lèi)測(cè)試健壯等價(jià)類(lèi)測(cè)試主要考慮了無(wú)效等價(jià)類(lèi)。對(duì)有效輸入,測(cè)試用例從每個(gè)有效等價(jià)類(lèi)中取一個(gè)值;對(duì)無(wú)效輸入,一個(gè)測(cè)試用例有一個(gè)無(wú)效值,其他值均取有效值。健壯等價(jià)類(lèi)測(cè)試存在兩個(gè)問(wèn)題:需要花費(fèi)精力定義無(wú)效測(cè)試用例的期望輸出;對(duì)強(qiáng)類(lèi)型的語(yǔ)言沒(méi)有必要考慮無(wú)效的輸入
。(3)對(duì)等區(qū)間劃分它將被測(cè)對(duì)象的輸入/輸出劃分成一些區(qū)間,被測(cè)軟件對(duì)一個(gè)特定區(qū)間的任何值都是等價(jià)的。形成測(cè)試區(qū)間的數(shù)據(jù)不只是函數(shù)/過(guò)程的參數(shù),也可以是程序可以訪(fǎng)問(wèn)的全局變量、系統(tǒng)資源等,這些變量或資源可以是以時(shí)間形式存在的數(shù)據(jù),或以狀態(tài)形式存在的輸入/輸出序列。對(duì)等區(qū)間劃分假定位于單個(gè)區(qū)間的所有值對(duì)測(cè)試都是對(duì)等的,應(yīng)為每個(gè)區(qū)間的一個(gè)值設(shè)計(jì)一個(gè)測(cè)試用例?!纠磕硤?bào)表處理系統(tǒng)要求用戶(hù)輸入處理報(bào)表的日期,日期限制在2003年1月至2008年12月,即系統(tǒng)只能對(duì)該段期間內(nèi)的報(bào)表進(jìn)行處理,如日期不在此范圍內(nèi),則顯示輸入錯(cuò)誤信息。系統(tǒng)日期規(guī)定由年、月的6位數(shù)字字符組成,前四位代表年,后兩位代表月。如何用等價(jià)類(lèi)劃分法設(shè)計(jì)測(cè)試用例,來(lái)測(cè)試程序的日期檢查功能?第一步:等價(jià)類(lèi)劃分“報(bào)表日期”輸入條件的等價(jià)類(lèi)表第二步:為有效等價(jià)類(lèi)設(shè)計(jì)測(cè)試用例對(duì)表中編號(hào)為1,2,3的3個(gè)有效等價(jià)類(lèi)用一個(gè)測(cè)試用例覆蓋:(1)6位數(shù)字字符(2)年在2003~2008之間(3)月在1~12之間第三步:為每一個(gè)無(wú)效等價(jià)類(lèi)設(shè)至少設(shè)計(jì)一個(gè)測(cè)試用例不能出現(xiàn)相同的測(cè)試用例1.邊界值分析法概述大量的測(cè)試實(shí)踐表明,很多錯(cuò)誤是發(fā)生在輸入或輸出數(shù)據(jù)范圍的邊界上。因而針對(duì)各種邊界情況設(shè)計(jì)測(cè)試用例,有利于揭露程序中的錯(cuò)誤。
如判斷三角形類(lèi)型的例子中,若此3條邊能構(gòu)成一個(gè)普通的三角形,必須滿(mǎn)足A>0、B>0、C>0、A+B>C、B+C>A、A+C>B,對(duì)于等價(jià)類(lèi)A>0,其邊界是A=0,可針對(duì)此邊界設(shè)計(jì)測(cè)試用例,以驗(yàn)證程序在A=0時(shí)的輸出是否正確,若A=0時(shí)程序的輸出仍為普通三角形,則說(shuō)明程序中存在錯(cuò)誤。2.3.3邊界值分析法邊界值分析法與等價(jià)類(lèi)劃分法區(qū)別:(1)邊界值分析不是從某等價(jià)類(lèi)中隨便挑一個(gè)作為代表,而是使這個(gè)等價(jià)類(lèi)的每個(gè)邊界都要作為測(cè)試條件。著重測(cè)試的邊界情況(2)邊界值分析不僅考慮輸入條件,還要考慮輸出空間產(chǎn)生的測(cè)試情況邊界值分析法(BVA)是一種對(duì)等價(jià)類(lèi)劃分法的補(bǔ)充。使用邊界值分析法時(shí),應(yīng)針對(duì)等于、剛好大于或剛好小于各輸入等價(jià)類(lèi)和輸出等價(jià)類(lèi)邊界值的情況設(shè)計(jì)測(cè)試用例。如果在懸崖峭壁邊可以自信地安全行走,平地就不在話(huà)下。
如果軟件在能力達(dá)到極限時(shí)能夠運(yùn)行,那么在正常情況下就不會(huì)出什么問(wèn)題。軟件邊界與懸崖很類(lèi)似應(yīng)用邊界值分析法設(shè)計(jì)測(cè)試用例應(yīng)遵循的原則:如果輸入條件規(guī)定了值的范圍,則應(yīng)該選取剛達(dá)到這個(gè)范圍的邊界值,以及剛剛超過(guò)這個(gè)范圍邊界的值。如果輸入條件規(guī)定了值的個(gè)數(shù),則用最大個(gè)數(shù)、最小個(gè)數(shù)、比最小個(gè)數(shù)少1、比最大個(gè)數(shù)多1的數(shù)。根據(jù)規(guī)格說(shuō)明的每一個(gè)輸出條件,分別使用以上兩個(gè)原則。如果程序的規(guī)格說(shuō)明給出的輸入域或者輸出域是有序集合(如有序表、順序文件等),則應(yīng)選取集合的第一個(gè)元素和最后一個(gè)元素。如果程序中使用了一個(gè)內(nèi)部數(shù)據(jù)結(jié)構(gòu),則應(yīng)當(dāng)選擇這個(gè)內(nèi)部數(shù)據(jù)結(jié)構(gòu)的邊界值作為測(cè)試用例。分析規(guī)格說(shuō)明,找出其他可能的邊界條件。邊界值分析法是對(duì)輸入的邊界值進(jìn)行測(cè)試。在測(cè)試用例設(shè)計(jì)中,需要對(duì)輸入的條件進(jìn)行分析并且找出其中的邊界值條件,應(yīng)當(dāng)選取正好等于、剛剛大于或剛剛小于邊界的值作為測(cè)試數(shù)據(jù),而不是選取等價(jià)類(lèi)中的典型值或任意值作為測(cè)試數(shù)據(jù)。2.邊界條件與次邊界條件提出邊界條件時(shí)應(yīng)注意:測(cè)試臨近邊界的合法數(shù)據(jù),以及剛超過(guò)邊界的非法數(shù)據(jù)。越界測(cè)試:對(duì)于最大值簡(jiǎn)單地加1或很小的數(shù)對(duì)于最小值簡(jiǎn)單地減1或很小的數(shù)在多數(shù)情況下,邊界值條件是基于應(yīng)用程序的功能設(shè)計(jì)而需要考慮的因素,可以從軟件的規(guī)格說(shuō)明或常識(shí)中得到,也是最終用戶(hù)通常最容易發(fā)現(xiàn)問(wèn)題的。然而,在測(cè)試用例設(shè)計(jì)過(guò)程中,某些邊界值條件是不需要呈現(xiàn)給用戶(hù)的,或者說(shuō)用戶(hù)是很難注意到這些問(wèn)題,但這些邊界條件同時(shí)確實(shí)屬于檢驗(yàn)范疇內(nèi)的邊界條件,稱(chēng)為內(nèi)部邊界值條件或次邊界值條件。主要有下面幾種:如果軟件測(cè)試問(wèn)題包含確定的邊界,那么數(shù)據(jù)類(lèi)型可能是:數(shù)值字符位置數(shù)量速度地址尺寸……還要考慮數(shù)據(jù)類(lèi)型的特征:第一個(gè)/最后一個(gè)最小值/最大值開(kāi)始/完成空/滿(mǎn)最慢/最快相鄰/最遠(yuǎn)超過(guò)/在內(nèi)……位、字節(jié)、字、千、兆、吉、太ASCII和Unicode3.邊界值分析法測(cè)試用例
以三角形問(wèn)題為例,要求輸入三個(gè)整數(shù)a、b、c,分別作為三角形的三條邊,取值范圍在1~100之間,判斷由三條邊構(gòu)成的三角形類(lèi)型為等邊三角形、等腰三角形、一般三角形(包括直角三角形)以及非三角形。如表2-9所示給出了邊界值分析測(cè)試用例。表2-9邊界值分析測(cè)試用例“報(bào)表日期”邊界值分析法測(cè)試用例2.3.4決策表法1.決策表法概述在一些數(shù)據(jù)處理問(wèn)題中,某些操作是否實(shí)施依賴(lài)于多個(gè)邏輯條件的取值。在這些邏輯條件取值的組合所構(gòu)成的多種情況下,分別執(zhí)行不同的操作。決策表是分析和表達(dá)多個(gè)邏輯條件下執(zhí)行不同操作情況的工具,能表示輸入條件的組合以及與每一輸入組合相對(duì)應(yīng)的動(dòng)作組合??梢园褟?fù)雜邏輯關(guān)系和多種條件組合的情況表達(dá)的比較明確。決策表通常由四部分組成條件樁條件項(xiàng)動(dòng)作樁動(dòng)作項(xiàng)規(guī)則列出了問(wèn)題的所有可能的條件,條件的先后次序無(wú)關(guān)緊要。列出了問(wèn)題規(guī)定的可能采取的操作,這些操作的排列順序沒(méi)有約束。針對(duì)條件樁給出的條件列出所有的條件取值組合。有若干個(gè)條件項(xiàng),每一條件項(xiàng)為一個(gè)條件取值組合。與條件項(xiàng)緊密相關(guān),列出在條件項(xiàng)的各組取值情況下應(yīng)該采取的動(dòng)作。動(dòng)作項(xiàng)的數(shù)目與條件項(xiàng)相等。一種條件取值組合和與其對(duì)應(yīng)的動(dòng)作組合(即判定表中貫穿條件項(xiàng)和動(dòng)作項(xiàng)的一列)構(gòu)成了判定表中的一個(gè)規(guī)則。條件取值組合的數(shù)目就是規(guī)則的數(shù)目。根據(jù)軟件規(guī)格說(shuō)明,建立決策表的步驟如下:確定規(guī)則的個(gè)數(shù)。假如有n個(gè)條件,每個(gè)條件有兩個(gè)取值(由于每個(gè)原因可取0或1),故有2n種規(guī)則;列出所有的條件樁和動(dòng)作樁;填入條件項(xiàng);填入動(dòng)作項(xiàng),得到初始決策表;化簡(jiǎn)。合并相似規(guī)則(相同動(dòng)作)。在簡(jiǎn)化并得到最終決策表后,只要選擇適當(dāng)?shù)妮斎?,使決策表每一列的輸入條件得到滿(mǎn)足即可生成測(cè)試用例。以下列問(wèn)題為例給出構(gòu)造決策表的具體過(guò)程。如果某產(chǎn)品銷(xiāo)售好并且?guī)齑娴?,則增加該產(chǎn)品的生產(chǎn);如果該產(chǎn)品銷(xiāo)售好,但庫(kù)存量不低,則繼續(xù)生產(chǎn);若該產(chǎn)品銷(xiāo)售不好,但庫(kù)存量低,則繼續(xù)生產(chǎn);若該產(chǎn)品銷(xiāo)售不好,且?guī)齑媪坎坏?,則停止生產(chǎn)。確定規(guī)則的個(gè)數(shù)。有2個(gè)條件(銷(xiāo)售、庫(kù)存),故有22=4種規(guī)則。列出所有的條件樁和動(dòng)作樁。填入條件項(xiàng)。填入動(dòng)作項(xiàng),得到初始決策表,如下表所示。2.決策表法的應(yīng)用決策表能夠?qū)?fù)雜的問(wèn)題按照各種可能的情況全部列舉出來(lái),因此能夠設(shè)計(jì)出完整的測(cè)試用例集合。條件——輸入動(dòng)作——輸出分析如下:確定規(guī)則的個(gè)數(shù)。三角形問(wèn)題的決策表有4個(gè)條件,每個(gè)條件可以取兩個(gè)值(真值和假值),所以應(yīng)該有24=16種規(guī)則。列出所有條件樁和動(dòng)作樁。以三角形問(wèn)題為例,要求輸入三個(gè)整數(shù)a、b、c,分別作為三角形的三條邊,取值范圍在1~100之間,判斷由三條邊構(gòu)成的三角形類(lèi)型為等邊三角形、等腰三角形、一般三角形(包括直角三角形)以及非三角形。填寫(xiě)條件項(xiàng)。填寫(xiě)動(dòng)作項(xiàng),從而得到初始決策表。簡(jiǎn)化決策表。合并相似規(guī)則后得到三角形問(wèn)題的簡(jiǎn)化決策表。根據(jù)決簡(jiǎn)化后的決策表,可設(shè)計(jì)如下測(cè)試用例:2.3.5因果圖法1.因果圖法等價(jià)類(lèi)劃分法、邊界值分析法在對(duì)輸入條件的考慮中,并未重視輸入條件的組合和各個(gè)輸入條件之間的相互制約關(guān)系。當(dāng)輸入存在若干種可能的組合時(shí),相應(yīng)能產(chǎn)生多個(gè)動(dòng)作,因此,必須對(duì)這些組合加以考慮,測(cè)試程序在某種輸入組合的情況下能否完成規(guī)格說(shuō)明書(shū)中預(yù)先規(guī)定的功能。因果圖是一種描述輸入條件的組合及每種組合對(duì)應(yīng)的輸出的圖形化工具??稍谝蚬麍D的基礎(chǔ)上設(shè)計(jì)測(cè)試用例。它適合于檢查程序輸入條件的各種情況的組合。在因果圖中使用4種符號(hào)分別表示4種因果關(guān)系。用直線(xiàn)連接左右節(jié)點(diǎn),其中左節(jié)點(diǎn)Ci表示輸入狀態(tài)(或稱(chēng)原因),右節(jié)點(diǎn)ei表示輸出狀態(tài)(或稱(chēng)結(jié)果)。Ci和ei都可取值0或1,0表示某狀態(tài)不出現(xiàn),1表示某狀態(tài)出現(xiàn)。表示恒等。若C1是1,則e1也是1;若C1是0,則e1為0。表示非。若C1是1,則e1是0;若C1是0,則e1為1。表示或。若C1或C2或C3是1,則e1是1;若C1、C2、C3全為0,則e1為0。表示與。若C1和C2都是1,則e1是1;只要C1、C2、C3中有一個(gè)為0,則e1為0。在實(shí)際問(wèn)題中,輸入狀態(tài)相互之間還可能存在某些依賴(lài)關(guān)系,我們稱(chēng)之為約束。例如,某些輸入條件不可能同時(shí)出現(xiàn)。輸出狀態(tài)之間也往往存在約束,在因果圖中,以特定的符號(hào)標(biāo)明這些約束。表示E約束(異)。a和b中最多有一個(gè)可能為1,即a和b不能同時(shí)為1。表示I約束(或)。a、b和c中至少有一個(gè)必須是1,即a、b和c不能同時(shí)為0。表示O約束(唯一)。a和b中必須有一個(gè)且僅有一個(gè)為1。表示R約束(要求)。a是1時(shí),b必須是1,即a是1時(shí),b不能是0。對(duì)輸出條件的約束只有M約束。M約束(強(qiáng)制):若結(jié)果a是1,則結(jié)果b強(qiáng)制為0。因果圖法最終要生成決策表。因果圖法生成測(cè)試用例的步驟:分析出等價(jià)類(lèi)輸入與輸入輸入與輸出軟件規(guī)格說(shuō)明書(shū)將對(duì)應(yīng)的輸入與輸入之間,輸入與輸出之間的關(guān)系連接起來(lái),并且將其中不可能的組合情況標(biāo)注成約束或者限制條件,形成因果圖。將決策表的每一列作為依據(jù),設(shè)計(jì)測(cè)試用例。2.因果圖法測(cè)試用例某軟件規(guī)格說(shuō)明中包含這樣的要求:輸入的第一個(gè)字符必須是A或B,第二個(gè)字符必須是一個(gè)數(shù)字,在此情況下進(jìn)行文件的修改;但如果第一個(gè)字符不正確,則給出信息L;如果第二個(gè)字符不是數(shù)字,則給出信息M。(1)分析程序的規(guī)格說(shuō)明,列出原因和結(jié)果。原因:C1----第一個(gè)字符是AC2----第一個(gè)字符是BC3----第二個(gè)字符是一個(gè)數(shù)字結(jié)果:e1----給出信息L
e2----修改文件
e3----給出信息M(2)將原因和結(jié)果之間的因果關(guān)系用邏輯符號(hào)連接起來(lái),得到因果圖。因?yàn)镃1和C2不可能同時(shí)為1,即第一個(gè)字符不可能既是A又是B,在因果圖上可對(duì)其施加E約束,得到具有約束的因果圖。(3)將因果圖轉(zhuǎn)換成決策表。(4)設(shè)計(jì)測(cè)試用例。因?yàn)镃1和C2不可能同時(shí)為1,所以排除決策表中同時(shí)為1的情況,可以設(shè)計(jì)出6個(gè)測(cè)試用例。黑盒測(cè)試法除此之外,還有錯(cuò)誤推測(cè)法、正交試驗(yàn)法、場(chǎng)景法、功能圖法等。錯(cuò)誤推測(cè)法:根據(jù)經(jīng)驗(yàn)、直覺(jué)和預(yù)感來(lái)進(jìn)行測(cè)試。缺省值、空白、空值、零值、無(wú)輸入條件正交試驗(yàn)設(shè)計(jì)方法:從大量的試驗(yàn)數(shù)據(jù)中挑選適量的、有代表性的數(shù)據(jù),從而合理安排測(cè)試的一種試驗(yàn)設(shè)計(jì)方法。它能縮減測(cè)試用例數(shù)目。場(chǎng)景法:運(yùn)用場(chǎng)景來(lái)對(duì)系統(tǒng)的功能點(diǎn)或業(yè)務(wù)流程的描述,從而提高測(cè)試效果。一般包含基本流和備用流,從一個(gè)流程開(kāi)始,通過(guò)描述經(jīng)過(guò)的路徑來(lái)確定的過(guò)程,經(jīng)過(guò)遍歷所有的基本流和備用流來(lái)完成整個(gè)場(chǎng)景。2.3.6各種黑盒測(cè)試方法的選擇在測(cè)試實(shí)施之前,必須確定將要采用的黑盒測(cè)試策略和方法,并以此為依據(jù)制定詳細(xì)的測(cè)試方案。確定黑盒測(cè)試方法時(shí)應(yīng)該遵循以下原則:根據(jù)程序的重要性和一旦發(fā)生故障將造成的損失程度來(lái)確定測(cè)試等級(jí)和測(cè)試重點(diǎn)。認(rèn)真選擇測(cè)試策略,以便能盡可能少地使用測(cè)試用例,發(fā)現(xiàn)盡可能多的程序錯(cuò)誤。測(cè)試需要找到一個(gè)平衡點(diǎn)。黑盒測(cè)試方法的綜合使用策略:(1)首先進(jìn)行等價(jià)類(lèi)劃分,包括輸入條件和輸出條件的等價(jià)劃分,將無(wú)限測(cè)試變成有限測(cè)試。等價(jià)類(lèi)劃分也常是邊界值方法的基礎(chǔ)。(2)在任何情況下都必須使用邊界值分析方法。經(jīng)驗(yàn)表明用這種方法設(shè)計(jì)出的測(cè)試用例發(fā)現(xiàn)程序錯(cuò)誤的能力最強(qiáng)。(3)測(cè)試人員可以根據(jù)經(jīng)驗(yàn)用錯(cuò)誤推測(cè)法追加一些測(cè)試用例。(4)如果程序的功能說(shuō)明中含有輸入條件的組合情況,則可選用因果圖法和判定表法。(5)對(duì)于參數(shù)配置類(lèi)的軟件,要用正交試驗(yàn)法選擇較少的組合方式達(dá)到最佳效果。(6)對(duì)于業(yè)務(wù)流清晰的系統(tǒng),可以利用場(chǎng)景法。2.1軟件測(cè)試方法概述2.2靜態(tài)測(cè)試與動(dòng)態(tài)測(cè)試2.3黑盒測(cè)試2.4白盒測(cè)試2.5黑盒測(cè)試與白盒測(cè)試比較小結(jié)第2章軟件測(cè)試方法2.4白盒測(cè)試白盒測(cè)試也稱(chēng)作結(jié)構(gòu)測(cè)試、邏輯驅(qū)動(dòng)測(cè)試、開(kāi)盒測(cè)試、玻璃盒測(cè)試、基于覆蓋的測(cè)試。“白盒”將程序形象地比喻為放在一個(gè)透明的盒子里,故測(cè)試人員了解被測(cè)程序的內(nèi)部結(jié)構(gòu)。測(cè)試人員利用程序的內(nèi)部邏輯結(jié)構(gòu)和相關(guān)信息設(shè)計(jì)測(cè)試用例,對(duì)程序的內(nèi)部結(jié)構(gòu)和每條路徑進(jìn)行測(cè)試,力求提高測(cè)試覆蓋率;檢驗(yàn)內(nèi)部動(dòng)作是否按照規(guī)格說(shuō)明書(shū)的規(guī)定正常進(jìn)行。例如:一個(gè)執(zhí)行20次的循環(huán)的小程序。包含的不同執(zhí)行路徑數(shù)達(dá)520條,對(duì)每一條路徑進(jìn)行測(cè)試需要1毫秒,假定一年工作365×24小時(shí),要想把所有路徑測(cè)試完,需3170年。白盒方法和黑盒方法一樣,也不能做到窮舉測(cè)試。對(duì)一個(gè)具有多重選擇和循環(huán)嵌套的程序,不同的路徑數(shù)目可能是天文數(shù)字。所以,當(dāng)程序中有循環(huán)時(shí),覆蓋每條路徑是不可能的,要設(shè)計(jì)出覆蓋程度較高的或覆蓋最有代表性的路徑的測(cè)試用例。在白盒測(cè)試中,測(cè)試人員必須在仔細(xì)研究程序的內(nèi)部結(jié)構(gòu)的基礎(chǔ)上,從數(shù)量極大的可用測(cè)試用例中精心挑選盡可能少的測(cè)試用例,來(lái)覆蓋程序的內(nèi)部結(jié)構(gòu)。白盒測(cè)試的主要方法有邏輯覆蓋、基本路徑測(cè)試等,主要用于軟件驗(yàn)證。白盒測(cè)試方法的分類(lèi):靜態(tài)測(cè)試方法代碼檢查法、靜態(tài)結(jié)構(gòu)分析法、代碼質(zhì)量度量法動(dòng)態(tài)測(cè)試方法邏輯覆蓋法、基本路徑測(cè)試法、控制結(jié)構(gòu)測(cè)試、程序插裝等主要檢查代碼和設(shè)計(jì)的一致性,代碼是否遵循標(biāo)準(zhǔn),代碼的可讀性,代碼的邏輯正確性,代碼結(jié)構(gòu)的合理性等。代碼檢查應(yīng)在編譯和動(dòng)態(tài)測(cè)試之前進(jìn)行,并且應(yīng)盡早進(jìn)行。包括桌面檢查、代碼審查和走查等。主要以圖形的方式表現(xiàn)程序的內(nèi)部結(jié)構(gòu),供測(cè)試人員分析。通過(guò)使用測(cè)試工具分析程序源代碼的系統(tǒng)結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)接口、內(nèi)部控制邏輯等內(nèi)部結(jié)構(gòu),生成函數(shù)調(diào)用關(guān)系圖、模塊控制流圖、內(nèi)部文件調(diào)用關(guān)系圖、子程序表、宏和函數(shù)參數(shù)表等各類(lèi)圖形圖表,以清晰地表示程序的內(nèi)部結(jié)構(gòu),供測(cè)試人員對(duì)其進(jìn)行分析,進(jìn)而查找程序中的錯(cuò)誤。根據(jù)ISO/IEC9126國(guó)際標(biāo)準(zhǔn)的定義,對(duì)軟件質(zhì)量的功能性、可靠性、可用性、效率、可維護(hù)性、可移植性六個(gè)方面構(gòu)造軟件的靜態(tài)質(zhì)量度量模型,通過(guò)量化的數(shù)據(jù)評(píng)估被測(cè)程序的質(zhì)量。2.4.1邏輯覆蓋測(cè)試邏輯覆蓋是以程序內(nèi)部的邏輯結(jié)構(gòu)為基礎(chǔ)的設(shè)計(jì)測(cè)試用例的技術(shù)。要求測(cè)試者完全了解程序的結(jié)構(gòu)和處理過(guò)程,按照程序內(nèi)部的邏輯測(cè)試,檢驗(yàn)程序中的每條通路是否都能按預(yù)定要求正確工作。常用的邏輯覆蓋測(cè)試方法有:語(yǔ)句覆蓋、判定覆蓋、條件覆蓋、“判定-條件”覆蓋、條件組合覆蓋及路徑覆蓋。假設(shè)有如下程序段:IF((A>1)AND(B=0))
THENX=X/AIF((A=2)OR(X>1))
THENX=X+1a、b、c、d、e是控制流程圖上的若干程序點(diǎn)。1.語(yǔ)句覆蓋:設(shè)計(jì)足夠多的測(cè)試用例,使被測(cè)程序中的每條可執(zhí)行語(yǔ)句至少執(zhí)行一次。在上述程序段中若要做到語(yǔ)句覆蓋,程序的執(zhí)行路徑應(yīng)是ace,為此可設(shè)計(jì)如下的測(cè)試用例:A=2,B=0,X=4。注意:A、B、X的值這里為輸入值,嚴(yán)格說(shuō)來(lái),測(cè)試用例還應(yīng)包括預(yù)期輸出,在此省略,下同。思考:1、第一個(gè)判定的運(yùn)算符“AND”錯(cuò)成運(yùn)算符“OR”或是第二個(gè)判定中的運(yùn)算符“OR”錯(cuò)成運(yùn)算符“AND”,仍使用上面的測(cè)試用例,路徑是怎么樣的?2、第二個(gè)條件語(yǔ)句中X>1誤寫(xiě)成X>0,路徑是怎么樣的?程序仍將按流程圖上的路徑ace執(zhí)行,上述測(cè)試用例也不能發(fā)現(xiàn)錯(cuò)誤!語(yǔ)句覆蓋是比較弱的覆蓋標(biāo)準(zhǔn)。2.判定覆蓋:設(shè)計(jì)足夠的測(cè)使用例,使程序中的每個(gè)判定至少都獲得一次“真”和“假”值,或者說(shuō)使得程序中的每一個(gè)取“真”分支和取“假”分支至少經(jīng)歷一次,也稱(chēng)為分支覆蓋。若要實(shí)現(xiàn)判定覆蓋,則需覆蓋ace和abd兩條路徑,或覆蓋acd和abe兩條路徑,可設(shè)計(jì)如下兩組測(cè)試用例:A=2,B=0,X=3(覆蓋路徑ace)A=1,B=0,X=1(覆蓋路徑abd)測(cè)試用例:A=2B=0X=3A=1B=0X=1但是如果程序段中的第2個(gè)判定條件X>1如果錯(cuò)寫(xiě)為X<1,使用上述測(cè)試用例,照樣能按原路徑執(zhí)行(abe),而不影響結(jié)果。也就是說(shuō),只達(dá)到判定覆蓋仍無(wú)法確定判斷內(nèi)部條件的錯(cuò)誤。注意:上述兩組測(cè)試用例不僅滿(mǎn)足了判定覆蓋,同時(shí)還做到了語(yǔ)句覆蓋。所以,若實(shí)現(xiàn)了判定覆蓋,則必然實(shí)現(xiàn)了語(yǔ)句覆蓋。從這一點(diǎn)看“判定覆蓋”比“語(yǔ)句覆蓋”更強(qiáng)一些。3.條件覆蓋:指設(shè)計(jì)若干個(gè)測(cè)試用例,使每個(gè)判定中的每個(gè)條件的可能取值至少出現(xiàn)一次。兩個(gè)判定中共有4個(gè)條件。條件覆蓋應(yīng)使以下8種結(jié)果成立:A>1,A≤1,B=0,B≠0,A=2,A≠2,X>1,X≤1為覆蓋這8種結(jié)果,可設(shè)計(jì)如下兩組測(cè)試用例:A=2,B=0,X=4(覆蓋A>1、B=0、A=2、X>1,執(zhí)行路徑ace)A=1,B=1,X=1(覆蓋A≤1、B≠0、A≠2、X≤1,執(zhí)行路徑abd)兩個(gè)測(cè)試用例A=2B=0X=4和A=1B=1X=1在覆蓋了4個(gè)條件的8種情況的同時(shí),把兩個(gè)判斷的4個(gè)分支b、c、d和e也覆蓋了。是否可以說(shuō),達(dá)到了條件覆蓋,也就必然實(shí)現(xiàn)了判定覆蓋呢?假定使用測(cè)試用例A=1B=0X=3和A=2B=1X=1可以看出,覆蓋了條件的測(cè)試用例不一定能覆蓋分支。事實(shí)上,它只覆蓋了4個(gè)分支中的兩個(gè)(b和e)。判定覆蓋卻只關(guān)心整個(gè)判定表達(dá)式的值。4.判定—條件覆蓋:設(shè)計(jì)足夠的測(cè)使用例,使得判定中每個(gè)條件的所有可能(真/假)至少出現(xiàn)一次,并且每個(gè)判定本身的判定結(jié)果(真/假)也至少出現(xiàn)一次。若要實(shí)現(xiàn)判定—條件覆蓋,可設(shè)計(jì)如下兩組測(cè)試用例:A=2,B=0,X=4(執(zhí)行路徑ace)A=1,B=1,X=1(執(zhí)行路徑abd)若實(shí)現(xiàn)了判定—條件覆蓋,則必然也實(shí)現(xiàn)了判定覆蓋和條件覆蓋。從表面上看上述兩組測(cè)試可以滿(mǎn)足覆蓋圖中的4個(gè)判斷分支和8個(gè)條件取值。但是它們正好是為了滿(mǎn)足條件覆蓋的測(cè)試用例,而第1組測(cè)試用例也是語(yǔ)句覆蓋的測(cè)試用例,若第二個(gè)判斷表達(dá)式中的條件“A=2ORX>1”錯(cuò)寫(xiě)成了“A=2ORX<1”,當(dāng)A=2的測(cè)試為真的時(shí)候,是不可能發(fā)現(xiàn)這個(gè)邏輯錯(cuò)誤的。原因在于含有AND和OR的邏輯表達(dá)式中,某些條件將抑制其他條件,如邏輯條件表達(dá)式AANDB,如果A為“假”,則整個(gè)表達(dá)式的值為“假”,這個(gè)表達(dá)式中另外的幾個(gè)條件就不起作用了,所以就不再檢查條件B了,這樣B中的錯(cuò)誤就發(fā)現(xiàn)不了。5.條件組合覆蓋:設(shè)計(jì)足夠的測(cè)試用例,使得每個(gè)判定中條件的各種可能組合都至少出現(xiàn)一次。
在上面的例子中的每個(gè)判定包含有兩個(gè)條件,這兩個(gè)條件在判定中有8種可能的組合:1)A>1,B=0 記為T(mén)1,T22)A>1,B≠0記為T(mén)1,F(xiàn)23)A≤1,B=0記為F1,T24)A≤1,B≠0記為F1,F(xiàn)25)A=2,X>1 記為T(mén)3,T46)A=2,X≤1記為T(mén)3,F(xiàn)47)A≠2,X>1記為F3,T48)A≠2,X≤1記為F3,F(xiàn)44個(gè)測(cè)試用例,用以覆蓋8種條件組合在條件組合覆蓋中:對(duì)某被測(cè)程序,若實(shí)現(xiàn)了條件組合覆蓋,則一定實(shí)現(xiàn)了判定覆蓋、條件覆蓋及判定—條件覆蓋。但條件組合覆蓋不一定能覆蓋程序中的每條路徑。上述4組測(cè)試用例就沒(méi)有覆蓋到路徑acd。6.路徑覆蓋:設(shè)計(jì)足夠的測(cè)試用例,覆蓋被測(cè)程序中所有可能的路徑。設(shè)計(jì)以下測(cè)試用例,覆蓋四條路徑:2.4.2路徑分析測(cè)試在實(shí)際應(yīng)用中,一個(gè)不太復(fù)雜的程序可能會(huì)出現(xiàn)多重循環(huán)嵌套,那么其路徑數(shù)可能就是一個(gè)非常大的數(shù)字,所以必須將測(cè)試的路徑數(shù)目壓縮到一定范圍內(nèi)。為解決這一難題,可以采用基本路徑測(cè)試方法,它也是一種白盒測(cè)試技術(shù)?;韭窂綔y(cè)試是在程序的流圖基礎(chǔ)上,確定程序的環(huán)路復(fù)雜性,導(dǎo)出基本路徑的集合,進(jìn)而在其基礎(chǔ)上設(shè)計(jì)測(cè)試用例,這些測(cè)試用例能覆蓋到程序中的每條可執(zhí)行語(yǔ)句。2.4.2.1流圖流圖也稱(chēng)為程序圖,實(shí)際上就是一個(gè)有向圖,就是把程序流程圖中每個(gè)處理符號(hào)都看作一個(gè)結(jié)點(diǎn),原來(lái)聯(lián)結(jié)不同處理符號(hào)間的流程線(xiàn)看作連接不同結(jié)點(diǎn)的有向弧。它僅僅描繪程序的控制流程,完全不表現(xiàn)對(duì)數(shù)據(jù)的具體操作以及分支或循環(huán)的具體條件。通常稱(chēng)程序圖中開(kāi)始點(diǎn)后面的結(jié)點(diǎn)為入口點(diǎn),稱(chēng)停止點(diǎn)前面的結(jié)點(diǎn)為出口點(diǎn)。1.控制流圖的特點(diǎn)具有唯一入口節(jié)點(diǎn)(源節(jié)點(diǎn)),表示程序段的開(kāi)始語(yǔ)句;具有唯一出口節(jié)點(diǎn)(匯節(jié)點(diǎn)),表示程序段的結(jié)束語(yǔ)句;結(jié)點(diǎn)由帶有標(biāo)號(hào)的圓圈表示,表示一個(gè)或多個(gè)無(wú)分支的源程序語(yǔ)句??刂七呌蓭Ъ^的直線(xiàn)或弧表示,代表控制流的方向。在流圖中一條邊必須終止于一個(gè)結(jié)點(diǎn)。由邊和結(jié)點(diǎn)圍成的面積稱(chēng)為區(qū)域,當(dāng)計(jì)算區(qū)域數(shù)時(shí)應(yīng)該包括圖外部未被圍起來(lái)的那個(gè)區(qū)域。用任何方法表示的過(guò)程設(shè)計(jì)結(jié)果,都可以翻譯成流圖。程序流程圖中的一個(gè)順序的處理框序列和一個(gè)菱形判定框,可以映射成流圖中的一個(gè)結(jié)點(diǎn)。當(dāng)過(guò)程設(shè)計(jì)中包含復(fù)合條件時(shí),即條件中包含了一個(gè)或多個(gè)布爾運(yùn)算符(OR,AND,NOR),生成流圖的方法稍微復(fù)雜一些。應(yīng)該把復(fù)合條件分解為若干個(gè)簡(jiǎn)單條件,每個(gè)簡(jiǎn)單條件對(duì)應(yīng)流圖中一個(gè)結(jié)點(diǎn)。包含條件的結(jié)點(diǎn)稱(chēng)為判定節(jié)點(diǎn),從每個(gè)判定結(jié)點(diǎn)引出兩條或多條邊。2.程序環(huán)路復(fù)雜性
程序的環(huán)路復(fù)雜性又稱(chēng)為圈復(fù)雜性,是一種描述程序邏輯復(fù)雜度的標(biāo)準(zhǔn)。在進(jìn)行基本路徑測(cè)試時(shí),確定了程序的環(huán)路復(fù)雜性,則可在其基礎(chǔ)上確定程序基本路徑集合的獨(dú)立路徑數(shù)目,這個(gè)數(shù)目是確保程序中每條可執(zhí)行語(yǔ)句至少執(zhí)行一次的測(cè)試用例數(shù)目的最小值。可用下述3種方法中的任何一種來(lái)計(jì)算環(huán)形復(fù)雜度。(1)流圖中的區(qū)域數(shù)等于環(huán)形復(fù)雜度。(2)流圖G的環(huán)形復(fù)雜度:V(G)=E–N+2,
其中,E是流圖中邊的條數(shù),N是結(jié)點(diǎn)數(shù)。(3)流圖G的環(huán)形復(fù)雜度:V(G)=P+1,
其中,P是流圖中判定結(jié)點(diǎn)的數(shù)目例如要對(duì)軟件測(cè)試課程成績(jī)進(jìn)行統(tǒng)計(jì)。連續(xù)輸入學(xué)生成績(jī),最后以負(fù)分結(jié)束。規(guī)定成績(jī)?cè)?0分以下的為不及格、60分以上為及格、80分以上為優(yōu)秀。該程序統(tǒng)計(jì)并輸出不及格、及格、優(yōu)秀的人數(shù)及總?cè)藬?shù)。算出該程序的環(huán)路復(fù)雜度。開(kāi)始S,S1,S2,S30輸入XX≥0?X≥60?X≥80?S1=S1+1S2=S2+1S3=S3+1S=S+1輸出S,S1,S2,S3結(jié)束sabc1defghc2c3FFFTTT(a)程序流程圖sabc1c2edc3fghend1234567891011121314R1R2R3入口點(diǎn)出口點(diǎn)(b)程序圖弧數(shù)m=14,結(jié)點(diǎn)數(shù)n=12,則有V(G)=m-n+2=14-12+2=4程序圖中的區(qū)域數(shù)為4,所以V(G)=4。判定結(jié)點(diǎn)的數(shù)目P是3,則V(G)=P+1=3+1=4。2.4.2.2獨(dú)立路徑測(cè)試對(duì)于一個(gè)較為復(fù)雜的程序要做到完全的路徑覆蓋測(cè)試是不可能實(shí)現(xiàn)的。獨(dú)立路徑測(cè)試就是對(duì)所有獨(dú)立路徑進(jìn)行測(cè)試,也就是說(shuō)檢驗(yàn)了程序的每一條語(yǔ)句,從而達(dá)到語(yǔ)句覆蓋。獨(dú)立路徑是一條含有以前未處理的語(yǔ)句或判斷的路徑。在流圖中,獨(dú)立路徑表現(xiàn)為至少含有一條其他獨(dú)立路徑中均沒(méi)有的邊的路徑。使用獨(dú)立路徑測(cè)試的步驟:(1)根據(jù)程序代碼或程序流程圖,畫(huà)出相應(yīng)的程序圖。(2)計(jì)算程序圖的環(huán)路復(fù)雜度。(3)確定只包含獨(dú)立路徑的基本路徑集。⑷設(shè)計(jì)測(cè)試用例,保證基本路徑集合中每條路徑的執(zhí)行。環(huán)路復(fù)雜度V(G)為4。因此對(duì)應(yīng)的一組獨(dú)立路徑是:路徑1:S—a—b—c1—d—end路徑2:S—a—b—c1—c2—e—h—b—c1—d—end路徑3:S—a—b—c1—c2—c3—f—h—b—c1—d—end路徑4:S—a—b—c1—c2—c3—g—h—b—c1—d—end開(kāi)始S,S1,S2,S30輸入XX≥0?X≥60?X≥80?S1=S1+1S2=S2+1S3=S3+1S=S+1輸出S,S1,S2,S3結(jié)束sabc1defghc2c3FFFTTT(a)程序流程圖sabc1c2edc3fghend1234567891011121314R1R2R3入口點(diǎn)出口點(diǎn)(b)程序圖下面通過(guò)一個(gè)C語(yǔ)言程序?qū)嵗齺?lái)具體說(shuō)明獨(dú)立路徑測(cè)試的設(shè)計(jì)流程。1 main()2 {3 intnum1=0,num2=0,score=100;4 inti;5 charstr;6 scanf(“%d,%c\n”,&i,&str);7 while(i<5)8 {9 if(str=’T’)10 num1++;11 elseif(str=’F’)12 {13 score=score-10;14 num2++;15 }16 i++;17 }printf(“num1=%d,num2=%d,score=%d\n”,num1,num2,score);19 }1.導(dǎo)出程序控制流圖2.求出程序環(huán)形復(fù)雜度公式1:V(G)=10-8+2=4公式2:V(G)=3+1=4公式3:V(G)=4因此,控制流圖G的環(huán)形復(fù)雜度是4。就是說(shuō)至少需要4條獨(dú)立路徑組成基本路徑集合,并由此得到能夠覆蓋所有程序語(yǔ)句的測(cè)試用例。3.設(shè)計(jì)測(cè)試用例根據(jù)上面環(huán)形復(fù)雜度的計(jì)算結(jié)果,源程序的基本路徑集合中有4條獨(dú)立路徑:path1:7->18path2:7->9->10->16->7->18path3:7->9->11->15->16->7->18path4:7->9->11->13->14->15->16->7->18根據(jù)上述4條獨(dú)立路徑,設(shè)計(jì)了測(cè)試用例。測(cè)試用例中的4個(gè)測(cè)試用例作為程序輸入數(shù)據(jù),能夠遍歷這4條獨(dú)立路徑。對(duì)于源程序中的循環(huán)體,測(cè)試用例中的輸入數(shù)據(jù)使其執(zhí)行零次或一次。注意:環(huán)路復(fù)雜度V(G)可導(dǎo)出程序基本集合中的獨(dú)立路徑條數(shù),從該基本集合導(dǎo)出的測(cè)試用例可以保證程序中的每條語(yǔ)句至少執(zhí)行一次,而且每個(gè)條件在執(zhí)行時(shí)都將分別取真、假兩種值。這是確保程序中每個(gè)執(zhí)行語(yǔ)句至少執(zhí)行一次所必需的測(cè)試用例數(shù)目的上界。一條新的路徑必須包含一條新邊,V(G)是構(gòu)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)裁員與員工安置策略解析
- 工程物資采購(gòu)及運(yùn)輸配送流程控制規(guī)定
- 小區(qū)社區(qū)文化建設(shè)指導(dǎo)手冊(cè)
- 債權(quán)轉(zhuǎn)讓房屋買(mǎi)賣(mài)合同(2篇)
- 娛樂(lè)行業(yè)市場(chǎng)營(yíng)銷(xiāo)策劃手冊(cè)
- 腹瀉門(mén)診工作制度
- 外國(guó)代表團(tuán)合作協(xié)議書(shū)范文
- 養(yǎng)豬場(chǎng)合伙養(yǎng)殖協(xié)議書(shū)范文范本
- 社區(qū)理發(fā)店轉(zhuǎn)讓協(xié)議書(shū)范文范本
- 燒烤爐商標(biāo)轉(zhuǎn)讓協(xié)議書(shū)范文模板
- 1-2《光的傳播》(教學(xué)設(shè)計(jì))蘇教版五年級(jí)科學(xué)上冊(cè)
- 2024-2030年中國(guó)新型電力系統(tǒng)行業(yè)發(fā)展展望及投資前景預(yù)測(cè)研究報(bào)告
- 2024自動(dòng)導(dǎo)引車(chē)AGV技術(shù)規(guī)范
- 鹽池縣再生水廠、德勝墩水資源綜合利用特許經(jīng)營(yíng)項(xiàng)目實(shí)施方案
- 廣東某辦公樓改造裝飾工程施工組織設(shè)計(jì)方案
- 制動(dòng)能量回收系統(tǒng)故障診斷與排除說(shuō)課課件
- 《20世紀(jì)的科學(xué)偉人愛(ài)因斯坦》參考課件2
- 八年級(jí)道德與法治上冊(cè) 第一單元 走進(jìn)社會(huì)生活 單元復(fù)習(xí)課件
- 中職心理健康課程設(shè)計(jì)
- 設(shè)計(jì)師會(huì)議管理制度
- 人教版英語(yǔ)九年級(jí)Unit 13《Were trying to save the earth》全單元教學(xué)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論