版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
10.1軟件測(cè)試的定義
10.2實(shí)例:圖書借閱系統(tǒng)的功能函數(shù)10.3“軟件測(cè)試計(jì)劃說明書”的書寫格式
10.4靜態(tài)測(cè)試
10.5覆蓋測(cè)試
10.6黑盒測(cè)試方法 10.7“缺陷報(bào)告單”的書寫格式
10.8軟件測(cè)試過程本章小結(jié)
習(xí)題
第10章軟件測(cè)試10.1軟件測(cè)試的定義
1983年,IEEE給出的軟件測(cè)試的定義是:軟件測(cè)試是使用人工或自動(dòng)的手段來運(yùn)行或測(cè)定某個(gè)軟件系統(tǒng)的過程,其目的在于檢驗(yàn)它是否滿足規(guī)定的需求或弄清預(yù)期結(jié)果與實(shí)際結(jié)果之間的差別。這個(gè)定義明確指出:軟件測(cè)試的目的是為了檢驗(yàn)軟件系統(tǒng)是否滿足軟件需求。這里強(qiáng)調(diào)了軟件需求的重要性,因此軟件需求是軟件測(cè)試人員判斷軟件是否有缺陷的依據(jù),就像法官判斷案件嫌疑人是否犯法所依據(jù)的法律一樣。10.2案例:圖書借閱系統(tǒng)的功能函數(shù)
1.圖書借閱系統(tǒng)功能分解通過分析,系統(tǒng)具有如下功能:①圖書卡的注冊(cè)、注銷和信息查詢;②圖書借閱;③圖書信息的查閱:按照作者姓名查閱、按照書名查閱;④圖書返還。圖書借閱系統(tǒng)的模塊設(shè)計(jì)如圖10-1所示。圖10-1圖書借閱系統(tǒng)的模塊
2.函數(shù)關(guān)系從圖10-1可以看出,本系統(tǒng)可以劃分為如下函數(shù):
Return_book():還書函數(shù);
findbook_bname():按書名查找圖書函數(shù);
findbook_bauthor():按作者名查找圖書函數(shù);
lend_book():借書函數(shù);
cardreg():卡注冊(cè)函數(shù);
cardunreg():卡注銷函數(shù);
cardreginfo():卡的注冊(cè)信息查詢函數(shù);
card_op():卡的操作與管理函數(shù)。其中,card_op()函數(shù)調(diào)用三個(gè)函數(shù):cardreg()、cardunreg()、cardreginfo()。函數(shù)調(diào)用關(guān)系如圖10-2所示。10.3“軟件測(cè)試計(jì)劃說明書”的書寫格式“軟件測(cè)試計(jì)劃說明書”的書寫格式如下:
1引言
(1)測(cè)試背景這部分簡(jiǎn)要地闡述文檔所說明的系統(tǒng)和軟件的目的。這部分將大概描述系統(tǒng)背景、軟件的本質(zhì);確定這個(gè)方案的發(fā)起人、受益人、使用者、開發(fā)者和維護(hù)機(jī)構(gòu);確定當(dāng)前的狀況并計(jì)劃操作地點(diǎn)。
(2)測(cè)試目標(biāo)
·確定現(xiàn)有項(xiàng)目的信息和應(yīng)測(cè)試的軟件配置;
·列出測(cè)試需求;
·推薦可采用的測(cè)試策略,并對(duì)這些策略加以說明,確定測(cè)試達(dá)到的標(biāo)準(zhǔn);
·確定所需的測(cè)試資源,并對(duì)測(cè)試的工作量進(jìn)行估計(jì)。
2測(cè)試范圍列出軟件需要進(jìn)行的測(cè)試工作范圍和不需要進(jìn)行的測(cè)試工作范圍;對(duì)于不實(shí)施某種測(cè)試,應(yīng)該陳述具體的理由。例如,“將不實(shí)施安裝測(cè)試,該項(xiàng)目將不提供安裝版本”。
3測(cè)試的策略與方法測(cè)試人員采用的測(cè)試方法,如回歸測(cè)試、功能測(cè)試、自動(dòng)測(cè)試等。
4測(cè)試通過/不通過的標(biāo)準(zhǔn)測(cè)試是否通過的界定標(biāo)準(zhǔn)以及沒有通過時(shí)的處理方法。
5停測(cè)標(biāo)準(zhǔn)給出每個(gè)測(cè)試階段停止測(cè)試的標(biāo)準(zhǔn)。
6測(cè)試環(huán)境測(cè)試所需的硬件支持和軟件環(huán)境等。
7測(cè)試人力資源分配列出測(cè)試所需人力資源以及軟件測(cè)試人員的培訓(xùn)計(jì)劃。
8測(cè)試進(jìn)度安排制定每一個(gè)階段的詳細(xì)測(cè)試進(jìn)度安排表。
9風(fēng)險(xiǎn)估計(jì)和危機(jī)處理估計(jì)測(cè)試過程中潛在的風(fēng)險(xiǎn)以及面臨危機(jī)時(shí)的解決辦法。
10制定應(yīng)交付的測(cè)試工作產(chǎn)品指明應(yīng)交付的文檔、測(cè)試代碼和測(cè)試工具,一般包括下列文檔:測(cè)試計(jì)劃、測(cè)試方案、測(cè)試用例、測(cè)試日志、測(cè)試總結(jié)報(bào)告、測(cè)試工具等。10.4靜態(tài)測(cè)試軟件測(cè)試方法分白盒測(cè)試和黑盒測(cè)試;從計(jì)算機(jī)運(yùn)行狀態(tài)分為動(dòng)態(tài)測(cè)試和靜態(tài)測(cè)試。動(dòng)態(tài)測(cè)試通過運(yùn)行被測(cè)程序,輸入有效的測(cè)試用例,驗(yàn)證功能是否達(dá)到軟件需求從而找出程序缺陷。靜態(tài)測(cè)試時(shí)計(jì)算機(jī)并不真正運(yùn)行被測(cè)試的程序,它只對(duì)被測(cè)程序的數(shù)據(jù)流和控制流等信息進(jìn)行分析,找出系統(tǒng)的缺陷,做出測(cè)試報(bào)告,因此靜態(tài)測(cè)試又稱為“靜態(tài)分析”。靜態(tài)測(cè)試的目的是檢查代碼與設(shè)計(jì)的一致性、代碼的可讀性、代碼和算法的正確性、代碼結(jié)構(gòu)的合理性等。例如:
(1)檢查程序風(fēng)格的一致性、規(guī)范性;
(2)檢查算法的邏輯正確性,確定算法是否為最佳算法并實(shí)現(xiàn)了所要求的功能;
(3)檢查模塊接口的正確性,形參的個(gè)數(shù)、數(shù)據(jù)類型、順序是否正確,確定返回值類型及返回值的正確性;
(4)檢查程序輸入?yún)?shù)的合法性;
(5)檢查程序有無適當(dāng)?shù)漠惓L幚砟K;
(6)檢查程序常量或全局變量、表達(dá)式、語句是否正確,是否含有二義性;
(7)檢查程序代碼是否可以優(yōu)化。10.5覆蓋測(cè)試白盒測(cè)試也稱做結(jié)構(gòu)測(cè)試或邏輯驅(qū)動(dòng)測(cè)試,它的目的是了解和檢測(cè)產(chǎn)品的內(nèi)部工作過程,在測(cè)試手段上使用的是覆蓋測(cè)試方法,可以分為如下六種覆蓋測(cè)試方法:語句覆蓋、判斷覆蓋、條件覆蓋、判斷/條件覆蓋、條件組合覆蓋和路徑覆蓋。這里給出了測(cè)試用例的格式,如表10-1所示。表10-1測(cè)試用例的格式在此,對(duì)表中一些項(xiàng)目做以說明:編號(hào)—根據(jù)項(xiàng)目進(jìn)行編號(hào),如:test1,test2,…,這里用的是T1,T2,…;執(zhí)行結(jié)果—執(zhí)行本測(cè)試用例所需的每一步操作。預(yù)期輸出—描述被測(cè)項(xiàng)目或被測(cè)特性所希望或要求達(dá)到的輸出或指標(biāo)。這里還需要指出,測(cè)試用例的撰寫人和執(zhí)行測(cè)試的人不一定是同一個(gè)人。
1.利用語句覆蓋方法設(shè)計(jì)測(cè)試用例語句覆蓋是指設(shè)計(jì)若干個(gè)測(cè)試用例,使得被測(cè)試程序中的每條可執(zhí)行語句至少被執(zhí)行一次。在保證完成要求的情況下,測(cè)試用例的數(shù)目越少越好。
1)任務(wù)描述下面是一段簡(jiǎn)單的C語言程序,請(qǐng)使用語句覆蓋方法完成測(cè)試用例的設(shè)計(jì)任務(wù)。inttesting(intx,inty){intpolo888=0;if(x>0&&y>0){polo888=x+y-10; //語句塊1}else{polo888=x+y+10; //語句塊2}
if(polo888<0){polo888=0;
//語句塊3}returnpolo888;
//語句塊4}
2)方法步驟做白盒測(cè)試時(shí),一般不直接根據(jù)源代碼設(shè)計(jì)測(cè)試用例和編寫測(cè)試代碼,通常是根據(jù)流程圖來設(shè)計(jì)測(cè)試用例和編寫測(cè)試代碼,本任務(wù)的程序流程圖如圖10-3所示。圖10-3程序流程圖在圖10-3中共有兩個(gè)選擇分支,要從“開始”到“結(jié)束”覆蓋各語句必須覆蓋“語句塊1”、“語句塊2”、“語句塊3”、“語句塊4”。所以表10-2給出了語句覆蓋的測(cè)試用例。本任務(wù)的測(cè)試用例如表10-2所示。表10-2語句覆蓋測(cè)試用例這樣,通過兩個(gè)測(cè)試用例即達(dá)到了語句覆蓋的要求,當(dāng)然,測(cè)試用例(測(cè)試用例組)并不是唯一的。用例T1:達(dá)到了覆蓋“語句塊1”和“語句塊4”的目的;用例T2:達(dá)到了覆蓋“語句塊2”和“語句塊3”的目的;因此本用例達(dá)到了語句覆蓋的目的。
3)任務(wù)總結(jié)測(cè)試的充分性分析:假設(shè)第一個(gè)判斷語句if(x>0&&y>0)中的“&&”被程序員錯(cuò)誤地寫成了“||”,即if(x>0||y>0),使用上面設(shè)計(jì)出來的一組測(cè)試用例來進(jìn)行測(cè)試,仍然可以達(dá)到100%的語句覆蓋,所以語句覆蓋不能完全發(fā)現(xiàn)上述的邏輯錯(cuò)誤。
2.利用判定(分支)覆蓋方法設(shè)計(jì)測(cè)試用例
1)任務(wù)描述任務(wù)描述同1。任務(wù):利用判定覆蓋方法設(shè)計(jì)測(cè)試用例。
2)方法步驟判定覆蓋測(cè)試是設(shè)計(jì)若干測(cè)試用例,使得程序中的每個(gè)判定結(jié)果至少都獲得一次“真”值和“假”值。也就是說,程序中的每個(gè)取“真”、“假”的分支至少經(jīng)歷一次。該方法也叫“分支覆蓋”測(cè)試方法。在本例中共有兩個(gè)判斷if(x>0&&y>0)(記為P1)和if(polo888<0)(記為P2)。測(cè)試用例如表10-3所示。表10-3判定覆蓋測(cè)試用例
3)任務(wù)總結(jié)在上述的測(cè)試用例中,兩個(gè)判斷P1和P2取“真”、“假”值的每個(gè)分支都被執(zhí)行了一遍,所以滿足了判斷覆蓋的標(biāo)準(zhǔn)。假設(shè)第一個(gè)判斷語句if(x>0&&y>0)中的“&&”被程序員錯(cuò)誤地寫成了“||”,即if(x>0||y>0),使用上面設(shè)計(jì)出來的一組測(cè)試用例來進(jìn)行測(cè)試,仍然可以達(dá)到100%的判定覆蓋,所以判定覆蓋也不能完全發(fā)現(xiàn)上述的邏輯錯(cuò)誤。由于可執(zhí)行語句不在判定的真分支上就在假分支上,所以,滿足了判定覆蓋要求就一定滿足語句覆蓋要求,反之則不然。因此,判定覆蓋比語句覆蓋強(qiáng)。
3.利用條件覆蓋方法設(shè)計(jì)測(cè)試用例
1)任務(wù)描述任務(wù)描述同1。任務(wù):利用條件覆蓋方法設(shè)計(jì)測(cè)試用例。
2)方法步驟條件覆蓋方法是設(shè)計(jì)一組測(cè)試用例使程序中的每個(gè)條件都取真值和假值各取至少一次。在本例中分析的條件有三個(gè):
x>0(記為C1)、y>0(記為C2)和polo888<0(記為C3),但polo888<0是由x、y取值決定的,x,y取值全覆蓋就把polo888的真、假值各取一遍了。3)測(cè)試用例條件覆蓋測(cè)試用例如表10-4所示。表10-4條件覆蓋測(cè)試用例
4)任務(wù)總結(jié)上面的測(cè)試用例同時(shí)也到達(dá)了100%判定覆蓋的要求,但并不能保證達(dá)到100%條件覆蓋要求的測(cè)試用例(組)都能到達(dá)100%的判定覆蓋要求。既然條件覆蓋不能100%達(dá)到判定覆蓋的要求,也就不一定能夠達(dá)到100%的語句覆蓋要求了。4.利用判定與條件覆蓋測(cè)試方法設(shè)計(jì)測(cè)試用例
1)任務(wù)描述任務(wù)描述同1。任務(wù):利用判定與條件覆蓋方法設(shè)計(jì)測(cè)試用例。
2)方法步驟判定與條件覆蓋是指執(zhí)行被測(cè)試程序時(shí),程序中每個(gè)判斷條件的真、假值分支至少被執(zhí)行一遍,并且每個(gè)判斷條件的內(nèi)部判斷式的真假值分支也要被執(zhí)行一遍。即同時(shí)滿足100%判定覆蓋和100%條件覆蓋的要求。本例中的判斷為“x>0&&y>0”,內(nèi)部判斷式為:x>0和y>0。判定與條件覆蓋測(cè)試用例如表10-5所示。表10-5判定與條件覆蓋測(cè)試用例
3)任務(wù)總結(jié)達(dá)到100%判定與條件覆蓋要求就一定能夠達(dá)到100%條件覆蓋、100%判定覆蓋和100%語句覆蓋的要求。
5.利用條件組合覆蓋方法設(shè)計(jì)測(cè)試用例
1)任務(wù)描述任務(wù)描述同1。任務(wù):利用條件組合覆蓋方法設(shè)計(jì)測(cè)試用例。
2)方法步驟條件組合覆蓋是指設(shè)計(jì)若干個(gè)測(cè)試用例,執(zhí)行被測(cè)試程序時(shí),程序中每個(gè)判斷條件的內(nèi)部判斷式的各種真假組合都至少被執(zhí)行一遍。可見,滿足條件組合覆蓋的測(cè)試用例組一定滿足判定覆蓋、條件覆蓋、判定與條件覆蓋。注意:
(1)條件組合只針對(duì)同一個(gè)判斷語句內(nèi)存在多個(gè)條件的情況,使得所有條件的各種可能的值至少出現(xiàn)一次。
(2)不同的判斷語句內(nèi)的條件取值之間無需組合。
(3)對(duì)于單條件的判斷語句,只需要滿足自己的所有取值即可。測(cè)試用例如表10-6所示。表10-6條件組合覆蓋測(cè)試用例
3)任務(wù)總結(jié)
100%滿足條件組合要求一定滿足100%條件覆蓋要求和100%判定覆蓋要求。上面的測(cè)試用例中,經(jīng)歷了兩條路徑a—c—e—f和a—b—d—f,而被測(cè)試程序存在三條路徑。所以這種測(cè)試方法不一定能覆蓋程序的全部路徑。
6.利用路徑覆蓋方法設(shè)計(jì)測(cè)試用例
1)任務(wù)描述任務(wù)描述同1。任務(wù):利用路徑覆蓋方法設(shè)計(jì)測(cè)試用例。
2)方法步驟路徑測(cè)試著眼于路徑分析,完成路徑測(cè)試的理想情況是做到了路徑覆蓋。路徑覆蓋也是白盒測(cè)試最為典型的測(cè)試方法。路徑覆蓋要求設(shè)計(jì)若干測(cè)試用例,執(zhí)行被測(cè)試程序時(shí),能夠覆蓋程序中所有可能的路徑。本任務(wù)有四條路徑:a—b—d—f,a—c—d—f,a—b—e—f,a—c—e—f。路徑覆蓋測(cè)試用例應(yīng)該能夠覆蓋這四條路徑。測(cè)試用例如表10-7所示。表10-7路徑覆蓋測(cè)試用例
3)任務(wù)總結(jié)由上表可見,100%滿足路徑覆蓋,并不一定能100%滿足條件覆蓋(C2只取到了真),但一定能100%滿足判定覆蓋(因?yàn)槁窂浇?jīng)歷的就是某判斷的分支)。上述六種邏輯覆蓋從弱到強(qiáng)的排列順序是:語句覆蓋→判定覆蓋→條件覆蓋→判定與條件覆蓋→條件組合覆蓋→路徑覆蓋。它們之間的關(guān)系可用圖10-4表示(路徑覆蓋很難在該圖表示出來)。圖10-4覆蓋測(cè)試方法關(guān)系圖我們應(yīng)該清楚,沒有一個(gè)測(cè)試方法能夠找出軟件的所有缺陷。即便對(duì)程序做到了路徑覆蓋測(cè)試,也不能保證源代碼就不存在其他問題。因此我們要善于應(yīng)用多種測(cè)試方法對(duì)程序進(jìn)行測(cè)試。10.6黑盒測(cè)試方法黑盒測(cè)試方法是在已知軟件產(chǎn)品功能設(shè)計(jì)的情況下,對(duì)其進(jìn)行測(cè)試以確認(rèn)其是否實(shí)現(xiàn)了的軟件產(chǎn)品的功能要求。該方法把被測(cè)程序視作黑盒,不考慮程序內(nèi)部的邏輯結(jié)構(gòu)和內(nèi)部特性,只依據(jù)軟件的需求規(guī)格說明,輸入相應(yīng)的數(shù)據(jù),檢查程序的輸出是否符合它的功能要求。使用黑盒測(cè)試主要是為了發(fā)現(xiàn)以下錯(cuò)誤:
(1)是否有不正確的功能;
(2)是否有遺漏的功能;
(3)在接口上,是否能夠正確地接收輸入數(shù)據(jù)并產(chǎn)生正確的輸出結(jié)果;
(4)是否有數(shù)據(jù)結(jié)構(gòu)錯(cuò)誤或外部信息訪問錯(cuò)誤;
(5)性能上是否能夠滿足要求;
(6)是否有程序初始化和終止方面的錯(cuò)誤。黑盒測(cè)試有以下顯著特點(diǎn):
(1)黑盒測(cè)試不考慮軟件的具體實(shí)現(xiàn),當(dāng)軟件內(nèi)部實(shí)現(xiàn)發(fā)生變化時(shí),測(cè)試用例仍然可以使用。
(2)黑盒測(cè)試用例的設(shè)計(jì)可以和軟件實(shí)現(xiàn)同時(shí)進(jìn)行,這樣能夠壓縮總的開發(fā)時(shí)間。
(3)對(duì)一些外購(gòu)軟件、參數(shù)化軟件包以及某些自動(dòng)生成的軟件,由于無法得到源程序,只能選擇黑盒測(cè)試對(duì)其進(jìn)行測(cè)試。黑盒測(cè)試的優(yōu)點(diǎn)如下:
(1)適用于各個(gè)測(cè)試階段;
(2)從產(chǎn)品功能角度進(jìn)行測(cè)試;
(3)容易生成測(cè)試數(shù)據(jù)。黑盒測(cè)試的缺點(diǎn)如下:
(1)某些代碼得不到測(cè)試;
(2)無法發(fā)現(xiàn)軟件需求說明書本身的錯(cuò)誤;
(3)不易進(jìn)行充分性測(cè)試。實(shí)現(xiàn)黑盒測(cè)試的內(nèi)容常用的測(cè)試方法包括等價(jià)類劃分法和邊界值分析法。
1.利用等價(jià)類劃分法設(shè)計(jì)測(cè)試用例
1)任務(wù)描述在C語言中有這樣的規(guī)定:“變量標(biāo)識(shí)符由字母、數(shù)字和下劃線組成,并且首字符只能是字母和下劃線,標(biāo)識(shí)符的有效字符個(gè)數(shù)是8個(gè),最大字符數(shù)是80個(gè)”。請(qǐng)利用等價(jià)類劃分方法設(shè)計(jì)測(cè)試用例。
2)方法步驟等價(jià)類劃分法是把全部的輸入數(shù)據(jù)劃分成若干的等價(jià)類,在每一個(gè)等價(jià)類中取一個(gè)數(shù)據(jù)來進(jìn)行測(cè)試,這樣就等價(jià)于把該等價(jià)類中全部數(shù)據(jù)取出進(jìn)行了測(cè)試,就能以較少的具有代表性的數(shù)據(jù)進(jìn)行測(cè)試,從而取得很好的測(cè)試效果。等價(jià)類又分為有效等價(jià)類和無效等價(jià)類兩類。有效等價(jià)類指對(duì)于程序的需求說明而言合理的、有意義的輸入數(shù)據(jù)所構(gòu)成的子集合;利用它可以檢驗(yàn)程序是否實(shí)現(xiàn)了預(yù)期的功能和性能。無效等價(jià)類指對(duì)于程序的需求說明而言不合理的、沒有意義的輸入數(shù)據(jù)所構(gòu)成的集合;利用它可以檢驗(yàn)程序是否實(shí)現(xiàn)了異常處理功能。使用等價(jià)類劃分法設(shè)計(jì)測(cè)試用例,首先必須在分析需求規(guī)格說明的基礎(chǔ)上劃分等價(jià)類,然后列出等價(jià)類表,其格式如表10-8所示。對(duì)于本任務(wù),等價(jià)類表如表10-9所示。表10-8等價(jià)類表格式表10-9標(biāo)識(shí)符定義的等價(jià)類表
對(duì)于本任務(wù),用等價(jià)類劃分方法設(shè)計(jì)的測(cè)試用例見表10-10所示。表10-10標(biāo)識(shí)符定義測(cè)試用例
3)任務(wù)總結(jié)一般情況下,劃分等價(jià)類的方法如下:
(1)如果輸入條件規(guī)定了數(shù)據(jù)的范圍和取值個(gè)數(shù),可以確定一個(gè)有效等價(jià)類和兩個(gè)無效等價(jià)類。例如:100<X<999,有效等價(jià)類為(100,999),無效等價(jià)類為“小于100”和“大于999”。
(2)如果輸入條件規(guī)定了一個(gè)必須成立的情況(如輸入數(shù)據(jù)必須是某個(gè)日期),可以劃分為一個(gè)有效等價(jià)類“輸入某個(gè)日期格式字符串”和一個(gè)無效等價(jià)類“輸入非日期格式字符串”。
(3)如果輸入條件是一個(gè)布爾量,則可以確立一個(gè)有效等價(jià)類和一個(gè)無效等價(jià)類。
4)課堂練習(xí)對(duì)下面程序描述用等價(jià)類劃分方法設(shè)計(jì)測(cè)試用例。
(1)三角形組成問題。輸入三個(gè)數(shù),分別作為三角形的三條邊(要求都是整數(shù),取值范圍在1~100之間)。判斷是否能組成三角形,請(qǐng)給出測(cè)試用例。(提示:利用三角形組成的條件。)
(2)平方根函數(shù)。要求當(dāng)輸入值大于等于0時(shí),返回輸入數(shù)的平方根;當(dāng)輸入值小于0時(shí),顯示錯(cuò)誤信息“平方根錯(cuò)誤,輸入值小于0”,并返回0。請(qǐng)?jiān)O(shè)計(jì)測(cè)試此函數(shù)的設(shè)計(jì)用例。
2.利用邊界值分析方法設(shè)計(jì)測(cè)試用例
1)任務(wù)描述下面是圖書信息查詢系統(tǒng)(前面給出過軟件需求和函數(shù)結(jié)構(gòu))的圖書卡注冊(cè)信息瀏覽函數(shù)cardreginfo()結(jié)構(gòu)。
{
FILE*fp;
inti,n=0;
fp=fopen("car.txt","r"); //打開卡信息文件
for(i=0;fread(&car[i],sizeof(structcard),1,fp)!=0;i++)
{
printf("第%d張卡<卡號(hào):%d姓名:%s班級(jí):
%d>\n",i+1,card[i].carnum,card[i].studentname,card[i].studentclass);
n=n+1;
}
fclose(fp);
printf("目前共有%d本書\n",n);
printf("按任意鍵\n");
getch();
}其中,card.txt文件存放有學(xué)生信息:卡號(hào)、姓名、班級(jí)。請(qǐng)利用邊界值分析方法設(shè)計(jì)測(cè)試用例。
2)方法步驟邊界值分析法是一種補(bǔ)充等價(jià)類劃分法的測(cè)試用例設(shè)計(jì)技術(shù),它不是選擇等價(jià)類的任意元素,而是選擇等價(jià)類邊界的測(cè)試用例。常見的邊界值有:
(1)對(duì)16bit的整型數(shù)而言,-32767和32768是邊界;
(2)屏幕上光標(biāo)的最左上角和最右下角位置;
(3)報(bào)表的第一行和最后一行;
(4)數(shù)組元素的第一個(gè)和最后一個(gè)元素;
(5)循環(huán)的第0次、第1次和倒數(shù)第2次、最后一次。對(duì)于本測(cè)試模塊cardreginfo()中循環(huán)語句:
for(i=0;fread(&card[i],sizeof(structcard),1,fp)!=0;i++)可以設(shè)置邊界如下:
(1)?i=-1,0;
(2)?i作為一個(gè)int整型變量,取邊界值-32768,-32769,32767,32768。表10-11給出了本任務(wù)的邊界值分析測(cè)試用例。表10-11邊界值分析測(cè)試用例
3)任務(wù)總結(jié)根據(jù)長(zhǎng)期的測(cè)試工作實(shí)踐可知,大量的錯(cuò)誤發(fā)生在輸入或輸出的邊界上。因此針對(duì)各種邊界情況設(shè)計(jì)測(cè)試用例,可以查出更多的錯(cuò)誤。利用邊界值分析法進(jìn)行用例設(shè)計(jì)時(shí)應(yīng)該注意:
(1)如果對(duì)輸入條件范圍進(jìn)行了界定,則以邊界內(nèi)部以及恰巧超出范圍邊界的值作為測(cè)試用例。
(2)應(yīng)當(dāng)選取正好等于、剛剛大于或剛剛小于邊界的值作為測(cè)試數(shù)據(jù),而不是選取等價(jià)類中的典型值或任意值作為測(cè)試數(shù)據(jù)。
(3)在軟件需求說明中,對(duì)于輸出條件也可以用上面的兩個(gè)原則進(jìn)行測(cè)試用例的設(shè)計(jì)。
(4)如果在軟件需求說明中描述的輸入或者輸出是一個(gè)有序集合(如:順序文件、表格等),那么就選擇集合中的第一個(gè)和最后一個(gè)元素作為測(cè)試用例。
(5)如果程序使用了一個(gè)內(nèi)部數(shù)據(jù)結(jié)構(gòu),應(yīng)該選取這個(gè)內(nèi)部數(shù)據(jù)結(jié)構(gòu)的邊界值作為測(cè)試用例。
(6)分析軟件需求說明,找出其他可能的邊界條件。10.7“缺陷報(bào)告單”的書寫格式對(duì)測(cè)試過程中的每個(gè)缺陷都應(yīng)該填寫一份缺陷報(bào)告單,如表10-12所示。表10-12缺?陷?報(bào)?告?單表格中有關(guān)項(xiàng)目的說明:
(1)嚴(yán)重程度。致命性錯(cuò)誤:數(shù)據(jù)丟失,數(shù)據(jù)計(jì)算錯(cuò)誤、系統(tǒng)崩潰和死機(jī);嚴(yán)重功能性錯(cuò)誤:規(guī)定的功能沒有實(shí)現(xiàn)或不完整、設(shè)計(jì)不合理造成性能低下,影響系統(tǒng)的運(yùn)行;警告性錯(cuò)誤:不影響系統(tǒng)運(yùn)行的功能問題,例如,某變量定義之后在本程序中沒有用到過。建議性錯(cuò)誤:如代碼規(guī)范等問題。
(2)重現(xiàn)幾率分為四個(gè)等級(jí):小于等于30%、大于30%小于60%、大于60%小于80%,大于80%小于等于100%(這個(gè)規(guī)定可以根據(jù)實(shí)際項(xiàng)目確定);
(3)優(yōu)先級(jí)別(指優(yōu)先安排修正該缺陷的緊迫程度)分為三個(gè)級(jí)別:高、中、低;
(4)處理結(jié)果分為兩種:已經(jīng)解決、尚未解決;
(5)修改方式分為四種:修改相關(guān)代碼、刪除相關(guān)功能模塊、改變?cè)O(shè)計(jì)、不做修改。10.8軟件測(cè)試過程軟件測(cè)試過程按測(cè)試階段的先后順序大致可分為單元測(cè)試、集成測(cè)試、系統(tǒng)測(cè)試三個(gè)階段。在開發(fā)期間對(duì)模塊進(jìn)行單元測(cè)試,在相關(guān)聯(lián)的模塊都通過單元測(cè)試后,合并(成為一個(gè)大模塊后)進(jìn)行集成測(cè)試,在各個(gè)“大模塊”測(cè)試完成后,進(jìn)行整個(gè)系統(tǒng)的測(cè)試。
1.單元測(cè)試單元測(cè)試是對(duì)軟件基本組成單元進(jìn)行的測(cè)試。單元測(cè)試的對(duì)象是軟件設(shè)計(jì)的最小單位—模塊。例如“圖書借閱系統(tǒng)”中有下面單元:
Return_book():還書函數(shù); findbook_bname():按書名查找圖書函數(shù);
lend_book():借書函數(shù); findbook_bauthor():按作者名查找圖書函數(shù);
cardreg():卡注冊(cè)函數(shù); cardunreg():卡注銷函數(shù);
cardreginfo():卡的注冊(cè)信息查詢函數(shù);
card_op():卡的操作與管理函數(shù)。這里的每個(gè)函數(shù)是一個(gè)單元模塊。單元測(cè)試的主要內(nèi)容是模塊接口測(cè)試。模塊接口測(cè)試中的被測(cè)模塊并不是一個(gè)獨(dú)立的程序,在考慮測(cè)試模塊時(shí),同時(shí)要考慮它和外界的聯(lián)系,用一些輔助模塊去模擬與被測(cè)模塊相關(guān)聯(lián)的模塊。這些輔助模塊可分為兩種:
(1)驅(qū)動(dòng)模塊:相當(dāng)于被測(cè)模塊的主程序。它接收測(cè)試數(shù)據(jù),把這些數(shù)據(jù)傳送給被測(cè)模塊,最后輸出實(shí)測(cè)結(jié)果。例如,模塊A要調(diào)用模塊B,在測(cè)試模塊B時(shí),要編寫一個(gè)驅(qū)動(dòng)模塊(模擬模塊A對(duì)B的調(diào)用功能)來調(diào)用模塊B,檢查模塊B是否存在缺陷。
(2)樁模塊:用以代替被測(cè)模塊調(diào)用的子模塊。樁模塊可以做少量的數(shù)據(jù)操作,不需要把子模塊所有功能都帶進(jìn)來,但不允許什么事情也不做。例如,模塊A要調(diào)用模塊B,現(xiàn)在測(cè)試模塊A時(shí),要編寫一個(gè)樁模塊(代替模塊B的功能)被模塊A調(diào)用,(假設(shè)模塊B是正確的)檢查模塊A是否存在缺陷。被測(cè)模塊、與它相關(guān)的驅(qū)動(dòng)模塊以及樁模塊共同構(gòu)成了一個(gè)“測(cè)試環(huán)境”,如圖10-5所示。在單元測(cè)試過程中對(duì)于每個(gè)單元測(cè)試完畢都要填寫表10-12所示的《缺陷報(bào)告》。圖10-5被測(cè)模塊、驅(qū)動(dòng)模塊以及樁模塊
2.集成測(cè)試集成測(cè)試的方式有以下兩種。
1)非增值式集成測(cè)試非增值式集成測(cè)試的方法是:先分別測(cè)試每個(gè)模塊,然后再把所有模塊按設(shè)計(jì)要求放在一起結(jié)合成所需要實(shí)現(xiàn)的程序而進(jìn)行測(cè)試。圖10-6所示的是整個(gè)程序模塊結(jié)構(gòu),共包含9個(gè)模塊。圖10-6整個(gè)程序模塊結(jié)構(gòu)具體測(cè)試計(jì)劃如下:
(1)對(duì)模塊<按照書名查詢>進(jìn)行單元測(cè)試。為<按照書名查詢>設(shè)計(jì)驅(qū)動(dòng)模塊Driver1,來模擬<系統(tǒng)主函數(shù)>模塊對(duì)<按照書名查詢>的調(diào)用。如圖10-7所示。圖10-7對(duì)模塊<按照書名查詢>進(jìn)行單元測(cè)試
(2)對(duì)模塊<按照作者名字查詢>進(jìn)行單元測(cè)試。為<按照作者名字查詢>設(shè)計(jì)驅(qū)動(dòng)模塊Driver2,來模擬<系統(tǒng)主函數(shù)>模塊對(duì)<按照作者名字查詢>的調(diào)用。如圖10-8所示。圖10-8對(duì)模塊<按照作者名字查詢>進(jìn)行單元測(cè)試
(3)對(duì)模塊<圖書返還>進(jìn)行單元測(cè)試。為<圖書返還>設(shè)計(jì)驅(qū)動(dòng)模塊Driver3,來模擬<系統(tǒng)主函數(shù)>模塊對(duì)<圖書返還>的調(diào)用。如圖10-9所示。圖10-9對(duì)模塊<圖書返還>進(jìn)行單元測(cè)試
(4)對(duì)模塊<圖書卡的操作與管理>進(jìn)行單元測(cè)試。為<圖書卡的操作與管理>設(shè)計(jì)驅(qū)動(dòng)模塊Driver4,來模擬<系統(tǒng)主函數(shù)>模塊對(duì)<圖書卡的操作與管理>的調(diào)用。為模塊<圖書卡的操作與管理>設(shè)計(jì)樁模塊Stub1,來模擬模塊<卡的注冊(cè)信息查詢>被<圖書卡的操作與管理>的調(diào)用。如圖10-10所示。圖10-10對(duì)模塊<圖書卡的操作與管理函數(shù)>進(jìn)行單元測(cè)試
(5)對(duì)模塊<卡的借閱信息瀏覽>、<卡的注冊(cè)信息查詢>、<圖書卡的注銷>、<圖書卡的注冊(cè)>進(jìn)行單元測(cè)試。為<卡的借閱信息瀏覽>、<卡的注冊(cè)信息查詢>、<圖書卡的注銷>、<圖書卡的注冊(cè)>分別設(shè)計(jì)驅(qū)動(dòng)模塊Driver5、Driver6、Driver7、Driver8來模擬<圖書卡的操作與管理>模塊對(duì)它們的分別調(diào)用。如圖10-11所示。圖10-11對(duì)模塊<卡的借閱信息瀏覽>、<卡的注冊(cè)信息查詢>、<圖書卡的注銷>、<圖書卡的注冊(cè)>進(jìn)行單元測(cè)試
(6)對(duì)模塊<圖書借閱>進(jìn)行單元測(cè)試。為<圖書借閱>設(shè)計(jì)驅(qū)動(dòng)模塊Driver9,來模擬<系統(tǒng)主函數(shù)>模塊對(duì)<圖書借閱>的調(diào)用。如圖10-12所示。圖10-12對(duì)模塊<圖書借閱>進(jìn)行單元測(cè)試
(7)對(duì)主模塊<系統(tǒng)主函數(shù)>進(jìn)行單元測(cè)試。為主模塊<系統(tǒng)主函數(shù)>設(shè)計(jì)五個(gè)樁模塊Stub2、Stub3、Stub4、Stub5、Stub6分別模擬<按照書名查詢>、<按照作者名字查詢>、<圖書返還>、<圖書卡的操作與管理>、<圖書借閱>模塊被主模塊的調(diào)用。如圖10-13所示。
(8)把所有模塊按設(shè)計(jì)要求放在一起結(jié)合成所需要實(shí)現(xiàn)的程序而進(jìn)行系統(tǒng)測(cè)試圖10-13對(duì)主模塊<系統(tǒng)主函數(shù)>進(jìn)行單元測(cè)試
2)增值式集成測(cè)試方式增值式集成測(cè)試方式有以下三種。
(1)自頂向下增值測(cè)試方式。自頂向下增值測(cè)試方式的方法是:主控模塊作為驅(qū)動(dòng)模塊,所有與主控模塊直接相連的模塊(記為X)作為被測(cè)模塊;根據(jù)集成的方式(深度或廣度),每次把從屬于X的一個(gè)樁模塊替換成真正的模塊Y及Y的樁模塊(如果Y有樁模塊),依此不斷集成下去,直到全部模塊被集成為止。在每個(gè)模塊被集成時(shí),都必須已經(jīng)通過了單元測(cè)試;進(jìn)行回歸測(cè)試以確定集成新模塊后沒有引入錯(cuò)誤。這種組裝方式將模塊按系統(tǒng)程序結(jié)構(gòu),沿著控制層次自頂向下進(jìn)行組裝。自頂向下的增值方式在測(cè)試過程中較早地驗(yàn)證了主要的控制和判斷點(diǎn)。選用按深度方向組裝的方式,可以首先實(shí)現(xiàn)和驗(yàn)證一個(gè)軟件的完整功能。圖10-14表示的是按照深度優(yōu)先方式遍歷的自頂向下增值的集成測(cè)試實(shí)例。圖10-14自頂向下增值測(cè)試方式在樹狀結(jié)構(gòu)圖中,按照先左后右的順序確定模塊集成路線:①如圖10-14(a)所示,先對(duì)頂層的主模塊A進(jìn)行單元測(cè)試。就是對(duì)模塊A配以樁模塊S1、S2和S3,用來模擬它所實(shí)際調(diào)用的模塊B、C、D,然后進(jìn)行測(cè)試;②如圖10-14(b)所示,用實(shí)際模塊B替換掉樁模塊S1,與模塊A連接,再對(duì)模塊B配以樁模塊S4,用來模擬模塊B對(duì)E的調(diào)用,然后進(jìn)行測(cè)試;③圖10-14(c)是將模塊E替換掉樁模塊S4并與模塊B相連,然后進(jìn)行測(cè)試;④判斷模塊E沒有葉子結(jié)點(diǎn),也就是說以A為根結(jié)點(diǎn)的樹狀結(jié)構(gòu)圖中的最左側(cè)分支深度遍歷結(jié)束,轉(zhuǎn)向下一個(gè)分支;⑤如圖10-14(d)所示,模塊C替換掉樁模塊S2,連到模塊A上,然后進(jìn)行測(cè)試;判斷模塊C沒有樁模塊,轉(zhuǎn)到樹狀結(jié)構(gòu)圖的最后一個(gè)分支;⑥如圖10-14(e)所示,模塊D替換掉樁模塊S3,連到模塊A上,同時(shí)給模塊D配以樁模塊S5,來模擬其對(duì)模塊F的調(diào)用,然后進(jìn)行測(cè)試;⑦如圖10-14(f)所示,去掉樁模塊S5,替換成實(shí)際模塊F連接到模塊D上,然后進(jìn)行測(cè)試;⑧對(duì)樹狀結(jié)構(gòu)圖進(jìn)行了完全測(cè)試,測(cè)試結(jié)束。
(2)自底向上增值測(cè)試方式。自底向上增值測(cè)試方式與自頂向下增值測(cè)試方式正好相反。圖10-15表示的是按照自底向上增值方式集成測(cè)試的例子。圖10-15自底向上增值測(cè)試方式①首先,對(duì)處于樹狀結(jié)構(gòu)圖中葉子結(jié)點(diǎn)位置的模塊E、C、F進(jìn)行單元測(cè)試,如圖10-15(a)、圖10-15(b)和圖10-15(c)所示,分別配以驅(qū)動(dòng)模塊D1、D2和D3,用來模擬模塊B、模塊A和模塊D對(duì)它們的調(diào)用。②然后,如圖10-15(d)和圖10-15(e)所示,去掉驅(qū)動(dòng)模塊D1和D3,替換成模塊B和D分別與模塊E和F相連,并且設(shè)立驅(qū)動(dòng)模塊D4和D5進(jìn)行局部集成測(cè)試。最后,如圖10-15(f)所示,對(duì)整個(gè)系統(tǒng)結(jié)構(gòu)進(jìn)行集成測(cè)試。
(3)混合增值測(cè)試方式。自頂向下增值方式和自底向上增值方式各有優(yōu)缺點(diǎn)。通常是把以上兩種方式結(jié)合起來進(jìn)行測(cè)試,即混合增值測(cè)試方式。
3.系統(tǒng)測(cè)試系統(tǒng)測(cè)試是將已經(jīng)集成好的軟件系統(tǒng)與計(jì)算機(jī)硬件、外設(shè)、某些支撐軟件、數(shù)據(jù)和人員等結(jié)合在一起,在實(shí)際運(yùn)行環(huán)境下,對(duì)計(jì)算機(jī)系統(tǒng)進(jìn)行一系列的確認(rèn)測(cè)試。
1)常見的系統(tǒng)測(cè)試方法常見的系統(tǒng)測(cè)試方法有:恢復(fù)測(cè)試、安全測(cè)試、強(qiáng)度測(cè)試、性能測(cè)試、可靠性測(cè)試、兼容性測(cè)試?;謴?fù)測(cè)試是通過各種手段,強(qiáng)制性地讓
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年無人機(jī)安防監(jiān)控系統(tǒng)采購(gòu)合同2篇
- 2025版委托持股業(yè)務(wù)盡職調(diào)查與風(fēng)險(xiǎn)評(píng)估合同3篇
- 2025版塔吊租賃合同解除及賠償協(xié)議6篇
- 2025版小企業(yè)勞動(dòng)合同修訂與完善建議5篇
- 光纖通信在高速鐵路信號(hào)系統(tǒng)中的應(yīng)用考核試卷
- 《企業(yè)文化圣經(jīng)》課件
- 初中生財(cái)經(jīng)素養(yǎng)的培養(yǎng)與財(cái)經(jīng)知識(shí)普及教育的實(shí)踐探索策略考核試卷
- 人力資源管理培訓(xùn)課程課件-高效招聘與面試技巧
- 2025版高端商務(wù)區(qū)門面房使用權(quán)購(gòu)買合同4篇
- 2025版商業(yè)地產(chǎn)物業(yè)委托居間合同范本3篇
- 2024年蘇州工業(yè)園區(qū)服務(wù)外包職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試歷年參考題庫(kù)含答案解析
- 人教版初中語文2022-2024年三年中考真題匯編-學(xué)生版-專題08 古詩(shī)詞名篇名句默寫
- 2024-2025學(xué)年人教版(2024)七年級(jí)(上)數(shù)學(xué)寒假作業(yè)(十二)
- 山西粵電能源有限公司招聘筆試沖刺題2025
- 醫(yī)療行業(yè)軟件系統(tǒng)應(yīng)急預(yù)案
- 使用錯(cuò)誤評(píng)估報(bào)告(可用性工程)模版
- 《精密板料矯平機(jī) 第2部分:技術(shù)規(guī)范》
- 2024光伏發(fā)電工程交流匯流箱技術(shù)規(guī)范
- 旅游活動(dòng)碳排放管理評(píng)價(jià)指標(biāo)體系構(gòu)建及實(shí)證研究
- 2022年全國(guó)職業(yè)院校技能大賽-電氣安裝與維修賽項(xiàng)規(guī)程
- 2024年黑龍江省政工師理論知識(shí)考試參考題庫(kù)(含答案)
評(píng)論
0/150
提交評(píng)論