單元測(cè)試培訓(xùn)資料PPT課件_第1頁(yè)
單元測(cè)試培訓(xùn)資料PPT課件_第2頁(yè)
單元測(cè)試培訓(xùn)資料PPT課件_第3頁(yè)
單元測(cè)試培訓(xùn)資料PPT課件_第4頁(yè)
單元測(cè)試培訓(xùn)資料PPT課件_第5頁(yè)
已閱讀5頁(yè),還剩31頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1,測(cè)試培訓(xùn)-單元測(cè)試,2,軟件工程流程圖,需求,設(shè)計(jì),編碼和單元測(cè)試,集成測(cè)試,測(cè)試計(jì)劃 (測(cè)試用例) 詳細(xì)設(shè)計(jì),(測(cè)試記錄) 測(cè)試報(bào)告,確認(rèn)測(cè)試,系統(tǒng)測(cè)試,系統(tǒng)實(shí)施,立項(xiàng),3,概述,單元測(cè)試的目標(biāo):確保模塊被正確地編碼。 由誰(shuí)去做:通常由編程人員執(zhí)行。 怎樣去測(cè)試:功能測(cè)試可以用黑匣測(cè)試方法,代碼測(cè)試可用白匣測(cè)試方法。 什么時(shí)候可以停止:當(dāng)程序員感到代碼沒有缺陷時(shí)。 記錄:通常沒有記錄。,4,名詞解釋,模塊:程序組成部分的最小單元。 黑盒測(cè)試:黑盒測(cè)試也稱功能測(cè)試或數(shù)據(jù)驅(qū)動(dòng)測(cè)試,它是在已知產(chǎn)品所應(yīng)具有的功能,通過測(cè)試來(lái)檢測(cè)每個(gè)功能是否都能正常使用,在測(cè)試時(shí),把程序看作一個(gè)不能打開的黑盒子,

2、在完全不考慮程序內(nèi)部結(jié)構(gòu)和內(nèi)部特性的情況下,測(cè)試者在程序接口進(jìn)行測(cè)試,它只檢查程序功能是否按照需求規(guī)格說明書的規(guī)定正常使用,程序是否能適當(dāng)?shù)亟邮蛰斎霐?shù)據(jù)而產(chǎn)生正確的輸出信息,并且保持外部信息(如數(shù)據(jù)庫(kù)或文件)的完整性。黑盒測(cè)試方法主要有等價(jià)類劃分、邊值分析、因果圖、錯(cuò)誤推測(cè)等,主要用于軟件確認(rèn)測(cè)試。 白盒測(cè)試:白盒測(cè)試也稱結(jié)構(gòu)測(cè)試或邏輯驅(qū)動(dòng)測(cè)試,它是知道產(chǎn)品內(nèi)部工作過程,可通過測(cè)試來(lái)檢測(cè)產(chǎn)品內(nèi)部動(dòng)作是否按照規(guī)格說明書的規(guī)定正常進(jìn)行,按照程序內(nèi)部的結(jié)構(gòu)測(cè)試程序,檢驗(yàn)程序中的每條通路是否都有能按預(yù)定要求正確工作,而不顧它的功能,白盒測(cè)試的主要方法有邏輯驅(qū)動(dòng)、基路測(cè)試等,主要用于軟件驗(yàn)證。,5,軟件

3、測(cè)試,什么是軟件測(cè)試: 定義1:軟件測(cè)試是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過程。 定義2:軟件測(cè)試是根據(jù)軟件開發(fā)各階段的規(guī)格說明和程序的內(nèi)部結(jié)構(gòu)而精心設(shè)計(jì)的一批測(cè)試用例(即輸入數(shù)據(jù)和與其輸出結(jié)果),并利用這些測(cè)試用例去運(yùn)行程序,以發(fā)現(xiàn)程序錯(cuò)誤的過程。 軟件測(cè)試的對(duì)象: 軟件測(cè)試不等于程序測(cè)試 軟件測(cè)試貫穿于軟件定義和開發(fā)的整個(gè)周期。因此,需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì),以及程序編碼等各階段所得到的文檔,包括需求規(guī)格說明書、概要設(shè)計(jì)說明書、詳細(xì)設(shè)計(jì)規(guī)格說明書以及源程序,都是測(cè)試的對(duì)象。,6,軟件測(cè)試,軟件測(cè)試分類 按測(cè)試用例的設(shè)計(jì)方法,軟件測(cè)試分為白盒測(cè)試和黑盒測(cè)試。 按測(cè)試策略和過程,軟件測(cè)試分為單元測(cè)

4、試、集成測(cè)試、確認(rèn)測(cè)試和系統(tǒng)測(cè)試。 按軟件系統(tǒng)工程,測(cè)試是軟件質(zhì)量保證的最后的一關(guān)。 本培訓(xùn)文檔主要內(nèi)容將圍繞軟件開發(fā)編碼階段運(yùn)用的單元測(cè)試過程加以描述和討論,7,單元測(cè)試,為什么要進(jìn)行單元測(cè)試(一) 1 單元測(cè)試是不是太浪費(fèi)時(shí)間了? 不經(jīng)過單元測(cè)試,直接進(jìn)入集成測(cè)試,系統(tǒng)正常工作的可能性非常低,大量的時(shí)間被花費(fèi)在跟蹤那些簡(jiǎn)單的Bug上,會(huì)導(dǎo)致集成為一個(gè)系統(tǒng)時(shí)增加額外的工期。 編寫完整計(jì)劃的單元測(cè)試和編寫實(shí)際的代碼所花費(fèi)的精力大致相同。但是,一旦完成了這些單元測(cè)試工作,很多Bug將被糾正,在確信他們手頭擁有穩(wěn)定可靠的部件的情況下,開發(fā)人員能夠進(jìn)行更高效的系統(tǒng)集成工作,這才是真正意義上的進(jìn)步。

5、調(diào)試人員的不受控和散漫的工作方式只會(huì)花費(fèi)更多的時(shí)間而取得很少的好處。 2 單元測(cè)試僅僅是為了證明這些代碼作了什么嗎? 這是那些沒有首先為每個(gè)單元編寫一個(gè)詳細(xì)設(shè)計(jì)文檔而直接跳到編碼階段的開發(fā)人員提出的一條普遍的抱怨。這樣的測(cè)試完全基于已經(jīng)寫好的代碼,這無(wú)法證明任何事情。 單元測(cè)試基于詳細(xì)設(shè)計(jì)文檔,這樣的測(cè)試可以找到更多的代碼錯(cuò)誤,甚至是詳細(xì)設(shè)計(jì)的錯(cuò)誤。 因此,高質(zhì)量的單元測(cè)試需要高質(zhì)量的詳細(xì)設(shè)計(jì)文檔。,8,為什么要進(jìn)行單元測(cè)試(二) 3 我是一個(gè)很棒的程序員,是不是可以不進(jìn)行單元測(cè)試呢? 每個(gè)人都可能犯錯(cuò)誤。 真正的完整的系統(tǒng)往往是非常復(fù)雜的,不能寄希望于沒有進(jìn)行廣泛的測(cè)試和Bug修改過程就可以

6、正常工作。 4 有集成測(cè)試就夠了,集成測(cè)試將會(huì)抓住所有的Bug。 系統(tǒng)規(guī)模愈來(lái)愈大,復(fù)雜度愈來(lái)愈高,沒有單元測(cè)試,開發(fā)人員很可能會(huì)花費(fèi)大量的時(shí)間僅僅是為了使該系統(tǒng)能夠運(yùn)行。 任何實(shí)際的測(cè)試方案都無(wú)法執(zhí)行。 在系統(tǒng)集成階段,對(duì)單元功能全面測(cè)試的負(fù)載程度遠(yuǎn)遠(yuǎn)的超過獨(dú)立進(jìn)行的單元測(cè)試過程。 最后的結(jié)果是測(cè)試將無(wú)法達(dá)到它所應(yīng)該有的全面性,一些缺陷將被遺漏,并且很多Bug將被忽略過去。,9,單元測(cè)試,為什么要進(jìn)行單元測(cè)試(三) 5 單元測(cè)試的成本效率不高? 無(wú)論什么時(shí)候做出修改都要進(jìn)行完整的回歸測(cè)試。 在生命周期中盡早的對(duì)產(chǎn)品進(jìn)行測(cè)試將使效率和質(zhì)量得到最好的保證 Bug修改越晚,費(fèi)用就越高,單元測(cè)試是一

7、個(gè)在早期抓住Bug的機(jī)會(huì)。 相比后階段的測(cè)試,單元測(cè)試的創(chuàng)建更簡(jiǎn)單,維護(hù)更容易,并且可以更方便的進(jìn)行重復(fù)。 從全程的測(cè)試費(fèi)用來(lái)考慮,相比復(fù)雜且曠日持久的集成測(cè)試,或是不穩(wěn)定的系統(tǒng),單元測(cè)試所需的費(fèi)用是最低的。,10,單元測(cè)試,單元測(cè)試的重要性 一個(gè)盡責(zé)的單元測(cè)試方法將會(huì)在產(chǎn)品開發(fā)的某個(gè)階段發(fā)現(xiàn)很多的Bug,并且修改它們的成本也很低。 系統(tǒng)開發(fā)的后期階段,Bug的檢測(cè)和修改將會(huì)變得更加困難,并要消耗大量的時(shí)間和開發(fā)費(fèi)用。 無(wú)論什么時(shí)候做出修改都要進(jìn)行完整的回歸測(cè)試,在生命周期中盡早的對(duì)產(chǎn)品代碼進(jìn)行測(cè)試將是效率和質(zhì)量得到最好的保證。 在提供了經(jīng)過單元測(cè)試的情況下,系統(tǒng)集成過程將會(huì)大大的簡(jiǎn)化。開發(fā)人

8、員可以將精力集中在單元之間的交互作用和全局的功能實(shí)現(xiàn)上,而不會(huì)陷入充滿很多Bug的單元之中不能自拔。 使測(cè)試工作的效率發(fā)揮到最大化的關(guān)鍵在于選擇正確的測(cè)試策略,這包含了完全的單元測(cè)試的概念,以及對(duì)測(cè)試過程的良好的管理,還有適當(dāng)?shù)氖褂煤霉ぞ邅?lái)支持測(cè)試過程。,11,單元測(cè)試,模塊接口的測(cè)試項(xiàng)目 調(diào)用被測(cè)模塊的輸入?yún)?shù)與模塊的形式參數(shù)在個(gè)數(shù)、屬性、順序上是否匹配。 被測(cè)模塊調(diào)用子模塊時(shí),它輸入給子模塊的參數(shù)與子模塊中的形式參數(shù)在個(gè)數(shù)、屬性、順序上是否匹配。 是否修改了只做輸入用的形式參數(shù)。 輸出給標(biāo)準(zhǔn)函數(shù)的參數(shù)在個(gè)數(shù)、屬性、順序上是否正確。 全局變量的定義在各模塊中是否一致。 限制是否通過形式參數(shù)來(lái)

9、傳送。,12,單元測(cè)試,局部數(shù)據(jù)結(jié)構(gòu)測(cè)試: 模塊的局部數(shù)據(jù)結(jié)構(gòu)是最常見的錯(cuò)誤來(lái)源,應(yīng)設(shè)計(jì)測(cè)試用例以檢查以下各種錯(cuò)誤。 檢察不正確或不一致的數(shù)據(jù)類型說明。 使用尚未賦值或尚未初始化的變量。 錯(cuò)誤的初始值或錯(cuò)誤的默認(rèn)值。 變量名拼寫錯(cuò)誤或書寫錯(cuò)誤。 不一致的數(shù)據(jù)類型。,13,單元測(cè)試,路徑測(cè)試 對(duì)基本執(zhí)行路徑和循環(huán)進(jìn)行測(cè)試會(huì)發(fā)現(xiàn)大量的錯(cuò)誤。 測(cè)試方法:白盒測(cè)試和黑盒測(cè)試相結(jié)合。 常見的不正確計(jì)算有: 1 運(yùn)算的優(yōu)先次序不正確或誤解了運(yùn)算的優(yōu)先次序; 2 運(yùn)算的方式錯(cuò)誤(即運(yùn)算的對(duì)象彼此在類型上不相容); 3 算法錯(cuò)誤; 4 初始化不正確; 5 運(yùn)算精度不夠; 6 表達(dá)式的符號(hào)表示不正確等 常見的比

10、較和控制流錯(cuò)誤有: 1 不同數(shù)據(jù)類型的比較; 2 不正確的邏輯運(yùn)算符或優(yōu)先次序; 3 因浮點(diǎn)運(yùn)算精度問題而造成的兩值比較不等; 4 關(guān)系表達(dá)式中不正確的變量和比較符; 5 “差1錯(cuò)”,即不正確的多循環(huán)或少循環(huán)一次; 6 當(dāng)遇到發(fā)散的迭代時(shí)不能終止的循環(huán); 7 不適當(dāng)?shù)男薷牧搜h(huán)變量等。,14,單元測(cè)試,錯(cuò)誤處理測(cè)試 概述:比較完善的模塊設(shè)計(jì)要求能預(yù)見出錯(cuò)的條件,并設(shè)置適當(dāng)?shù)某鲥e(cuò)處理對(duì)策,以便在程序出錯(cuò)時(shí),能對(duì)出錯(cuò)程序重新做安排,保證邏輯上的正確性。這種出錯(cuò)處理也是模塊功能的一部分。 出錯(cuò)處理模塊有錯(cuò)誤或缺陷的情況有: 1 出錯(cuò)的描述難于理解; 2 出錯(cuò)的描述不足以對(duì)錯(cuò)誤定位和確定出錯(cuò)的原因;

11、3 顯示的錯(cuò)誤與實(shí)際的錯(cuò)誤不符; 4 對(duì)錯(cuò)誤條件的處理不正確; 5 在對(duì)錯(cuò)誤進(jìn)行處理之前,錯(cuò)誤條件已經(jīng)引起系統(tǒng)的干預(yù)等。,15,單元測(cè)試,邊界測(cè)試 概述:邊界上出現(xiàn)錯(cuò)誤是常見的,必須設(shè)計(jì)測(cè)試用例檢查。 出現(xiàn)邊界問題的情況: 1 在n次循環(huán)的第0次、1次、n次是否有錯(cuò)誤; 2 運(yùn)算或判斷中取最大最小值是否有 錯(cuò)誤 3 數(shù)據(jù)流、控制流中剛好等于、大于、小于確定的比較之時(shí)是否出現(xiàn)錯(cuò)誤。 單元測(cè)試的內(nèi)容圖示:,模塊,獨(dú)立路徑,邊界條件,出錯(cuò)處理,局部數(shù)據(jù)結(jié)構(gòu),模塊接口,16,單元測(cè)試,何時(shí)進(jìn)行單元測(cè)試:?jiǎn)卧獪y(cè)試在編碼階段進(jìn)行。 何時(shí)設(shè)計(jì)測(cè)試用例:在源程序代碼編制完成、經(jīng)過評(píng)審和驗(yàn)證、確認(rèn)沒有語(yǔ)法錯(cuò)誤之

12、后,就可以開始進(jìn)行單元測(cè)試的測(cè)試用例設(shè)計(jì)。 用例設(shè)計(jì)的依據(jù):軟件設(shè)計(jì)文檔。 對(duì)于一組輸入,應(yīng)該有預(yù)期的正確結(jié)果。 在單元測(cè)試時(shí),如果模塊不是獨(dú)立的程序,需要輔助測(cè)試模塊。輔助測(cè)試模塊種類: 1 驅(qū)動(dòng)模塊(Driver)-所測(cè)模塊的主程序。 他接受測(cè)試數(shù)據(jù),把這些數(shù)據(jù)傳遞給測(cè)試模塊,最后在輸出實(shí)測(cè)結(jié)果。 當(dāng)被測(cè)試模塊能完成一定功能時(shí),也可以不要驅(qū)動(dòng)模塊。 2 樁模塊(Stub):用來(lái)替代所測(cè)模塊調(diào)用的子模塊。,17,單元測(cè)試,驅(qū)動(dòng)模塊,樁模塊,被測(cè)模塊,樁模塊,樁模塊,測(cè)試用例 ,測(cè)試結(jié)果,18,單元測(cè)試,與單元測(cè)試相關(guān)聯(lián)的開發(fā)活動(dòng) 代碼走讀(code review) 代碼走讀主要是對(duì)程序的編程

13、風(fēng)格如注釋、命名等以及編程時(shí)易出錯(cuò)的內(nèi)容進(jìn)行檢查 靜態(tài)分析(Static Analysis) 靜態(tài)分析就是對(duì)模塊的源代碼進(jìn)行研讀,查找錯(cuò)誤或收集一些度量數(shù)據(jù),并不需要對(duì)代碼進(jìn)行編譯和仿真運(yùn)行。 動(dòng)態(tài)分析(Dynamic Analysis) 動(dòng)態(tài)分析就是通過觀察代碼運(yùn)行時(shí)的動(dòng)作,來(lái)提供執(zhí)行跟蹤、時(shí)間分析,以及測(cè)試覆蓋度方面的信息。 單元測(cè)試作為無(wú)錯(cuò)編碼的一種輔助手段在一次性的開發(fā)過程中加以運(yùn)用。,19,單元測(cè)試,單元測(cè)試的過程分為計(jì)劃、設(shè)計(jì)、實(shí)現(xiàn)、執(zhí)行、評(píng)審等幾個(gè)步驟 計(jì)劃單元測(cè)試。確定測(cè)試所用資源(包括人力和設(shè)備資源),創(chuàng)建測(cè)試任務(wù)時(shí)間表。 設(shè)計(jì)單元測(cè)試。設(shè)計(jì)單元測(cè)試模型,制定測(cè)試方案,確認(rèn)并

14、結(jié)構(gòu)化測(cè)試過程。 實(shí)現(xiàn)單元測(cè)試。參考測(cè)試模型和測(cè)試方案,制定具體的測(cè)試用例,創(chuàng)建可重用的測(cè)試腳本。 執(zhí)行單元測(cè)試。根據(jù)單元測(cè)試的方案、用例對(duì)單元進(jìn)行測(cè)試,驗(yàn)證測(cè)試的結(jié)果并記錄測(cè)試過程中出現(xiàn)的缺陷。 評(píng)審單元測(cè)試。對(duì)單元測(cè)試的結(jié)果進(jìn)行評(píng)審,主要從需求覆蓋和代碼覆蓋的角度進(jìn)行測(cè)試完備性的評(píng)估。,20,單元測(cè)試,分解軟件,寫測(cè)試需求 反復(fù)檢查并理解各種信息,和用戶交流,理解他們的要求。可以按照以下步驟執(zhí)行: 1 確定軟件提供的主要商業(yè)任務(wù)。 2 對(duì)每個(gè)商業(yè)任務(wù),確定完成該任務(wù)所要進(jìn)行的交易。 3 確定從數(shù)據(jù)庫(kù)信息引出的計(jì)算結(jié)果。 4 對(duì)于對(duì)時(shí)間有要求的交易,確定所要的時(shí)間和條件。這些條件包括數(shù)據(jù)庫(kù)大

15、小、機(jī)器配置、交易量、以及網(wǎng)絡(luò)擁擠情況。 5 確定會(huì)產(chǎn)生重大意外的壓力測(cè)試,包括:內(nèi)存、硬盤空間、高的交易率。 6 確定應(yīng)用需要處理的數(shù)據(jù)量。 7 確定需要的軟件和硬件配置。通常情況下,不可能對(duì)所有可能的配置都測(cè)試到,因此要選擇最有可能產(chǎn)生問題的情況進(jìn)行測(cè)試,包括:最低性能的硬件、幾個(gè)有兼容性問題的軟件并存、客戶端機(jī)器通過最慢的LAN/WANF連接訪問服務(wù)器。,21,單元測(cè)試,步驟執(zhí)行 8 確定其它與應(yīng)用軟件沒有直接關(guān)系的商業(yè)交易。包括:管理功能,如啟動(dòng)和退出程序配置功能,如設(shè)置打印機(jī)操作員的愛好,如字體、顏色應(yīng)用功能,如訪問email或者顯示時(shí)間和日期。 9 確定安裝過程,包括訂制從哪安裝、

16、定制安裝、升級(jí)安裝。 10 確定沒有隱含在功能測(cè)試中的戶界面要求。大多界面都在功能測(cè)試時(shí)被測(cè)試到。如:操作與顯示的一致性,如使用快捷鍵等;界面遵從合理標(biāo)準(zhǔn),如按鈕大小,標(biāo)簽等。,22,單元測(cè)試設(shè)計(jì)(一) 單元測(cè)試模型的設(shè)計(jì)。 測(cè)試項(xiàng)目的設(shè)計(jì)。 單元測(cè)試模型設(shè)計(jì) 構(gòu)造最小運(yùn)行調(diào)度系統(tǒng),即驅(qū)動(dòng)模塊,用于模擬被測(cè)模塊的上一級(jí)模塊。 模擬實(shí)現(xiàn)單元接口,即單元函數(shù)需調(diào)用的其他函數(shù)接口,即樁模塊。 模擬生成測(cè)試數(shù)據(jù)或狀態(tài),為單元運(yùn)行準(zhǔn)備動(dòng)態(tài)環(huán)境。 對(duì)測(cè)試過程的支持,對(duì)測(cè)試結(jié)果的保留,對(duì)測(cè)試覆蓋率的記錄等。 單元測(cè)試環(huán)境的示意圖如下:,被測(cè)單元,驅(qū)動(dòng)模塊,樁模塊,測(cè)試用例,測(cè)試結(jié)束,樁模塊,樁模塊,23,單

17、元測(cè)試設(shè)計(jì)(二) 測(cè)試項(xiàng)目設(shè)計(jì) 測(cè)試項(xiàng)目是測(cè)試用例的一個(gè)總則,主要是根據(jù)測(cè)試需求設(shè)計(jì)測(cè)試點(diǎn),不包含具體實(shí)踐的用例。 在測(cè)試項(xiàng)目的設(shè)計(jì)中,主要從功能覆蓋和代碼覆蓋兩個(gè)角度進(jìn)行考慮。 1 功能覆蓋屬黑盒的范疇,用來(lái)指出測(cè)試用例是否已經(jīng)覆蓋了程序應(yīng)該提供的功能。邏輯覆蓋率是考核單元測(cè)試質(zhì)量的一個(gè)關(guān)鍵指標(biāo)。 2 代碼覆蓋也稱邏輯覆蓋,包括語(yǔ)句覆蓋、分支覆蓋、路徑覆蓋,是一種常用的白盒測(cè)試方法。 (1)語(yǔ)句覆蓋:設(shè)計(jì)若干測(cè)試用例,運(yùn)行被測(cè)程序,使得每一個(gè)可執(zhí)行語(yǔ)句至少執(zhí)行一次。 (2)分支覆蓋:也稱判斷覆蓋,使得程序中每個(gè)判斷的取真分支和取假分支至少執(zhí)行一次。 (3)條件覆蓋:設(shè)的程序中每個(gè)判斷的每條件

18、的可能取值至少執(zhí)行一次。 覆蓋率指標(biāo):核心代碼覆蓋率達(dá)到100%,共享資源庫(kù)的代碼覆蓋率達(dá)到100%,非核心代碼覆蓋率達(dá)到90%。,24,單元測(cè)試,單元測(cè)試用例的設(shè)計(jì) 單元測(cè)試用例編寫原則之一 測(cè)試用例設(shè)計(jì)的根據(jù)是詳細(xì)設(shè)計(jì)說明書。 測(cè)試用例不僅要證明被測(cè)單元是否做了它應(yīng)該做的事情,同時(shí)需要證明它是否做了不希望它做的事,即是否滿足設(shè)計(jì)說明書中的要求。 設(shè)計(jì)測(cè)試用例的5個(gè)步驟: 1 為系統(tǒng)運(yùn)行起來(lái)而設(shè)計(jì)的測(cè)試用例 如果用例可以正常運(yùn)行,至少可以知道測(cè)試環(huán)境和測(cè)試單元是可用的。 2 為正向測(cè)試而設(shè)計(jì)用例 (1) 用例的設(shè)計(jì)者應(yīng)該通讀相關(guān)的設(shè)計(jì)說明,每一個(gè)測(cè)試用例就是通過有針對(duì)的測(cè)試說明書中的一項(xiàng)或多

19、項(xiàng)內(nèi)容來(lái)設(shè)計(jì)的。 (2) 當(dāng)設(shè)計(jì)到不止一個(gè)設(shè)計(jì)說明書時(shí),最好將測(cè)試方案中的測(cè)試用例與主要的設(shè)計(jì)說明中的描述順序相對(duì)應(yīng)。 (3) 正向測(cè)試用例驗(yàn)證設(shè)計(jì)說明書所對(duì)應(yīng)的功能項(xiàng)或性能指標(biāo)能否兌現(xiàn)。 3 為逆向測(cè)試而設(shè)計(jì)用例 用例用來(lái)驗(yàn)證被測(cè)的軟件單元有沒有做不應(yīng)該做的事情,可以依靠錯(cuò)誤猜測(cè)的方法進(jìn)行測(cè)試用例的構(gòu)造。,25,單元測(cè)試,單元測(cè)試用例的設(shè)計(jì) 單元測(cè)試用例編寫原則之二 4 為滿足特殊需求而設(shè)計(jì)用例 用戶的特殊要求包括系統(tǒng)的性能、安全性、保密性,尤其對(duì)安全和保密性要求較高。 5 為代碼覆蓋而設(shè)計(jì)用例 設(shè)計(jì)好的測(cè)試用例是可以保證較高的代碼測(cè)試覆蓋率的。,26,單元測(cè)試用例設(shè)計(jì)方法之一 規(guī)范(規(guī)格)

20、導(dǎo)出法 是根據(jù)相干的規(guī)范描述來(lái)設(shè)計(jì)測(cè)試用例的。 一個(gè)比較實(shí)際的方法是根據(jù)陳述規(guī)范所用語(yǔ)句的順序來(lái)相應(yīng)的為被測(cè)單元設(shè)計(jì)測(cè)試用例。 例如,考慮一個(gè)計(jì)算平方根的函數(shù)的規(guī)范: 輸入:實(shí)數(shù) 輸出:實(shí)數(shù) 規(guī)范:當(dāng)輸入一個(gè)0或者比0大的實(shí)數(shù)時(shí),返回其正的平方根;當(dāng)輸入一個(gè)小于0的實(shí)數(shù)時(shí),顯示錯(cuò)誤信息“平方根非法輸入之小于0”,并返回0;庫(kù)函數(shù)Print_Line可以用來(lái)輸出錯(cuò)誤信息。 在這個(gè)規(guī)范中有3個(gè)陳述,可以用兩個(gè)測(cè)試用例來(lái)對(duì)應(yīng): 測(cè)試用例1:輸入4,輸出2。對(duì)應(yīng)規(guī)范中的第一句陳述(“當(dāng)輸入一個(gè)0或者比0大的實(shí)數(shù)時(shí),返回其正的平方根”)。 測(cè)試用例2:輸入-1,輸出0。對(duì)應(yīng)規(guī)范中的第二、第三句陳述(“當(dāng)

21、輸入一個(gè)小于0的實(shí)數(shù)時(shí),顯示錯(cuò)誤信息“平方根非法輸入之小于0”,并返回0;庫(kù)函數(shù)Print_Line可以用來(lái)輸出錯(cuò)誤信息。”)。 規(guī)范導(dǎo)出測(cè)試可以應(yīng)用到保密分析、安全分析、軟件故障分析,或其他隊(duì)單元規(guī)范作出補(bǔ)充的文件上去。,27,單元測(cè)試,單元測(cè)試用例設(shè)計(jì)方法之二 等價(jià)類劃分法 等價(jià)類劃分假定某一特定的等價(jià)類中的所有值對(duì)于測(cè)試目的來(lái)說是等價(jià)的。所以在每個(gè)等價(jià)類中找一個(gè)之作為測(cè)試用例。 是一種正式的測(cè)試用例設(shè)計(jì)方法,基于對(duì)被測(cè)單元的輸入、輸出所做的劃分,對(duì)每一個(gè)劃分中的所有輸入、被測(cè)單元有等價(jià)的行為。 劃分也可以根據(jù)軟件所能存取的數(shù)據(jù)確定,包括時(shí)間、輸入輸出順序、狀態(tài)。 當(dāng)軟件復(fù)雜時(shí),等價(jià)類的區(qū)

22、分以及相互之間的作用關(guān)系也相應(yīng)變復(fù)雜,不能方便的應(yīng)用這種方法。,28,單元測(cè)試,邊界值分析法 邊界值分析使用與等價(jià)類測(cè)試方法相同的等價(jià)類劃分,只是邊界值分析假定錯(cuò)誤更多地存在于兩個(gè)劃分的邊界上。 邊界值測(cè)試在軟件變得復(fù)雜的時(shí)候也會(huì)變得不實(shí)用。 邊界值測(cè)試對(duì)于非向量類型的值(如枚舉類型的值)也沒有意義。 以求平方根函數(shù)為例設(shè)計(jì)測(cè)試用例:,29,單元測(cè)試,分支測(cè)試法 根據(jù)單元中的中止流分支或判斷點(diǎn)來(lái)設(shè)計(jì)測(cè)試用例。 通常用來(lái)達(dá)到一定的判定覆蓋率。 分支測(cè)試是白盒或結(jié)構(gòu)化測(cè)試用例設(shè)計(jì)技術(shù)。 給定一個(gè)結(jié)構(gòu)的規(guī)格說明,說明單元中的控制流,就可以設(shè)計(jì)測(cè)試用例來(lái)測(cè)試其中分支。 對(duì)于一個(gè)有結(jié)構(gòu)化說明的單元適合于

23、作分支測(cè)試。 但一個(gè)單純的單元功能規(guī)格說明可能導(dǎo)致覆蓋遺漏。 需要當(dāng)心的是,當(dāng)集中注意力于分支上時(shí),測(cè)試設(shè)計(jì)則容易忽略單元功能的整體。 分支測(cè)試只是基于單元中的判斷情況,對(duì)于復(fù)雜的邏輯表達(dá)的判斷也不容易使用。,30,單元測(cè)試,條件測(cè)試法 條件測(cè)試的目標(biāo)是測(cè)試在每個(gè)邏輯條件的單個(gè)成分及他們組合情況下,程序都是正確的。 條件測(cè)試包含了許多測(cè)試用例設(shè)計(jì)技術(shù),他們都致力于彌補(bǔ)在遇到復(fù)雜邏輯條件是分支測(cè)試的弱點(diǎn)。 測(cè)試用例用來(lái)測(cè)試邏輯表達(dá)式的單個(gè)成分。 在分支測(cè)試?yán)?,條件測(cè)試被用作一種“黑盒”技術(shù),測(cè)試設(shè)計(jì)者要根據(jù)單元的規(guī)格說明對(duì)單元的結(jié)構(gòu)作出猜測(cè)。 條件測(cè)試更適合做“白盒”測(cè)試技術(shù)。 條件測(cè)試最適合有

24、結(jié)構(gòu)化規(guī)格說明的單元,它提供一個(gè)全面的測(cè)試,包括復(fù)雜的測(cè)試條件、編成和設(shè)計(jì)錯(cuò)誤多發(fā)區(qū)與以及分支測(cè)試不能達(dá)到的區(qū)域。,31,單元測(cè)試,條件測(cè)試法 一個(gè)單元也可能有內(nèi)部邊界,它們只能從單元的結(jié)構(gòu)化規(guī)格說明找到。 如左側(cè)代碼事例,對(duì)該內(nèi)部邊界值分析包括了3個(gè)需要測(cè)試的條件: 用例1:誤差恰好大于期望精度 用例2:誤差等于期望精度 用例3:誤差恰好小于期望精度 內(nèi)部邊界值測(cè)試可以用來(lái)發(fā)現(xiàn)一些內(nèi)部錯(cuò)誤。如誤把寫作=。 內(nèi)部邊界值測(cè)試應(yīng)作為一種補(bǔ)充方法,在其它方法的最后使用。,32,單元測(cè)試,單元測(cè)試的執(zhí)行 測(cè)試的結(jié)論 測(cè)試的結(jié)論與執(zhí)行被測(cè)試的單元中模擬目標(biāo)環(huán)境下的程序執(zhí)行精確性相關(guān)。保證在估計(jì)這些特征時(shí)

25、所有的環(huán)境因素均被考慮。 例如,所有的隱性輸入必須被考慮(即系統(tǒng)時(shí)鐘,文件狀態(tài),單元加載地點(diǎn)),還有實(shí)際環(huán)境的代表物(即相同的編譯器,加載者,操作系統(tǒng),計(jì)算機(jī),輸入分布)也是測(cè)試環(huán)境必須考慮的。 自動(dòng)測(cè)試 自動(dòng)測(cè)試可以大大提高測(cè)試效率,便于回歸測(cè)試。 自動(dòng)測(cè)試有兩種方式:商業(yè)化的測(cè)試工具和自行開發(fā)的工具。 自動(dòng)測(cè)試通過自定義的腳本文件將測(cè)試用例逐條放入,通過驅(qū)動(dòng)模塊讀入腳本文件,驅(qū)動(dòng)被測(cè)單元執(zhí)行每條用例,將相應(yīng)的結(jié)果返回驅(qū)動(dòng)模塊,驅(qū)動(dòng)模塊將結(jié)果保存在一個(gè)文本文件中,通過與預(yù)期的結(jié)果比較(也是一個(gè)文本文件),可以判斷是否所有的用例都通過測(cè)試。,33,單元測(cè)試的四個(gè)過程 1 檢查編碼是否遵循軟件編程規(guī)范和標(biāo)準(zhǔn)。 2 自動(dòng)或手工分析程序 3 設(shè)計(jì)測(cè)試用例并運(yùn)行測(cè)試用例 4 錯(cuò)誤跟蹤分析 從覆蓋的角度測(cè)試應(yīng)覆蓋 1 功能覆蓋 2

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論