軟件的編碼與測(cè)試_第1頁(yè)
軟件的編碼與測(cè)試_第2頁(yè)
軟件的編碼與測(cè)試_第3頁(yè)
軟件的編碼與測(cè)試_第4頁(yè)
軟件的編碼與測(cè)試_第5頁(yè)
已閱讀5頁(yè),還剩63頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第5章 軟件的編碼與測(cè)試教學(xué)目標(biāo)教學(xué)內(nèi)容 5.1 編碼設(shè)計(jì)的目的 5.2 程序設(shè)計(jì)語(yǔ)言 5.3 編碼風(fēng)格 5.4 軟件測(cè)試 5.5 測(cè)試用例的設(shè)計(jì) 5.6 測(cè)試步驟 5.7 調(diào)試技術(shù)重點(diǎn)重點(diǎn)/難點(diǎn)難點(diǎn)教學(xué)目標(biāo)教學(xué)目標(biāo) 掌握程序設(shè)計(jì)語(yǔ)言特點(diǎn)和選擇; 掌握程序編碼風(fēng)格; 掌握軟件測(cè)試的概念、目的、原則和測(cè)試的方法; 重點(diǎn)掌握軟件測(cè)試用例的設(shè)計(jì); 了解程序調(diào)試的過(guò)程和基本方法。5.1 編碼設(shè)計(jì)的目的 所謂編碼,是使用選定的程序設(shè)計(jì)語(yǔ)言,把模塊的過(guò)程描述翻譯為用該語(yǔ)言書寫的源程序。 源程序不僅要求語(yǔ)法上的正確性,還要求源程序具有良好的結(jié)構(gòu)性和良好的程序設(shè)計(jì)風(fēng)格 。 在程序編寫時(shí)應(yīng)考慮到,所寫的程序?qū)⒈?/p>

2、別人閱讀,一定要盡量使程序?qū)懙萌菀妆蝗俗x懂。 目前,人們編寫源程序還不能使用自然語(yǔ)言,只能用某種程序設(shè)計(jì)語(yǔ)言 。5.2 程序設(shè)計(jì)語(yǔ)言 程序設(shè)計(jì)語(yǔ)言的分類 自20世紀(jì)60年代以來(lái),世界上公布的程序設(shè)計(jì)語(yǔ)言已有上千種之多,但是只有很小一部分得到了廣泛的應(yīng)用。 程序設(shè)計(jì)語(yǔ)言的選擇 語(yǔ)言選擇的合適,會(huì)使編碼困難減少,程序測(cè)試量減少,并且可以得到易讀、易維護(hù)的軟件。 5.2.1 程序設(shè)計(jì)語(yǔ)言的分類 從發(fā)展歷程來(lái)看程序設(shè)計(jì)語(yǔ)言可以分為四代:第一代語(yǔ)言(機(jī)器語(yǔ)言) 機(jī)器語(yǔ)言是由二進(jìn)制0、1代碼指令構(gòu)成,不同的CPU具有不同的指令系統(tǒng)。 機(jī)器語(yǔ)言程序難編寫、難修改、難維護(hù),需要用戶直接對(duì)存儲(chǔ)空間進(jìn)行分配,編程

3、效率極低。 目前這種語(yǔ)言已經(jīng)被淘汰。第二代語(yǔ)言(匯編語(yǔ)言) 匯編語(yǔ)言指令是機(jī)器指令的符號(hào)化,與機(jī)器指令存在著直接的對(duì)應(yīng)關(guān)系。 缺點(diǎn):難學(xué)難用、容易出錯(cuò)、維護(hù)困難等。 優(yōu)點(diǎn):可直接訪問(wèn)系統(tǒng)接口,匯編程序翻譯成的機(jī)器語(yǔ)言程序的效率高。 從軟件工程角度來(lái)看,只有在高級(jí)語(yǔ)言不能滿足設(shè)計(jì)要求,或不具備支持某種特定功能的技術(shù)性能(如特殊的輸入輸出)時(shí),匯編語(yǔ)言才被使用。第三代語(yǔ)言(高級(jí)語(yǔ)言) 高級(jí)語(yǔ)言是面向用戶的、基本上獨(dú)立于計(jì)算機(jī)種類和結(jié)構(gòu)的語(yǔ)言。 形式上接近于算術(shù)語(yǔ)言和自然語(yǔ)言,概念上接近于人們通常使用的概念。 一個(gè)命令可以代替幾條、幾十條甚至幾百條匯編語(yǔ)言的指令。 優(yōu)點(diǎn):優(yōu)點(diǎn):易學(xué)易用,通用性強(qiáng),應(yīng)

4、用廣泛。 高級(jí)語(yǔ)言種類繁多,我們可以從應(yīng)用特點(diǎn)和對(duì)客觀系統(tǒng)的描述兩個(gè)方面對(duì)其進(jìn)一步分類。從應(yīng)用角度分類 基礎(chǔ)語(yǔ)言:基礎(chǔ)語(yǔ)言:也稱通用語(yǔ)言。歷史悠久,流傳很廣,有大量的已開發(fā)的軟件庫(kù),擁有眾多的用戶,為人們所熟悉和接受。 如:FORTRAN、COBOL、BASIC、ALGOL等。 結(jié)構(gòu)化語(yǔ)言:結(jié)構(gòu)化語(yǔ)言:直接支持結(jié)構(gòu)化的控制結(jié)構(gòu),具有很強(qiáng)的過(guò)程結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)能力。 如:PASCAL、C、Ada。 專用語(yǔ)言專用語(yǔ)言: 是為某種特殊應(yīng)用而專門設(shè)計(jì)的語(yǔ)言,通常具有特殊的語(yǔ)法形式。應(yīng)用比較廣泛的有:APL語(yǔ)言、FORTH語(yǔ)言、LISP語(yǔ)言。從客觀系統(tǒng)的描述分類 面向過(guò)程語(yǔ)言: 其程序設(shè)計(jì)范式:“數(shù)據(jù)結(jié)構(gòu)

5、算法” 前面所介紹的程序設(shè)計(jì)語(yǔ)言都屬此類。 面向?qū)ο笳Z(yǔ)言: 其程序設(shè)計(jì)范式: “對(duì)象消息” 如:Delphi、Visual Basic、Java、C+等。第四代語(yǔ)言(簡(jiǎn)稱4GL) 4GL是非過(guò)程化語(yǔ)言,編碼時(shí)只需說(shuō)明“做什么”,不需描述算法細(xì)節(jié)。 兩個(gè)典型應(yīng)用:數(shù)據(jù)庫(kù)查詢和應(yīng)用程序生成器是4GL的。 數(shù)據(jù)庫(kù)查詢語(yǔ)言(SQL)可以對(duì)數(shù)據(jù)庫(kù)中的信息進(jìn)行復(fù)雜的操作。用戶只需將要查找的內(nèi)容在什么地方、根據(jù)什么條件進(jìn)行查找等信息告訴SQL,SQL將自動(dòng)完成查找過(guò)程。應(yīng)用程序生成器則是根據(jù)用戶的需求“自動(dòng)生成”滿足需求的高級(jí)語(yǔ)言程序。第四代語(yǔ)言(簡(jiǎn)稱4GL) 真正的4GL應(yīng)該說(shuō)還沒有出現(xiàn)。目前,所謂的4G

6、L大多是指基于某種語(yǔ)言環(huán)境上具有4GL特征的軟件工具產(chǎn)品,如System Z、PowerBuilder、FOCUS等。 面向應(yīng)用,為最終用戶設(shè)計(jì)的一類程序設(shè)計(jì)語(yǔ)言。 優(yōu)點(diǎn):縮短應(yīng)用開發(fā)過(guò)程、降低維護(hù)代價(jià)、最大程度地減少調(diào)試過(guò)程中出現(xiàn)的問(wèn)題、對(duì)用戶友好等。5.2.2 程序設(shè)計(jì)語(yǔ)言的選擇 在編碼之前應(yīng)選好適當(dāng)?shù)恼Z(yǔ)言,特別是在大型軟件的開發(fā)中更不能只局限于使用自己所熟悉的語(yǔ)言。 一般情況下,程序設(shè)計(jì)語(yǔ)言的選擇常從以下幾個(gè)方面考慮: 項(xiàng)目的應(yīng)用領(lǐng)域、 算法與計(jì)算的復(fù)雜性、 數(shù)據(jù)結(jié)構(gòu)的復(fù)雜性、效率、可移植性、程序設(shè)計(jì)人員的水平、構(gòu)造系統(tǒng)的模式等5.3 編碼風(fēng)格 所謂編碼風(fēng)格即書寫源程序的習(xí)慣 。從軟件工

7、程要求出發(fā),程序設(shè)計(jì)風(fēng)格包括如下要求 : 使用好程序內(nèi)部的文檔 ; 數(shù)據(jù)說(shuō)明原則; 語(yǔ)句結(jié)構(gòu)的規(guī)則; 輸入、輸出規(guī)則 ; 高效率的原則。 5.3.1使用好程序內(nèi)部的文檔 軟件程序十文檔 為了提高程序的可維護(hù)性,源代碼也需要實(shí)現(xiàn)“文檔化”。內(nèi)部文檔的組織包括: 標(biāo)識(shí)符命名:具有鮮明的意義,能夠提示程序?qū)ο蟠淼膶?shí)體。 程序代碼的視覺組織:邏輯結(jié)構(gòu)清晰,層次分明(空格、空行、縮進(jìn) )。 程序內(nèi)部的注釋 :序言性注釋和功能性注釋 5.3.2 數(shù)據(jù)說(shuō)明原則一般而言,數(shù)據(jù)說(shuō)明應(yīng)遵循三個(gè)原則。(1) 數(shù)據(jù)說(shuō)明的次序應(yīng)當(dāng)規(guī)范化,使數(shù)據(jù)屬性容易查找,有利于測(cè)試、排錯(cuò)和維護(hù);(2) 當(dāng)多個(gè)變量名用一個(gè)語(yǔ)句說(shuō)明時(shí)

8、,應(yīng)當(dāng)對(duì)這些變量按字母的順序排列;(3) 如果設(shè)計(jì)了一個(gè)復(fù)雜的數(shù)據(jù)結(jié)構(gòu),應(yīng)當(dāng)使用注釋,說(shuō)明這個(gè)數(shù)據(jù)結(jié)構(gòu)的固有特點(diǎn)。5.3.3 語(yǔ)句結(jié)構(gòu)的規(guī)則(1)語(yǔ)句結(jié)構(gòu)應(yīng)遵從如下規(guī)則: 一行內(nèi)只寫一條語(yǔ)句,并采用適當(dāng)?shù)目s進(jìn)格式; 不要刻意追求技巧性,使程序編寫得過(guò)于緊湊; 要簡(jiǎn)單、清楚,直截了當(dāng)?shù)卣f(shuō)明程序員的用意; 除非對(duì)效率有特殊的要求,程序編寫要做到清晰第一,效率第二; 首先保證程序正確,然后才要求提高速度; 讓編譯程序作簡(jiǎn)單的優(yōu)化; 盡可能使用庫(kù)函數(shù); 避免使用臨時(shí)變量而使可讀性下降; 盡量用公共過(guò)程或子程序代替重復(fù)的功能代碼段; 多使用括號(hào)以使表達(dá)式運(yùn)算順序清晰;5.3.3 語(yǔ)句結(jié)構(gòu)的規(guī)則(2) 避

9、免不必要的轉(zhuǎn)移; 用邏輯表達(dá)式代替分支嵌套; 避免使用空的ELSE語(yǔ)句和IFTHEN IF語(yǔ)句; 避免使用ELSE GOTO和ELSE RETURN結(jié)構(gòu); 使與判定相聯(lián)系的動(dòng)作盡可能地緊跟著判定; 避免采用過(guò)于復(fù)雜的條件測(cè)試; 盡量減少使用“否定”條件的條件語(yǔ)句; 避免過(guò)多使用循環(huán)嵌套和條件嵌套; 不要使GOTO語(yǔ)句相互交叉; 對(duì)遞歸定義的數(shù)據(jù)結(jié)構(gòu)盡量使用遞歸過(guò)程。5.3.4 輸入、輸出規(guī)則 對(duì)所有的輸入數(shù)據(jù)進(jìn)行檢驗(yàn),從而識(shí)別錯(cuò)誤的輸入,以保證每個(gè)數(shù)據(jù)的有效性; 檢查輸入項(xiàng)的各種重要組合的合理性; 輸入的步驟和操作盡可能簡(jiǎn)單; 輸入數(shù)據(jù)時(shí),允許使用自由格式輸入; 應(yīng)允許缺省值; 一批數(shù)據(jù)輸入時(shí)

10、,最好使用輸入結(jié)束標(biāo)志; 輸入輸出交叉時(shí),要在屏幕上使用提示信息; 應(yīng)保持輸入格式與輸入語(yǔ)句要求的一致性; 給所有的輸出加注釋,并設(shè)計(jì)輸出報(bào)表格式。5.3.5 高效率的原則 運(yùn)行效率:占用的處理機(jī)時(shí)間和存儲(chǔ)空間 可以從以下三個(gè)方面著手: 提高程序運(yùn)行效率; 程序編碼使程序運(yùn)行高效 提高存儲(chǔ)器效率; 占用存儲(chǔ)單元小,要求存取的時(shí)間短 提高輸入/輸出效率。5.4 軟件測(cè)試 軟件測(cè)試,是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過(guò)程。是對(duì)需求分析、設(shè)計(jì)和編碼三個(gè)階段進(jìn)行的最終復(fù)審。 軟件測(cè)試在軟件生存周期中橫跨兩階段: 編碼階段(單元測(cè)試) 測(cè)試階段(各種綜合測(cè)試) 測(cè)試只能找出程序中的錯(cuò)誤,但在未發(fā)現(xiàn)錯(cuò)誤時(shí),并不能

11、證明程序中沒有錯(cuò)誤。5.4.1 軟件測(cè)試目標(biāo) 僅就測(cè)試本身而言,軟件測(cè)試的目標(biāo)是以最少的時(shí)間和人力發(fā)現(xiàn)軟件中潛在的各種錯(cuò)誤和缺陷(盡量多的發(fā)現(xiàn)錯(cuò)誤)。 一個(gè)好的測(cè)試方案是極可能發(fā)現(xiàn)至今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試方案。 成功的測(cè)試是發(fā)現(xiàn)了至今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試。 發(fā)現(xiàn)錯(cuò)誤并不是軟件測(cè)試的最終目標(biāo)。 測(cè)試階段的根本目標(biāo)是盡可能多的發(fā)現(xiàn)并排除軟件中潛藏的錯(cuò)誤,最終把一個(gè)高質(zhì)量的軟件系統(tǒng)交給用戶使用。 5.4.2 軟件測(cè)試的原則 避免程序員檢查自己的程序; 軟件測(cè)試應(yīng)盡早地、不斷的進(jìn)行; 軟件測(cè)試不等于程序測(cè)試; 充分認(rèn)識(shí)錯(cuò)誤的群集現(xiàn)象; 測(cè)試用例應(yīng)包括測(cè)試輸入數(shù)據(jù)和與之對(duì)應(yīng)的輸出結(jié)果; 測(cè)試用例

12、的輸入數(shù)據(jù)應(yīng)包括合理的輸入和不合理的輸入; 嚴(yán)格執(zhí)行測(cè)試計(jì)劃,避免測(cè)試的隨意性。5.4.3 軟件測(cè)試的方法 軟件測(cè)試可以分為人工測(cè)試和基于計(jì)算機(jī)的測(cè)試。基于計(jì)算機(jī)的測(cè)試有兩種方法: 黑盒測(cè)試 把程序看成一個(gè)黑盒子,完全不考慮其內(nèi)部結(jié)構(gòu)和處理過(guò)程,只檢查程序的功能是否符合它的需求規(guī)格說(shuō)明。 白盒測(cè)試 把程序看成一個(gè)打開的盒子,測(cè)試人員對(duì)程序所有邏輯路徑進(jìn)行測(cè)試,在不同檢查點(diǎn)輸出結(jié)果,與預(yù)期的結(jié)果比較,確定程序是否有錯(cuò)。 黑盒測(cè)試 黑盒測(cè)試是在軟件的接口處進(jìn)行的,一方面看其是否能對(duì)合法的數(shù)據(jù)得出正確的結(jié)果,另一方面看它是否能對(duì)非法的數(shù)據(jù)進(jìn)行正確的處理。 黑盒測(cè)試法不能測(cè)試所有可能情況(一個(gè)例子)。

13、 黑盒測(cè)試是一種宏觀功能上的測(cè)試,該方法適合測(cè)試部門的測(cè)試人員或用戶。 隨著軟件生產(chǎn)的組裝技術(shù)的發(fā)展,黑盒測(cè)試方法會(huì)越來(lái)越普及。一個(gè)例子(黑盒測(cè)試) 假設(shè)一個(gè)程序P有輸入量X和Y及輸出量Z。在字長(zhǎng)為32位的計(jì)算機(jī)上運(yùn)行。若X、Y取整數(shù),按黑盒方法進(jìn)行窮舉測(cè)試,可能采用的測(cè)試數(shù)據(jù)組: 232232264 如果測(cè)試一組數(shù)據(jù)需要1毫秒,一年工作36524小時(shí)完成所有測(cè)試需5億年。白盒測(cè)試 白盒測(cè)試是對(duì)程序內(nèi)部執(zhí)行路徑進(jìn)行的。 窮盡測(cè)試(程序中每條可能的通路至少都應(yīng)該執(zhí)行一次)是不可能的。(一個(gè)例子) 白盒測(cè)試是一種程序級(jí)的微觀上的測(cè)試,適合于很小單元的測(cè)試,以及從事軟件底層工作、生產(chǎn)構(gòu)件的測(cè)試人員進(jìn)

14、行的測(cè)試。 無(wú)論是黑盒測(cè)試還是白盒測(cè)試,都不可能進(jìn)行完全測(cè)試,因此通過(guò)測(cè)試并不能證明程序是正確的。 在實(shí)際應(yīng)用中,常常采用白盒測(cè)試和黑盒測(cè)試相結(jié)合的方法,對(duì)軟件進(jìn)行有限的測(cè)試。 一個(gè)例子(白盒測(cè)試) 它包括了一個(gè)執(zhí)行20次的循環(huán),不同執(zhí)行路徑數(shù)達(dá)520條,如果對(duì)每一條路徑進(jìn)行測(cè)試需要1毫秒,假定一年工作36524小時(shí),要想把所有路徑測(cè)試完,需3170年。5.4.4 軟件測(cè)試的過(guò)程可見,測(cè)試過(guò)程需要三類輸入: 軟件配置:包括軟件需求規(guī)格說(shuō)明、軟件設(shè)計(jì)規(guī)格說(shuō)明、源程序代碼等; 測(cè)試配置:包括測(cè)試計(jì)劃、測(cè)試用例等。 測(cè)試工具:為了提高軟件測(cè)試效率,減輕測(cè)試過(guò)程中手工勞動(dòng),可使用一些專門的測(cè)試工具。如

15、測(cè)試數(shù)據(jù)自動(dòng)生成測(cè)試結(jié)果分析程序、驅(qū)動(dòng)測(cè)試的測(cè)試數(shù)據(jù)庫(kù)等。5.4.5 軟件測(cè)試與開發(fā)各階段的關(guān)系 軟件開發(fā)過(guò)程是一個(gè)自頂向下,逐步細(xì)化的過(guò)程,而軟件測(cè)試過(guò)程則是按相反的順序自底向上,逐步集成的過(guò)程:5.5 測(cè)試用例的設(shè)計(jì) 不同的測(cè)試用例發(fā)現(xiàn)程序錯(cuò)誤的能力有很大的差別。 為了提高測(cè)試效率降低測(cè)試成本,應(yīng)該精心選擇測(cè)試用例。 因?yàn)椴豢赡苓M(jìn)行窮盡測(cè)試,所以,應(yīng)該選用少量“最有效的”測(cè)試用例,盡可能做到完備測(cè)試。5.5.1 邏輯覆蓋 屬于白盒測(cè)試方法 是以程序內(nèi)部的邏輯結(jié)構(gòu)為基礎(chǔ) 是對(duì)一系列測(cè)試過(guò)程總稱,這組測(cè)試過(guò)程按照越來(lái)越完全的程度進(jìn)行路徑的測(cè)試。 可分為: 語(yǔ)句覆蓋、判定覆蓋、條件覆蓋、 判定-

16、條件覆蓋、條件組合覆蓋、路徑覆蓋語(yǔ)句覆蓋 語(yǔ)句覆蓋是指選擇足夠的測(cè)試數(shù)據(jù),使被測(cè)程序中每個(gè)語(yǔ)句至少執(zhí)行一次。 此例中,為了使每個(gè)語(yǔ)句都執(zhí)行一次,程序執(zhí)行的路徑應(yīng)該為,為此可以設(shè)計(jì)測(cè)試用例如下:輸入:a=2,b=0,x=6輸出:a=2,b=0,x=5判定覆蓋 判定覆蓋又稱為分支覆蓋,是指設(shè)計(jì)若干測(cè)試數(shù)據(jù),使得程序中每個(gè)判定表達(dá)式的每個(gè)分支(真假)都至少執(zhí)行一次。 兩種組測(cè)試用例見下表(實(shí)例圖如上): 格式為:輸入的(a,b,x),輸出的(a,b,x)條件覆蓋 條件覆蓋,是使得程序中每個(gè)判定表達(dá)式的每個(gè)條件的可能取值至少執(zhí)行一次。 在此實(shí)例中,兩個(gè)判定表達(dá)式共有四個(gè)條件:a1、b=0、a=2和x1

17、,設(shè)它們?yōu)檎鏁r(shí)分別用T1、T2、T3、T4表示,為假時(shí)分別用F1、F2、F3、F4表示。判定-條件覆蓋 判定-條件覆蓋是指選取足夠多的測(cè)試數(shù)據(jù),使得判定表達(dá)式中的每個(gè)條件的所有可能取值至少執(zhí)行一次,而且每個(gè)判定表達(dá)式的所有可能的判定結(jié)果至少執(zhí)行一次。 一種組測(cè)試用例見下表(實(shí)例圖如前):條件組合覆蓋 條件組合覆蓋是指選取足夠多的測(cè)試數(shù)據(jù),使得每個(gè)判定表達(dá)式的所有可能的條件取值組合至少執(zhí)行一次。 在此實(shí)例中,每個(gè)判定各有兩個(gè)條件、四個(gè)條件組合(不要求各個(gè)判定的條件組合再進(jìn)行組合)設(shè)計(jì)如下一組測(cè)試用例: 路徑覆蓋 路徑覆蓋是指選取足夠多的測(cè)試數(shù)據(jù),覆蓋程序中所有的路徑。也就是要求覆蓋每個(gè)判定可能取

18、值的所有組合。 一種組測(cè)試用例見下表(實(shí)例圖):5.5.2 等價(jià)分類法 一種典型的黑盒測(cè)試技術(shù) 。 設(shè)計(jì)出一個(gè)以發(fā)現(xiàn)若干類錯(cuò)誤的測(cè)試用例,從而減少必須設(shè)計(jì)的測(cè)試用例的數(shù)目。 兩個(gè)步驟: 劃分等價(jià)類:把程序的輸入域劃分成若干個(gè) 數(shù)據(jù)類; 設(shè)計(jì)測(cè)試用例:從每一類中選取少數(shù)代表性 的數(shù)據(jù)作為測(cè)試用例。劃分等價(jià)類 所謂等價(jià)類是指某個(gè)輸入域的子集合,在該子集合中各個(gè)輸入數(shù)據(jù)對(duì)于揭露程序中的錯(cuò)誤都是等效的。 有效等價(jià)類是指對(duì)于程序的規(guī)格說(shuō)明來(lái)說(shuō)是合理的,有意義的輸入數(shù)據(jù)構(gòu)成的集合,反之則稱為無(wú)效等價(jià)類。 在設(shè)計(jì)測(cè)試用例時(shí),要同時(shí)考慮有效等價(jià)類和無(wú)效等價(jià)類的設(shè)計(jì) 為了正確劃分等價(jià)類,一方面要注意積累經(jīng)驗(yàn),另

19、 一方面要正確分析被測(cè)程序的功能。此外,一般不 需要設(shè)計(jì)測(cè)試數(shù)據(jù)用來(lái)暴露編譯程序肯定能發(fā)現(xiàn)的 錯(cuò)誤。 等價(jià)類劃分的啟發(fā)式規(guī)則 如果規(guī)定了輸入值的范圍,則可劃分出一個(gè)有效的等價(jià)類(輸入值在此范圍內(nèi)),兩個(gè)無(wú)效等價(jià)類(輸入值小于最小值或大于最大值); 如果規(guī)定了輸入數(shù)據(jù)的個(gè)數(shù),則類似地也可以劃分出一個(gè)有效等價(jià)類和兩個(gè)無(wú)效等價(jià)類; 如果規(guī)定了輸入數(shù)據(jù)的一組值,則允許的輸入值集合是一個(gè)有效的等價(jià)類,所有不允許的輸入值集合是無(wú)效等價(jià)類; 如果規(guī)定了輸入數(shù)據(jù)必須遵循的規(guī)則,則可以劃分出一個(gè)有效的等價(jià)類(符合規(guī)則的)和若干個(gè)無(wú)效等價(jià)類(從各種不同角度違反規(guī)則的); 如果確知已劃分的等價(jià)類中各元素在程序中處理

20、方式不同,則應(yīng)將此等價(jià)類進(jìn)一步劃分成更小的等價(jià)類。設(shè)計(jì)測(cè)試用例 劃分等價(jià)類后,就可以根據(jù)等價(jià)類設(shè)計(jì)測(cè)試用例。主要使用以下兩個(gè)步驟: 設(shè)計(jì)一個(gè)新的測(cè)試用例以盡可能多地覆蓋尚未被覆蓋的有效等價(jià)類,重復(fù)這一步驟直到所有有效等價(jià)類都被覆蓋為止; 設(shè)計(jì)一個(gè)新的測(cè)試用例,使它覆蓋一個(gè)而且只覆蓋一個(gè)尚未被覆蓋的無(wú)效等價(jià)類,重復(fù)這一步驟直到所有無(wú)效等價(jià)類都被覆蓋為止。 因?yàn)槟承┏绦驅(qū)δ骋惠斎脲e(cuò)誤的檢查往往會(huì)屏蔽對(duì)其他輸入錯(cuò)誤的檢查,所以必須對(duì)每一個(gè)無(wú)效等價(jià)類分別設(shè)計(jì)測(cè)試用例。一個(gè)實(shí)例 變量的命名規(guī)則一般規(guī)定如下:變量名的長(zhǎng)度不多于40個(gè)字符,第一個(gè)字符必須為英文字母,其他字母可以英文字母、數(shù)字以及下劃線的任意

21、組合。請(qǐng)用等價(jià)分類法設(shè)計(jì)測(cè)試用例。 劃分等價(jià)類如下表所示: 設(shè)計(jì)測(cè)試用例如下表: 5.5.3 邊界值分析法 一種黑盒測(cè)試方法,是對(duì)等價(jià)類劃分方法的補(bǔ)充。 經(jīng)驗(yàn)表明,大量的錯(cuò)誤是發(fā)生在輸入或輸出范圍的邊界上。如數(shù)組的下標(biāo),循環(huán)的控制等的邊界附近等最容易發(fā)生錯(cuò)誤。 通常輸入等價(jià)類與輸出等價(jià)類的邊界,就是應(yīng)著重測(cè)試的邊界情況。 應(yīng)當(dāng)選取正好等于、剛剛大于或剛剛小于邊界的值作為測(cè)試數(shù)據(jù)。 選擇測(cè)試用例的一般原則在很多方面與等價(jià)類劃分方法類似 。5.5.4 錯(cuò)誤猜測(cè)法 錯(cuò)誤猜測(cè)法是指:依靠測(cè)試人員的經(jīng)驗(yàn)和直覺,從各種可能的測(cè)試方案中選出一些最可能引起程序出錯(cuò)的方案進(jìn)行測(cè)試。 基本做法是:列舉出程序中可能

22、有的錯(cuò)誤和容易發(fā)生錯(cuò)誤的特殊情況,并且根據(jù)它們?cè)O(shè)計(jì)測(cè)試方案。 如輸入數(shù)據(jù)為0,或輸出數(shù)據(jù)為0;輸入表格為空或輸入表格只有一行等等。 5.5.5 實(shí)用綜合測(cè)試策略 通常,在測(cè)試早期主要使用白盒測(cè)試方法,后期主要使用黑盒測(cè)試方法。其策略為: 在任何情況下都必須使用邊界值分析方法。 必要時(shí)用等價(jià)類劃分方法補(bǔ)充一些測(cè)試用例。 用錯(cuò)誤猜測(cè)法再追加一些測(cè)試用例。 對(duì)照程序邏輯,設(shè)計(jì)足夠的測(cè)試用例,以達(dá)到要求的覆蓋標(biāo)準(zhǔn)。 如果程序的功能說(shuō)明中含有輸入條件的組合情況,則一開始就可選用因果圖法。5.6 測(cè)試步驟 測(cè)試過(guò)程也必須分步驟進(jìn)行,后一個(gè)步驟在邏輯上是前一個(gè)步驟的繼續(xù)。5.6.1 單元測(cè)試 又稱模塊測(cè)試。

23、是針對(duì)軟件設(shè)計(jì)的最小單位程序模塊,進(jìn)行正確性檢驗(yàn)的測(cè)試工作。 目的在于發(fā)現(xiàn)模塊內(nèi)部可能存在的各種差錯(cuò)。 在編寫出源程序代碼并通過(guò)編譯程序的語(yǔ)法檢查之后,就可以進(jìn)行單元測(cè)試工作。 單元測(cè)試需要從程序的內(nèi)部結(jié)構(gòu)出發(fā)設(shè)計(jì)測(cè)試用例。 多個(gè)模塊可以平行地獨(dú)立進(jìn)行單元測(cè)試。(一)單元測(cè)試的內(nèi)容 一般從5個(gè)方面進(jìn)行測(cè)試:模塊接口測(cè)試 如果數(shù)據(jù)不能按預(yù)定要求進(jìn)出模塊,所有其他測(cè)試都是不切實(shí)際的。接口測(cè)試主要從如下幾個(gè)方面考慮: 模塊的形參和其驅(qū)動(dòng)模塊送來(lái)的參數(shù)的個(gè)數(shù)、類型、次序是否一致; 模塊傳送給被調(diào)用模塊的參數(shù)與其樁模塊的參數(shù)的個(gè)數(shù)、類型和次序是否一致; 模塊傳送給庫(kù)函數(shù)的變量個(gè)數(shù)、類型次序是否正確; 全

24、局變量的定義和用法在各個(gè)模塊中是否一致; 所使用的外部文件的屬性是否正確,打開文件的語(yǔ)句是否正確,緩沖區(qū)大小是否與記錄長(zhǎng)度相匹配。文件結(jié)束判斷處理是否一致;局部數(shù)據(jù)結(jié)構(gòu)測(cè)試 模塊內(nèi)部數(shù)據(jù)是否完整,內(nèi)容、形式、相互關(guān)系是否有錯(cuò)常常是軟件錯(cuò)誤的主要來(lái)源。應(yīng)做如下考慮: 錯(cuò)誤或不相容的數(shù)據(jù)說(shuō)明或使用了尚未初始化的變量; 錯(cuò)誤的初始值或不正確的缺省值; 錯(cuò)誤的變量名或數(shù)據(jù)類型不相容; 溢出(上溢或下溢)或地址異常; 全局?jǐn)?shù)據(jù)對(duì)模塊的影響。重要路徑測(cè)試 重點(diǎn)測(cè)試由于錯(cuò)誤計(jì)算、不正確的比較或不適當(dāng)?shù)目刂屏鞫斐傻腻e(cuò)誤。常見錯(cuò)誤如下: 運(yùn)算的次序錯(cuò)誤(誤用了運(yùn)算符的優(yōu)先級(jí)); 混合運(yùn)算對(duì)象的類型彼此不相容;

25、 變量初始值不正確; 精度不夠,或由于精度問(wèn)題兩個(gè)量不可能相等時(shí),程序中卻期待著相等條件的出現(xiàn); 錯(cuò)誤的修改循環(huán)變量,錯(cuò)誤的或不可能達(dá)到的循環(huán)終止條件; “差1”錯(cuò)(多循環(huán)1次或少循環(huán)1次); 當(dāng)遇到發(fā)散的循環(huán)迭代時(shí)循環(huán)不能終止。錯(cuò)誤處理測(cè)試 好的模塊設(shè)計(jì)應(yīng)能預(yù)見出錯(cuò)的條件,并設(shè)置相應(yīng)的出錯(cuò)處理。重點(diǎn)考慮下列問(wèn)題: 對(duì)可能出現(xiàn)錯(cuò)誤的描述是否難以理解; 出錯(cuò)的描述不足以對(duì)錯(cuò)誤定位,或不足以確定出錯(cuò)的原因; 顯示的錯(cuò)誤與實(shí)際的錯(cuò)誤不符; 對(duì)錯(cuò)誤的條件處理不正確; 在對(duì)錯(cuò)誤進(jìn)行處理之前,錯(cuò)誤條件已經(jīng)引起系統(tǒng)的干預(yù)。邊界測(cè)試 邊界測(cè)試是單元測(cè)試中最后的、也可能是最重要的工作。 程序常常在邊界上出現(xiàn)錯(cuò)誤

26、。 例如,在一段程序內(nèi)有一個(gè)n次循環(huán),當(dāng)?shù)竭_(dá)第n次循環(huán)時(shí)就有可能出錯(cuò)。 要特別注意數(shù)據(jù)流、控制流中恰好等于、大于或小于確定的比較值時(shí)出錯(cuò)的可能性。要精心設(shè)計(jì)測(cè)試用例對(duì)這些地方進(jìn)行測(cè)試。 (二)單元測(cè)試的步驟 基于計(jì)算機(jī)的單元測(cè)試可為三個(gè)步驟進(jìn)行: (1)配置測(cè)試環(huán)境驅(qū)動(dòng)模塊:一個(gè)“主程序”,接收測(cè)試數(shù)據(jù),傳給被測(cè)模塊,打印結(jié)果。樁模塊:接收被測(cè)模塊的調(diào)用,可以做最少量的數(shù)據(jù)操作,打印相關(guān)結(jié)果,并把控制歸還給調(diào)用它的模塊。 樁模塊是單元測(cè)試中重要的成本開銷。 (二)單元測(cè)試的步驟(2)編寫測(cè)試數(shù)據(jù)。 以詳細(xì)設(shè)計(jì)說(shuō)明為依據(jù),從程序的內(nèi)部結(jié)構(gòu)出發(fā)設(shè)計(jì)測(cè)試用例。主要采用白盒測(cè)試,以路徑覆蓋為最佳測(cè)試準(zhǔn)

27、則。同時(shí)輔之以黑盒測(cè)試用例,使之對(duì)任何合理的輸入和不合理的輸入都能鑒別和響應(yīng)。(3)進(jìn)行多個(gè)模塊的并行測(cè)試。 為了提高測(cè)試效率,在進(jìn)行計(jì)算機(jī)測(cè)試之前,常常首先對(duì)源程序代碼進(jìn)行人工的靜態(tài)測(cè)試。 人工測(cè)試和計(jì)算機(jī)測(cè)試是互相補(bǔ)充、相輔相成的,缺少其中任何一種方法都會(huì)使查找錯(cuò)誤的效率降低。5.6.2 集成測(cè)試 主要目標(biāo)是發(fā)現(xiàn)與接口有關(guān)的問(wèn)題。 根據(jù)模塊的組裝方式有兩種測(cè)試方式:1.非漸增式測(cè)試 把已經(jīng)過(guò)測(cè)試的所有模塊一次性組裝在一起,然后進(jìn)行整體測(cè)試。 這種測(cè)試往往不可能一次成功,查錯(cuò)和改錯(cuò)都很困難。使用較少。2.漸增式測(cè)試 把已經(jīng)過(guò)測(cè)試的模塊逐個(gè)進(jìn)行組裝,在組裝的過(guò)程中進(jìn)行測(cè)試,最后得到完整的系統(tǒng)。

28、這種測(cè)試方式也可在各模塊沒有進(jìn)行測(cè)試的前題下進(jìn)行。常用漸增式集成策略有三種:自頂向下集成 是從主控模塊開始,沿著控制層次自頂向下進(jìn)行組裝。添加模塊時(shí)可采用深度優(yōu)先策略或廣度優(yōu)先策略進(jìn)行。 具體步驟如下: 測(cè)試主控模塊:用樁模塊代替其直接附屬模塊; 根據(jù)添加策略每次添加一個(gè)實(shí)際模塊進(jìn)行測(cè)試; 進(jìn)行回歸測(cè)試。既重新執(zhí)行以前做過(guò)的全部測(cè)試或部分測(cè)試,排除組裝過(guò)程中引入新的錯(cuò)誤; 重復(fù)上述和,直到所有模塊已組裝到系統(tǒng)中為止。 優(yōu)點(diǎn):能在測(cè)試早期對(duì)主要的控制或關(guān)鍵的判斷進(jìn)行檢驗(yàn) 。 缺點(diǎn):需建立樁模塊,并存在一個(gè)邏輯次序問(wèn)題。 自底向上集成 從最底層的模塊開始,自底向上組裝和測(cè)試。 具體步驟如下: 由驅(qū)

29、動(dòng)模塊控制最底層模塊的并行測(cè)試; 將低層模塊組合族,由驅(qū)動(dòng)模塊對(duì)其進(jìn)行測(cè)試; 用實(shí)際模塊代替驅(qū)動(dòng)模塊,把它已測(cè)試的直屬子模塊組裝成子系統(tǒng); 為子系統(tǒng)配備驅(qū)動(dòng)模塊進(jìn)行新的測(cè)試; 重復(fù)述上、,至到已組裝到主模塊為止。 優(yōu)點(diǎn):不需要建立樁模塊 ,多個(gè)模塊可并行測(cè)試 。 缺點(diǎn):程序至到最后一個(gè)模塊加上去才形成一個(gè)實(shí)體。這樣對(duì)主要的控制直到最后才接觸到。混合的集成測(cè)試 前兩種方式各有優(yōu)缺點(diǎn),通常混合起來(lái)測(cè)試。 對(duì)結(jié)構(gòu)中較上層的使用自頂向下的集成方法,較下層的使用自底向上的集成方法。 衍變的自頂向下的集成測(cè)試:強(qiáng)化對(duì)I/O模塊和引入新算法模塊的測(cè)試,并自底向上組裝成為的子系統(tǒng),然后由主模塊開始自頂向下集成

30、測(cè)試。 自底向上自頂向下的集成測(cè)試:首先對(duì)含讀操作的子系統(tǒng)自底向上進(jìn)行組裝和測(cè)試,然后對(duì)含寫操作的子系統(tǒng)自頂向下進(jìn)行組裝和測(cè)試。 回歸測(cè)試:自頂向下測(cè)試所修改的模塊及其子模塊,然后將其視為子系統(tǒng)自下向上測(cè)試,檢查該子系統(tǒng)與其上級(jí)模塊接口是否適配。5.6.3 驗(yàn)收測(cè)試 又稱為確認(rèn)測(cè)試,主要由用戶參加測(cè)試,檢驗(yàn)軟件規(guī)格說(shuō)明的技術(shù)標(biāo)準(zhǔn)的符合程度,是保證軟件質(zhì)量的最后關(guān)鍵環(huán)節(jié)。 驗(yàn)收測(cè)試主要完成下面的工作:(1)有效性測(cè)試:在模擬的環(huán)境(也許就是開發(fā)環(huán)境),運(yùn)用黑盒測(cè)試法,驗(yàn)證軟件是否滿足需求規(guī)格說(shuō)明書列出的需求。 兩種結(jié)果:一是功能和性能與用戶要求一致,軟件是可以接受的。二是功能或性能與用戶的要求有

31、差距,這時(shí)就提交一份問(wèn)題報(bào)告。 (2)軟件配置復(fù)查:保證軟件配置的所有成分都齊全,各方面的質(zhì)量都符合要求。 (3)測(cè)試和測(cè)試 測(cè)試:由用戶在開發(fā)者的場(chǎng)所進(jìn)行,并且在開發(fā)者對(duì)用戶的“指導(dǎo)”下進(jìn)行測(cè)試。開發(fā)者負(fù)責(zé)記錄錯(cuò)誤和使用中遇到的問(wèn)題。 測(cè)試是在受控的環(huán)境中進(jìn)行的。 測(cè)試:開發(fā)者通常不在測(cè)試現(xiàn)場(chǎng)。用戶記錄下在測(cè)試過(guò)程中遇到的一切問(wèn)題(真實(shí)的或想象的),并且定期把這些問(wèn)題報(bào)告給開發(fā)者。 測(cè)試是軟件在開發(fā)者不能控制的環(huán)境中的“真實(shí)”應(yīng)用。 接收到測(cè)試期間報(bào)告的問(wèn)題之后,軟件開發(fā)者對(duì)產(chǎn)品進(jìn)行修改,并準(zhǔn)備向全體客戶發(fā)布最終的軟件產(chǎn)品。5.6.4 系統(tǒng)測(cè)試 將通過(guò)驗(yàn)收測(cè)試的軟件作為整個(gè)計(jì)算機(jī)系統(tǒng)的一個(gè) 元素,與計(jì)算機(jī)硬件、外設(shè)、支持軟件、數(shù)據(jù)和人 員等其他系統(tǒng)元素結(jié)合在一起進(jìn)行的綜合測(cè)試。(1)恢復(fù)測(cè)試:檢測(cè)重新初始化、數(shù)據(jù)恢復(fù)、重新 啟動(dòng)、檢驗(yàn)點(diǎn)設(shè)置是否正確,以及人工干預(yù)的平均 恢復(fù)時(shí)間是否在允許范圍內(nèi)。(2)安全測(cè)試:檢驗(yàn)系統(tǒng)是否有安全保密的漏洞。(3)強(qiáng)度測(cè)試:讓系統(tǒng)處于資源的異常數(shù)量、異常 頻率、異常批量的條件下檢驗(yàn)系統(tǒng)的承受能力。一 般取比平常限度高510倍的限度做測(cè)試用例。(4)性能測(cè)試:檢查是否達(dá)到性能要求規(guī)格。這項(xiàng) 測(cè)試常常

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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)論