信息系統(tǒng)分析與設(shè)計(jì)(第3版)鄺孔武 王曉敏_第 10章-系統(tǒng)實(shí)施_第1頁
信息系統(tǒng)分析與設(shè)計(jì)(第3版)鄺孔武 王曉敏_第 10章-系統(tǒng)實(shí)施_第2頁
信息系統(tǒng)分析與設(shè)計(jì)(第3版)鄺孔武 王曉敏_第 10章-系統(tǒng)實(shí)施_第3頁
信息系統(tǒng)分析與設(shè)計(jì)(第3版)鄺孔武 王曉敏_第 10章-系統(tǒng)實(shí)施_第4頁
信息系統(tǒng)分析與設(shè)計(jì)(第3版)鄺孔武 王曉敏_第 10章-系統(tǒng)實(shí)施_第5頁
已閱讀5頁,還剩71頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第第10章章 系統(tǒng)實(shí)施系統(tǒng)實(shí)施本章計(jì)劃學(xué)時:本章計(jì)劃學(xué)時:4學(xué)時學(xué)時本章主要內(nèi)容本章主要內(nèi)容 系統(tǒng)實(shí)施階段的任務(wù)系統(tǒng)實(shí)施階段的任務(wù) 程序設(shè)計(jì)程序設(shè)計(jì) 程序設(shè)計(jì)技術(shù)程序設(shè)計(jì)技術(shù) 編程規(guī)范編程規(guī)范 系統(tǒng)測試和調(diào)試系統(tǒng)測試和調(diào)試 測試技術(shù)測試技術(shù) 測試類型測試類型 測試工具測試工具 系統(tǒng)轉(zhuǎn)換系統(tǒng)轉(zhuǎn)換主要包括以下幾個方面的任務(wù):主要包括以下幾個方面的任務(wù): 1. 1. 硬件準(zhǔn)備硬件準(zhǔn)備 2. 2. 軟件準(zhǔn)備軟件準(zhǔn)備 3. 3. 人員培訓(xùn)人員培訓(xùn) 4. 4. 數(shù)據(jù)準(zhǔn)備數(shù)據(jù)準(zhǔn)備系統(tǒng)實(shí)施階段的內(nèi)容系統(tǒng)實(shí)施階段的內(nèi)容系統(tǒng)實(shí)施階段的特點(diǎn)是:系統(tǒng)實(shí)施階段的特點(diǎn)是: 工作量大工作量大 投入的人力、物力多投入的人力、

2、物力多實(shí)施階段的特點(diǎn)實(shí)施階段的特點(diǎn)10.1 制定實(shí)現(xiàn)策略制定實(shí)現(xiàn)策略 結(jié)構(gòu)化方法結(jié)構(gòu)化方法主張自頂向下實(shí)現(xiàn),盡量先實(shí)現(xiàn)主張自頂向下實(shí)現(xiàn),盡量先實(shí)現(xiàn)上層模塊,逐步向下,最后實(shí)現(xiàn)下層最基本上層模塊,逐步向下,最后實(shí)現(xiàn)下層最基本的模塊。的模塊。 首先實(shí)現(xiàn)系統(tǒng)的輪廓或框架,在此基礎(chǔ)上不斷添首先實(shí)現(xiàn)系統(tǒng)的輪廓或框架,在此基礎(chǔ)上不斷添加新的功能,逐步完善,最后達(dá)到物理模型所要加新的功能,逐步完善,最后達(dá)到物理模型所要求的全部功能。求的全部功能。 面向?qū)ο蠓椒嫦驅(qū)ο蠓椒ㄖ鲝埢跇?gòu)件的實(shí)現(xiàn)方法,按主張基于構(gòu)件的實(shí)現(xiàn)方法,按層劃分構(gòu)件后,盡量先完成構(gòu)件接口,然后層劃分構(gòu)件后,盡量先完成構(gòu)件接口,然后可實(shí)現(xiàn)并行

3、開發(fā)??蓪?shí)現(xiàn)并行開發(fā)。 先實(shí)現(xiàn)底層構(gòu)件,然后開發(fā)上層構(gòu)件先實(shí)現(xiàn)底層構(gòu)件,然后開發(fā)上層構(gòu)件 這種自頂向下的實(shí)現(xiàn)方法有效地解決了接這種自頂向下的實(shí)現(xiàn)方法有效地解決了接口問題。接口解決不好,往往不得不對調(diào)口問題。接口解決不好,往往不得不對調(diào)試過的程序反復(fù)修改,甚至推倒重來,造試過的程序反復(fù)修改,甚至推倒重來,造成重大的返工。成重大的返工。 這種方法整體性好,結(jié)構(gòu)風(fēng)險(xiǎn)較小。這種方法整體性好,結(jié)構(gòu)風(fēng)險(xiǎn)較小。 便于控制進(jìn)度,保證研制工作按時完成。便于控制進(jìn)度,保證研制工作按時完成。自頂向下方法的優(yōu)點(diǎn)自頂向下方法的優(yōu)點(diǎn)10.2 編寫程序編寫程序編寫程序,要考慮以下幾個方面:編寫程序,要考慮以下幾個方面: (

4、1) 了解什么是好程序;了解什么是好程序; (2) 采用什么程序設(shè)計(jì)技術(shù);采用什么程序設(shè)計(jì)技術(shù); (3) 遵循什么樣的編程規(guī)范;遵循什么樣的編程規(guī)范;1、好程序的標(biāo)準(zhǔn)、好程序的標(biāo)準(zhǔn)一般認(rèn)為好程序應(yīng)具備下列素質(zhì):一般認(rèn)為好程序應(yīng)具備下列素質(zhì): (1) 能夠工作;能夠工作; (2) 調(diào)試代價低;調(diào)試代價低; (3) 易于維護(hù);易于維護(hù); (4) 易于修改;易于修改; (5) 設(shè)計(jì)不復(fù)雜;設(shè)計(jì)不復(fù)雜; (6) 效率高。效率高。2、程序設(shè)計(jì)技術(shù)、程序設(shè)計(jì)技術(shù) 結(jié)構(gòu)化程序設(shè)計(jì)結(jié)構(gòu)化程序設(shè)計(jì) 面向?qū)ο蟪绦蛟O(shè)計(jì)面向?qū)ο蟪绦蛟O(shè)計(jì) 可視化程序設(shè)計(jì)可視化程序設(shè)計(jì) Web程序設(shè)計(jì)程序設(shè)計(jì) 插件技術(shù)插件技術(shù) 結(jié)構(gòu)化程

5、序設(shè)計(jì)結(jié)構(gòu)化程序設(shè)計(jì) 通常認(rèn)為結(jié)構(gòu)化程序設(shè)計(jì)包括以下四方面的通常認(rèn)為結(jié)構(gòu)化程序設(shè)計(jì)包括以下四方面的內(nèi)容:內(nèi)容:(1) 限制使用限制使用GO TO語句語句(2) 逐步求精的設(shè)計(jì)方法逐步求精的設(shè)計(jì)方法(3) 自頂向下的設(shè)計(jì)、編碼和調(diào)試自頂向下的設(shè)計(jì)、編碼和調(diào)試(4) 主程序員制的組織形式主程序員制的組織形式面向?qū)ο蟪绦蛟O(shè)計(jì)面向?qū)ο蟪绦蛟O(shè)計(jì) 封裝、繼承、多態(tài)封裝、繼承、多態(tài) 程序以對象為基本元素,對象包含屬性和方程序以對象為基本元素,對象包含屬性和方法,設(shè)計(jì)程序通常不采用順序結(jié)構(gòu)法,設(shè)計(jì)程序通常不采用順序結(jié)構(gòu) 數(shù)據(jù)是特定對象的數(shù)據(jù),只有對象自身的函數(shù)據(jù)是特定對象的數(shù)據(jù),只有對象自身的函數(shù)或過程(方法

6、)可以維護(hù)對象的數(shù)據(jù)(屬數(shù)或過程(方法)可以維護(hù)對象的數(shù)據(jù)(屬性)性) 公用的功能通常設(shè)計(jì)組件(類)以實(shí)現(xiàn)重用公用的功能通常設(shè)計(jì)組件(類)以實(shí)現(xiàn)重用 需要分析并表達(dá)出對象之間的關(guān)系需要分析并表達(dá)出對象之間的關(guān)系可視化編程技術(shù)可視化編程技術(shù) 所見即所得的交互編程所見即所得的交互編程 基于事件驅(qū)動的原理基于事件驅(qū)動的原理 可以使用模板自動生成部分代碼可以使用模板自動生成部分代碼 結(jié)合面向?qū)ο缶幊碳夹g(shù)結(jié)合面向?qū)ο缶幊碳夹g(shù)3、編程規(guī)范、編程規(guī)范 必要的內(nèi)部注釋必要的內(nèi)部注釋 清晰的結(jié)構(gòu)清晰的結(jié)構(gòu) 良好的風(fēng)格良好的風(fēng)格 嚴(yán)格的源代碼管理嚴(yán)格的源代碼管理 程序的注釋程序的注釋需要注意以下幾點(diǎn):需要注意以下

7、幾點(diǎn): 每個文件的開始部分應(yīng)指明程序的主要內(nèi)容、編每個文件的開始部分應(yīng)指明程序的主要內(nèi)容、編寫者、最后修改日期等信息,以利于管理。寫者、最后修改日期等信息,以利于管理。 每個過程或函數(shù)前應(yīng)有簡要的接口描述信息,如每個過程或函數(shù)前應(yīng)有簡要的接口描述信息,如函數(shù)功能、參數(shù)要求、返回值或其他特別說明。函數(shù)功能、參數(shù)要求、返回值或其他特別說明。 注釋必須與程序一致注釋必須與程序一致, 所以修改程序時,要注所以修改程序時,要注 意對注釋作相應(yīng)的修改。意對注釋作相應(yīng)的修改。 對程序段作注釋,而不是對每個語句作注釋。對程序段作注釋,而不是對每個語句作注釋。清晰的程序結(jié)構(gòu)清晰的程序結(jié)構(gòu)1. 簡單、直接地反映意

8、圖簡單、直接地反映意圖2. 表達(dá)式的書寫應(yīng)一氣呵成表達(dá)式的書寫應(yīng)一氣呵成3. 嵌套不宜過深嵌套不宜過深4. 避免使用避免使用GOTO語句語句5. 避免使用全局變量(通常是設(shè)計(jì)問題)避免使用全局變量(通常是設(shè)計(jì)問題) 其他規(guī)范其他規(guī)范1. 排版格式的規(guī)范化排版格式的規(guī)范化2. 文件名、過程名、變量名的規(guī)范化文件名、過程名、變量名的規(guī)范化3. 不要直接使用數(shù)字不要直接使用數(shù)字參考閱讀參考閱讀代碼大全代碼大全10.3 系統(tǒng)測試系統(tǒng)測試 測試的目的(概念)測試的目的(概念) 測試的類型、步驟測試的類型、步驟 測試技術(shù)測試技術(shù) 測試用例的設(shè)計(jì)測試用例的設(shè)計(jì)目前,檢驗(yàn)軟件有三種手段:目前,檢驗(yàn)軟件有三種手

9、段:動態(tài)檢查、靜態(tài)動態(tài)檢查、靜態(tài)檢查和正確性證明。檢查和正確性證明。 程序正確性證明程序正確性證明技術(shù)目前還處于初級階段,技術(shù)目前還處于初級階段, 靜態(tài)檢查靜態(tài)檢查指人工評審軟件文檔或程序,發(fā)現(xiàn)指人工評審軟件文檔或程序,發(fā)現(xiàn)其中的錯誤(代碼審查、代碼走查、同行評其中的錯誤(代碼審查、代碼走查、同行評審)。審)。 動態(tài)檢查動態(tài)檢查就是測試。就是測試。測試是為了發(fā)現(xiàn)錯誤而測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程。執(zhí)行程序的過程。測試只能證明程序有錯誤,測試只能證明程序有錯誤,而不可能證明程序沒有錯誤。而不可能證明程序沒有錯誤。系統(tǒng)測試系統(tǒng)測試 (1) (1)測試是指測試是指“用意在發(fā)現(xiàn)錯誤而執(zhí)行一個程用

10、意在發(fā)現(xiàn)錯誤而執(zhí)行一個程序的過程序的過程”; (2)(2)一個好的測試用例是指這個測試用例有很一個好的測試用例是指這個測試用例有很高的高的 概率可以發(fā)現(xiàn)一個尚未發(fā)現(xiàn)的錯誤;概率可以發(fā)現(xiàn)一個尚未發(fā)現(xiàn)的錯誤; (3)(3)一個成功的測試是指它成功地發(fā)現(xiàn)了一個一個成功的測試是指它成功地發(fā)現(xiàn)了一個尚未發(fā)現(xiàn)的錯誤。尚未發(fā)現(xiàn)的錯誤。 測試的關(guān)鍵問題是測試的關(guān)鍵問題是如何設(shè)計(jì)測試用例,即設(shè)如何設(shè)計(jì)測試用例,即設(shè)計(jì)一批測試數(shù)據(jù),通過有限的測試用例,在有計(jì)一批測試數(shù)據(jù),通過有限的測試用例,在有限的研制時間、研制經(jīng)費(fèi)的約束下,盡可能多限的研制時間、研制經(jīng)費(fèi)的約束下,盡可能多地發(fā)現(xiàn)程序中的錯誤。地發(fā)現(xiàn)程序中的錯誤。

11、10.3.1 測試的目的測試的目的10.3.2 測試類型測試類型1. 模塊測試模塊測試也稱單元測試,根據(jù)模塊的功能說明檢驗(yàn)每個也稱單元測試,根據(jù)模塊的功能說明檢驗(yàn)每個單獨(dú)的模塊是否存在錯誤。單獨(dú)的模塊是否存在錯誤。2. 聯(lián)合測試聯(lián)合測試也稱集成測試,檢驗(yàn)?zāi)K及系統(tǒng)結(jié)構(gòu)。也稱集成測試,檢驗(yàn)?zāi)K及系統(tǒng)結(jié)構(gòu)。3. 確認(rèn)測試確認(rèn)測試檢驗(yàn)系統(tǒng)說明書的各項(xiàng)功能與性能是否實(shí)現(xiàn),檢驗(yàn)系統(tǒng)說明書的各項(xiàng)功能與性能是否實(shí)現(xiàn),是否滿足要求。也可稱驗(yàn)收測試。是否滿足要求。也可稱驗(yàn)收測試。4. 系統(tǒng)測試系統(tǒng)測試是對整個信息系統(tǒng)的測試,將硬件、軟件、操是對整個信息系統(tǒng)的測試,將硬件、軟件、操作人員看作一個整體,來分析系統(tǒng)的

12、功能與執(zhí)作人員看作一個整體,來分析系統(tǒng)的功能與執(zhí)行性能行性能1、模塊測試、模塊測試 模塊測試又稱單元測試,是針對軟件設(shè)計(jì)的模塊測試又稱單元測試,是針對軟件設(shè)計(jì)的最小單位最小單位程序模塊,進(jìn)行正確性檢驗(yàn)的程序模塊,進(jìn)行正確性檢驗(yàn)的測試工作。測試工作。 模塊測試的目的在于發(fā)現(xiàn)各模塊內(nèi)部可能存模塊測試的目的在于發(fā)現(xiàn)各模塊內(nèi)部可能存在的各種差錯。在的各種差錯。 模塊測試需要從程序的內(nèi)部結(jié)構(gòu)出發(fā)設(shè)計(jì)測模塊測試需要從程序的內(nèi)部結(jié)構(gòu)出發(fā)設(shè)計(jì)測試用例,多個模塊可以平行地獨(dú)立進(jìn)行單元試用例,多個模塊可以平行地獨(dú)立進(jìn)行單元測試。測試。模塊測試方法模塊測試方法 模塊并不是一個獨(dú)立的程序,在考慮測試模模塊并不是一個獨(dú)

13、立的程序,在考慮測試模塊時,同時要考慮它和外界的聯(lián)系,用一些塊時,同時要考慮它和外界的聯(lián)系,用一些輔助模塊去模擬與被測模塊相聯(lián)系的其他模輔助模塊去模擬與被測模塊相聯(lián)系的其他模塊。塊。 驅(qū)動模塊驅(qū)動模塊 (driver(driver,測試驅(qū)動開發(fā)方法強(qiáng)調(diào),測試驅(qū)動開發(fā)方法強(qiáng)調(diào) 比如比如人人工吹氣測試自行車的氣門芯,測試沒有問題后工吹氣測試自行車的氣門芯,測試沒有問題后再安裝再安裝 樁模塊樁模塊 (stub) (stub) 存根模塊存根模塊 某演員缺席使用某演員缺席使用替補(bǔ)替補(bǔ),彩排繼續(xù),彩排繼續(xù)模塊測試工具模塊測試工具比如常見的單元測試工具:比如常見的單元測試工具: JUnit NUnit 這些

14、工具實(shí)質(zhì)上是一種測試框架,一般提供這些工具實(shí)質(zhì)上是一種測試框架,一般提供一些基本接口,開發(fā)人員繼承這個接口,來一些基本接口,開發(fā)人員繼承這個接口,來編寫測試程序,而測試程序的具體運(yùn)行交給編寫測試程序,而測試程序的具體運(yùn)行交給框架來負(fù)責(zé)。框架來負(fù)責(zé)。 可以集成到開發(fā)環(huán)境中可以集成到開發(fā)環(huán)境中2、集成測試、集成測試 將所有模塊集成在一起所進(jìn)行的系統(tǒng)功能的將所有模塊集成在一起所進(jìn)行的系統(tǒng)功能的測試測試 集成測試的策略有多種:集成測試的策略有多種: 一次性組裝一次性組裝 自頂向下的組裝自頂向下的組裝 自底向上的組裝自底向上的組裝一次性組裝測試一次性組裝測試 Big-bang IntegrationBi

15、g-bang Integration(一次性組裝或整體(一次性組裝或整體拼裝)拼裝)首先對每個模塊分別進(jìn)行模塊測試,然后再把所首先對每個模塊分別進(jìn)行模塊測試,然后再把所有模塊組裝在一起進(jìn)行測試,最終得到要求的軟有模塊組裝在一起進(jìn)行測試,最終得到要求的軟件系統(tǒng)。件系統(tǒng)。自頂向下的集成測試自頂向下的集成測試 Top-down Integration(自頂至下)(自頂至下) 按系統(tǒng)程序結(jié)構(gòu),沿控制層次自頂向下進(jìn)行組裝。按系統(tǒng)程序結(jié)構(gòu),沿控制層次自頂向下進(jìn)行組裝。 通過設(shè)置下層模塊為樁,檢查控制流,較早地驗(yàn)通過設(shè)置下層模塊為樁,檢查控制流,較早地驗(yàn)證了主要的控制和判斷點(diǎn)。證了主要的控制和判斷點(diǎn)。 需要

16、制作較多的樁模塊,并且樁模塊不能返回真需要制作較多的樁模塊,并且樁模塊不能返回真實(shí)的數(shù)據(jù)。實(shí)的數(shù)據(jù)。自頂向下的集成測試自頂向下的集成測試自底向上的集成測試自底向上的集成測試 Bottom-up Integration(自底向上)(自底向上) 從程序模塊結(jié)構(gòu)的最底層的模塊開始組裝和測試。從程序模塊結(jié)構(gòu)的最底層的模塊開始組裝和測試。 對于一個給定層次的模塊,它的子模塊及其下屬對于一個給定層次的模塊,它的子模塊及其下屬模塊已經(jīng)組裝并測試完成,所以不再需要樁模塊。模塊已經(jīng)組裝并測試完成,所以不再需要樁模塊。 要到最后才窺得全貌,重大結(jié)構(gòu)問題不能及早發(fā)要到最后才窺得全貌,重大結(jié)構(gòu)問題不能及早發(fā)現(xiàn)現(xiàn)3、確

17、認(rèn)測試、確認(rèn)測試 確認(rèn)測試主要是進(jìn)行功能的有效性測試。確認(rèn)測試主要是進(jìn)行功能的有效性測試。 運(yùn)用黑盒測試的技術(shù),驗(yàn)證被測軟件是否滿運(yùn)用黑盒測試的技術(shù),驗(yàn)證被測軟件是否滿足需求規(guī)格說明書列出的需求。足需求規(guī)格說明書列出的需求。 目的是使軟件符合需求,獲得客戶的確認(rèn),目的是使軟件符合需求,獲得客戶的確認(rèn),為驗(yàn)收作準(zhǔn)備為驗(yàn)收作準(zhǔn)備測試和測試和測試測試 測試和測試和測試測試 測試是由一個用戶在開發(fā)環(huán)境下進(jìn)行的測試,測試是由一個用戶在開發(fā)環(huán)境下進(jìn)行的測試,也可以是公司內(nèi)部的用戶在模擬實(shí)際操作環(huán)境下也可以是公司內(nèi)部的用戶在模擬實(shí)際操作環(huán)境下進(jìn)行的測試。進(jìn)行的測試。 測試是由軟件的多個用戶在實(shí)際使用環(huán)境下進(jìn)

18、測試是由軟件的多個用戶在實(shí)際使用環(huán)境下進(jìn)行的測試。這些用戶返回有關(guān)錯誤信息給開發(fā)者。行的測試。這些用戶返回有關(guān)錯誤信息給開發(fā)者?;貧w測試回歸測試 回歸測試回歸測試 當(dāng)軟件發(fā)生變化后(例如:增加了新的模塊、修當(dāng)軟件發(fā)生變化后(例如:增加了新的模塊、修改了程序模塊后),可能使得原來通過測試的功改了程序模塊后),可能使得原來通過測試的功能不能正常運(yùn)行,回歸測試就是通過重新執(zhí)行已能不能正常運(yùn)行,回歸測試就是通過重新執(zhí)行已經(jīng)執(zhí)行過的測試來保證改動過的程序的正確性。經(jīng)執(zhí)行過的測試來保證改動過的程序的正確性。 回歸測試可以用人工來執(zhí)行所有測試用例的一個回歸測試可以用人工來執(zhí)行所有測試用例的一個子集,或者采用

19、捕捉回放工具來進(jìn)行(自動測試子集,或者采用捕捉回放工具來進(jìn)行(自動測試工具)。工具)。 回歸測試回歸測試 當(dāng)軟件發(fā)生變化后(例如:增加了新的模塊、修改當(dāng)軟件發(fā)生變化后(例如:增加了新的模塊、修改了程序模塊后),可能使得原來通過測試的功能不了程序模塊后),可能使得原來通過測試的功能不能正常運(yùn)行,回歸測試就是通過重新執(zhí)行已經(jīng)執(zhí)行能正常運(yùn)行,回歸測試就是通過重新執(zhí)行已經(jīng)執(zhí)行過的測試來保證改動過的程序的正確性。過的測試來保證改動過的程序的正確性。 回歸測試可以用人工來執(zhí)行所有測試用例的一個子回歸測試可以用人工來執(zhí)行所有測試用例的一個子集,或者采用捕捉回放工具來進(jìn)行(自動測試工集,或者采用捕捉回放工具來

20、進(jìn)行(自動測試工具)。具)?;貧w測試的概念回歸測試的概念4、系統(tǒng)測試、系統(tǒng)測試 系統(tǒng)測試,是將通過確認(rèn)測試的軟件,作為系統(tǒng)測試,是將通過確認(rèn)測試的軟件,作為整個基于計(jì)算機(jī)系統(tǒng)的一個元素,與計(jì)算機(jī)整個基于計(jì)算機(jī)系統(tǒng)的一個元素,與計(jì)算機(jī)硬件、外設(shè)、某些支持軟件、數(shù)據(jù)和人員等硬件、外設(shè)、某些支持軟件、數(shù)據(jù)和人員等其他系統(tǒng)元素結(jié)合在一起,在實(shí)際運(yùn)行環(huán)境其他系統(tǒng)元素結(jié)合在一起,在實(shí)際運(yùn)行環(huán)境下,對計(jì)算機(jī)系統(tǒng)進(jìn)行一系列的集成測試和下,對計(jì)算機(jī)系統(tǒng)進(jìn)行一系列的集成測試和確認(rèn)測試。確認(rèn)測試。 系統(tǒng)測試為系統(tǒng)的正式運(yùn)行做準(zhǔn)備,也可稱系統(tǒng)測試為系統(tǒng)的正式運(yùn)行做準(zhǔn)備,也可稱為試運(yùn)行。為試運(yùn)行。系統(tǒng)測試的內(nèi)容系統(tǒng)測試

21、的內(nèi)容 功能測試功能測試 在規(guī)定的一段時間內(nèi)運(yùn)行軟件系統(tǒng)的所有功能,以在規(guī)定的一段時間內(nèi)運(yùn)行軟件系統(tǒng)的所有功能,以驗(yàn)證這個軟件系統(tǒng)有無嚴(yán)重錯誤。驗(yàn)證這個軟件系統(tǒng)有無嚴(yán)重錯誤。 可靠性測試可靠性測試 平均失效間隔時間平均失效間隔時間 MTBF(Mean Time Between Failures) 因故障而停機(jī)的時間因故障而停機(jī)的時間MTTR(Mean Time To Repairs) 強(qiáng)度測試(壓力測試)強(qiáng)度測試(壓力測試) 檢查在系統(tǒng)運(yùn)行環(huán)境非正常乃至發(fā)生故障的情況下,檢查在系統(tǒng)運(yùn)行環(huán)境非正常乃至發(fā)生故障的情況下,系統(tǒng)可以運(yùn)行到何種程度系統(tǒng)可以運(yùn)行到何種程度 性能測試性能測試 檢查系統(tǒng)是否滿

22、足在需求說明書中規(guī)定的性能。特檢查系統(tǒng)是否滿足在需求說明書中規(guī)定的性能。特別是對于實(shí)時系統(tǒng)或嵌入式系統(tǒng)。別是對于實(shí)時系統(tǒng)或嵌入式系統(tǒng)。系統(tǒng)測試的內(nèi)容(續(xù))系統(tǒng)測試的內(nèi)容(續(xù)) 恢復(fù)測試恢復(fù)測試 證實(shí)在克服硬件故障證實(shí)在克服硬件故障(包括掉電、硬件或網(wǎng)絡(luò)出錯包括掉電、硬件或網(wǎng)絡(luò)出錯等等)后,系統(tǒng)能否正常地繼續(xù)進(jìn)行工作,并不對系后,系統(tǒng)能否正常地繼續(xù)進(jìn)行工作,并不對系統(tǒng)造成任何損害。統(tǒng)造成任何損害。 采用人工模擬硬件故障,故意造成軟件出錯。采用人工模擬硬件故障,故意造成軟件出錯。 啟動停止測試啟動停止測試 驗(yàn)證在機(jī)器啟動及關(guān)機(jī)階段,軟件系統(tǒng)正確處理驗(yàn)證在機(jī)器啟動及關(guān)機(jī)階段,軟件系統(tǒng)正確處理的能力。

23、的能力。 反復(fù)啟動軟件系統(tǒng)反復(fù)啟動軟件系統(tǒng) ,例如操作系統(tǒng)自舉、網(wǎng)絡(luò)的,例如操作系統(tǒng)自舉、網(wǎng)絡(luò)的啟動、應(yīng)用程序的調(diào)用等。啟動、應(yīng)用程序的調(diào)用等。 在盡可能多的情況下關(guān)機(jī)。在盡可能多的情況下關(guān)機(jī)。系統(tǒng)測試的內(nèi)容(續(xù))系統(tǒng)測試的內(nèi)容(續(xù)) 配置測試配置測試 檢查計(jì)算機(jī)系統(tǒng)內(nèi)各個設(shè)備或各種資源之間的相檢查計(jì)算機(jī)系統(tǒng)內(nèi)各個設(shè)備或各種資源之間的相互聯(lián)結(jié)和功能分配中的錯誤?;ヂ?lián)結(jié)和功能分配中的錯誤。 包括配置命令測試、循環(huán)配置測試、修復(fù)測試。包括配置命令測試、循環(huán)配置測試、修復(fù)測試。 安全性測試安全性測試 檢驗(yàn)在系統(tǒng)中已經(jīng)存在的系統(tǒng)安全性、保密性措檢驗(yàn)在系統(tǒng)中已經(jīng)存在的系統(tǒng)安全性、保密性措施是否發(fā)揮作用,

24、有無漏洞。施是否發(fā)揮作用,有無漏洞。 可使用性測試可使用性測試 從使用的合理性和方便性等角度對軟件系統(tǒng)進(jìn)行從使用的合理性和方便性等角度對軟件系統(tǒng)進(jìn)行檢查,發(fā)現(xiàn)人為因素或使用上的問題。檢查,發(fā)現(xiàn)人為因素或使用上的問題。系統(tǒng)測試的內(nèi)容(續(xù))系統(tǒng)測試的內(nèi)容(續(xù)) 可支持性測試可支持性測試驗(yàn)證系統(tǒng)的支持策略對于公司與用戶方面是否切驗(yàn)證系統(tǒng)的支持策略對于公司與用戶方面是否切實(shí)可行。實(shí)可行。 安裝測試安裝測試對系統(tǒng)安裝進(jìn)行測試,找出在安裝過程中出現(xiàn)的對系統(tǒng)安裝進(jìn)行測試,找出在安裝過程中出現(xiàn)的錯誤。錯誤。系統(tǒng)的每一部分是否都齊全;系統(tǒng)的每一部分是否都齊全;所有文件是否都已產(chǎn)生并確有所需要的內(nèi)容;所有文件是否

25、都已產(chǎn)生并確有所需要的內(nèi)容;硬件的配置是否合理,等等硬件的配置是否合理,等等系統(tǒng)測試的內(nèi)容(續(xù))系統(tǒng)測試的內(nèi)容(續(xù)) 兼容性測試兼容性測試驗(yàn)證軟件產(chǎn)品在不同版本之間的兼容性。驗(yàn)證軟件產(chǎn)品在不同版本之間的兼容性。有兩類基本的兼容性測試:向下兼容、交錯兼容有兩類基本的兼容性測試:向下兼容、交錯兼容 容量測試容量測試檢驗(yàn)系統(tǒng)的能力最高能達(dá)到什么程度。檢驗(yàn)系統(tǒng)的能力最高能達(dá)到什么程度。對于信息檢索系統(tǒng),讓它使用頻率達(dá)到最大。對于信息檢索系統(tǒng),讓它使用頻率達(dá)到最大。在使系統(tǒng)的全部資源達(dá)到在使系統(tǒng)的全部資源達(dá)到“滿負(fù)荷滿負(fù)荷”的情形下,的情形下,測試系統(tǒng)的承受能力,也稱壓力測試。測試系統(tǒng)的承受能力,也稱壓

26、力測試。 文檔測試文檔測試檢查用戶文檔檢查用戶文檔( (如用戶手冊如用戶手冊) )的清晰性和精確性。的清晰性和精確性。10.3.3 測試技術(shù)測試技術(shù) 黑箱測試黑箱測試/黑盒測試黑盒測試 白箱測試白箱測試/白盒測試白盒測試1、黑箱測試、黑箱測試 這種方法是把測試對象看做一個黑盒子,測這種方法是把測試對象看做一個黑盒子,測試人員完全不考慮程序內(nèi)部的邏輯結(jié)構(gòu)和內(nèi)試人員完全不考慮程序內(nèi)部的邏輯結(jié)構(gòu)和內(nèi)部特性,只依據(jù)程序模塊的詳細(xì)說明,檢查部特性,只依據(jù)程序模塊的詳細(xì)說明,檢查程序的功能是否符合它的功能說明。程序的功能是否符合它的功能說明。 黑盒測試又叫做黑盒測試又叫做功能測試功能測試或或數(shù)據(jù)驅(qū)動測試數(shù)

27、據(jù)驅(qū)動測試。黑箱的窮舉測試黑箱的窮舉測試 用黑盒測試發(fā)現(xiàn)程序中的錯誤,必須在用黑盒測試發(fā)現(xiàn)程序中的錯誤,必須在所有所有可能的輸入條件和輸出條件可能的輸入條件和輸出條件中確定測試數(shù)據(jù),中確定測試數(shù)據(jù),來檢查程序是否都能產(chǎn)生正確的輸出。來檢查程序是否都能產(chǎn)生正確的輸出。 但這是但這是不可能不可能的。舉例:的。舉例:假設(shè)一個程序假設(shè)一個程序P P有輸入量有輸入量X X和和Y Y及輸出量及輸出量Z Z。在字長。在字長為為3232位的計(jì)算機(jī)上運(yùn)行。若位的計(jì)算機(jī)上運(yùn)行。若X X、Y Y取整數(shù),按黑盒取整數(shù),按黑盒方法進(jìn)行窮舉測試:方法進(jìn)行窮舉測試:可能采用的測試數(shù)據(jù)組:可能采用的測試數(shù)據(jù)組: 2 2323

28、22 23232 2 26464 如果測試一組數(shù)據(jù)需要如果測試一組數(shù)據(jù)需要1 1毫秒,一年工作毫秒,一年工作365365 2424小時,完成所有測試需小時,完成所有測試需5 5億年。億年。2、白箱測試、白箱測試 此方法此方法把測試對象看做一個透明的盒子把測試對象看做一個透明的盒子,它,它允許測試人員利用程序內(nèi)部的邏輯結(jié)構(gòu)及有允許測試人員利用程序內(nèi)部的邏輯結(jié)構(gòu)及有關(guān)信息,設(shè)計(jì)或選擇測試用例,對程序所有關(guān)信息,設(shè)計(jì)或選擇測試用例,對程序所有邏輯結(jié)構(gòu)進(jìn)行測試。邏輯結(jié)構(gòu)進(jìn)行測試。 通過在不同點(diǎn)檢查程序的狀態(tài),確定實(shí)際的通過在不同點(diǎn)檢查程序的狀態(tài),確定實(shí)際的狀態(tài)是否與預(yù)期的狀態(tài)一致。因此白盒測試狀態(tài)是否

29、與預(yù)期的狀態(tài)一致。因此白盒測試又稱為又稱為結(jié)構(gòu)測試結(jié)構(gòu)測試或或邏輯驅(qū)動測試邏輯驅(qū)動測試。白箱的窮舉測試白箱的窮舉測試 對一個具有多重選擇和循環(huán)嵌套的程序,不對一個具有多重選擇和循環(huán)嵌套的程序,不同的路徑數(shù)目可能也是天文數(shù)字。同的路徑數(shù)目可能也是天文數(shù)字。給出一個小程序的流程圖,它包括了一個執(zhí)行給出一個小程序的流程圖,它包括了一個執(zhí)行2020次的循環(huán)。次的循環(huán)。包含的不同執(zhí)行路徑數(shù)達(dá)包含的不同執(zhí)行路徑數(shù)達(dá)5 52020條,對每一條路徑進(jìn)條,對每一條路徑進(jìn)行測試需要行測試需要1 1毫秒毫秒一年工作一年工作3653652424小時小時測試完需測試完需31703170年。年。使用測試用例使用測試用例

30、不論使用什么測試技術(shù),我們都不可能采用不論使用什么測試技術(shù),我們都不可能采用窮舉測試,如何選擇測試用例,達(dá)到:窮舉測試,如何選擇測試用例,達(dá)到:以盡可能少的數(shù)據(jù)發(fā)現(xiàn)盡可能多的錯誤以盡可能少的數(shù)據(jù)發(fā)現(xiàn)盡可能多的錯誤 一個測試用例就是為了測試某個目標(biāo)(模塊、一個測試用例就是為了測試某個目標(biāo)(模塊、功能、性能)而準(zhǔn)備的一份輸入數(shù)據(jù)及其預(yù)功能、性能)而準(zhǔn)備的一份輸入數(shù)據(jù)及其預(yù)期結(jié)果期結(jié)果3、測試用例的設(shè)計(jì)、測試用例的設(shè)計(jì) 設(shè)計(jì)測試用例時,根據(jù)黑盒技術(shù)和白盒技術(shù)設(shè)計(jì)測試用例時,根據(jù)黑盒技術(shù)和白盒技術(shù)的原理,可以有不同的方法:的原理,可以有不同的方法: 邏輯覆蓋法(白盒)邏輯覆蓋法(白盒) 等價類劃分法(

31、黑盒)等價類劃分法(黑盒) 邊界值分析法(黑盒)邊界值分析法(黑盒)測試用例設(shè)計(jì)測試用例設(shè)計(jì)邏輯覆蓋邏輯覆蓋 邏輯覆蓋邏輯覆蓋是以程序內(nèi)部的邏輯結(jié)構(gòu)為基是以程序內(nèi)部的邏輯結(jié)構(gòu)為基礎(chǔ)的設(shè)計(jì)測試用例的技術(shù),屬于白盒測礎(chǔ)的設(shè)計(jì)測試用例的技術(shù),屬于白盒測試。試。 根據(jù)覆蓋測試的目的不同,邏輯覆蓋分根據(jù)覆蓋測試的目的不同,邏輯覆蓋分為:為:語句覆蓋語句覆蓋判定覆蓋判定覆蓋條件覆蓋條件覆蓋條件組合覆蓋條件組合覆蓋路徑覆蓋路徑覆蓋邏輯覆蓋舉例邏輯覆蓋舉例(A1) and (B=0)(A=2) or (X1)X=X/AX=X+1語句覆蓋語句覆蓋 語句覆蓋就是設(shè)計(jì)若干個測試用例,運(yùn)行被語句覆蓋就是設(shè)計(jì)若干個測試

32、用例,運(yùn)行被測程序,使得每一測程序,使得每一可執(zhí)行語句可執(zhí)行語句至少執(zhí)行一次。至少執(zhí)行一次。在圖例中,正好所有的可執(zhí)行語句都在路徑在圖例中,正好所有的可執(zhí)行語句都在路徑L1L1上,上,所以選擇路徑所以選擇路徑 L1L1設(shè)計(jì)測試用例,就可以覆蓋所有設(shè)計(jì)測試用例,就可以覆蓋所有的可執(zhí)行語句。的可執(zhí)行語句。 測試用例的設(shè)計(jì)格式如下測試用例的設(shè)計(jì)格式如下【輸入的【輸入的(A, B, X)(A, B, X),輸出的,輸出的(A, B, X)(A, B, X)】 為圖例設(shè)計(jì)滿足語句覆蓋的測試用例是為圖例設(shè)計(jì)滿足語句覆蓋的測試用例是: :【(2, 0, 4)(2, 0, 4),(2, 0, 3)(2, 0,

33、 3)】 覆蓋覆蓋 aceace【L1L1】 語句覆蓋是最弱的邏輯覆蓋準(zhǔn)則語句覆蓋是最弱的邏輯覆蓋準(zhǔn)則判斷覆蓋判斷覆蓋 判定覆蓋就是設(shè)計(jì)若干個測試用例,運(yùn)行被判定覆蓋就是設(shè)計(jì)若干個測試用例,運(yùn)行被測程序,使得程序中每個測程序,使得程序中每個IF判斷語句的取真判斷語句的取真分支和取假分支至少一次。分支和取假分支至少一次。 判定覆蓋又稱為分支覆蓋。判定覆蓋又稱為分支覆蓋。 對于圖例,如果選擇路徑對于圖例,如果選擇路徑L1和和L2,就可得滿,就可得滿足要求的測試用例足要求的測試用例: 【(2, 0, 4),(2, 0, 3)】覆蓋】覆蓋 ace【L1】 【(1, 1, 1),(1, 1, 1)】覆蓋

34、】覆蓋 abd【L2】條件覆蓋條件覆蓋 條件覆蓋就是設(shè)計(jì)若干個測試用例,運(yùn)行被條件覆蓋就是設(shè)計(jì)若干個測試用例,運(yùn)行被測程序,使得程序中所有判斷的每個子條件測程序,使得程序中所有判斷的每個子條件的可能取值至少執(zhí)行一次。的可能取值至少執(zhí)行一次。 在圖例中,我們事先可對所有條件取值加以在圖例中,我們事先可對所有條件取值加以標(biāo)記。例如:標(biāo)記。例如: 對于第一個判斷:對于第一個判斷: 條件條件 A1 取真為取真為 ,取假為,取假為條件條件 B0 取真為取真為 ,取假為,取假為 對于第二個判斷:對于第二個判斷: 條件條件A2 取真為取真為 ,取假為,取假為條件條件X1 取真為取真為 ,取假為,取假為T1T

35、1T2T2T3T3T4T4條件覆蓋條件覆蓋測試用例測試用例 覆蓋分支覆蓋分支 條件取值條件取值【(2, 0, 4),(2, 0, 3)】 L1(c, e) 【(1, 0, 1),(1, 0, 1)】 L2(b, d) 【(2, 1, 1),(2, 1, 2)】 L3(b, e)或【(1, 0, 3),(1, 0, 4)】 L3(b, e) 【(2, 1, 1),(2, 1, 2)】 L3(b, e)T T T T12344321TTTTT T T T1234T T T T1234T T T T1234條件組合覆蓋條件組合覆蓋 條件組合覆蓋就是設(shè)計(jì)足夠的測試用例,運(yùn)行被測程序,條件組合覆蓋就是設(shè)

36、計(jì)足夠的測試用例,運(yùn)行被測程序,使得每個判斷的所有可能的條件取值組合至少執(zhí)行一次。使得每個判斷的所有可能的條件取值組合至少執(zhí)行一次。 記 A1, B0 作 A1, B0 作 A 1, B0 作 A 1, B0 作 A2, X1 作 A2, X 1 作 A2, X1 作 A2, X 1 作T T12T T12T T12T T12T T34T T34T T34T T34條件組合覆蓋條件組合覆蓋 測 試 用 例 覆蓋條件 覆蓋組合【(2, 0, 4), (2, 0, 3)】(L1) , 【(2, 1, 1), (2, 1, 2)】(L3) , 【(1, 0, 3), (1, 0, 4)】(L3) ,

37、 【(1, 1, 1), (1, 1, 1)】(L2) , T T T T1234T T T T1234T T T T1234T T T T1234路徑覆蓋路徑覆蓋 路徑覆蓋路徑覆蓋就是設(shè)計(jì)足夠的測試用例,覆蓋程序中所有可能就是設(shè)計(jì)足夠的測試用例,覆蓋程序中所有可能的路徑。的路徑。 測試用例測試用例 通過路徑通過路徑 覆蓋條件覆蓋條件 【(2, 0, 4), (2, 0, 3)】 ace (L1) 【(1, 1, 1), (1, 1, 1)】 abd (L2) 【(1, 1, 2), (1, 1, 3)】 abe (L3) 【(3, 0, 3), (3, 0, 1)】 acd (L4)T T

38、T T1234T T T T1234T T T T1234T T T T3412測試用例設(shè)計(jì)測試用例設(shè)計(jì)等價類劃分等價類劃分 等價類劃分是一種典型的黑盒測試方法,使等價類劃分是一種典型的黑盒測試方法,使用這一方法時,完全不考慮程序的內(nèi)部結(jié)構(gòu),用這一方法時,完全不考慮程序的內(nèi)部結(jié)構(gòu),只依據(jù)程序的規(guī)格說明來設(shè)計(jì)測試用例。只依據(jù)程序的規(guī)格說明來設(shè)計(jì)測試用例。 等價類劃分方法把所有可能的輸入數(shù)據(jù),即等價類劃分方法把所有可能的輸入數(shù)據(jù),即程序的輸入域劃分成若干部分,然后從每一程序的輸入域劃分成若干部分,然后從每一部分中選取少數(shù)有代表性的數(shù)據(jù)做為測試用部分中選取少數(shù)有代表性的數(shù)據(jù)做為測試用例。例。 使用這

39、一方法設(shè)計(jì)測試用例要經(jīng)歷劃分等價使用這一方法設(shè)計(jì)測試用例要經(jīng)歷劃分等價類(列出等價類表)和選取測試用例兩步。類(列出等價類表)和選取測試用例兩步。等價類劃分等價類劃分 等價類是指某個輸入域的子集合。在該子集等價類是指某個輸入域的子集合。在該子集合中,各個輸入數(shù)據(jù)對于揭露程序中的錯誤合中,各個輸入數(shù)據(jù)對于揭露程序中的錯誤都是等效的。測試某等價類的代表值就等價都是等效的。測試某等價類的代表值就等價于對這一類其他值的測試。于對這一類其他值的測試。 等價類的劃分有兩種不同的情況:等價類的劃分有兩種不同的情況: 有效等價類:是指對于程序的規(guī)格說明來說,是有效等價類:是指對于程序的規(guī)格說明來說,是合理的,

40、有意義的輸入數(shù)據(jù)構(gòu)成的集合。合理的,有意義的輸入數(shù)據(jù)構(gòu)成的集合。 無效等價類:是指對于程序的規(guī)格說明來說,是無效等價類:是指對于程序的規(guī)格說明來說,是不合理的,無意義的輸入數(shù)據(jù)構(gòu)成的集合。不合理的,無意義的輸入數(shù)據(jù)構(gòu)成的集合。 設(shè)計(jì)測試用例時,要同時考慮有效等價類和設(shè)計(jì)測試用例時,要同時考慮有效等價類和無效等價類的設(shè)計(jì)。無效等價類的設(shè)計(jì)。 不同類型的數(shù)據(jù),劃分等價類不同不同類型的數(shù)據(jù),劃分等價類不同如何劃分等價類如何劃分等價類(1 1)如果輸入條件規(guī)定了取值范圍,或值的個數(shù),)如果輸入條件規(guī)定了取值范圍,或值的個數(shù),則可以確立一個有效等價類和兩個無效等價類。則可以確立一個有效等價類和兩個無效等

41、價類。例如,在程序的規(guī)格說明中,對輸入條件有一句話:例如,在程序的規(guī)格說明中,對輸入條件有一句話:“數(shù)量可以從數(shù)量可以從1 1到到999”999”則有效等價類是則有效等價類是“11數(shù)量數(shù)量999”999”兩個無效等價類是兩個無效等價類是“數(shù)量數(shù)量1”1”或或“數(shù)量數(shù)量999”999”。在數(shù)軸上表示成在數(shù)軸上表示成: :如何劃分等價類如何劃分等價類(2 2)如果輸入條件規(guī)定了輸入值的集合,或者)如果輸入條件規(guī)定了輸入值的集合,或者是規(guī)定了是規(guī)定了“必須如何必須如何”的條件,這時可確立的條件,這時可確立一個有效等價類和一個無效等價類。一個有效等價類和一個無效等價類。例如,在例如,在C C語言中對變

42、量標(biāo)識符規(guī)定為語言中對變量標(biāo)識符規(guī)定為“以字母以字母打頭的打頭的串串”。那么所有以字母打頭的構(gòu)成有。那么所有以字母打頭的構(gòu)成有效等價類,而不在此集合內(nèi)(不以字母打頭)的效等價類,而不在此集合內(nèi)(不以字母打頭)的歸于無效等價類。歸于無效等價類。(3 3)如果輸入條件是一個布爾量,則可以確定)如果輸入條件是一個布爾量,則可以確定一個有效等價類和一個無效等價類。一個有效等價類和一個無效等價類。如何劃分等價類如何劃分等價類(4 4)如果規(guī)定了輸入數(shù)據(jù)的一組值,而且程序)如果規(guī)定了輸入數(shù)據(jù)的一組值,而且程序要對每個輸入值分別進(jìn)行處理。這時可為每要對每個輸入值分別進(jìn)行處理。這時可為每一個輸入值確立一個有效

43、等價類,此外針對一個輸入值確立一個有效等價類,此外針對這組值確立一個無效等價類,它是所有不允這組值確立一個無效等價類,它是所有不允許的輸入值的集合。許的輸入值的集合。例如:在教師上崗方案中規(guī)定對教授、副教授、例如:在教師上崗方案中規(guī)定對教授、副教授、講師和助教分別計(jì)算分?jǐn)?shù),做相應(yīng)的處理。因此講師和助教分別計(jì)算分?jǐn)?shù),做相應(yīng)的處理。因此可以確定可以確定4 4個有效等價類為教授、副教授、講師和個有效等價類為教授、副教授、講師和助教,一個無效等價類,它是所有不符合以上身助教,一個無效等價類,它是所有不符合以上身分的人員的輸入值的集合。分的人員的輸入值的集合。如何劃分等價類如何劃分等價類(5)如果規(guī)定了

44、輸入數(shù)據(jù)必須遵守的規(guī)則,則如果規(guī)定了輸入數(shù)據(jù)必須遵守的規(guī)則,則可以確立一個有效等價類(符合規(guī)則)和若可以確立一個有效等價類(符合規(guī)則)和若干個無效等價類(從不同角度違反規(guī)則)。干個無效等價類(從不同角度違反規(guī)則)。例如,變量名例如,變量名“所有以字母或數(shù)字打頭的,不包所有以字母或數(shù)字打頭的,不包含含等字符的非保留字等字符的非保留字”等。等。 在明確規(guī)則的幾個條件后,確立每個條件的在明確規(guī)則的幾個條件后,確立每個條件的有效等價類和無效等價類,建立等價類表。有效等價類和無效等價類,建立等價類表。最后,確定測試用例。最后,確定測試用例。如何劃分等價類如何劃分等價類在某一種語言版本中規(guī)定:在某一種語言

45、版本中規(guī)定:“標(biāo)識符是由字母開標(biāo)識符是由字母開頭,后跟字母或數(shù)字的任意組合構(gòu)成。有效字符頭,后跟字母或數(shù)字的任意組合構(gòu)成。有效字符數(shù)為數(shù)為8 8個,最大字符數(shù)為個,最大字符數(shù)為8080個。個?!辈⑶乙?guī)定:并且規(guī)定:“標(biāo)識符必須先說明,再使用。標(biāo)識符必須先說明,再使用?!?“在同一說明語句中,標(biāo)識符至少必須有一個。在同一說明語句中,標(biāo)識符至少必須有一個?!睖y試用例設(shè)計(jì)測試用例設(shè)計(jì)邊界值分析邊界值分析 邊界值分析也是一種黑盒測試方法,是對等邊界值分析也是一種黑盒測試方法,是對等價類劃分方法的補(bǔ)充。價類劃分方法的補(bǔ)充。 人們從長期的測試工作經(jīng)驗(yàn)得知,大量的錯人們從長期的測試工作經(jīng)驗(yàn)得知,大量的錯誤是

46、發(fā)生在輸入或輸出范圍的邊界上,而不誤是發(fā)生在輸入或輸出范圍的邊界上,而不是在輸入范圍的內(nèi)部。因此針對各種邊界情是在輸入范圍的內(nèi)部。因此針對各種邊界情況設(shè)計(jì)測試用例,可以查出更多的錯誤。況設(shè)計(jì)測試用例,可以查出更多的錯誤。 比如我們在操作鏈表指針時,出現(xiàn)錯誤的往比如我們在操作鏈表指針時,出現(xiàn)錯誤的往往是在邊界值的情況下(如在表頭或表尾進(jìn)往是在邊界值的情況下(如在表頭或表尾進(jìn)行插入或刪除),判定條件、循環(huán)條件等也行插入或刪除),判定條件、循環(huán)條件等也常常是在正常值左右出現(xiàn)問題。常常是在正常值左右出現(xiàn)問題。邊界值分析邊界值分析 這里所說的邊界是指:相當(dāng)于輸入等價類和這里所說的邊界是指:相當(dāng)于輸入等價

47、類和輸出等價類而言,等于其邊界值及稍高輸出等價類而言,等于其邊界值及稍高/低于低于其邊界值的一些特定情況。其邊界值的一些特定情況。 使用邊界值分析方法設(shè)計(jì)測試用例,首先應(yīng)使用邊界值分析方法設(shè)計(jì)測試用例,首先應(yīng)確定邊界情況。應(yīng)當(dāng)選取正好等于,剛剛大確定邊界情況。應(yīng)當(dāng)選取正好等于,剛剛大于,或剛剛小于邊界的值做為測試數(shù)據(jù),而于,或剛剛小于邊界的值做為測試數(shù)據(jù),而不是選取等價類中的典型值或任意值做為測不是選取等價類中的典型值或任意值做為測試數(shù)據(jù)。試數(shù)據(jù)。 比如,在計(jì)算個人所得稅時,全月應(yīng)納稅所得額比如,在計(jì)算個人所得稅時,全月應(yīng)納稅所得額超過超過1000元至元至2000元的部分稅率為元的部分稅率為5

48、%。那么在。那么在測試時,可以選擇的測試用例是:測試時,可以選擇的測試用例是: x=999 x=1000 x=1001 x=2000 x=2001邊界值分析邊界值分析 對于數(shù)據(jù)庫應(yīng)用系統(tǒng),很多的功能是與記錄對于數(shù)據(jù)庫應(yīng)用系統(tǒng),很多的功能是與記錄處理有關(guān),我們可以擴(kuò)大邊界值的概念,根處理有關(guān),我們可以擴(kuò)大邊界值的概念,根據(jù)以下提示選擇測試用例:據(jù)以下提示選擇測試用例: 新記錄(第一條記錄前,最后,記錄的項(xiàng)目不全)新記錄(第一條記錄前,最后,記錄的項(xiàng)目不全) 處理業(yè)務(wù)(第一條、最后一條、相鄰、超常規(guī)、處理業(yè)務(wù)(第一條、最后一條、相鄰、超常規(guī)、錯誤范圍、記錄不存在)錯誤范圍、記錄不存在) 記錄刪除(

49、第一條、最后一條、指定范圍、當(dāng)前記錄刪除(第一條、最后一條、指定范圍、當(dāng)前記錄等)記錄等) 查看(第一頁查看(第一頁/條、指定頁條、指定頁/條、最后一頁條、最后一頁/條)條)10.3.4 測試原則測試原則 應(yīng)當(dāng)把應(yīng)當(dāng)把“盡早地和不斷地進(jìn)行軟件測試盡早地和不斷地進(jìn)行軟件測試”作為軟件作為軟件開發(fā)者的座右銘。開發(fā)者的座右銘。 測試用例應(yīng)由測試用例應(yīng)由測試輸入數(shù)據(jù)測試輸入數(shù)據(jù)和對應(yīng)的和對應(yīng)的預(yù)期輸出結(jié)果預(yù)期輸出結(jié)果這兩部分組成。程序員應(yīng)避免檢查自己的程序。這兩部分組成。程序員應(yīng)避免檢查自己的程序。(結(jié)對編程)(結(jié)對編程) 在設(shè)計(jì)測試用例時,應(yīng)包括在設(shè)計(jì)測試用例時,應(yīng)包括合理的輸入條件合理的輸入條件和

50、和不合不合理的輸入條件理的輸入條件。 充分注意測試中的群集現(xiàn)象。經(jīng)驗(yàn)表明:充分注意測試中的群集現(xiàn)象。經(jīng)驗(yàn)表明:測試后程序中殘存的錯誤數(shù)目與該程序中已發(fā)現(xiàn)的錯誤數(shù)目成正比 嚴(yán)格執(zhí)行測試計(jì)劃,排除測試的隨意性。嚴(yán)格執(zhí)行測試計(jì)劃,排除測試的隨意性。 應(yīng)當(dāng)對每一個測試結(jié)果做全面檢查和分析。應(yīng)當(dāng)對每一個測試結(jié)果做全面檢查和分析。 妥善保存測試計(jì)劃、測試用例、出錯統(tǒng)計(jì)和最終分妥善保存測試計(jì)劃、測試用例、出錯統(tǒng)計(jì)和最終分析報(bào)告,為維護(hù)提供方便。析報(bào)告,為維護(hù)提供方便。何時引入測試何時引入測試在系統(tǒng)生命周期,越早引入測試越好:在系統(tǒng)生命周期,越早引入測試越好: 計(jì)劃階段:評估測試可行性分析。計(jì)劃階段:評估測試可行性分析。 分析階段:需求走查,制定確認(rèn)測試計(jì)劃、設(shè)計(jì)分析階段:需求走查,制定確認(rèn)測試計(jì)劃、設(shè)計(jì)功能測試用例。功能測試用例。 設(shè)計(jì)階段:確認(rèn)設(shè)計(jì)符合需求,制定單元測試和設(shè)計(jì)階段:確認(rèn)設(shè)計(jì)符合需求,制定單元測試和集成測試計(jì)劃、設(shè)計(jì)單元測試和集成測試用例。集成測試計(jì)劃、設(shè)計(jì)單元測試和集成測試用例。 實(shí)施階段:進(jìn)行單元測試和集成測試。最后進(jìn)行實(shí)施階段:進(jìn)行單元測試和集

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論