版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、目 錄摘要.1 引言.1 第一章 白盒測(cè)試研究.2 1.1 軟件測(cè)試概述.2 1.2白盒測(cè)試.3 1.3代碼測(cè)試.4 1.3.1靜態(tài)測(cè)試.4 1.3.2動(dòng)態(tài)測(cè)試.5 1.3.3接口測(cè)試.6 1.4白盒測(cè)試六種覆蓋方法.7 1.5主流白盒測(cè)試工具.10 1.5.1parasoft白盒測(cè)試工具集.10 1.5.2compuware白盒測(cè)試工具集.10 1.6測(cè)試管理工具.11 第二章 項(xiàng)目分析與規(guī)劃測(cè)試.12 2.1項(xiàng)目分析.12 2.2主要功能模塊.12 2.3 測(cè)試環(huán)境配置.13 2.4 測(cè)試思路與測(cè)試方案設(shè)計(jì).13 第三章 系統(tǒng)白盒測(cè)試實(shí)例的實(shí)現(xiàn).15 3.1測(cè)試的目的.15 3.2測(cè)試項(xiàng).
2、15 3.3通過的準(zhǔn)則.15 3.4測(cè)試步驟.15 3.4.1靜態(tài)測(cè)試.16 3.4.2動(dòng)態(tài)測(cè)試.16 3.5測(cè)試實(shí)施.16 3.5.1接口測(cè)試.16 3.5.2數(shù)據(jù)流測(cè)試.20 3.5.3基本路徑測(cè)試.23 3.5.4導(dǎo)出測(cè)試用例.24 3.5.5設(shè)計(jì)測(cè)試用例.24 3.8 測(cè)試總結(jié).25 3.8.1軟件測(cè)試的誤區(qū).25 3.8.2測(cè)試項(xiàng)目中的常見問題及處理方法.28 3.8.3測(cè)試的提高.29 總結(jié)與展望.31 致謝.32 參考文獻(xiàn).33 打字程序白盒測(cè)試摘要 軟件開發(fā)和使用的歷史已經(jīng)留給了使用者很多由于軟件缺陷而導(dǎo)致的巨大財(cái)力、物力損失的經(jīng)驗(yàn)教訓(xùn)。這些經(jīng)驗(yàn)教訓(xùn)迫使軟件開發(fā)者們必須添加一個(gè)
3、相應(yīng)的流程,并在此流程中采取強(qiáng)有力的檢測(cè)措施來檢測(cè)未發(fā)現(xiàn)的隱藏的軟件缺陷,也就是軟件測(cè)試。 軟件測(cè)試的核心是測(cè)試思維,你的思維能深入到什么程度,測(cè)試就能做到什么程度,本次課題旨在訓(xùn)練我們的測(cè)試思維,同時(shí)通過本次的課題實(shí)例掌握測(cè)試流程與技巧,為我們成為真正的測(cè)試人員打下堅(jiān)實(shí)的基礎(chǔ)。 隨著計(jì)算機(jī)軟件的規(guī)模越來越大,軟件測(cè)試成為了軟件質(zhì)量保障的關(guān)鍵環(huán)節(jié),軟件測(cè)試自動(dòng)化也成為了軟件測(cè)試領(lǐng)域所無法逾越的發(fā)展階段。 本文將使用白盒測(cè)試技術(shù)對(duì)打字練習(xí)程序進(jìn)行測(cè)試,通過設(shè)計(jì)測(cè)試方案,對(duì)程序進(jìn)行系統(tǒng)的單元測(cè)試,收集測(cè)試數(shù)據(jù),對(duì)測(cè)試數(shù)據(jù)進(jìn)行分析等手段,最終生成相關(guān)資料及最終測(cè)試報(bào)告,詳細(xì)介紹及探討軟件測(cè)試技術(shù)和白
4、盒測(cè)試實(shí)例的設(shè)計(jì)與實(shí)現(xiàn)。 本文的展開將通過以下三個(gè)部分: 第一部分:白盒測(cè)試及黑盒測(cè)試技術(shù)的相關(guān)介紹,市場(chǎng)上主流測(cè)試管理工具的對(duì)比分析。 第二部分:本文相關(guān)項(xiàng)目的案例分析和測(cè)試規(guī)劃,打字練習(xí)程序白盒測(cè)試的測(cè)試思路和測(cè)試方案設(shè)計(jì) 第三部分:打字練習(xí)程序白盒測(cè)試的具體實(shí)現(xiàn)細(xì)則 關(guān)鍵字:黑盒測(cè)試,白盒測(cè)試,測(cè)試管理,測(cè)試樁,測(cè)試點(diǎn) 引言 信息技術(shù)的飛速發(fā)展,使軟件產(chǎn)品應(yīng)用到社會(huì)的各個(gè)領(lǐng)域,軟件產(chǎn)品的質(zhì)量自然成為人們共同關(guān)注的焦點(diǎn)。不論軟件的生產(chǎn)者還是軟件的使用者,均生存在競(jìng)爭(zhēng)的環(huán)境中,軟件開發(fā)商為了占有市場(chǎng),必須把產(chǎn)品質(zhì)量作為企業(yè)的重要目標(biāo)之一,以免在激烈的競(jìng)爭(zhēng)中被淘汰出局。用戶為了保證自己業(yè)務(wù)的順
5、利完成,當(dāng)然希望選用優(yōu)質(zhì)的軟件。質(zhì)量不佳的軟件產(chǎn)品不僅會(huì)使開發(fā)商的維護(hù)費(fèi)用和用戶的使用成本大幅增加,還可能產(chǎn)生其他的責(zé)任風(fēng)險(xiǎn),造成公司信譽(yù)下降,繼而沖擊股票市場(chǎng)。在一些關(guān)鍵應(yīng)用 (如民航訂票系統(tǒng)、銀行結(jié)算系統(tǒng)、證券交易系統(tǒng)、自動(dòng)飛行控制軟件、軍事防御和核電站安全控制系統(tǒng)等) 中使用質(zhì)量有問題的軟件,還可能造成災(zāi)難性的后果。 軟件危機(jī)曾經(jīng)是軟件界甚至整個(gè)計(jì)算機(jī)界最熱門的話題。為了解決這場(chǎng)危機(jī),軟件從業(yè)人員、專家和學(xué)者做出了大量的努力?,F(xiàn)在人們已經(jīng)逐步認(rèn)識(shí)到所謂的軟件危機(jī)實(shí)際上僅是一種狀況,那就是軟件中有錯(cuò)誤,正是這些錯(cuò)誤導(dǎo)致了軟件開發(fā)在成本、進(jìn)度和質(zhì)量上的失控。有錯(cuò)是軟件的屬性,而且是無法改變的
6、,因?yàn)檐浖怯扇藖硗瓿傻模杏扇俗龅墓ぷ鞫疾粫?huì)是完美無缺的。問題在于我們?nèi)绾稳ケ苊忮e(cuò)誤的產(chǎn)生和消除已經(jīng)產(chǎn)生的錯(cuò)誤,使程序中的錯(cuò)誤密度達(dá)到盡可能低的程度。 有鑒于此,本課題將基于白盒測(cè)試作為主要研究方向,本文將以打字練習(xí)程序作為對(duì)象,對(duì)軟件測(cè)試(重點(diǎn)白盒測(cè)試)進(jìn)行研究,以美國(guó)mercury公司生產(chǎn)的td軟件為工具進(jìn)行測(cè)試用例的管理 本文將通過對(duì)對(duì)打字練習(xí)程序進(jìn)行白盒測(cè)試,對(duì)代碼,接口等測(cè)試進(jìn)行研究,以實(shí)現(xiàn)軟件測(cè)試在實(shí)際項(xiàng)目中的應(yīng)用,并深刻的理解白盒測(cè)試,及白盒測(cè)試在測(cè)試中所占地位 第一章 白盒測(cè)試研究 1.1 軟件測(cè)試概述 軟件測(cè)試就是在軟件交付用戶使用或投入運(yùn)行前,對(duì)軟件需求規(guī)格說明、設(shè)計(jì)規(guī)
7、格說明和編碼的最終復(fù)審,是軟件質(zhì)量保證的關(guān)鍵步驟。 軟件測(cè)試是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過程。 軟件測(cè)試在軟件生命周期中橫跨兩個(gè)階段:通常在編寫出每一個(gè)模塊之后就需要對(duì)它做必要的測(cè)試(稱為單元測(cè)試)。編碼和單元測(cè)試屬于軟件生命周期中的同一個(gè)階段。在結(jié)束這個(gè)階段后對(duì)軟件系統(tǒng)還要進(jìn)行各種綜合測(cè)試,如集成測(cè)試、系統(tǒng)測(cè)試、性能測(cè)試和配置測(cè)試等,這是軟件生命周期的另一個(gè)獨(dú)立階段,即測(cè)試階段。 軟件測(cè)試的目的: 測(cè)試的最終目的是為了避免錯(cuò)誤的發(fā)生,確保應(yīng)用程序能夠正常高效的運(yùn)行;好的測(cè)試用例在于發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯(cuò)誤;成功的測(cè)試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試;好的測(cè)試工程師應(yīng)該做到不僅發(fā)現(xiàn)問題,還能夠幫助開發(fā)
8、人員分析問題; 軟件測(cè)試的原則: 應(yīng)把“盡早和不斷地進(jìn)行軟件測(cè)試”作為軟件開發(fā)者的座右銘,實(shí)踐證明單元測(cè)試能夠盡早發(fā)現(xiàn)問題,減少后期測(cè)試的錯(cuò)誤量??梢圆捎胘unit和jtest來輔助進(jìn)行單元測(cè)試;測(cè)試用例應(yīng)由測(cè)試輸入數(shù)據(jù)、測(cè)試執(zhí)行步驟和與之對(duì)應(yīng)的預(yù)期輸出結(jié)果三部分組成;應(yīng)當(dāng)避免由程序員檢查自己的程序。(指后期系統(tǒng)測(cè)試階段,不包括單元測(cè)試);測(cè)試用例的設(shè)計(jì)要確保能覆蓋所有可能路徑。在設(shè)計(jì)測(cè)試用例時(shí),應(yīng)當(dāng)包括合理的輸入條件和覆蓋所有可能路徑不合理的輸入條件。不合理的輸入條件是指異常的,臨界的,可能引起問題的輸入條件;充分注意測(cè)試中的群集現(xiàn)象。經(jīng)驗(yàn)表明,測(cè)試后程序殘存的錯(cuò)誤數(shù)目與該程序中已發(fā)現(xiàn)的錯(cuò)誤
9、數(shù)目或檢錯(cuò)率成正比。應(yīng)該對(duì)錯(cuò)誤群集的程序段進(jìn)行重點(diǎn)測(cè)試;嚴(yán)格執(zhí)行測(cè)試計(jì)劃,排除測(cè)試的隨意性。測(cè)試計(jì)劃應(yīng)包括:所測(cè)軟件的功能,輸入和輸出,測(cè)試內(nèi)容,各項(xiàng)測(cè)試的進(jìn)度安排,資源要求,測(cè)試資料,測(cè)試工具,測(cè)試用例的選擇,測(cè)試的控制方法和過程,系統(tǒng)的配置方式,跟蹤規(guī)則,調(diào)試規(guī)則,以及回歸測(cè)試的規(guī)定等等以及評(píng)價(jià)標(biāo)準(zhǔn);應(yīng)當(dāng)對(duì)每一個(gè)測(cè)試結(jié)果做全面的檢查;妥善保存測(cè)試計(jì)劃,測(cè)試用例,出錯(cuò)統(tǒng)計(jì)和最終分析報(bào)告,為維護(hù)提供方便。 軟件測(cè)試的對(duì)象:軟件測(cè)試并不單純等同于程序測(cè)試。軟件測(cè)試應(yīng)該貫穿整個(gè)軟件定義與開發(fā)整個(gè)期間。因此需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)以及程序編碼等各階段所得到的文檔,包括需求規(guī)格說明、概要設(shè)計(jì)規(guī)格說
10、明、詳細(xì)設(shè)計(jì)規(guī)格說明以及源程序,都應(yīng)該是軟件測(cè)試(評(píng)審)的對(duì)象。 在對(duì)需求理解與表達(dá)的正確性、設(shè)計(jì)與表達(dá)的正確性、實(shí)現(xiàn)的正確性以及運(yùn)行的正確性的驗(yàn)證中,任何一個(gè)環(huán)節(jié)發(fā)生了問題都可能在軟件測(cè)試中表現(xiàn)出來。 1.2白盒測(cè)試由于邏輯錯(cuò)誤和不正確假設(shè)與一條程序路徑被運(yùn)行的可能性成反比。由于我們經(jīng)常相信某邏輯路徑不可能被執(zhí)行, 而事實(shí)上,它可能在正常的情況下被執(zhí)行。由于代碼中的筆誤是隨機(jī)且無法杜絕的,因此我們要進(jìn)行白盒測(cè)試。 白盒測(cè)試又稱結(jié)構(gòu)測(cè)試,透明盒測(cè)試、邏輯驅(qū)動(dòng)測(cè)試或基于代碼的測(cè)試。白盒測(cè)試是一種測(cè)試用例設(shè)計(jì)方法,盒子指的是被測(cè)試的軟件,白盒指的是盒子是可視的,你清楚盒子內(nèi)部的東西以及里面是如何運(yùn)
11、作的。 白盒的測(cè)試用例需要做到: (1)保證一個(gè)模塊中的所有獨(dú)立路徑至少被使用一次 (2)檢查內(nèi)部數(shù)據(jù)結(jié)構(gòu)以確保其有效性 白盒測(cè)試的目的:通過檢查軟件內(nèi)部的邏輯結(jié)構(gòu),對(duì)軟件中的邏輯路徑進(jìn)行覆蓋測(cè)試;在程序不同地方設(shè)立檢查點(diǎn),檢查程序的狀態(tài),以確定實(shí)際運(yùn)行狀態(tài)與預(yù)期狀態(tài)是否一致。 白盒測(cè)試的特點(diǎn):依據(jù)軟件設(shè)計(jì)說明書進(jìn)行測(cè)試、對(duì)程序內(nèi)部細(xì)節(jié)的嚴(yán)密檢驗(yàn)、針對(duì)特定條件設(shè)計(jì)測(cè)試用例、對(duì)軟件的邏輯路徑進(jìn)行覆蓋測(cè)試。 白盒測(cè)試的實(shí)施步驟: 測(cè)試計(jì)劃階段:根據(jù)需求說明書,制定測(cè)試進(jìn)度 測(cè)試設(shè)計(jì)階段:依據(jù)程序設(shè)計(jì)說明書,按照一定規(guī)范化的方法進(jìn)行軟件結(jié)構(gòu)劃分和設(shè)計(jì)測(cè)試用例。 測(cè)試執(zhí)行階段:輸入測(cè)試用例,得到測(cè)試結(jié)
12、果。 測(cè)試總結(jié)階段:對(duì)比測(cè)試的結(jié)果和代碼的預(yù)期結(jié)果,分析錯(cuò)誤原因,找到并解決錯(cuò)誤。 白盒測(cè)試的方法:總體上分為靜態(tài)方法和動(dòng)態(tài)方法兩大類。 靜態(tài)分析是一種不通過執(zhí)行程序而進(jìn)行測(cè)試的技術(shù)。靜態(tài)分析的關(guān)鍵功能是檢查軟件的表示和描述是否一致,沒有沖突或者沒有歧義。 動(dòng)態(tài)分析的主要特點(diǎn)是當(dāng)軟件系統(tǒng)在模擬的或真實(shí)的環(huán)境中執(zhí)行之前、之中和之后 , 對(duì)軟件系統(tǒng)行為的分析。動(dòng)態(tài)分析包含了程序在受控的環(huán)境下使用特定的期望結(jié)果進(jìn)行正式的運(yùn)行。它顯示了一個(gè)系統(tǒng)在檢查狀態(tài)下是正確還是不正確。在動(dòng)態(tài)分析技術(shù)中,最重要的技術(shù)是路徑和分支測(cè)試 白盒測(cè)試的優(yōu)缺點(diǎn) 優(yōu)點(diǎn):迫使測(cè)試人員去仔細(xì)思考軟件的實(shí)現(xiàn);可以檢測(cè)代碼中的每條分支
13、和路徑;揭示隱藏在代碼中的錯(cuò)誤;對(duì)代碼的測(cè)試比較徹底;最優(yōu)化。 缺點(diǎn):昂貴;無法檢測(cè)代碼中遺漏的路徑和數(shù)據(jù)敏感性錯(cuò)誤;不驗(yàn)證規(guī)格的正確性。 總的來說,白盒測(cè)試是一種被廣泛使用的邏輯測(cè)試方法,是由程序內(nèi)部邏輯驅(qū)動(dòng)的一種單元測(cè)試方法。只有對(duì)程序內(nèi)部十分了解才能進(jìn)行適度有效的白盒測(cè)試。但是貫穿在程序內(nèi)部的邏輯存在著不確定性和無窮性,尤其對(duì)于大規(guī)模復(fù)雜軟件。因此我們不能窮舉所有的邏輯路徑,即使窮舉也未必會(huì)帶來好運(yùn)(窮舉不能查出程序邏輯規(guī)則錯(cuò)誤,不能查出數(shù)據(jù)相關(guān)錯(cuò)誤,不能查出程序遺漏的路徑)。 那么正確使用白盒測(cè)試,就要先從代碼分析入手,根據(jù)不同的代碼邏輯規(guī)則、語(yǔ)句執(zhí)行情況,選用適合的覆蓋方法。任何一個(gè)
14、高效的測(cè)試用例,都是針對(duì)具體測(cè)試場(chǎng)景的。邏輯測(cè)試不是片面的測(cè)試正確的結(jié)果或是測(cè)試錯(cuò)誤的結(jié)果,而是盡可能全面地覆蓋每一個(gè)邏輯路徑。 1.3代碼測(cè)試 1.3.1靜態(tài)測(cè)試 執(zhí)行代碼靜態(tài)測(cè)試應(yīng)注意以下方面:同一程序內(nèi)的代碼書寫是否為同一風(fēng)格;代碼布局是否合理、美觀;程序中函數(shù)、子程序塊分界是否明顯;注釋是否符合既定格式;注釋是否正確反映代碼的功能;變量定義是否正確(長(zhǎng)度、類型、存儲(chǔ)類型);子程序(函數(shù)和方法)接受的參數(shù)類型、大小、次序是否和調(diào)用模塊相匹配合;函數(shù)的返回值類型是否正確;程序中是否引用了未初始化變量;數(shù)組和字符串的下標(biāo)是否為整數(shù);數(shù)組和字符串的下標(biāo)是否在范圍內(nèi)(不“越界”);進(jìn)行數(shù)組的檢索
15、及其它操作中,是否會(huì)出現(xiàn)“漏掉一個(gè)這種情況”;是否在應(yīng)該使用常量的地方使用了變量(例: 數(shù)組范圍檢查);是否為變量賦予不同類型的值;賦值是否符合數(shù)據(jù)類型的轉(zhuǎn)換規(guī)則;變量的命名是否相似;是否存在聲明過,但從未引用或者只引用過一次的變量;在特定模塊中所有的變量是否都顯式聲明過;是否可以理解為該變量具有更高的共享級(jí)別;是否為引用的指針分配內(nèi)存;數(shù)據(jù)結(jié)構(gòu)在函數(shù)和子程序中的引用是否明確定義了其結(jié)構(gòu);計(jì)算中是否使用了不同數(shù)據(jù)類型的變量;計(jì)算中是否使用了不同的數(shù)據(jù)類型相同但長(zhǎng)度不同的變量;賦值的目的變量是否小于賦值表達(dá)式的值;數(shù)值計(jì)算是否會(huì)出現(xiàn)溢出(向上)的情況;數(shù)值計(jì)算是否會(huì)出現(xiàn)溢出(向下)的情況;除數(shù)是
16、否可能為零;某些計(jì)算是否會(huì)丟失計(jì)算精度;變量的值是否超過有意義的值;計(jì)算式的求值的順序是否容易讓人感到混亂;比較是否正確;是否存在分?jǐn)?shù)和浮點(diǎn)數(shù)的比較;精度問題是否會(huì)影響比較;每一個(gè)邏輯表達(dá)式是否都得到了正確表達(dá);邏輯表達(dá)式的操作數(shù)是否均為邏輯值;程序中的beginend和dowhile等語(yǔ)句中,end是否對(duì)應(yīng);程序、模塊、子程序和循環(huán)是否能夠終止;是否存在永不執(zhí)行的循環(huán);是否存在多循環(huán)一次或少循環(huán)一次的情況;循環(huán)變量是否在循環(huán)內(nèi)被錯(cuò)誤地修改;多分支選擇中,索引變量是否能超過可能的分支數(shù); 該情況是否能夠得到正確處理;全局變量定義和用法在各個(gè)模塊中是否一致;是否修改了只作為輸入用的參數(shù);常量是否
17、被作為形式參數(shù)進(jìn)行傳遞。 1.3.2動(dòng)態(tài)測(cè)試 執(zhí)行代碼動(dòng)態(tài)測(cè)試應(yīng)注意以下方面:測(cè)試數(shù)據(jù)是否具有一定的代表性;測(cè)試數(shù)據(jù)是否包含測(cè)試所用的各個(gè)等價(jià)類(邊界條件、次邊界條件、空白、無效);是否可能從客戶那邊得到測(cè)試數(shù)據(jù);不可從客戶那邊得到測(cè)試數(shù)據(jù)的情況下,所用的測(cè)試數(shù)據(jù)是否具有實(shí)際的意義(客戶業(yè)務(wù)上的);是否每一組測(cè)試數(shù)據(jù)都得到了執(zhí)行;每一組測(cè)試數(shù)據(jù)的測(cè)試結(jié)果是否與預(yù)期結(jié)果一致;文件的屬性是否正確;打開文件語(yǔ)句是否正確;輸入/輸出語(yǔ)句是否與格式說明書所記述的一致;緩沖區(qū)大小與記錄長(zhǎng)度是否匹配;使用文件前是否已打開了文件;文件結(jié)束條件是否存在;產(chǎn)生輸入/輸出錯(cuò)誤時(shí),系統(tǒng)是否進(jìn)行檢測(cè)并處理;輸出信息中是
18、否存在文字書寫錯(cuò)誤和語(yǔ)法錯(cuò)誤;數(shù)字輸入框是否接受數(shù)字輸入;數(shù)字是否按既定格式顯示;數(shù)字輸入框是否拒絕字符串和“非法”數(shù)字的輸入;組合框是否的能夠進(jìn)行下拉選擇;組合框是否能夠進(jìn)行下拉多項(xiàng)選擇;對(duì)于可添加數(shù)據(jù)組合框,添加數(shù)據(jù)后數(shù)據(jù)是否能夠得到正確顯示和進(jìn)行選擇;列表框是否能夠進(jìn)行選擇;多項(xiàng)列表框是否能夠進(jìn)行多數(shù)據(jù)項(xiàng)選擇;日期輸入框是否 接受正確的日期輸入;日期輸入框是否拒絕錯(cuò)誤的日期輸入;日期輸入框在日期輸入后是否按既定的日期格式顯示日期;單選組內(nèi)是否有且只有一個(gè)單選鈕可選;如果單選組內(nèi)無單選鈕可選,這種情況是否允許存在;復(fù)選框組內(nèi)是否允許多個(gè)復(fù)選框(包括全部可選)可選;如果復(fù)選框組內(nèi)無復(fù)選框可選
19、,這種情況是否允許存在;文本框及某些控件拒絕輸入和選擇時(shí)顯示區(qū)域是否變灰或按既定規(guī)約處理;文本框中數(shù)據(jù)格式(大小、對(duì)齊方向、顏色、背景)是否符合規(guī)范;密碼輸入框是否按掩碼的方式顯示;控件是否存在默認(rèn)輸入值,若存在,默認(rèn)值是否得到顯示和提交;cancel之類的按鈕按下后,控件中的數(shù)據(jù)是否清空復(fù)原或按既定規(guī)約處理;submit之類的按鈕按下后,數(shù)據(jù)是否得到提交或按既定規(guī)約處理;異常信息表述是否正確;軟件是否按預(yù)期方式處理錯(cuò)誤;文件或外設(shè)不存在的情況下是否存在相應(yīng)的錯(cuò)誤處理;軟件是否嚴(yán)格的遵循外設(shè)的讀寫格式;產(chǎn)生的文件和數(shù)據(jù)表的格式是否正確;產(chǎn)生的文件和數(shù)據(jù)表的計(jì)算結(jié)果是否正確;打印的報(bào)表是否符合既
20、定的格式;錯(cuò)誤日志的表述是否正確;錯(cuò)誤日志的格式是否正確。 1.3.3接口測(cè)試 定義通用的命令接口結(jié)構(gòu),用文本文件記錄接口相關(guān)結(jié)構(gòu)信息,通過對(duì)該文本文件進(jìn)行逐行的語(yǔ)法解析,將文件中的描述轉(zhuǎn)化為統(tǒng)一結(jié)構(gòu)的鏈表,驗(yàn)證來自外層的數(shù)據(jù)是否正確,以及根據(jù)提示用戶輸入的信息驗(yàn)證發(fā)送到其它層的數(shù)據(jù)是否正確。這種通用接口測(cè)試方法,解決了接口測(cè)試時(shí)重復(fù)編寫類似功能代碼的問題,提供了一種新的描述不同命令結(jié)構(gòu)的思路。通過使用文件形式,不用修改程序就可以實(shí)現(xiàn)對(duì)新的接口命令的測(cè)試,使測(cè)試程序得到極大的精簡(jiǎn),并且易于擴(kuò)展和移植到不同項(xiàng)目中。 詳細(xì)步驟: (1)測(cè)試程序要測(cè)試的已經(jīng)具體實(shí)現(xiàn)的類。 (2)個(gè)抽象的測(cè)試類,聲明
21、要驗(yàn)證的功能的測(cè)試方法。在具體的測(cè)試程序?qū)崿F(xiàn)中繼承這個(gè)測(cè)試類,并修改相應(yīng)的實(shí)現(xiàn)方法。 (3)口的每一個(gè)具體實(shí)現(xiàn)中都運(yùn)行該測(cè)試程序,但在每個(gè)實(shí)現(xiàn)中都只驗(yàn)證“接口范圍內(nèi)”的行為 (4)試程序內(nèi),找到創(chuàng)建(接口)對(duì)象的代碼,將該代碼改成具體的、已經(jīng)實(shí)現(xiàn)的類的創(chuàng)建方法,但記住將該對(duì)象聲明為接口的對(duì)象,而不是具體實(shí)現(xiàn)的類的對(duì)象。重復(fù)這一過程,直至測(cè)試程序中沒有已經(jīng)實(shí)現(xiàn)的類的對(duì)象。 (5)要在測(cè)試中調(diào)用的抽象方法。 (6)只涉及接口和一些抽象的測(cè)試方法,將測(cè)試程序移入抽象的測(cè)試類。 (7)這一過程直至所有的測(cè)試都移入抽象的測(cè)試類。 (8)前面的全部過程,直至除了驗(yàn)證具體實(shí)現(xiàn)的特有的方法的測(cè)試程序外,所有的
22、測(cè)試代碼都已完成。 1.4白盒測(cè)試六種覆蓋方法 首先為了下文的舉例描述方便,這里先給出一張程序流程圖。(本文以1995年軟件設(shè)計(jì)師考試的一道考試題目為例,圖中紅色字母代表程序執(zhí)行路徑)。 (1)語(yǔ)句覆蓋 主要特點(diǎn):語(yǔ)句覆蓋是最起碼的結(jié)構(gòu)覆蓋要求,語(yǔ)句覆蓋要求設(shè)計(jì)足夠多的測(cè)試用例,使得程序中每條語(yǔ)句至少被執(zhí)行一次。 用例設(shè)計(jì):(如果此時(shí)將a路徑上的語(yǔ)句1-t去掉,那么用例如表1.4.1) 優(yōu)點(diǎn):可以很直觀地從源代碼得到測(cè)試用例,無須細(xì)分每條判定表達(dá)式。 缺點(diǎn):由于這種測(cè)試方法僅僅針對(duì)程序邏輯中顯式存在的語(yǔ)句,但對(duì)于隱藏的條件和可能到達(dá)的隱式邏輯分支,是無法測(cè)試的。在本例中去掉了語(yǔ)句1t去掉,那么
23、就少了一條測(cè)試路徑。在if結(jié)構(gòu)中若源代碼沒有給出else后面的執(zhí)行分支,那 么語(yǔ)句覆蓋測(cè)試就不會(huì)考慮這種情況。但是我們不能排除這種以外的分支不會(huì)被執(zhí)行,而往往這種錯(cuò)誤會(huì)經(jīng)常出現(xiàn)。再如,在do-while結(jié)構(gòu)中,語(yǔ)句覆蓋執(zhí)行其中某一個(gè)條件分支。那么顯然,語(yǔ)句覆蓋對(duì)于多分支的邏輯運(yùn)算是無法全面反映的,它只在乎運(yùn)行一次,而不考慮其他情況。 (2)判定覆蓋 主要特點(diǎn):判定覆蓋又稱為分支覆蓋,它要求設(shè)計(jì)足夠多的測(cè)試用例,使得程序中每個(gè)判定至少有一次為真值,有一次為假值,即:程序中的每個(gè)分支至少執(zhí)行一次。每個(gè)判斷的取真、取假至少執(zhí)行一次。 用例設(shè)計(jì)(如表1.4.2): 優(yōu)點(diǎn):判定覆蓋比語(yǔ)句覆蓋要多幾乎一倍
24、的測(cè)試路徑,當(dāng)然也就具有比語(yǔ)句覆蓋更強(qiáng)的測(cè)試能力。同樣判定覆蓋也具有和語(yǔ)句覆蓋一樣的簡(jiǎn)單性,無須細(xì)分每個(gè)判定就可以得到測(cè)試用例。 缺點(diǎn):往往大部分的判定語(yǔ)句是由多個(gè)邏輯條件組合而成(如,判定語(yǔ)句中包含and、or、case),若僅僅判斷其整個(gè)最終結(jié)果,而忽略每個(gè)條件的取值情況,必然會(huì)遺漏部分測(cè)試路徑。 (3)條件覆蓋 主要特點(diǎn):條件覆蓋要求設(shè)計(jì)足夠多的測(cè)試用例,使得判定中的每個(gè)條件獲得各種可能的結(jié)果,即每個(gè)條件至少有一次為真值,有一次為假值。 用例設(shè)計(jì)(如表1.4.3): 優(yōu)點(diǎn):顯然條件覆蓋比判定覆蓋,增加了對(duì)符合判定情況的測(cè)試,增加了測(cè)試路徑。 缺點(diǎn):要達(dá)到條件覆蓋,需要足夠多的測(cè)試用例,但
25、條件覆蓋并不能保證判定 覆蓋。條件覆蓋只能保證每個(gè)條件至少有一次為真,而不考慮所有的判定結(jié)果。 (4)判定/條件覆蓋 主要特點(diǎn):設(shè)計(jì)足夠多的測(cè)試用例,使得判定中每個(gè)條件的所有可能結(jié)果至少出現(xiàn)一次,每個(gè)判定本身所有可能結(jié)果也至少出現(xiàn)一次。 用例設(shè)計(jì)(如表1.4.4): 優(yōu)點(diǎn):判定/條件覆蓋滿足判定覆蓋準(zhǔn)則和條件覆蓋準(zhǔn)則,彌補(bǔ)了二者的不足。 缺點(diǎn):判定/條件覆蓋準(zhǔn)則的缺點(diǎn)是未考慮條件的組合情況。 (5)組合覆蓋 主要特點(diǎn):要求設(shè)計(jì)足夠多的測(cè)試用例,使得每個(gè)判定中條件結(jié)果的所有可能組合至少出現(xiàn)一次。 用例設(shè)計(jì)(如表1.4.5): 優(yōu)點(diǎn):多重條件覆蓋準(zhǔn)則滿足判定覆蓋、條件覆蓋和判定/條件覆蓋準(zhǔn)則。更改
26、的判定/條件覆蓋要求設(shè)計(jì)足夠多的測(cè)試用例,使得判定中每個(gè)條件的所有可能結(jié)果至少出現(xiàn)一次,每個(gè)判定本身的所有可能結(jié)果也至少出現(xiàn)一次。并且每個(gè)條件都顯示能單獨(dú)影響判定結(jié)果。 缺點(diǎn):線性地增加了測(cè)試用例的數(shù)量。 (6)路徑覆蓋 主要特點(diǎn):設(shè)計(jì)足夠的測(cè)試用例,覆蓋程序中所有可能的路徑。 用例設(shè)計(jì)(如表1.4.6): 優(yōu)點(diǎn):這種測(cè)試方法可以對(duì)程序進(jìn)行徹底的測(cè)試,比前面五種的覆蓋面都廣。 缺點(diǎn):由于路徑覆蓋需要對(duì)所有可能的路徑進(jìn)行測(cè)試(包括循環(huán)、條件組合、分支選擇等),那么需要設(shè)計(jì)大量、復(fù)雜的測(cè)試用例,使得工作量呈指數(shù)級(jí)增長(zhǎng)。而在有些情況下,一些執(zhí)行路徑是不可能被執(zhí)行的,如: if (!a)b+; fc3
27、q0if (!a)d-; 這兩個(gè)語(yǔ)句實(shí)際只包括了2條執(zhí)行路徑,即a為真或假時(shí)候?qū)和d的處理,真或假不可能都存在,而路徑覆蓋測(cè)試則認(rèn)為是包含了真與假的4條執(zhí)行路徑。這樣不僅降低了測(cè)試效率,而且大量的測(cè)試結(jié)果的累積,也為排錯(cuò)帶來麻煩。 1.5主流白盒測(cè)試工具 1.5.1parasoft白盒測(cè)試工具集 (1)工具名:jtest 支持語(yǔ)言環(huán)境:java 簡(jiǎn)介:代碼分析和動(dòng)態(tài)類、組件測(cè)試 (2)工具名:jcontract 支持語(yǔ)言環(huán)境:java 簡(jiǎn)介:實(shí)時(shí)性能監(jiān)控以及分析優(yōu)化 (3)工具名:c+ test 支持語(yǔ)言環(huán)境:c,c+ 簡(jiǎn)介:代碼分析和動(dòng)態(tài)測(cè)試 (4)工具名:codewizard 支持語(yǔ)言環(huán)
28、境:c,c+ 簡(jiǎn)介:代碼靜態(tài)分析 (5)工具名:insure+ 支持語(yǔ)言環(huán)境:c,c+ 簡(jiǎn)介:實(shí)時(shí)性能監(jiān)控以及分析優(yōu)化 (6)工具名:.test 支持語(yǔ)言環(huán)境:.net 簡(jiǎn)介:代碼分析和動(dòng)態(tài)測(cè)試 1.5.2compuware白盒測(cè)試工具集 (1)工具名:boundschecker 支持語(yǔ)言環(huán)境:c+,delphi 簡(jiǎn)介:api和ole錯(cuò)誤檢查、指針和泄露錯(cuò)誤檢查、內(nèi)存錯(cuò)誤檢查 (2)工具名:truetime 支持語(yǔ)言環(huán)境:c+,java,visual basic 簡(jiǎn)介:代碼運(yùn)行效率 檢查、組件性能的分析 (3)工具名:failsafe 支持語(yǔ)言環(huán)境:visual basic 簡(jiǎn)介:自動(dòng)錯(cuò)誤處理
29、和恢復(fù)系統(tǒng) (4)工具名:jcheck 支持語(yǔ)言環(huán)境:ms visual j+ 簡(jiǎn)介:圖形化的純種和事件分析工具 (5)工具名:truecoverage 支持語(yǔ)言環(huán)境:c+,java,visual basic 簡(jiǎn)介:函數(shù)調(diào)用次數(shù)、所占比率統(tǒng)計(jì)以及穩(wěn)定性跟蹤 (6)工具名:smartcheck 支持語(yǔ)言環(huán)境:visual basic 簡(jiǎn)介:函數(shù)調(diào)用次數(shù)、所占比率統(tǒng)計(jì)以及穩(wěn)定性跟蹤 (7)工具名:codereview 支持語(yǔ)言環(huán)境:visual basic 簡(jiǎn)介:自動(dòng)源代碼分析工具 1.6測(cè)試管理工具 隨著軟件測(cè)試的地位逐步提高,測(cè)試管理的重要性逐步顯現(xiàn),測(cè)試工具的應(yīng)用已經(jīng)成為了普遍的趨勢(shì)。目前用
30、于測(cè)試的工具一般可分為白盒測(cè)試工具、黑盒測(cè)試工具、性能測(cè)試工具,另外還有用于測(cè)試管理(測(cè)試流程管理、缺陷跟蹤管理、測(cè)試用例管理)的工具。 總的來說,測(cè)試工具的應(yīng)用可以提高測(cè)試的質(zhì)量、測(cè)試的效率。但是在選擇和使用測(cè)試工具的時(shí)候,我們也應(yīng)該看到,在測(cè)試過程中,并不是所有的測(cè)試工具都適合我們使用,同時(shí),有了測(cè)試工具、會(huì)使用測(cè)試工具并不等于測(cè)試工具真正能在測(cè)試中發(fā)揮作用。 第二章 項(xiàng)目分析與規(guī)劃測(cè)試 2.1項(xiàng)目分析 2.2主要功能模塊 英文練習(xí)模塊:由系統(tǒng)隨機(jī)調(diào)用文檔type_english.dat里的內(nèi)容,以程序中要求取出字符數(shù)輸出到界面,由用戶輸入,程序判斷用戶練習(xí)的速度,時(shí)間,正確率等數(shù)據(jù)。 數(shù)
31、字練習(xí)模塊:由系統(tǒng)隨機(jī)調(diào)用文檔type_num.dat里的內(nèi)容,以程序中要求取出字符數(shù)輸出到界面,由用戶輸入,程序判斷用戶練習(xí)的速度,時(shí)間,正確率等數(shù)據(jù)。 字符練習(xí)模塊:由系統(tǒng)隨機(jī)調(diào)用文檔type_car.dat里的內(nèi)容,以程序中要求取出字符數(shù)輸出到界面,由用戶輸入,程序判斷用戶練習(xí)的速度,時(shí)間,正確率等數(shù)據(jù)。 所有字符練習(xí):由系統(tǒng)隨機(jī)調(diào)用文檔type_all.dat里的內(nèi)容,以程序中要求取出字符數(shù)輸出到界面,由用戶輸入,程序判斷用戶練習(xí)的速度,時(shí)間,正確率等數(shù)據(jù)。 打字練習(xí)結(jié)果計(jì)算模塊:計(jì)算用戶練習(xí)的結(jié)果信息 打字練習(xí)數(shù)據(jù)修改模塊:用戶自定義練習(xí)數(shù)據(jù),修改后確定保存后更新相應(yīng)數(shù)據(jù)庫(kù) 2.3
32、測(cè)試環(huán)境配置 測(cè)試環(huán)境主要包括軟件環(huán)境和硬件環(huán)境,本項(xiàng)目具體測(cè)試環(huán)境為: 軟件環(huán)境: 操作系統(tǒng):microsoft windows xp professional 2002 chs 運(yùn)行平臺(tái):microsoft visual studio 2008 軟件支持: mercury testdirector 8.0 硬件環(huán)境: cpu:intel(r)pentium(r)m processor 1.86ghz 內(nèi)存:ddr1g 硬盤:80g(5400轉(zhuǎn)) 顯卡:獨(dú)立ati 64m 網(wǎng)卡:100m/10m 2.4 測(cè)試思路與測(cè)試方案設(shè)計(jì) 對(duì)程序進(jìn)行分析,設(shè)計(jì)測(cè)試計(jì)劃,實(shí)施測(cè)試,對(duì)用例的管理。 第三章
33、系統(tǒng)白盒測(cè)試實(shí)例的實(shí)現(xiàn) 3.1測(cè)試的目的 測(cè)試主要為打字系統(tǒng)的白盒測(cè)試。保證程序的代碼規(guī)范,代碼正確,數(shù)據(jù)調(diào)用正確,以及程序模塊單獨(dú)正常運(yùn)行,保證局部模塊功能完備性,運(yùn)行正確性與穩(wěn)定性。使界面符合設(shè)計(jì)規(guī)范,適用于用戶。 3.2測(cè)試項(xiàng) 所要測(cè)試的測(cè)試項(xiàng): 打字程序需求報(bào)告,需求規(guī)格說明書; 打字程序詳細(xì)設(shè)計(jì)文檔; 打字程序代碼編寫規(guī)范; 代碼中變量的命名標(biāo)準(zhǔn); 打字程序界面規(guī)范。 3.3通過的準(zhǔn)則 測(cè)試通過主要依照以下標(biāo)準(zhǔn): 打字程序需求報(bào)告,需求規(guī)格說明書測(cè)試通過的標(biāo)準(zhǔn):需求報(bào)告及需求規(guī)格說明書文檔中描述的正確性,無異性。 打字程序詳細(xì)設(shè)計(jì)文檔測(cè)試通過的標(biāo)準(zhǔn):文檔中描述的正確性,無異性。 打字
34、程序代碼編寫規(guī)范:創(chuàng)建的變量、接口、函數(shù)、屬性應(yīng)與設(shè)計(jì)文檔保持一致;程序的各種命名、注釋、代碼行的格式等應(yīng)符合程序開發(fā)命名標(biāo)準(zhǔn)和編碼規(guī)范;程序模塊能獨(dú)立穩(wěn)定運(yùn)行。 打字程序界面測(cè)試通過的標(biāo)準(zhǔn):界面的樣式、大小、顏色、整體布局的設(shè)置;各種標(biāo)簽控件的使用及主題描述以及事件源控件的使用、快捷鍵使用都應(yīng)符合nc系統(tǒng)應(yīng)用框架需求報(bào)告和設(shè)計(jì)文檔的相關(guān)規(guī)范。 3.4測(cè)試步驟 需要列出所測(cè)試類的調(diào)用關(guān)系和關(guān)鍵方法的調(diào)用關(guān)系(依據(jù)數(shù)據(jù)流)。 3.4.1靜態(tài)測(cè)試 變量命名及代碼書寫規(guī)范檢查; 變量定義、函數(shù)、方法、數(shù)組、變量的使用檢查; 檢查是否有定義未使用的變量; 檢查全局變量的使用情況; 檢查程序代碼循環(huán)情況
35、; 檢查是否為引用的指針分配內(nèi)存; 檢查數(shù)組運(yùn)算情況。 3.4.2動(dòng)態(tài)測(cè)試 控制流分析; 數(shù)據(jù)流分析; 信息流分析; 畫出該代碼的控制流程圖; 計(jì)算程序的圈復(fù)雜度; 做基本路徑覆蓋,設(shè)計(jì)相應(yīng)測(cè)試用例; 分析測(cè)試結(jié)果。 3.5測(cè)試實(shí)施 3.5.1接口測(cè)試 (1) 被測(cè)試對(duì)象(單元)的介紹 接口a:用戶選擇模塊中用戶選擇所要練習(xí)的模塊,由參數(shù)傳至具體模塊 接口b:用戶選擇退出,由參數(shù)傳至退出模塊 接口c:用戶自定義練習(xí)數(shù)據(jù),數(shù)據(jù)庫(kù)內(nèi)容相對(duì)更新 (2) 測(cè)試范圍與目的 檢查參數(shù)傳送的正確性及函數(shù)的正確性 (3)測(cè)試輔助工具的描述 操作系統(tǒng):microsoft windows xp professio
36、nal 2002 chs 運(yùn)行平臺(tái):microsoft visual studio 2005 (4) 接口測(cè)試用例 接口a:如表3.5.1 接口b:如表3.5.2 接口c:如表3.5.3 3.5.2數(shù)據(jù)流測(cè)試 數(shù)據(jù)流測(cè)試是指關(guān)注變量定義點(diǎn)和使用(或引用)點(diǎn)的一種結(jié)構(gòu)測(cè)試方式,它和數(shù)據(jù)流圖沒有什么聯(lián)系,實(shí)際上,很多數(shù)據(jù)流測(cè)試支持者和研究人員將這種測(cè)試方法看做是一種路徑測(cè)試。早期的數(shù)據(jù)流分析常常集中于現(xiàn)在叫做定義/引用異常缺陷,如: 變量被定義,但從來沒有被使用(引用)。 所使用的變量沒有被定義。 變量在使用之前被再次定義。 這些異??梢酝ㄟ^程序的索引表發(fā)現(xiàn)。由于索引表信息是有編譯器生成的,因此這
37、些異常可以通過所謂景泰分析發(fā)現(xiàn),即在不執(zhí)行被測(cè)程序的情況下發(fā)現(xiàn)源代碼的一些數(shù)據(jù)流異常。 首先來分析代碼,找出節(jié)點(diǎn)及數(shù)據(jù)流,畫出程序流圖,如圖3.5.2 (1)數(shù)據(jù)流分析 數(shù)據(jù)流分析在軟件開發(fā)、測(cè)試和維護(hù)中起著十分重要的作用。它將程序中變量的出現(xiàn)分為變量的定義和引用。所謂的數(shù)據(jù)流分析是指在不運(yùn)行被測(cè)程序的情況下,對(duì)變量的定義、引用進(jìn)行分析,以檢測(cè)數(shù)據(jù)的賦值與引用之間是否出現(xiàn)了不合理的現(xiàn)象,如引用未賦值的變量,對(duì)以前未曾使用變量的再次賦值等數(shù)據(jù)流異?,F(xiàn)象。 我們根據(jù)圖4-2給出的一個(gè)程序的控制流圖,其中每個(gè)語(yǔ)句的定義/使用變量由表4-3給出,下面我們來看看詳細(xì)的表4-3,并對(duì)其結(jié)果做出分析 通過變
38、量的定義/引用分析,可以發(fā)現(xiàn)該程序中含有幾個(gè)數(shù)據(jù)流異常: 語(yǔ)句1,2對(duì)變量i的定義未曾被使用過 語(yǔ)句11使用了變量timeyser,但在執(zhí)行時(shí)并未對(duì)其定義過 語(yǔ)句14使用了變量ctime,而在其之前并未對(duì)其進(jìn)行定義(賦值) 經(jīng)過上面的分析,發(fā)現(xiàn)程序中包含有些異常,有些語(yǔ)句執(zhí)行還有錯(cuò)誤,不過這一情況表明, 也許程序中含有錯(cuò)誤,也許可以把程序?qū)懙母菀桌斫猓瑥亩軌蚝?jiǎn)化驗(yàn)證 工作,以及隨后的維護(hù)工作(去掉那些多余的語(yǔ)句一般會(huì)縮短執(zhí)行時(shí)間) 定義/使用測(cè)試假設(shè)v是程序p中變量的集合,程序p的控制流圖用g(p)表示。g(p)有一個(gè)單入口和一個(gè)單出口結(jié)點(diǎn),并且不允許有某個(gè)結(jié)點(diǎn)到其自身的身邊。為描述定義/
39、使用測(cè)試,下面先定義幾個(gè)基本術(shù)語(yǔ): 變量v的定義結(jié)點(diǎn)n-記做def(v,n) 變量v的定義結(jié)點(diǎn)n-記做use(v,n) 謂詞使用-記做puse 定義/使用路徑-記做dupath 定義明確路徑-記做dc-path 表4-4將給出打字程序中變量的定義結(jié)點(diǎn)和使用結(jié)點(diǎn)。使用這些信息,結(jié)合圖4-2中的程序控制流圖,可以識(shí)別各種定義/使用路徑和定義明確路徑,對(duì)于不可執(zhí)行的語(yǔ)句,例如常量和變量說明語(yǔ)句,是否應(yīng)該被認(rèn)為是定義結(jié)點(diǎn),現(xiàn)在還是學(xué)術(shù)界爭(zhēng)論的一個(gè)問題。如果沿定義/使用路徑跟蹤程序的執(zhí)行情況,則這些結(jié)點(diǎn)并不很重要。但是如果出現(xiàn)了問題,包含這些結(jié)點(diǎn)有助于發(fā)現(xiàn)問題,則可視情況做出選擇。 下面將較詳細(xì)的分析一
40、些定義/使用路徑。 變量right_char的定義/使用路徑 變量right_char有兩個(gè)定義結(jié)點(diǎn)和兩個(gè)使用結(jié)點(diǎn)def(right_char,3)和def(right_char,31)以及use(right_char,31)和use(right_char,44),產(chǎn)生了3條定義/使用路徑: p1= p2= p3= 3.5.3基本路徑測(cè)試 根據(jù)基本路徑測(cè)試的方法,我們將先給出打字程序的數(shù)據(jù)控制流程圖。 1畫出打字程序的控制流程圖流程圖用來描述程序控制結(jié)構(gòu)??蓪⒘鞒虉D映射到一個(gè)相應(yīng)的流圖(假設(shè)流程圖的菱形決定框中不包含復(fù)合條件)。在流圖中,每一個(gè)圓,稱為流圖的結(jié)點(diǎn),代表一個(gè)或多個(gè)語(yǔ)句。一個(gè)處理方
41、框序列和一個(gè)菱形決策框可被映射為一個(gè)結(jié)點(diǎn),流圖中的箭頭,稱為邊或連接,代表控制流,類似于流程圖中的箭頭。一條邊必須終止于一個(gè)結(jié)點(diǎn),即使該結(jié)點(diǎn)并不代表任何語(yǔ)句(例如:if-else-then結(jié)構(gòu))。由邊和結(jié)點(diǎn)限定的范圍稱為區(qū)域。計(jì)算區(qū)域時(shí)應(yīng)包括圖外部的范圍。 圖4-6 打字程序計(jì)算模塊代碼程序控制流程圖2.計(jì)算圈復(fù)雜度 圈復(fù)雜度是一種為程序邏輯復(fù)雜性提供定量測(cè)度的軟件度量,將該度量用于計(jì)算程序的基本的獨(dú)立路徑數(shù)目,為確保所有語(yǔ)句至少執(zhí)行一次的測(cè)試數(shù)量的上界。獨(dú)立路徑必須包含一條在定義之前不曾用到的邊。 有以下三種方法計(jì)算圈復(fù)雜度: 流圖中區(qū)域的數(shù)量對(duì)應(yīng)于環(huán)型的復(fù)雜性; 給定流圖g的圈復(fù)雜度v(g
42、),定義為v(g)=e-n+2,e是流圖中邊的數(shù)量,n是流圖中結(jié)點(diǎn)的數(shù)量; 給定流圖g的圈復(fù)雜度v(g),定義為v(g)=p+1,p是流圖g中判定結(jié)點(diǎn)的數(shù)量。 對(duì)應(yīng)上面圖中的圈復(fù)雜度計(jì)算如下: 流圖中有個(gè)區(qū)域 v(g)=23條邊-19節(jié)點(diǎn)+2= v(g)=判定點(diǎn)+1= 3.5.4導(dǎo)出測(cè)試用例 根據(jù)上面的計(jì)算方法,可得出六個(gè)獨(dú)立的路徑。(一條獨(dú)立路徑是指,和其他的獨(dú)立路徑相比,至少引入一個(gè)新處理語(yǔ)句或一個(gè)新判斷的程序通路。v(g)值正好等于該程序的獨(dú)立路徑的條數(shù)。) 路徑1:b-c-hh-l 路徑2:b-c-d-e-f-g-h-k-l 路徑3:b-c-d-e-f-i-j-k-l 路徑4: m-n
43、-tt-v 路徑:m-n-o-p-q-s-u-v 路徑:m-n-o-p-r-t-u-v 根據(jù)上面的獨(dú)立路徑,去設(shè)計(jì)輸入數(shù)據(jù),使程序分別執(zhí)行到上面六條路徑。 3.5.5設(shè)計(jì)測(cè)試用例 為了確?;韭窂郊械拿恳粭l路徑的執(zhí)行,根據(jù)判斷結(jié)點(diǎn)給出的條件,選擇適當(dāng)?shù)臄?shù)據(jù)以保證某一條路徑可以被測(cè)試到,滿足上面例子基本路徑集的測(cè)試用例是: ()路徑:(b-c-hh-l)的測(cè)試用例 輸入數(shù)據(jù):speed=49&系統(tǒng)界面上打印出“try againy/n_” 期望結(jié)果:屏幕上會(huì)打印出“try againy/n_” (2)路徑2:(b-c-d-e-f-g-h-k-l)的測(cè)試用例 輸入數(shù)據(jù):變量speed小于或等于50或者是變量right_rate小于或等于80,變量ch
溫馨提示
- 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ī)用耙項(xiàng)目可行性實(shí)施報(bào)告
- 實(shí)習(xí)報(bào)告總結(jié)5篇
- Module 1 Unit 1 What a mess(說課稿)-2023-2024學(xué)年牛津上海版(試用本)英語(yǔ)五年級(jí)下冊(cè)
- 高中生軍訓(xùn)培訓(xùn)總結(jié)體會(huì)5篇
- 繪畫用草稿本項(xiàng)目評(píng)價(jià)分析報(bào)告
- 無線電發(fā)射器產(chǎn)業(yè)鏈招商引資的調(diào)研報(bào)告
- 床頭柜產(chǎn)業(yè)規(guī)劃專項(xiàng)研究報(bào)告
- 女鞋產(chǎn)業(yè)規(guī)劃專項(xiàng)研究報(bào)告
- 競(jìng)選學(xué)習(xí)委員演講稿5篇2
- Project 2 My snack bar (說課稿) -2024-2025學(xué)年譯林版(三起)英語(yǔ)四年級(jí)上冊(cè)
- 行政服務(wù)中心窗口工作人員手冊(cè)
- 最新患者用藥情況監(jiān)測(cè)
- 試樁施工方案 (完整版)
- ESTIC-AU40使用說明書(中文100版)(共138頁(yè))
- 河北省2012土建定額說明及計(jì)算規(guī)則(含定額總說明)解讀
- 中工商計(jì)算公式匯總.doc
- 深圳市建筑裝飾工程消耗量標(biāo)準(zhǔn)(第三版)2003
- 《初中英語(yǔ)課堂教學(xué)學(xué)困生轉(zhuǎn)化個(gè)案研究》開題報(bào)告
- 鋼筋桁架樓承板施工方案
- 恒溫箱PLC控制系統(tǒng)畢業(yè)設(shè)計(jì)
- 176033山西《裝飾工程預(yù)算定額》定額說明及計(jì)算規(guī)則
評(píng)論
0/150
提交評(píng)論