大學(xué)計算機基礎(chǔ)(第6版)(微課版) 課件 第8章 軟件工程基礎(chǔ)_第1頁
大學(xué)計算機基礎(chǔ)(第6版)(微課版) 課件 第8章 軟件工程基礎(chǔ)_第2頁
大學(xué)計算機基礎(chǔ)(第6版)(微課版) 課件 第8章 軟件工程基礎(chǔ)_第3頁
大學(xué)計算機基礎(chǔ)(第6版)(微課版) 課件 第8章 軟件工程基礎(chǔ)_第4頁
大學(xué)計算機基礎(chǔ)(第6版)(微課版) 課件 第8章 軟件工程基礎(chǔ)_第5頁
已閱讀5頁,還剩77頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

大學(xué)計算機基礎(chǔ)

第8章軟件工程基礎(chǔ)大學(xué)計算機基礎(chǔ)課程組2022年4月目錄軟件工程概述1需求分析及其方法2軟件設(shè)計及其方法3軟件編程4軟件測試52軟件調(diào)試68.1軟件工程概述8.1.1軟件2

軟件程序數(shù)據(jù)文檔程序是按事先設(shè)計的功能和性能要求執(zhí)行的指令序列數(shù)據(jù)是使程序能夠正確地處理信息的數(shù)據(jù)結(jié)構(gòu)文檔是與程序開發(fā)、維護(hù)和使用有關(guān)的圖文資料8.1軟件工程概述8.1.1軟件1.軟件的特點2

軟件無明顯的制造過程不會磨損和老化是邏輯產(chǎn)品依賴硬件和環(huán)境復(fù)雜性高、成本昂貴涉及社會因素8.1軟件工程概述8.1.1軟件2.軟件的分類2

系統(tǒng)軟件,與計算機硬件緊密結(jié)合在一起,管理計算機的軟硬件資源,提高計算機的使用效率并為計算機用戶提供各種服務(wù)的軟件。支撐軟件,協(xié)助用戶開發(fā)軟件的工具性軟件。應(yīng)用軟件,為應(yīng)用于特定領(lǐng)域而開發(fā)的軟件。8.1軟件工程概述8.1.2軟件工程1.軟件工程的定義

軟件工程是用工程科學(xué)的知識和技術(shù)原理來定義、開發(fā)和維護(hù)軟件的一門學(xué)科。IEEE計算機協(xié)會將軟件工程定義為:(1)將系統(tǒng)化、嚴(yán)格約束的、可量化的方法應(yīng)用于軟件的開發(fā)、運行和維護(hù),即將工程化應(yīng)用于軟件。(2)對(1)中所述方法的研究。2

8.1軟件工程概述8.1.2軟件工程2.軟件工程三要素2

過程是為了獲得高質(zhì)量的軟件所需要完成的一系列任務(wù)的框架。過程對軟件開發(fā)的過程和方法提供自動或半自動化的支持。工具方法完成軟件開發(fā)的各項任務(wù)的技術(shù)方法,為軟件開發(fā)提供“如何做”的技術(shù)。8.1軟件工程概述8.1.2軟件工程2.軟件工程三要素常見的軟件開發(fā)過程模型有很多種,傳統(tǒng)的有瀑布模型、快速原型模型、增量模型、螺旋模型及噴泉模型,現(xiàn)代的有基于組件的開發(fā)模型、統(tǒng)一軟件開發(fā)過程(RationalUnifiedProcess,RUP)模型等。2

8.1軟件工程概述8.1.2軟件工程2.軟件工程三要素

2

圖8.1

統(tǒng)一軟件開發(fā)過程模型8.1軟件工程概述8.1.3軟件生命周期類似于人和其他生物,軟件也存在產(chǎn)生、發(fā)展和消亡的過程,我們稱之為生命周期。2

圖8.2軟件生命周期8.1軟件工程概述8.1.3軟件生命周期問題定義。確定要解決什么問題??尚行匝芯?。確定問題是否能解決,因此需要探討問題不同的解決方案,針對每一個方案從技術(shù)、經(jīng)濟、法律和用戶操作等方面,研究完成該項軟件任務(wù)的可行性,制訂完成開發(fā)任務(wù)的實施計劃。生成可行性研究報告,提交管理部門進(jìn)行審查。118.1軟件工程概述8.1.3軟件生命周期需求分析。確定待開發(fā)軟件能“做什么”。為此,需要對用戶要求進(jìn)行分析,明確目標(biāo)系統(tǒng)的功能需求和非功能需求,從功能、數(shù)據(jù)、行為等方面搭建分析模型,描述系統(tǒng)的靜態(tài)特性和動態(tài)特性。這個階段會產(chǎn)生需求規(guī)格說明書,提交管理部門進(jìn)行審查。128.1軟件工程概述8.1.3軟件生命周期軟件設(shè)計。本階段是軟件工程的技術(shù)核心,確定待開發(fā)軟件“如何做”。為此,在設(shè)計階段應(yīng)該制定設(shè)計方案,把已經(jīng)明確的各項需求轉(zhuǎn)換成待開發(fā)軟件的軟件體系結(jié)構(gòu),這就是概要設(shè)計。然后詳細(xì)描述軟件體系結(jié)構(gòu)中各模塊所要完成的工作,為源程序的編寫打下基礎(chǔ),這就是詳細(xì)設(shè)計。所以設(shè)計階段會產(chǎn)生概要設(shè)計說明書和詳細(xì)設(shè)計說明書,并提交管理部門進(jìn)行審查。138.1軟件工程概述8.1.3軟件生命周期編碼實現(xiàn)。本階段是在軟件設(shè)計的基礎(chǔ)上編寫程序。該階段會生成源代碼及用戶手冊、操作手冊等面向用戶的文檔。軟件測試。測試是保證軟件質(zhì)量的重要階段,本階段的主要任務(wù)就是設(shè)計測試用例,檢驗軟件的各個組成部分,找出軟件錯誤,最后產(chǎn)生軟件測試報告。運行維護(hù)。軟件一旦交付使用之后就進(jìn)入維護(hù)階段,因為軟件在實際使用中可能會因為各種原因進(jìn)行必要且可行的擴充、修改和刪除。該階段產(chǎn)生維護(hù)說明。148.2需求分析及其方法8.2.1需求分析

為了開發(fā)出真正滿足用戶需要的軟件產(chǎn)品,明確用戶需求是關(guān)鍵。雖然在前期工作中,已經(jīng)對用戶需求有了初步了解,但是很多細(xì)節(jié)還沒有考慮到。可行性研究是評估系統(tǒng)是否值得去開發(fā),而不是對系統(tǒng)需求進(jìn)行定義。如果說可行性研究是要決定“做還是不做”,那么需求分析就是要回答系統(tǒng)能“做什么”這個問題。

需求分析在軟件生命周期中是一個非常重要的環(huán)節(jié),做好需求分析,能夠為后面的軟件開發(fā)質(zhì)量打好基礎(chǔ)。158.2需求分析及其方法8.2.1需求分析需求分析分為需求獲取、分析建模、需求描述和需求評審四步。需求獲取。需求獲取就是收集并明確用戶功能需求和非功能需求的過程。①功能需求描述系統(tǒng)應(yīng)該做什么,即為用戶和其他系統(tǒng)完成的功能和提供的服務(wù)。在某些情況下,功能需求還必須明確系統(tǒng)不應(yīng)該做什么。②非功能需求定義了必須遵循的標(biāo)準(zhǔn)、外部界面的細(xì)節(jié)、實現(xiàn)的約束條件和一些質(zhì)量屬性等。168.2需求分析及其方法8.2.1需求分析分析建模。對目標(biāo)系統(tǒng)搭建分析模型。常見的建模工具有:數(shù)據(jù)流圖、實體關(guān)系圖、用例圖等。需求描述。將前面建立的各種模型組織成文檔的形式,生成需求規(guī)格說明書。軟件需求規(guī)格說明書主要描述軟件的目標(biāo)、軟件的功能需求、性能需求、外部接口、屬性及約束條件。需求評審。需求評審工作就是對需求產(chǎn)生的文檔進(jìn)行審查,主要檢查一致性、完整性、現(xiàn)實性和有效性。178.2需求分析及其方法8.2.2結(jié)構(gòu)化分析方法1.數(shù)據(jù)流圖數(shù)據(jù)流圖是結(jié)構(gòu)化分析的常用工具之一,它直觀地展示了系統(tǒng)中的數(shù)據(jù)是如何處理和流動的,建模過程是自上而下、逐層分解的過程,如下圖8.3所示:188.2需求分析及其方法8.2.2結(jié)構(gòu)化分析方法1.數(shù)據(jù)流圖19圖8.3層次分解8.2需求分析及其方法8.2.2結(jié)構(gòu)化分析方法1.數(shù)據(jù)流圖數(shù)據(jù)流圖中主要圖形元素及說明如下表8.1所示:208.2需求分析及其方法8.2.2結(jié)構(gòu)化分析方法1.數(shù)據(jù)流圖數(shù)據(jù)流圖在結(jié)構(gòu)化分析方法中被廣泛應(yīng)用,尤其適用于數(shù)據(jù)處理領(lǐng)域問題。圖8.4是一個新生購書的簡易0層數(shù)據(jù)流圖,它描述了從預(yù)定書本到生成領(lǐng)書單的數(shù)據(jù)流動過程,其中包括查詢各班學(xué)生用書表和教材存量表等環(huán)節(jié)。21圖8.40層數(shù)據(jù)流圖8.2需求分析及其方法8.2.2結(jié)構(gòu)化分析方法1.數(shù)據(jù)流圖對于復(fù)雜的問題,一個數(shù)據(jù)流圖往往是不夠的,需要按照圖8.3所示層次結(jié)構(gòu)逐層細(xì)化。具體要求:頂層數(shù)據(jù)流圖只含有一個加工,表示整個系統(tǒng)。如下圖8.5所示:22圖8.5頂層數(shù)據(jù)流圖8.2需求分析及其方法8.2.2結(jié)構(gòu)化分析方法1.數(shù)據(jù)流圖中間數(shù)據(jù)流圖是對上一層數(shù)據(jù)流圖中的某個加工進(jìn)行細(xì)化。例如圖8.4中的“訂單處理”就可以再細(xì)化為“修改庫存”和“生成領(lǐng)書單”兩個加工,添上新的數(shù)據(jù)流和數(shù)據(jù)存儲生成1層數(shù)據(jù)流圖,變化如下圖8.6所示:23圖8.6部分1層數(shù)據(jù)流圖8.2需求分析及其方法8.2.2結(jié)構(gòu)化分析方法1.數(shù)據(jù)流圖最底層的數(shù)據(jù)流圖是指它的加工不能再分解的數(shù)據(jù)流圖。如果進(jìn)一步分解發(fā)現(xiàn)要表達(dá)的信息變成了“怎們做”而不是“做什么”的時候就不能再分解了,“怎們做”是設(shè)計階段所要考慮的問題,在分析階段暫不考慮。248.2需求分析及其方法8.2.2結(jié)構(gòu)化分析方法2.數(shù)據(jù)字典數(shù)據(jù)流圖確定后,還需要確定所有數(shù)據(jù)對象及控制信息的特性,給出它們的準(zhǔn)確定義,這就是數(shù)據(jù)字典。數(shù)據(jù)字典是結(jié)構(gòu)化分析的核心,之所以叫“字典”就是它能夠為數(shù)據(jù)對象提供統(tǒng)一的定義標(biāo)準(zhǔn)參考。數(shù)據(jù)字典常常采用符號的方式來進(jìn)行定義,這樣更容易理解數(shù)據(jù)的結(jié)構(gòu)組成。數(shù)據(jù)流圖中的數(shù)據(jù)元素比如說數(shù)據(jù)流、數(shù)據(jù)文件這類的復(fù)合數(shù)據(jù)往往是將數(shù)據(jù)字典中的符號組合起來進(jìn)行定義。258.2需求分析及其方法8.2.2結(jié)構(gòu)化分析方法2.數(shù)據(jù)字典數(shù)據(jù)字典中采用的符號如表8.2所示:268.2需求分析及其方法8.2.2結(jié)構(gòu)化分析方法2.數(shù)據(jù)字典上圖8.4中“領(lǐng)書單”數(shù)據(jù)流的部分?jǐn)?shù)據(jù)信息就可以用數(shù)據(jù)字典表示:領(lǐng)書單={學(xué)號+姓名+書名+ISBN號+出版社名稱+領(lǐng)取截止日期}學(xué)號=”2020”+7{數(shù)字}7數(shù)字=”0”..”9”…278.2需求分析及其方法8.2.3軟件需求規(guī)格說明書28

軟件需求規(guī)格說明書相當(dāng)于軟件開發(fā)的圖紙,課本上列出了一個軟件需求規(guī)格說明書的模板,可根據(jù)此模板撰寫軟件需求規(guī)格說明書。8.3軟件設(shè)計及其方法8.3.1軟件設(shè)計

軟件設(shè)計是軟件開發(fā)過程中的重要階段,在此階段中,開發(fā)人員將集中研究如何把分析模型轉(zhuǎn)換為設(shè)計模型,并將解決方案記錄到設(shè)計文檔中。

軟件設(shè)計能夠?qū)⒂脩粜枨筮@種外部視角準(zhǔn)確地轉(zhuǎn)化為軟件產(chǎn)品或系統(tǒng)這種內(nèi)部視角,同時也能為后續(xù)軟件編碼工作提供參考和指導(dǎo)。298.3軟件設(shè)計及其方法8.3.1軟件設(shè)計

軟件設(shè)計不是將軟件作為一個整體來設(shè)計,而是將軟件分為幾個較小的模塊單獨設(shè)計,最后整合在一起。劃分模塊時要本著提高獨立性的目的。模塊獨立是良好設(shè)計的關(guān)鍵,而設(shè)計又是決定軟件質(zhì)量的關(guān)鍵環(huán)節(jié)。

模塊的獨立程度與兩個定性標(biāo)準(zhǔn)度量相關(guān),分別是耦合和內(nèi)聚。耦合是指衡量不同模塊之間的互聯(lián)程度;內(nèi)聚是指衡量模塊內(nèi)部各個元素之間彼此結(jié)合的緊密程度。

模塊之間的連接越緊密,聯(lián)系越多,耦合性就越高,其模塊獨立性就越弱,內(nèi)聚性就越低,這是不可取的。因此,好的軟件設(shè)計應(yīng)該遵循高內(nèi)聚、低耦合的設(shè)計理念。308.3軟件設(shè)計及其方法8.3.1軟件設(shè)計軟件設(shè)計可以從不同角度進(jìn)行分類。從活動任務(wù)來看,軟件設(shè)計是根據(jù)軟件需求進(jìn)行:數(shù)據(jù)設(shè)計、體系結(jié)構(gòu)設(shè)計、接口設(shè)計、構(gòu)件設(shè)計和部署設(shè)計。數(shù)據(jù)設(shè)計。數(shù)據(jù)設(shè)計是將需求分析階段產(chǎn)生的信息模型轉(zhuǎn)化為實現(xiàn)軟件的數(shù)據(jù)結(jié)構(gòu)的過程。數(shù)據(jù)實體、實體之間的關(guān)系以及數(shù)據(jù)的內(nèi)容是數(shù)據(jù)設(shè)計活動的基礎(chǔ)。體系結(jié)構(gòu)設(shè)計。體系結(jié)構(gòu)設(shè)計提供軟件的整體視圖,定義了軟件系統(tǒng)各主要結(jié)構(gòu)之間的關(guān)系。接口設(shè)計。接口設(shè)計定義軟件內(nèi)部通信、與其他系統(tǒng)的交互以及人機交互界面等。318.3軟件設(shè)計及其方法8.3.1軟件設(shè)計構(gòu)件(模塊)設(shè)計。構(gòu)件設(shè)計是將一個復(fù)雜的系統(tǒng)按照功能進(jìn)行模塊劃分,建立模塊的層次結(jié)構(gòu)及調(diào)用關(guān)系,確定模塊間的接口及人機交互界面等。部署設(shè)計。部署設(shè)計指的是軟件功能和子系統(tǒng)如何在支持軟件的物理環(huán)境內(nèi)進(jìn)行部署。此外,從工程管理的觀點,軟件設(shè)計可以分為概要設(shè)計和詳細(xì)設(shè)計。概要設(shè)計又叫做總體設(shè)計,在軟件設(shè)計前期進(jìn)行,得到軟件系統(tǒng)的基本框架。詳細(xì)設(shè)計又叫做過程設(shè)計,在軟件設(shè)計后期進(jìn)行,對基本框架的各個組成部分設(shè)計內(nèi)部的實現(xiàn)細(xì)節(jié)。328.3軟件設(shè)計及其方法8.3.2結(jié)構(gòu)化設(shè)計方法結(jié)構(gòu)化設(shè)計的任務(wù)是從軟件需求規(guī)格說明書出發(fā),設(shè)計軟件系統(tǒng)的整體結(jié)構(gòu)(概要設(shè)計)、確定每個模塊的實現(xiàn)算法和數(shù)據(jù)結(jié)構(gòu)(詳細(xì)設(shè)計),形成軟件的具體設(shè)計方案,解決“怎么做”的問題。結(jié)構(gòu)化設(shè)計方法各階段主要任務(wù)如下圖8.7所示:338.3軟件設(shè)計及其方法8.3.2結(jié)構(gòu)化設(shè)計方法34圖8.7結(jié)構(gòu)化設(shè)計方法8.3軟件設(shè)計及其方法8.3.2結(jié)構(gòu)化設(shè)計方法1.概要設(shè)計在概要設(shè)計中很重要的一個任務(wù)就是體系結(jié)構(gòu)設(shè)計,常用的體系結(jié)構(gòu)設(shè)計工具是結(jié)構(gòu)圖。它反映了整個系統(tǒng)的功能實現(xiàn)以及模塊與模塊之間的關(guān)系和模塊之間的接口。結(jié)構(gòu)圖的基本圖符及含義如表8.3所示:358.3軟件設(shè)計及其方法8.3.2結(jié)構(gòu)化設(shè)計方法1.概要設(shè)計

368.3軟件設(shè)計及其方法8.3.2結(jié)構(gòu)化設(shè)計方法1.概要設(shè)計結(jié)構(gòu)圖是一種層次化的表示,上方的模塊調(diào)用下方的模塊,它指出了軟件各個模塊之間的調(diào)用關(guān)系。結(jié)構(gòu)圖的形態(tài)特征如下圖8.8所示:37圖8.8結(jié)構(gòu)圖的形態(tài)特征8.3軟件設(shè)計及其方法8.3.2結(jié)構(gòu)化設(shè)計方法1.概要設(shè)計深度:在多層次的結(jié)構(gòu)圖中,模塊結(jié)構(gòu)的層次數(shù)為結(jié)構(gòu)圖的深度,大型程序結(jié)構(gòu)圖的深度可以有幾十層。上圖8.8深度為5。寬度:結(jié)構(gòu)圖中同一層模塊的最大模塊數(shù)為結(jié)構(gòu)圖的寬度。上圖8.8寬度為8。扇入:一個模塊的被調(diào)用的模塊數(shù)目。上圖8.8T模塊的扇入數(shù)目為4。扇出:一個模塊直接調(diào)用或控制下屬模塊的數(shù)目。上圖8.8M模塊和C模塊的扇出數(shù)目為3。388.3軟件設(shè)計及其方法8.3.2結(jié)構(gòu)化設(shè)計方法2.詳細(xì)設(shè)計詳細(xì)設(shè)計的任務(wù)是為軟件結(jié)構(gòu)圖中的每一個模塊確定實現(xiàn)算法和局部數(shù)據(jù)結(jié)構(gòu),用某種選定的表達(dá)工具表示算法和數(shù)據(jù)結(jié)構(gòu)的細(xì)節(jié)。常用的詳細(xì)設(shè)計工具有:圖形設(shè)計符號:流程圖、N-S圖(盒圖)、PAD圖;表格設(shè)計符號:判定表等;程序設(shè)計語言:PDL(偽代碼)等。398.3軟件設(shè)計及其方法8.3.2結(jié)構(gòu)化設(shè)計方法2.詳細(xì)設(shè)計計算n階乘的程序流程圖

408.4軟件編程8.4.1編程語言編程語言是用于編寫計算機程序的語言,同時也是人與計算機交互的基本工具,它定義了一組計算機的語法規(guī)則,通過這些語法規(guī)則可以把人的意圖、思想等轉(zhuǎn)化為計算機可以理解的指令,進(jìn)而讓計算機幫助人類完成某些任務(wù)。軟件開發(fā)人員通過使用編程語言來實現(xiàn)目標(biāo)系統(tǒng)的功能。自20世紀(jì)60年代以來,人們已經(jīng)設(shè)計和實現(xiàn)了很多編程語言,可以將編程語言分為三類。418.4軟件編程8.4.1編程語言421機器語言3高級程序設(shè)計語言2匯編語言是計算機可以識別和執(zhí)行的指令代碼,由0和1組成。是機器語言的符號化,與機器語言有直接的關(guān)系。用易寫和易懂的形式語言來編寫程序的程序設(shè)計語言。8.4軟件編程8.4.1編程語言在軟件開發(fā)過程中,選擇合適的編程語言是編程的關(guān)鍵。下面列出選擇編程語言需考慮的因素:待開發(fā)系統(tǒng)的應(yīng)用領(lǐng)域;用戶的要求;計劃使用的開發(fā)工具;軟件開發(fā)人員的喜好和能力;算法和數(shù)據(jù)結(jié)構(gòu)的復(fù)雜性;操作系統(tǒng)平臺支持及軟件可移植性要求。438.4軟件編程8.4.2編程風(fēng)格在選定好編程語言之后,就可以開始編碼了。在編碼的過程中,良好的編程習(xí)慣、風(fēng)格也是高質(zhì)量軟件的決定因素。編程風(fēng)格是指源程序的書寫習(xí)慣,比如變量的命名規(guī)則、代碼的注釋方法等。具有良好編程風(fēng)格的源程序具有較強的可讀性、可維護(hù)性,同時還能提高團隊開發(fā)的效率。在大型軟件開發(fā)項目中,為了控制軟件開發(fā)的質(zhì)量,保證軟件開發(fā)的一致性,遵循一定的編程風(fēng)格尤為重要。448.4軟件編程8.4.2編程風(fēng)格要做到按照良好的編程風(fēng)格進(jìn)行編程,可以從以下幾點入手:版權(quán)和版本聲明。應(yīng)該在每個代碼文件的開頭對代碼的版權(quán)和版本進(jìn)行聲明,主要內(nèi)容有:①版權(quán)信息。②文件名稱,標(biāo)識符,摘要。③當(dāng)前版本號,作者/修改者,完成日期。④版本歷史信息。458.4軟件編程8.4.2編程風(fēng)格要做到按照良好的編程風(fēng)格進(jìn)行編程,可以從以下幾點入手:變量名說明。變量名是編程的核心,只有全面理解系統(tǒng)的編程人員才能定義適合的名稱。

468.4軟件編程8.4.2編程風(fēng)格要做到按照良好的編程風(fēng)格進(jìn)行編程,可以從以下幾點入手:程序注釋。程序注釋可以讓人比較容易地閱讀程序,是軟件開發(fā)人員之間以及開發(fā)人員和用戶之間進(jìn)行交流的重要途徑,也是后期修改程序的重要參考內(nèi)容。

注釋可分為序言性注釋和功能性注釋兩大類。

序言性注釋通常在每個程序或模塊的開頭部分,它是對程序或模塊的整體說明。

功能性注釋通常嵌在程序體內(nèi),主要描述程序段所實現(xiàn)的功能。478.5軟件測試8.5.1軟件測試概述

軟件測試是發(fā)現(xiàn)軟件中錯誤或缺陷的主要手段。在軟件開發(fā)過程的任何階段都可能引入缺陷。軟件測試是軟件開發(fā)過程中的一個重要階段。軟件測試工作應(yīng)該貫穿于整個開發(fā)過程。488.5軟件測試8.5.1軟件測試概述人們在長期進(jìn)行軟件測試實踐中,不斷地總結(jié)出一些軟件測試的經(jīng)驗或原則,可供我們參考:窮舉測試是不可能的。測試中存在風(fēng)險。軟件測試只能表明缺陷的存在,而不能證明軟件產(chǎn)品已經(jīng)沒有缺陷。注意測試中的群集現(xiàn)象。應(yīng)該讓不同的測試人員參與到測試工作中。498.5軟件測試8.5.1軟件測試概述人們在長期進(jìn)行軟件測試實踐中,不斷地總結(jié)出一些軟件測試的經(jīng)驗或原則,可供我們參考:避免由程序的編寫者測試自己的程序。開發(fā)人員和測試人員不能是同一批人。盡早并不斷地進(jìn)行測試,所有測試都應(yīng)追溯到用戶需求。在測試之前制定測試計劃并嚴(yán)格執(zhí)行。妥善保存測試計劃、測試用例、出錯統(tǒng)計和最終測試報告,為后期維護(hù)提供方便。508.5軟件測試8.5.2軟件測試方法軟件測試有多種方法,按照執(zhí)行測試時是否需要運行程序,軟件測試可以劃分為靜態(tài)測試和動態(tài)測試。靜態(tài)測試以人工測試為主,通過測試人員認(rèn)真閱讀文檔和代碼,仔細(xì)分析其正確性、一致性及邏輯結(jié)構(gòu),找出軟件產(chǎn)品中的錯誤或缺陷。靜態(tài)測試對自動化工具的依賴性較小,主要通過人工進(jìn)行分析,通過人腦的思考和邏輯判斷來查找錯誤,因而可以更好地發(fā)揮人的主觀能動性。518.5軟件測試8.5.2軟件測試方法軟件測試有多種方法,按照執(zhí)行測試時是否需要運行程序,軟件測試可以劃分為靜態(tài)測試和動態(tài)測試。動態(tài)測試需要通過實際運行被測程序來發(fā)現(xiàn)問題。測試人員可以輸入一系列的測試用例,通過觀察測試用例的輸出結(jié)果是否與預(yù)期相符來檢驗系統(tǒng)內(nèi)潛在的問題。動態(tài)測試關(guān)鍵是設(shè)計高效、合理的測試用例。測試用例就是為了測試設(shè)計的數(shù)據(jù),由測試輸入數(shù)據(jù)和預(yù)期的輸出結(jié)果兩部分組成。528.5軟件測試8.5.2軟件測試方法

53例如對某段程序“加法”功能進(jìn)行動態(tài)測試,可設(shè)計測試用例如下表8.5所示:8.5軟件測試8.5.2軟件測試方法

按照是否查看源代碼,軟件測試可以劃分為黑盒測試和白盒測試。1.黑盒測試黑盒測試又稱功能測試,著重測試軟件的功能。在黑盒測試?yán)?,測試人員把被測試的軟件系統(tǒng)看成是一個不能打開的黑盒子,測試人員并不關(guān)心盒子的內(nèi)部結(jié)構(gòu)和內(nèi)部特性,只關(guān)注軟件產(chǎn)品的輸入數(shù)據(jù)和輸出結(jié)果,從而檢查軟件產(chǎn)品是否符合規(guī)格說明書中的功能要求。常用的黑盒測試方法和技術(shù)包括等價類劃分法、邊界值分析法、錯誤推測法、因果圖法等。

548.5軟件測試8.5.2軟件測試方法等價類劃分法

因為窮舉測試的不可實現(xiàn),等價類劃分是把程序的輸入域劃分為若干子集,然后從每個子集中選取少數(shù)具有代表性的數(shù)據(jù)用作測試用例,所選取的輸入數(shù)據(jù)對于揭露程序中的錯誤和子集里其他數(shù)據(jù)都是等效的,測試某個等價類的代表值就等價于對該等價類的其他值的測試。

558.5軟件測試8.5.2軟件測試方法等價類劃分法步驟:①對每個輸入條件進(jìn)行等價類劃分,畫出等價類表,并在表中為每個等價類進(jìn)行唯一的編號。以下是等價類劃分的幾項依據(jù):按照區(qū)間劃分。如果輸入條件規(guī)定了取值范圍或值的數(shù)量,則可確定一個有效等價類和兩個無效等價類。例如,如果輸入為“月份”,則1—12為一個有效等價類;小于1、大于12為兩個無效等價類。568.5軟件測試8.5.2軟件測試方法按照數(shù)值集合劃分。

如果輸入條件規(guī)定了輸入值的集合,則可確定一個有效等價類和一個無效等價類。例如,輸入值是“首字符是字母”,那么有效等價類是首字符是字母的數(shù)據(jù);無效等價類是首字符是非字母的數(shù)據(jù)。按照數(shù)值劃分。

如果輸入條件是一組值,且程序?qū)Σ煌闹涤胁煌奶幚矸绞?,則每個允許的輸入值對應(yīng)一個有效等價類,所有不允許的輸入值的集合為一個無效等價類。例如,輸入條件“職稱”的值是初級、中級或高級,那么有效等價類應(yīng)該有三個,即初級、中級、高級;無效等價類有一個,即除了這三個之外其他任何職稱。578.5軟件測試8.5.2軟件測試方法按照限制條件或者規(guī)則劃分。

如果規(guī)定了輸入數(shù)據(jù)必須遵循的規(guī)則,則可以劃分出一個有效的等價類(符合規(guī)則)和若干個無效的等價類(從不同的角度違反規(guī)則)。細(xì)分等價類。

已劃分等價類中各元素在程序中處理方式不同,可將等價類進(jìn)一步劃分更小等價類。588.5軟件測試8.5.2軟件測試方法59表8.6等價類表8.5軟件測試8.5.2軟件測試方法②設(shè)計測試用例。設(shè)計一個測試用例,使其盡可能多地覆蓋有效等價類。為每一個無效等價類設(shè)計一個測試用例,直到所有無效等價類都被覆蓋為止,在設(shè)計某個無效等價類的用例時盡量保證其他輸入條件有效。生成的測試用例可填入下表8.7:608.5軟件測試8.5.2軟件測試方法邊界值分析法人們從長期的測試工作經(jīng)驗中得知,大量的錯誤往往發(fā)生在輸入和輸出范圍的邊界上,而不是范圍的內(nèi)部。因此,針對邊界情況設(shè)計測試用例,能夠更有效的發(fā)現(xiàn)錯誤。邊界值分析法是一種補充等價類劃分法的黑盒測試方法,它在選擇用例的時候不是像普通等價類劃分方法一樣選擇等價類范圍內(nèi)的任意元素,而是選擇等價類邊界元素作為測試用例。618.5軟件測試8.5.2軟件測試方法錯誤推測法靠經(jīng)驗和直覺推測程序可能存在錯誤,有針對性編寫檢查這些錯誤的測試用例。錯誤推測法不能單獨使用,否則主觀性太強不具有科學(xué)依據(jù)。因果圖法等價類劃分法和邊界值分析法都主要考慮的是輸入條件,而沒有考慮輸入條件的各種組合、各個輸入條件之間的相互制約關(guān)系以及輸入條件和結(jié)果之間的關(guān)系。因此,因果圖法提供了幾種條件的組合情況以及幾種因果關(guān)系供我們來設(shè)計測試用例。628.5軟件測試8.5.2軟件測試方法2.白盒測試與黑盒測試不同,白盒測試關(guān)注軟件產(chǎn)品的內(nèi)部細(xì)節(jié)和邏輯結(jié)構(gòu),即把被測的程序看成是一個透明的盒子。它根據(jù)源程序內(nèi)部邏輯細(xì)節(jié)來設(shè)計測試用例,檢查程序中的邏輯通路是否按預(yù)定的要求正確地工作。白盒測試包括邏輯覆蓋測試和基本路徑測試等方法。638.5軟件測試8.5.2軟件測試方法邏輯覆蓋法邏輯覆蓋法以程序內(nèi)在的邏輯結(jié)構(gòu)為基礎(chǔ)設(shè)計測試用例。測試數(shù)據(jù)在程序執(zhí)行過程中覆蓋不同的分支和路徑,根據(jù)覆蓋的目標(biāo)不同和覆蓋語句的詳盡程度可以分為不同的等級,分別是語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋和條件組合覆蓋等。下面有一段用偽代碼編寫的程序:1.if(A>2andB<0)then2.X=X+13.endif648.5軟件測試8.5.2軟件測試方法對該程序使用邏輯覆蓋法設(shè)計測試用例過程如下。用例格式為:【輸入(A,B,X),預(yù)期輸出(A,B,X)】語句覆蓋。語句覆蓋是設(shè)計若干個測試用例,運行被測程序,使得每一個可執(zhí)行語句至少執(zhí)行一次。上方程序中可執(zhí)行語句是:X=X+1。

可設(shè)計測試用例:【(3,-1,0),(3,-1,1)】判定覆蓋。就是設(shè)計若干個測試用例,運行被測程序,使得程序中每個判斷的取真分支和取假分支至少經(jīng)歷一次。上方程序中只有一個判斷:A>2andB<0。

可設(shè)計測試用例:取真分支【(3,-1,0),(3,-1,1)】

取假分支【(2,1,0),(2,1,0)】658.5軟件測試8.5.2軟件測試方法對該程序使用邏輯覆蓋法設(shè)計測試用例過程如下。用例格式為:【輸入(A,B,X),預(yù)期輸出(A,B,X)】條件覆蓋。設(shè)計若干個測試用例,運行被測程序,使得程序中每個判斷的每個條件的可能取值至少執(zhí)行一次。上方程序中一個判斷有兩個條件分別是:A>2和B<0。

可設(shè)計測試用例:條件取真真【(3,-1,0),(3,-1,1)】條件取假假【(2,1,0),(2,1,0)】判定/條件覆蓋。要同時滿足判定覆蓋又要滿足條件覆蓋的要求。

可設(shè)計測試用例:【(3,-1,0),(3,-1,1)】【(2,1,0),(2,1,0)】668.5軟件測試8.5.2軟件測試方法對該程序使用邏輯覆蓋法設(shè)計測試用例過程如下。用例格式為:【輸入(A,B,X),預(yù)期輸出(A,B,X)】條件組合覆蓋。設(shè)計足夠的測試用例,運行被測程序,使得每個判斷的所有可能的條件取值組合至少執(zhí)行一次。上方程序中一個判斷有四種條件組合分別是:

真真A>2,B<0、真假A>2,B≥0、假真A≤2,B<0、假假A≤2,B≥0。

設(shè)計測試用例:

條件組合取真真【(3,-1,0),(3,-1,1)】條件組合取假假【(2,1,0),(2,1,0)】

條件組合取假真【(1,-1,0),(1,-1,0)】條件組合取真假【(3,1,0),(3,1,0)】678.5軟件測試8.5.2軟件測試方法基本路徑法基本路徑測試法是在程序控制流圖的基礎(chǔ)上,通過分析控制構(gòu)造的環(huán)路復(fù)雜性,然后導(dǎo)出基本可執(zhí)行的路徑集合,從而設(shè)計測試用例的方法。白盒測試和黑盒測試各有側(cè)重點,不能相互取代。在實際測試活動中,這兩種測試方法是相互配合的,通常在白盒測試中交叉著黑盒測試,黑盒測試中交叉著白盒測試。688.5軟件測試8.5.3軟件測試步驟69在軟件工程環(huán)境中的測試過程,實際上是順序進(jìn)行的五個步驟的序列:單元測試、集成測試、確認(rèn)測試、系統(tǒng)測試和驗收測試。圖8.10軟件測試步驟8.5軟件測試8.5.3軟件測試步驟單元測試單元測試也稱模塊測試,模塊是軟件設(shè)計的最小單位,單元測試是對模塊進(jìn)行正確性的檢驗,以期盡早發(fā)現(xiàn)各模塊內(nèi)部可能存在的各種錯誤。該測試以詳細(xì)設(shè)計文檔為指導(dǎo),同時會根據(jù)源代碼清單來進(jìn)行測試,測試模塊內(nèi)的重要控制路徑。每個單元測試能夠檢查模塊是否正確實現(xiàn)每個程序規(guī)定的功能。單元測試可以采用靜態(tài)測試或者動態(tài)測試。動態(tài)測試通常以白盒測試法為主,測試其結(jié)構(gòu),并以黑盒測試法為輔,測試其功能。708.5軟件測試8.5.3軟件測試步驟集成測試集成測試也稱組裝測試,它是對各模塊按照設(shè)計要求組裝成的程序進(jìn)行測試,主要目的是發(fā)現(xiàn)與接口有關(guān)的錯誤。模塊單個是好的,那么組裝在一起是不是會出現(xiàn)問題,接口會不會有錯誤,信息是不是連接不通等情況。集成測試主要發(fā)現(xiàn)設(shè)計階段產(chǎn)生的錯誤,通常依據(jù)概要設(shè)計說明書,采用黑盒測試方法進(jìn)行測試。718.5軟件測試8.5.3軟件測試步驟集成測試集成方法有兩種:一種方法是非增量集成;另外一種方法是增量集成。按照實

溫馨提示

  • 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

提交評論