




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、2022年6月26日1信息科學(xué)與工程學(xué)院信息科學(xué)與工程學(xué)院2022年6月26日2第7章 實(shí)現(xiàn)u 實(shí)現(xiàn):編碼和測(cè)試統(tǒng)稱為實(shí)現(xiàn) u 編碼:就是把軟件設(shè)計(jì)結(jié)果翻譯成用某種程序設(shè)計(jì)語言書寫的程序 u 程序設(shè)計(jì)語言: 人與計(jì)算機(jī)通信的基本工具,指揮計(jì)算機(jī)按人的意志工作u19461954: 機(jī)器語言和匯編語言,與硬件操作一一對(duì)應(yīng)u1954: 第一個(gè)高級(jí)語言 FORTRAN 語言u(píng)高級(jí)語言的種類:u 基礎(chǔ)語言-Fortran, Basic, Cobol,Algolu 結(jié)構(gòu)化語言-Pl/1, Pascal, C, Adau專用語言-特殊應(yīng)用如 LISP, Prolog2022年6月26日37.1 編碼選擇語言
2、的理想標(biāo)準(zhǔn)為便于程序測(cè)試和維護(hù),減少生存周期的總成本,選用高級(jí)語言應(yīng)用理想的模塊化機(jī)制,以及可讀性好的控制結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)。為便于調(diào)試和提高軟件可靠性,應(yīng)選用編譯程序能夠盡可能多地發(fā)現(xiàn)程序中錯(cuò)誤的語言。為降低軟件開發(fā)和維護(hù)成本,選用的語言應(yīng)具有良好的獨(dú)立的編譯機(jī)制。2022年6月26日47.1.1 選擇程序設(shè)計(jì)語言選用語言綜合考慮標(biāo)準(zhǔn)系統(tǒng)用戶的要求 可以使用的編譯程序 可以得到的軟件工具 程序員的知識(shí) 軟件可移植性要求 軟件應(yīng)用領(lǐng)域 工程規(guī)模 如果所開發(fā)的系統(tǒng)由用戶負(fù)責(zé)維護(hù),用戶通常要求用他們熟悉的語言書寫程序。 運(yùn)行目標(biāo)系統(tǒng)的環(huán)境中可以提供的編譯程序往往限制了可以選用的語言的范圍。 如果某種語
3、言有支持程序開發(fā)工具可以利用,則目標(biāo)的實(shí)現(xiàn)和驗(yàn)證都變得比較容易。 標(biāo)準(zhǔn)化程度高、程序可移植性好是選擇語言的重要標(biāo)準(zhǔn) 最好是選擇程序員最熟悉的語言如果工程規(guī)模龐大,應(yīng)設(shè)計(jì)供該項(xiàng)目專用的程序設(shè)計(jì)語言FORTRAN語言適合工程和科學(xué)計(jì)算;C語言適合系統(tǒng)和實(shí)時(shí)應(yīng)用領(lǐng)域。 2022年6月26日57.1.2 編碼風(fēng)格u源程序代碼的邏輯簡(jiǎn)明清晰、易讀易懂是好程序的一個(gè)重要標(biāo)準(zhǔn),為了做到這一點(diǎn),應(yīng)該遵循下述規(guī)則:程序內(nèi)部的文檔(包括恰當(dāng)?shù)臉?biāo)識(shí)符、適當(dāng)?shù)淖⒔夂统绦虻囊曈X組織等 )恰當(dāng)?shù)臉?biāo)識(shí)符n選取含義鮮明的名字,使它能正確地提示程序?qū)ο笏淼膶?shí)體。n如果使用縮寫,那么縮寫規(guī)則應(yīng)該一致,并且應(yīng)該給每個(gè)名字加注解
4、。2022年6月26日67.1.2 編碼風(fēng)格恰當(dāng)?shù)淖⒔鈔通常在每個(gè)模塊開始處有一段序言性的注解,簡(jiǎn)要描述模塊的功能、主要算法、接口特點(diǎn)、重要數(shù)據(jù)以及開發(fā)簡(jiǎn)史。n插在程序中間與一段程序代碼有關(guān)的注解,主要解釋包含這段代碼的必要性。n對(duì)于用高級(jí)語言書寫的源程序,不需要用注解的形式把每個(gè)語句翻譯成自然語言,應(yīng)該利用注解提供一些額外的信息。n應(yīng)該用空格或空行清楚地區(qū)分注解和程序。 程序的視覺組織n程序清單的布局對(duì)于程序的可讀性也有很大影響,應(yīng)該利用適當(dāng)?shù)碾A梯形式使程序的層次結(jié)構(gòu)清晰明顯2022年6月26日77.1.2 編碼風(fēng)格數(shù)據(jù)說明 編程序時(shí)需確定數(shù)據(jù)說明的風(fēng)格。為了使數(shù)據(jù)更容易理解和維護(hù),應(yīng)該遵循
5、一些比較簡(jiǎn)單的原則:v數(shù)據(jù)說明的次序應(yīng)該標(biāo)準(zhǔn)化 ,如按照數(shù)據(jù)結(jié)構(gòu)或數(shù)據(jù)類型確定說明的次序 ;v當(dāng)多個(gè)變量名在一個(gè)語句中說明時(shí),應(yīng)該按字母順序排列這些變量。 v如果設(shè)計(jì)時(shí)使用了一個(gè)復(fù)雜的數(shù)據(jù)結(jié)構(gòu),則應(yīng)該用注釋說明用程序設(shè)計(jì)語言實(shí)現(xiàn)這個(gè)數(shù)據(jù)結(jié)構(gòu)的方法和特點(diǎn)。 含義及規(guī)則2022年6月26日87.1.2 編碼風(fēng)格語句構(gòu)造語句構(gòu)造基本規(guī)則不要為了節(jié)省空間而把多個(gè)語句寫在同一行 盡量避免復(fù)雜的條件測(cè)試 盡量減少對(duì)“非”條件的測(cè)試 避免大量使用循環(huán)嵌套和條件嵌套 利用括號(hào)使邏輯表達(dá)式或算術(shù)表達(dá)式的運(yùn)算次序清晰直觀 2022年6月26日97.1.2 編碼風(fēng)格輸入輸出 I/O是幾乎所有應(yīng)用程序都要涉及到的,設(shè)
6、計(jì)和編寫程序時(shí),應(yīng)考慮相關(guān)規(guī)則v 對(duì)所有輸入數(shù)據(jù)都進(jìn)行檢驗(yàn);v 檢查輸入項(xiàng)重要組合的合法性;v保持輸入格式簡(jiǎn)單;v 用數(shù)據(jù)結(jié)構(gòu)標(biāo)記,不要要求用戶指定數(shù)據(jù)的數(shù)目;v 明確提示交互式輸入的請(qǐng)求,詳細(xì)說明可用的選擇或邊界數(shù)值;v 當(dāng)程序設(shè)計(jì)語言的格式有嚴(yán)格要求時(shí),保持輸入格式一致;v 設(shè)計(jì)良好的輸出報(bào)表;v 給所有輸出數(shù)據(jù)加標(biāo)志。 2022年6月26日107.1.2 編碼風(fēng)格效率q效率主要指處理機(jī)時(shí)間和存儲(chǔ)器容量?jī)蓚€(gè)方面。效率主要指處理機(jī)時(shí)間和存儲(chǔ)器容量?jī)蓚€(gè)方面。q在討論提高效率前,應(yīng)該記住在討論提高效率前,應(yīng)該記住3 3條原則:條原則:n效率是性能要求,因此應(yīng)該在需求分析階段確定效率方面的要求。n
7、效率是靠好設(shè)計(jì)來提高的。n程序的效率和程序的簡(jiǎn)單程度是一致的。不要犧牲程序的清晰性和可讀性來不必要地提高效率。 q從三個(gè)方面進(jìn)一步討論效率問題:從三個(gè)方面進(jìn)一步討論效率問題:2022年6月26日117.1.2 編碼風(fēng)格效率1 1. .程序運(yùn)行時(shí)間程序運(yùn)行時(shí)間n寫程序之前先簡(jiǎn)化算術(shù)的和邏輯的表達(dá)式;n仔細(xì)研究嵌套的循環(huán),以確定是否有語句可以從內(nèi)層往外移n盡量避免使用多維數(shù)組;n盡量避免使用指針和復(fù)雜的表;n使用執(zhí)行時(shí)間短的算術(shù)運(yùn)算;n不要混合使用不同的數(shù)據(jù)類型;n盡量使用整數(shù)運(yùn)算和布爾表達(dá)式。2022年6月26日127.1.2 編碼風(fēng)格效率2 2. .存儲(chǔ)器效率存儲(chǔ)器效率n在大型計(jì)算機(jī)中必須考慮
8、操作系統(tǒng)頁式調(diào)度的特點(diǎn),一般說來,使用能保持功能域的結(jié)構(gòu)化控制結(jié)構(gòu),是提高效率的好方法。n在微處理機(jī)中,如果要求使用最少的存儲(chǔ)單元,則應(yīng)選用有緊縮存儲(chǔ)器特性的編譯程序,在非常必要時(shí)可以使用匯編語言。2022年6月26日137.1.2 編碼風(fēng)格效率3 3. . 輸入輸出的效率輸入輸出的效率簡(jiǎn)單清晰同樣是提高人機(jī)通信效率的關(guān)鍵。硬件之間的通信效率比較復(fù)雜,但從寫程序的角度看,有些簡(jiǎn)單原則可以提高輸入輸出效率:n所有輸入輸出都應(yīng)該有緩存,以減少用于通信的額外開銷。n對(duì)二級(jí)存儲(chǔ)器應(yīng)該選用最簡(jiǎn)單的訪問方法。n二級(jí)緩存器的輸入輸出應(yīng)該以信息組為單位進(jìn)行。n如果“超高效的”輸入輸出很難被人理解,則不采用這種
9、方法2022年6月26日147.1.2 編碼風(fēng)格不要一味地追求程序的效率,應(yīng)當(dāng)在滿足正確性、可靠性、健壯性、可讀性等質(zhì)量因素的前提下,設(shè)法提高程序的效率;以提高程序的全局效率(指站在整個(gè)系統(tǒng)的角度上考慮的效率)為主,提高局部效率(是指站在模塊或函數(shù)角度上考慮的效率)為輔;不要追求緊湊的代碼,因?yàn)榫o湊的代碼并不能產(chǎn)生高效的機(jī)器碼; 有時(shí)候時(shí)間效率和空間效率可能對(duì)立,此時(shí)應(yīng)當(dāng)分析那個(gè)更重要,作出適當(dāng)?shù)恼壑裕?程序員使用語言編寫程序,但不知道源程序究竟如何變成可執(zhí)行代碼、變成什么可執(zhí)行代碼,這些可執(zhí)行代碼的執(zhí)行時(shí)間是長(zhǎng)是短。因此,要從根本上提高程序的效率,需要程序員長(zhǎng)時(shí)間的編程經(jīng)驗(yàn)積累。 程序效率的
10、提高是無止盡的程序效率的提高是無止盡的2022年6月26日157.2 軟件測(cè)試基礎(chǔ)u 測(cè)試與測(cè)試的目標(biāo)(G. Myers)u測(cè)試:為了發(fā)現(xiàn)程序中的錯(cuò)誤而執(zhí)行程序的過程u好的測(cè)試方案是極可能發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試方案u成功的測(cè)試是發(fā)現(xiàn)了至今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試7.2.1 軟件測(cè)試的目標(biāo)2022年6月26日167.2.2軟件測(cè)試準(zhǔn)則n所有測(cè)試都應(yīng)該能追溯到用戶需求n應(yīng)該在測(cè)試前制定測(cè)試計(jì)劃n把Pareto原理應(yīng)用到軟件測(cè)試中n應(yīng)該從“小規(guī)模”開始測(cè)試,逐步進(jìn)行大規(guī)模測(cè)試。n窮舉測(cè)試是不可能的n為了達(dá)到最佳的測(cè)試效果,應(yīng)該由獨(dú)立的第三方從事測(cè)試工作。2022年6月26日177.2.3測(cè)
11、試方法u測(cè)試方法u黑盒測(cè)試:已經(jīng)知道了軟件產(chǎn)品應(yīng)該具有的功能,通過測(cè)試來檢驗(yàn)是否每個(gè)功能都能正常使用。該測(cè)試方法又稱功能測(cè)試u黑盒測(cè)試是在程序接口進(jìn)行的測(cè)試,它只檢查程序功能是否能按照規(guī)格說明書的規(guī)定正常使用,程序是否能適當(dāng)?shù)亟邮蛰斎霐?shù)據(jù)產(chǎn)生正確的輸出信息,并且保持外部信息的完整性u(píng)白盒測(cè)試:知道軟件產(chǎn)品內(nèi)部的工作過程,通過測(cè)試來檢驗(yàn)產(chǎn)品內(nèi)部動(dòng)作是否按照規(guī)格說明書的規(guī)定正常進(jìn)行。這種測(cè)試方法又稱結(jié)構(gòu)測(cè)試u白盒測(cè)試方法按照程序內(nèi)部的邏輯測(cè)試程序,檢驗(yàn)程序中的每條通路是否都能按預(yù)定要求正確工作2022年6月26日187.2.4測(cè)試步驟模塊測(cè)試子系統(tǒng)測(cè)試系統(tǒng)測(cè)試平行運(yùn)行 目的:保證每個(gè)模塊作為一個(gè)單
12、元能夠正確運(yùn)行,又稱為單元測(cè)試 集成測(cè)試、組裝測(cè)試、聯(lián)合測(cè)試 重點(diǎn)在于測(cè)試模塊之間的接口 將經(jīng)過測(cè)試的子系統(tǒng)裝配成一個(gè)完整的系統(tǒng)來測(cè)試; 發(fā)現(xiàn)設(shè)計(jì)和編碼的錯(cuò)誤,驗(yàn)證系統(tǒng)是否滿足需求說明所定義的功能及其動(dòng)態(tài)特性; 也稱為集成測(cè)試。同時(shí)運(yùn)行新舊兩個(gè)系統(tǒng),并且對(duì)處理的結(jié)果進(jìn)行比較,以確定新系統(tǒng)是否滿足相關(guān)性能指標(biāo)。驗(yàn)收測(cè)試 有用戶參加的系統(tǒng)測(cè)試 驗(yàn)證是否滿足用戶的需要2022年6月26日197.2.5測(cè)試階段的信息流測(cè)試測(cè)試軟件配置測(cè)試配置測(cè)試結(jié)果預(yù)期結(jié)果評(píng)價(jià)評(píng)價(jià)錯(cuò)誤錯(cuò)誤率數(shù)據(jù)調(diào)試調(diào)試可靠性可靠性模型模型正確可靠性預(yù)測(cè)包括需求說明書、設(shè)計(jì)說明書、源程序清單等包括測(cè)試計(jì)劃和測(cè)試方案測(cè)試與軟件開發(fā)各個(gè)階
13、段的關(guān)系測(cè)試與軟件開發(fā)各個(gè)階段的關(guān)系l軟件開發(fā)過程是一個(gè)自頂向下,逐步細(xì)化的過程l軟件計(jì)劃階段定義軟件作用域l軟件需求分析建立軟件信息域、功能和性能需求、約束等l軟件設(shè)計(jì)l把設(shè)計(jì)用某種程序設(shè)計(jì)語言轉(zhuǎn)換成程序代碼l測(cè)試過程是依相反順序安排的自底向上,逐步集成的過程2022年6月26日202022年6月26日217.3 單元測(cè)試u單元測(cè)試又稱模塊測(cè)試,是針對(duì)軟件設(shè)計(jì)的最小單位 程序模塊,進(jìn)行正確性檢驗(yàn)的測(cè)試工作。其目的在于發(fā)現(xiàn)各模塊內(nèi)部可能存在的各種差錯(cuò)u單元測(cè)試需要從程序的內(nèi)部結(jié)構(gòu)出發(fā)設(shè)計(jì)測(cè)試用例。多個(gè)模塊可以平行地獨(dú)立進(jìn)行單元測(cè)試u在單元測(cè)試時(shí),測(cè)試者需要依據(jù)詳細(xì)設(shè)計(jì)說明書和源程序清單,了解該
14、模塊的I/O條件和模塊的邏輯結(jié)構(gòu),主要采用白盒測(cè)試技術(shù),輔之以黑盒測(cè)試的測(cè)試用例,使之對(duì)任何合理的輸入和不合理的輸入,都能鑒別和響應(yīng)2022年6月26日227.3 單元測(cè)試 單元測(cè)試重點(diǎn)u模塊接口u局部數(shù)據(jù)結(jié)構(gòu)u重要的執(zhí)行通路u出錯(cuò)處理通路u影響上述各方面特性的邊界條件(1)模塊接口u在單元測(cè)試的開始,應(yīng)對(duì)通過被測(cè)模塊的數(shù)據(jù)流進(jìn)行測(cè)試,測(cè)試項(xiàng)目包括u調(diào)用本模塊的輸入?yún)?shù)是否正確u本模塊調(diào)用子模塊時(shí)輸入給子模塊的參數(shù)是否正確u全局量的定義在各模塊中是否一致2022年6月26日237.3 單元測(cè)試(2) (2) 局部數(shù)據(jù)結(jié)構(gòu)測(cè)試局部數(shù)據(jù)結(jié)構(gòu)測(cè)試u不正確或不一致的數(shù)據(jù)類型說明u使用尚未賦值或尚未初始
15、化的變量u錯(cuò)誤的初始值或錯(cuò)誤的缺省值u變量名拼寫錯(cuò)或書寫錯(cuò)u不一致的數(shù)據(jù)類型u全局?jǐn)?shù)據(jù)對(duì)模塊的影響 (3) (3) 重要執(zhí)行通路測(cè)試重要執(zhí)行通路測(cè)試u選擇適當(dāng)?shù)臏y(cè)試用例,對(duì)模塊中重要的執(zhí)行路徑進(jìn)行測(cè)試u應(yīng)當(dāng)設(shè)計(jì)測(cè)試用例查找由于錯(cuò)誤的計(jì)算、不正確的比較或不正常的控制流而導(dǎo)致的錯(cuò)誤u對(duì)基本執(zhí)行路徑和循環(huán)進(jìn)行測(cè)試可以發(fā)現(xiàn)大量的路徑錯(cuò)誤2022年6月26日247.3 單元測(cè)試(4) (4) 錯(cuò)誤處理測(cè)試錯(cuò)誤處理測(cè)試u 出錯(cuò)的描述是否難以理解u出錯(cuò)的描述是否能夠?qū)﹀e(cuò)誤定位u顯示的錯(cuò)誤與實(shí)際的錯(cuò)誤是否相符u對(duì)錯(cuò)誤條件的處理正確與否u在對(duì)錯(cuò)誤進(jìn)行處理之前,錯(cuò)誤條件是否已經(jīng)引起系統(tǒng)的干預(yù)等(5) (5) 邊界
16、測(cè)試邊界測(cè)試u注意數(shù)據(jù)流、控制流中剛好等于、大于或小于確定的比較值時(shí)出錯(cuò)的可能性。對(duì)這些地方要仔細(xì)地選擇測(cè)試用例,認(rèn)真加以測(cè)試u如果對(duì)模塊運(yùn)行時(shí)間有要求的話,還要專門進(jìn)行關(guān)鍵路徑測(cè)試,以確定最壞情況下和平均意義下影響模塊運(yùn)行時(shí)間的因素2022年6月26日257.4 集成測(cè)試u 集成測(cè)試是組裝軟件的系統(tǒng)化技術(shù);組裝測(cè)試,聯(lián)合測(cè)試u 通常,在單元測(cè)試的基礎(chǔ)上,需要將所有模塊按照設(shè)計(jì)要求組裝成為系統(tǒng)。這時(shí)需要考慮的問題是: u 在把各個(gè)模塊連接起來的時(shí)侯,穿越模塊接口的數(shù)據(jù)是否會(huì)丟失;u 一個(gè)模塊的功能是否會(huì)對(duì)另一個(gè)模塊的功能產(chǎn)生不利的影響;u 各個(gè)子功能組合起來,能否達(dá)到預(yù)期要求的父功能;u 全局
17、數(shù)據(jù)結(jié)構(gòu)是否有問題;u 單個(gè)模塊的誤差累積起來,是否會(huì)放大,從而達(dá)到不能接受的程度。發(fā)現(xiàn)并排除在模塊連接中可能出現(xiàn)的問題,最終構(gòu)成要求的軟件系統(tǒng)2022年6月26日267.4 集成測(cè)試u子系統(tǒng)的組裝測(cè)試特別稱為部件測(cè)試,它所做的工作是要找出組裝后的子系統(tǒng)與系統(tǒng)需求規(guī)格說明之間的不一致。u通常,把模塊組裝成為程序的方式有兩種u 一次性組裝方式:又稱為非漸增式測(cè)試u 增殖式組裝方式:其中又分為自頂向下、自底向上和兩種方法混合測(cè)試方式,又稱漸增式測(cè)試一次性組裝方式u它是一種非增殖式組裝方式。也叫做整體拼裝u使用這種方式,首先對(duì)每個(gè)模塊分別進(jìn)行模塊測(cè)試,然后再把所有模塊組裝在一起進(jìn)行測(cè)試,最終得到要求
18、的軟件系統(tǒng)2022年6月26日277.4 集成測(cè)試系 統(tǒng)結(jié)構(gòu)圖單元測(cè)試整體組裝2022年6月26日287.4 集成測(cè)試增殖式組裝(漸增式組裝)方式u 首先對(duì)一個(gè)個(gè)模塊進(jìn)行模塊測(cè)試,然后將這些模塊逐步組裝成較大的系統(tǒng)u 組裝過程中邊連接邊測(cè)試,以發(fā)現(xiàn)連接過程中產(chǎn)生的問題u 通過增殖逐步組裝成為要求的軟件系統(tǒng)u 采用漸增式方式把模塊結(jié)合到程序中時(shí),有自頂向下和自底向上兩種集成策略(1) 自頂向下集成u 該組裝方式將模塊按系統(tǒng)程序結(jié)構(gòu),從主控制模塊開始,沿程序的控制層次自頂向下進(jìn)行組裝,逐漸把各個(gè)模塊結(jié)合起來u 可以采用深度優(yōu)先策略或?qū)挾葍?yōu)先策略,把附屬于主控制模塊的那些模塊組裝到程序結(jié)構(gòu)中去202
19、2年6月26日297.4 集成測(cè)試u深度優(yōu)先策略:先組裝在軟件結(jié)構(gòu)的一條主控制通路上的所有模塊u選用按深度方向組裝的方式,可以首先實(shí)現(xiàn)和驗(yàn)證一個(gè)完整的軟件功能M1M2M3S4M5M8M6S7自頂向下結(jié)合u寬度優(yōu)先策略:沿軟件結(jié)構(gòu)水平移動(dòng),把處于同一個(gè)控制層次上的所有模塊組裝起來2022年6月26日307.4 集成測(cè)試自頂向下集成實(shí)現(xiàn)的步驟u 對(duì)主控制模塊進(jìn)行測(cè)試u 根據(jù)選定的結(jié)合策略(深度優(yōu)先或?qū)挾葍?yōu)先),每次用一個(gè)實(shí)際模塊代換一個(gè)存根程序u 在結(jié)合進(jìn)一個(gè)模塊的同時(shí)進(jìn)行測(cè)試u 進(jìn)行回歸測(cè)試(全部或部分重復(fù)以前做過的測(cè)試)自頂向下的結(jié)合策略能夠?qū)χ饕目刂苹蜿P(guān)鍵的抉擇進(jìn)行檢驗(yàn)2022年6月26日
20、317.4 集成測(cè)試(2) 自底向上集成u 自底向上測(cè)試是從程序模塊結(jié)構(gòu)的最底層的模塊開始組裝和測(cè)試u 實(shí)現(xiàn)步驟u 把低層模塊組合成實(shí)現(xiàn)某個(gè)特定的軟件功能的族u 寫一個(gè)驅(qū)動(dòng)程序,協(xié)調(diào)測(cè)試數(shù)據(jù)的輸入和輸出u 對(duì)由模塊組成的子功能族進(jìn)行測(cè)試u 去掉驅(qū)動(dòng)程序,沿軟件結(jié)構(gòu)自下向上移動(dòng),把子功能族組合起來形成更大的子功能族2022年6月26日327.4 集成測(cè)試兩種集成測(cè)試策略的優(yōu)缺點(diǎn)比較:u 自頂向下測(cè)試方法的主要優(yōu)點(diǎn)是不需要測(cè)試驅(qū)動(dòng)程序,能夠在測(cè)試階段的早期實(shí)現(xiàn)并驗(yàn)證系統(tǒng)的主要功能,而且能在早期發(fā)現(xiàn)上層模塊的接口錯(cuò)誤u 自頂向下測(cè)試方法的主要缺點(diǎn)是需要存根程序,低層關(guān)鍵模塊中的錯(cuò)誤發(fā)現(xiàn)較晚u 自底向
21、上測(cè)試方法的優(yōu)缺點(diǎn)與自頂向下方法剛好相反u自頂向下增殖的方式和自底向上增殖的方式各有優(yōu)缺點(diǎn)u一般來講,一種方式的優(yōu)點(diǎn)是另一種方式的缺點(diǎn)2022年6月26日337.4 集成測(cè)試非漸增式和漸增式測(cè)試方法的優(yōu)缺點(diǎn)比較:u 非漸增式方法要對(duì)每個(gè)模塊編寫驅(qū)動(dòng)模塊,工作量較大;而漸增式方法可以利用部分已測(cè)試過的模塊作為測(cè)試軟件u 非漸增式方法發(fā)現(xiàn)模塊間的接口錯(cuò)誤較晚,而漸增式方法則要早一些u 非漸增式方法發(fā)現(xiàn)錯(cuò)誤后較難定位;而漸增式方法則要容易一些u 非漸增式方法可以并行測(cè)試所有模塊,可充分利用人力,加快工程進(jìn)度u 漸增式方法接近全真運(yùn)行環(huán)境,需要較多的測(cè)試運(yùn)行時(shí)間,但對(duì)程序模塊的測(cè)試較為徹底2022年6
22、月26日347.4 集成測(cè)試回歸測(cè)試:u 在集成測(cè)試過程中,每當(dāng)一個(gè)新模塊結(jié)合進(jìn)來時(shí),程序就發(fā)生了變化,這些變化可能使原來工作正常的功能出現(xiàn)問題u 所謂回歸測(cè)試是指重新執(zhí)行已經(jīng)做過的測(cè)試的某個(gè)子集,以保證上述變化沒有帶來非預(yù)期的副作用回歸測(cè)試集的3類不同測(cè)試用例u 檢測(cè)軟件全部功能的代表性測(cè)試用例u 專門針對(duì)可能受修改影響的軟件功能的附加測(cè)試u 針對(duì)被修改過的軟件成分的測(cè)試2022年6月26日357.5 確認(rèn)測(cè)試u 確認(rèn)測(cè)試(驗(yàn)收測(cè)試)的目的:驗(yàn)證軟件的有效性u(píng) 軟件有效性:如果軟件的功能和性能符合用戶的期待,那么軟件就是有效的u 軟件有效性的標(biāo)準(zhǔn):需求分析階段產(chǎn)生的軟件需求規(guī)格說明書7.5.
23、1 確認(rèn)測(cè)試的范圍u 確認(rèn)測(cè)試必須有用戶積極參與,或者以用戶為主進(jìn)行u 確認(rèn)測(cè)試一般使用黑盒測(cè)試法u 測(cè)試計(jì)劃包括要進(jìn)行的測(cè)試的種類和進(jìn)度安排u 測(cè)試過程規(guī)定了用來檢測(cè)軟件是否與需求一致的測(cè)試方案u 通過測(cè)試和調(diào)試要保證軟件能滿足所有功能要求,能達(dá)到每個(gè)性能要求,文檔資料是準(zhǔn)確而完整的2022年6月26日367.5.2 軟件配置復(fù)查u復(fù)查軟件配置的目的是:保證軟件配置的所有成分都齊全,各方面的質(zhì)量都符合要求,文檔與程序一致u具有維護(hù)階段所必須的細(xì)節(jié),而且已經(jīng)編排好目錄u在驗(yàn)收測(cè)試的過程中應(yīng)該嚴(yán)格遵循用戶指南以及其他操作程序,以便檢驗(yàn)這些使用手冊(cè)的完整性和正確性u(píng)必須仔細(xì)記錄發(fā)現(xiàn)的遺漏或錯(cuò)誤,并
24、且適當(dāng)?shù)匮a(bǔ)充和改正2022年6月26日377.5.3 Alpha和Beta測(cè)試u如果軟件是專為某個(gè)客戶開發(fā)的,可以進(jìn)行一系列驗(yàn)收測(cè)試,它是由最終用戶而不是系統(tǒng)開發(fā)者進(jìn)行的u如果一個(gè)軟件是為許多客戶開發(fā)的,那么讓每個(gè)客戶都進(jìn)行正式的驗(yàn)收測(cè)試是不可能的,這種情況下,軟件開發(fā)商需要經(jīng)歷Alpha和Beta測(cè)試。uAlpha測(cè)試:由用戶在開發(fā)者的場(chǎng)所進(jìn)行,并且在開發(fā)者對(duì)用戶的“指導(dǎo)”下測(cè)試。是在“受控”的環(huán)境下進(jìn)行的測(cè)試uBeta測(cè)試:由軟件的最終用戶在一個(gè)或多個(gè)客戶場(chǎng)所進(jìn)行2022年6月26日387.6 白盒測(cè)試技術(shù)u 測(cè)試階段關(guān)鍵技術(shù)問題:設(shè)計(jì)測(cè)試方案u 測(cè)試方案:包括具體的測(cè)試目的,應(yīng)該輸入的測(cè)
25、試數(shù)據(jù)和預(yù)期的結(jié)果u 設(shè)計(jì)測(cè)試方案的基本目標(biāo):確定一組可能發(fā)現(xiàn)某個(gè)(類)錯(cuò)誤的測(cè)試數(shù)據(jù) u 不同的測(cè)試數(shù)據(jù)發(fā)現(xiàn)程序錯(cuò)誤的能力差別很大,為提高測(cè)試效率降低測(cè)試成本,應(yīng)選用高效的測(cè)試數(shù)據(jù)u 測(cè)試用例設(shè)計(jì)技術(shù):u 黑盒測(cè)試的等價(jià)劃分、邊界值分析、錯(cuò)誤推測(cè)法u 白盒測(cè)試的邏輯覆蓋法2022年6月26日39u 邏輯覆蓋:邏輯覆蓋是以的設(shè)計(jì)測(cè)試用例的技術(shù)。它屬白盒測(cè)試 7.6.1 邏輯覆蓋語句覆蓋判定覆蓋條件覆蓋判定/條件覆蓋條件組合覆蓋路徑覆蓋 語句覆蓋: 選擇足夠多的測(cè)試數(shù)據(jù),使被測(cè)程序中的每個(gè)語句至少執(zhí)行一次2022年6月26日40(A1) and (B=0)(A=2) or (X1)X = X /
26、 AX=X+1入口返回PROCEDURE Example(A,B:real; X:real );Begin IF (A1) AND (B=0) THEN X:= X / A; IF ( A=2 ) OR (X1) THEN X:=X+1END;I. A=2, B= 0, X=4 - sacbed語句覆蓋所有的語句至少執(zhí)行一次!語句覆蓋2022年6月26日41(A1) and (B=0)(A=2) or (X1)X = X / AX=X+1入口返回判定覆蓋u每個(gè)判定的每種可能都至少執(zhí)行一次!u即每個(gè)判定的每個(gè)分支都至少執(zhí)行一次!I: A=3, B=0,X=3: sacbdII: A=2, B=1
27、,X=1: sabed 滿足判定覆蓋的測(cè)試用例滿足判定覆蓋的測(cè)試用例一定滿足語句覆蓋:判定覆蓋一定滿足語句覆蓋:判定覆蓋比語句覆蓋強(qiáng)比語句覆蓋強(qiáng)判定覆蓋2022年6月26日42 條件覆蓋一般情況下比判定覆蓋要強(qiáng),但是也有滿足條件覆蓋但不能滿足判定覆蓋的情況條件覆蓋 每個(gè)語句至少執(zhí)行一次,而且判定表達(dá)式中的每個(gè)條件都要取得各種可能的結(jié)果(A1)(A1)(B=0)(B0)(A=2)(A2)(X1)(X1)II: A=1, B=1,X=1: sabdI: A=2, B=0,X=4: sacbedI: A=2, B=0,X=1: sacbedII: A=1, B=1,X=1: sabed(A1) an
28、d (B=0)(A=2) or (X1)X = X / AX=X+1入口返回2022年6月26日43條件組合覆蓋(A1) and (B=0)(A=2) or (X1)X = X / AX=X+1入口返回 條件組合覆蓋要求選取足夠多的測(cè)試數(shù)據(jù),使得每個(gè)判定表達(dá)式中條件的各種可能組合都至少出現(xiàn)一次(A1)(A1)(B=0)(B0)(A=2)(A2)(X1)(X1)I. A=2,B=0,X=4II. A=2,B=1,X=1III. A=1,B=0,X=2IV. A=1,B=1,X=1I: sacbedII: sabedIII: sabedIV: sabd覆蓋路徑 滿足條件組合覆蓋標(biāo)準(zhǔn)的測(cè)試數(shù)據(jù),也一
29、定滿足判定覆蓋、條件覆蓋和判定/條件覆蓋標(biāo)準(zhǔn)。2022年6月26日44點(diǎn)覆蓋、邊覆蓋、路徑覆蓋u 點(diǎn)覆蓋:如果連通圖 G 的子圖G是連通的,而且包含G的所有節(jié)點(diǎn),則稱G是G的點(diǎn)覆蓋u 點(diǎn)覆蓋與語句覆蓋標(biāo)準(zhǔn)相同u 邊覆蓋:如果連通圖 G 的子圖G是連通的,而且包含G的所有邊,則稱G是G的邊覆蓋u 通常與判定覆蓋標(biāo)準(zhǔn)相同u 路徑覆蓋:選取足夠多的測(cè)試數(shù)據(jù),使程序的每條可能路徑都至少執(zhí)行一次(如果程序圖中有環(huán),則要求每個(gè)環(huán)至少經(jīng)過一次)u 路徑覆蓋是較強(qiáng)的邏輯覆蓋標(biāo)準(zhǔn)2022年6月26日45u 很多白盒測(cè)試技術(shù)是根據(jù)程序的控制結(jié)構(gòu)設(shè)計(jì)測(cè)試數(shù)據(jù)的技術(shù)u 幾種常用的控制結(jié)構(gòu)測(cè)試技術(shù):7.6.2 控制結(jié)構(gòu)
30、測(cè)試1. 基本路徑測(cè)試u 基本路徑測(cè)試是Tom McCabe提出的一種白盒測(cè)試技術(shù)。u 使用該技術(shù)設(shè)計(jì)測(cè)試用例時(shí),通過計(jì)算程序的環(huán)形復(fù)雜度,并以該復(fù)雜度為指南定義執(zhí)行路徑的基本集合,從該基本集合導(dǎo)出的測(cè)試用例保證程序中的每條語句至少執(zhí)行一次2022年6月26日46u 基本路徑測(cè)試技術(shù)設(shè)計(jì)測(cè)試用例的步驟:u 根據(jù)過程設(shè)計(jì)結(jié)果畫出相應(yīng)的流圖u 計(jì)算流圖的環(huán)形復(fù)雜度u 確定線路獨(dú)立路徑的基本集合u 設(shè)計(jì)可強(qiáng)制執(zhí)行基本集合中每條路徑的測(cè)試用例u 求平均值的例子7.6.2 控制結(jié)構(gòu)測(cè)試2. 條件測(cè)試u 條件測(cè)試的目的:不僅是檢測(cè)程序條件中的錯(cuò)誤,而且檢測(cè)程序中的其它錯(cuò)誤2022年6月26日477.6.2
31、 控制結(jié)構(gòu)測(cè)試u 條件測(cè)試方法著重測(cè)試程序中的每個(gè)條件。人們提出了許多條件測(cè)試策略u(píng) 分支測(cè)試:對(duì)于復(fù)合條件C,C的真分支和假分支以及C中的每個(gè)簡(jiǎn)單條件,都應(yīng)該至少執(zhí)行一次u 域測(cè)試:要求對(duì)一個(gè)關(guān)系表達(dá)式執(zhí)行3個(gè)或4個(gè)測(cè)試u BRO測(cè)試:如果在條件中所有布爾變量和關(guān)系算符都只出現(xiàn)一次而且沒有公共變量,則BRO測(cè)試保證能發(fā)現(xiàn)該條件中的分支錯(cuò)和關(guān)系算符錯(cuò)2022年6月26日487.6.2 控制結(jié)構(gòu)測(cè)試u 循環(huán)測(cè)試是一種白盒測(cè)試技術(shù),它專注于測(cè)試循環(huán)結(jié)構(gòu)的有效性u(píng) 在結(jié)構(gòu)化程序中通常只有3種循環(huán):u 簡(jiǎn)單循環(huán)u 嵌套循環(huán)u 串接循環(huán)3. 循環(huán)測(cè)試2022年6月26日497.7.1 等價(jià)劃分u 等價(jià)劃
32、分是把程序的輸入域劃分成若干個(gè)數(shù)據(jù)類,并據(jù)此導(dǎo)出測(cè)試用例的一種黑盒測(cè)試技術(shù)u 若將所有可能的輸入數(shù)據(jù)劃分成N個(gè)等價(jià)類,則可以從每個(gè)等價(jià)類中只取一組數(shù)據(jù)作為測(cè)試數(shù)據(jù)。這樣選取的數(shù)據(jù)最有代表性,最可能發(fā)現(xiàn)程序中的錯(cuò)誤 2022年6月26日507.7.1 等價(jià)劃分u 等價(jià)分類法是將輸入數(shù)據(jù)的可能值分成若干“等價(jià)類”,每一類以一個(gè)代表性的測(cè)試數(shù)據(jù)進(jìn)行測(cè)試,這個(gè)數(shù)據(jù)就等價(jià)于這一類中的其它數(shù)據(jù)u 該法的關(guān)鍵在于如何將輸入數(shù)據(jù)分類u 例如:輸入的數(shù)據(jù)范圍是1999,我們可以劃分三類:x999u 劃分等價(jià)類可以參考一些啟發(fā)式規(guī)則進(jìn)行u 為了正確劃分等價(jià)類,一是要注意經(jīng)驗(yàn),二是要正確分析被測(cè)程序的功能2022年
33、6月26日51把 數(shù) 字 串轉(zhuǎn)換成整數(shù) 無效輸入的等價(jià)類非法輸出的等價(jià)類l 16個(gè)數(shù)字字符組成的數(shù)字串(最高位不是零)l 最高位是零的數(shù)字串l 最高位數(shù)字左鄰是負(fù)號(hào)的數(shù)字串 空字符串(全是空格) 左部填充的字符既不是零也不是空格 最高位數(shù)字右邊由數(shù)字和空格混合組成 最高位數(shù)字右邊由數(shù)字和其他字符混合組成 負(fù)號(hào)與最高位數(shù)字之間有空格l 計(jì)算機(jī)能表示的最小負(fù)整數(shù)和零之間的負(fù)整數(shù)l 零l 計(jì)算機(jī)能表示的最大正整數(shù)和零之間的正整數(shù) 有效輸入的等價(jià)類合法輸出的等價(jià)類 比計(jì)算機(jī)能表示的最小負(fù)整數(shù)還小的負(fù)整數(shù) 計(jì)算機(jī)能表示的最大正整數(shù)還大的正整數(shù)7.7.1 等價(jià)劃分2022年6月26日527.7.2 邊界值分析u 處理邊界情況時(shí)程序最容易發(fā)生錯(cuò)誤,因此,設(shè)計(jì)使程序運(yùn)行在邊界情況附近的測(cè)試方案,暴露出錯(cuò)誤的可能性更大 u 使用邊界值分析方法設(shè)計(jì)測(cè)試方案首先應(yīng)確定邊界情況u 對(duì)等價(jià)劃分法中的不同等價(jià)類的邊界情況進(jìn)行重點(diǎn)測(cè)試 u 通常設(shè)計(jì)測(cè)試方案時(shí)總是綜合使用等價(jià)劃分和邊界值分析技術(shù)7.7.3 錯(cuò)誤推測(cè)u 不同類型不同特點(diǎn)的程序通常有一些特殊的容易出錯(cuò)的情況; 有時(shí)測(cè)試數(shù)據(jù)的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- T-ZZB 3725-2024 固定污染源廢氣非甲烷總經(jīng)連續(xù)監(jiān)測(cè)系統(tǒng)
- T-ZJBS 002-2024 城市公共標(biāo)識(shí)系統(tǒng)施工規(guī)范
- 二零二五年度戶口分家及遺產(chǎn)評(píng)估協(xié)議范本
- 二零二五年度股東退股及公司未來發(fā)展方向與投資布局協(xié)議
- 二零二五年度教育培訓(xùn)機(jī)構(gòu)春季招生促銷合同范本
- 二零二五年度高速公路施工安全責(zé)任豁免合同樣本
- 二零二五年度員工績(jī)效評(píng)估與職業(yè)發(fā)展輔導(dǎo)協(xié)議書
- 商業(yè)智能軟硬件開發(fā)合作協(xié)議
- 五年級(jí)數(shù)學(xué)探索圖形變化教學(xué)教案
- 優(yōu)化辦公室工作環(huán)境的策略
- 安全生產(chǎn)管理組織架構(gòu)圖
- 2022版10kV架空配電線路無人機(jī)自主巡檢作業(yè)導(dǎo)則
- 近二十年俄羅斯修辭學(xué)研究述評(píng)
- 委托付款三方協(xié)議中英文版
- 約克中央空調(diào)冷水機(jī)組年度維保方案
- 高中英語-Unit 2 Reading and Thinking A day in the clouds教學(xué)課件設(shè)計(jì)
- 新聞采訪與寫作課件第十九章融合報(bào)道
- 《消防專篇》編制規(guī)定
- 常用小學(xué)生詞語成語積累歸類大全
- 提高出院患者隨訪率持續(xù)改進(jìn)項(xiàng)目
- 工人合同協(xié)議書模板
評(píng)論
0/150
提交評(píng)論