




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第3章 軟件工程基礎課件制作:鄭軼課件制作:鄭軼(2009)本章目錄3.1 軟件工程基本概念軟件工程基本概念3.2 結構化分析方法結構化分析方法3.3 結構化設計方法結構化設計方法3.4 軟件測試軟件測試3.5 程序的調試程序的調試重點難點重點難點 3.1 軟件工程基本概念1. 軟件的相關概念軟件的相關概念計算機軟件是包括計算機軟件是包括程序程序、數據數據及及相關文檔相關文檔的完整的完整集合。集合。 概概 念念含含 義義軟件軟件程序和數據程序和數據+文檔文檔程序程序軟件開發人員依據用戶需求開發的,用某種程序設計軟件開發人員依據用戶需求開發的,用某種程序設計語言描述的,能夠在計算機執行的語句序列
2、語言描述的,能夠在計算機執行的語句序列數據數據依程序能夠正常操縱信息的數據結構依程序能夠正常操縱信息的數據結構文檔文檔與程序開發、維護和使用有關的資料與程序開發、維護和使用有關的資料軟件的特點1)軟件是一種)軟件是一種邏輯邏輯實體,而不是物理實體,具有抽象性實體,而不是物理實體,具有抽象性 ;2)軟件的生產與硬件不同,它沒有明顯的制作過程;)軟件的生產與硬件不同,它沒有明顯的制作過程;3)軟件在運行、使用期間不存在磨損、老化問題;)軟件在運行、使用期間不存在磨損、老化問題;4)軟件的開發、運行對計算機系統具有依賴性,受計算)軟件的開發、運行對計算機系統具有依賴性,受計算機系統的限制,這導致了軟
3、件移植的問題;機系統的限制,這導致了軟件移植的問題;5)軟件復雜性高,成本昂貴;)軟件復雜性高,成本昂貴;6)軟件開發涉及諸多的社會因素)軟件開發涉及諸多的社會因素 。 軟件的分類按按功能功能劃分:劃分:n系統軟件:系統軟件:管理計算機資源,使計算機使用效率更高管理計算機資源,使計算機使用效率更高,為用戶提供各種服務的軟件。,為用戶提供各種服務的軟件。n如,操縱系統如,操縱系統(OS)、數據庫管理系統、數據庫管理系統(DBMS)、編譯程序、匯、編譯程序、匯編程序和網絡軟件等。編程序和網絡軟件等。n應用軟件:應用軟件:為了應用于特定的領域而開發的軟件。為了應用于特定的領域而開發的軟件。n如,如,
4、Office系列、系列、QQ、FlashGet等。等。n支撐軟件:支撐軟件:介于以上兩者之間,協助用戶開發軟件的介于以上兩者之間,協助用戶開發軟件的工具型軟件。工具型軟件。n如,如, Visual C+、Visual Basic 、 Dephi、PowerBuilder等。等。2.軟件危機n軟件工程源自軟件工程源自軟件危機軟件危機。n所謂所謂軟件危機軟件危機是泛指在計算機軟件的開發和維護過程中是泛指在計算機軟件的開發和維護過程中所遇到的一系列嚴重問題。所遇到的一系列嚴重問題。n問題產生的根本原因有兩種:問題產生的根本原因有兩種:n軟件本身的特點,如復雜性高、規模龐大等;軟件本身的特點,如復雜性
5、高、規模龐大等;n人們對軟件開發和維護的許多錯誤認識和做法,再加上對軟件人們對軟件開發和維護的許多錯誤認識和做法,再加上對軟件的特性認識不足。的特性認識不足。n軟件開發與維護的方法不正確是產生軟件危機的主要原軟件開發與維護的方法不正確是產生軟件危機的主要原因。因。 軟件危機主要表現在n軟件需求的增長得不到滿足。軟件需求的增長得不到滿足。n軟件開發成本和進度無法控制。軟件開發成本和進度無法控制。n軟件質量難以保證。軟件質量難以保證。n軟件不可維護或維護程度非常低。軟件不可維護或維護程度非常低。n軟件的成本不斷提高。軟件的成本不斷提高。n軟件開發生產率的提高跟不上硬件的發展和應用需求軟件開發生產率
6、的提高跟不上硬件的發展和應用需求的增長。的增長。 3.軟件工程n軟件工程軟件工程是應用于計算機軟件的定義、開發和維護的是應用于計算機軟件的定義、開發和維護的一整套方法、工具、文檔、實踐標準和工序。一整套方法、工具、文檔、實踐標準和工序。n軟件工程的主要思想是將軟件工程的主要思想是將工程化工程化原則運用到軟件開發原則運用到軟件開發過程,它包括過程,它包括3個要素:個要素:方法方法、工具工具和和過程過程。n方法是完成軟件工程項目的技術手段,即提供方法是完成軟件工程項目的技術手段,即提供“如如何做何做”的技術;的技術;n工具支持軟件的開發、管理、文檔生成;工具支持軟件的開發、管理、文檔生成;n過程支
7、持軟件開發的各個環節的控制、管理,在過過程支持軟件開發的各個環節的控制、管理,在過程中將軟件工程的方法和工具綜合起來程中將軟件工程的方法和工具綜合起來 。 軟件工程的目標和研究內容n軟件工程的目標是:軟件工程的目標是:在給定成本、進度的前提下,開發出具有有效性在給定成本、進度的前提下,開發出具有有效性、可靠性、可理解性、可維護性、可重用性、可適應、可靠性、可理解性、可維護性、可重用性、可適應性、可移植性、可追蹤性和可互操作性且滿足用戶需性、可移植性、可追蹤性和可互操作性且滿足用戶需求的產品。求的產品。n軟件工程所包含的研究內容概括為以下兩點:軟件工程所包含的研究內容概括為以下兩點:n軟件開發技
8、術軟件開發技術:主要有軟件開發方法學、開發過程、軟件工:主要有軟件開發方法學、開發過程、軟件工具、軟件工程環境。具、軟件工程環境。n軟件工程管理軟件工程管理:主要有軟件管理、軟件工程經濟學、軟件心:主要有軟件管理、軟件工程經濟學、軟件心理學。理學。軟件工程的原則(一)軟件工程原則:抽象、信息隱蔽、模塊化、局部化軟件工程原則:抽象、信息隱蔽、模塊化、局部化、確定性、一致性、完備性和可驗證性。、確定性、一致性、完備性和可驗證性。 n抽象:抽象:采用分層次抽象、自頂向下、逐層細化的辦法控采用分層次抽象、自頂向下、逐層細化的辦法控制軟件開發過程的復雜性。制軟件開發過程的復雜性。n信息隱蔽:信息隱蔽:將
9、模塊設計為將模塊設計為“黑箱黑箱”,實現細節隱藏在模,實現細節隱藏在模塊內部,不讓模塊的使用者直接訪問。即信息封裝。塊內部,不讓模塊的使用者直接訪問。即信息封裝。n模塊化:模塊化:有助于信息的隱蔽和抽象,有助于表示復雜的有助于信息的隱蔽和抽象,有助于表示復雜的系統。系統。n局部化:局部化:要求在一個物理模塊內集中邏輯上相互關聯的要求在一個物理模塊內集中邏輯上相互關聯的計算機資源,保證模塊之間有松散的耦合關系,模塊內計算機資源,保證模塊之間有松散的耦合關系,模塊內部具有較強的內聚,這有助于控制分解的復雜性。部具有較強的內聚,這有助于控制分解的復雜性。軟件工程的原則(二)n確定性:確定性:軟件開發
10、過程中所有概念的表達應是確定的軟件開發過程中所有概念的表達應是確定的、無歧義的、規范的。、無歧義的、規范的。n一致性:一致性:整個軟件系統的各個模塊應使用一致的概念整個軟件系統的各個模塊應使用一致的概念、符號和術語;程序內外部接口應保持一致,系統規、符號和術語;程序內外部接口應保持一致,系統規格說明與系統行為應保持一致。格說明與系統行為應保持一致。n完備性:完備性:軟件系統不丟失任何重要成分,完全實現系軟件系統不丟失任何重要成分,完全實現系統所需的功能。統所需的功能。n可驗證性:可驗證性:開發大型軟件系統需要對系統自頂向下逐開發大型軟件系統需要對系統自頂向下逐層分解。系統分解應遵循容易檢查、測
11、評、評審的原層分解。系統分解應遵循容易檢查、測評、評審的原則,以確保系統的正確性。則,以確保系統的正確性。4.軟件工作過程軟件工程過程軟件工程過程是把是把輸入輸入轉化為轉化為輸出輸出的一組彼此相的一組彼此相關的資源和活動。關的資源和活動。活動活動資源資源軟軟件件工工程程過過程程用戶用戶要求要求輸入輸入輸出輸出軟件軟件產品產品 主要包含主要包含4種基本活動:種基本活動:軟件規格說明、軟件開軟件規格說明、軟件開發、軟件確認、軟件演進。發、軟件確認、軟件演進。5.軟件生命周期n軟件生命周期軟件生命周期:軟件產品從提出、實現、使用維:軟件產品從提出、實現、使用維護到停止使用退役的過程。護到停止使用退役
12、的過程。n軟件生命周期分為軟件生命周期分為3個時期共個時期共8個階段:個階段:(熟記)(熟記)n軟件定義軟件定義:包括問題定義、可行性研究、需求分析;:包括問題定義、可行性研究、需求分析;n軟件開發軟件開發:包括概要設計、詳細設計、實現和測試;:包括概要設計、詳細設計、實現和測試;n軟件運行維護軟件運行維護:即運行維護階段。:即運行維護階段。n軟件生命周期各個階段的活動可以有重復,執行軟件生命周期各個階段的活動可以有重復,執行時也可以有迭代。時也可以有迭代。n* 軟件生命周期中所花費最多的階段是軟件生命周期中所花費最多的階段是軟件運軟件運行維護階段行維護階段。 問題定義問題定義可行性研究可行性
13、研究需求分析需求分析概要設計概要設計詳細定義詳細定義實現實現測試測試使用和維護使用和維護退役退役軟件定義期軟件定義期軟件開發期軟件開發期軟件維護期軟件維護期6.軟件開發工具與開發環境n軟件開發工具軟件開發工具n軟件開發工具的產生、發展和完善促進了軟件的開發速度和軟件開發工具的產生、發展和完善促進了軟件的開發速度和質量的提高。質量的提高。n包括需求分析工具、設計工具、編碼工具、排錯工具、測試包括需求分析工具、設計工具、編碼工具、排錯工具、測試工具等。工具等。n軟件開發環境軟件開發環境n軟件開發環境是全面支持軟件開發全過程的軟件工具集合。軟件開發環境是全面支持軟件開發全過程的軟件工具集合。這些軟件
14、工具按照一定的方法或模式組合起來,支持軟件生這些軟件工具按照一定的方法或模式組合起來,支持軟件生命周期的各個階段和各項任務的完成。命周期的各個階段和各項任務的完成。n計算機輔助軟件工程計算機輔助軟件工程(CASE):將各種軟件工具、開發機器和:將各種軟件工具、開發機器和一個存放過程信息的中心數據庫組合起來,形成軟件工程環一個存放過程信息的中心數據庫組合起來,形成軟件工程環境。境。3.2 結構化分析方法結構化分析方法n目前使用最廣泛的軟件工程方法學是結構化方法學和目前使用最廣泛的軟件工程方法學是結構化方法學和面向對象方法學。面向對象方法學。n結構化方法的核心和基礎是結構化程序設計理論。結構化方法
15、的核心和基礎是結構化程序設計理論。3.2.1 需求分析n需求分析需求分析是指用戶對目標軟件系統在功能、行為、性是指用戶對目標軟件系統在功能、行為、性能、設計約束等方面的期望。能、設計約束等方面的期望。n需求分析的需求分析的任務任務是發現需求、求精、建模和定義需求是發現需求、求精、建模和定義需求的過程。的過程。n需求分析將創建所需的需求分析將創建所需的數據模型、功能模型和控制模數據模型、功能模型和控制模型型。n* 需求分析的任務就是導出目標系統的邏輯模型,解需求分析的任務就是導出目標系統的邏輯模型,解決決“做什么做什么”的問題。的問題。n* 需求分析一般分為需求獲取、需求分析、編寫需求需求分析一
16、般分為需求獲取、需求分析、編寫需求規格說明書和需求評審四個步驟進行。規格說明書和需求評審四個步驟進行。(熟記)(熟記)3.2.2需求分析方法n需求分析方法分為兩類:需求分析方法分為兩類:n結構化需求分析方法結構化需求分析方法n面向對象的分析方法(面向對象的分析方法(OOA,Object-Oriental Analysis Method) n從需求分析建模的特性來劃分,還可分為靜態分析方從需求分析建模的特性來劃分,還可分為靜態分析方法和動態分析方法。法和動態分析方法。3.2.3結構化分析方法n結構化分析方法是結構化程序設計理論在軟件需求分結構化分析方法是結構化程序設計理論在軟件需求分析階段的應用
17、。析階段的應用。n結構化分析結構化分析就是使用數據流圖(就是使用數據流圖(DFD)、數據字典()、數據字典(DD)、結構化英語、判定表和判定樹的工具,來建立)、結構化英語、判定表和判定樹的工具,來建立一種新的、稱為結構化規格說明的目標文件。一種新的、稱為結構化規格說明的目標文件。n結構化分析方法的結構化分析方法的實質實質:著眼于數據流,:著眼于數據流,自頂向下自頂向下,逐層分解逐層分解,建立系統建立系統的處理流程,以數據流圖和數據的處理流程,以數據流圖和數據字典為主要工具,建立系統的邏輯模型。字典為主要工具,建立系統的邏輯模型。結構化分析的常用工具1. 數據流圖(數據流圖(DFD):):以圖形
18、的方式描繪數據在系統以圖形的方式描繪數據在系統中流動和處理的過程,它反映了系統必須完成的中流動和處理的過程,它反映了系統必須完成的邏輯功能,是結構化分析方法中用于表示系統邏邏輯功能,是結構化分析方法中用于表示系統邏輯模型的一種工具。輯模型的一種工具。 辦理取款手續的數據流圖辦理取款手續的數據流圖數據流圖的基本圖形元素n加工(轉換):輸入數據經加工變換產生輸出。加工(轉換):輸入數據經加工變換產生輸出。n數據流:沿箭頭方向傳送數據的通道,一般在旁邊標注數據流名數據流:沿箭頭方向傳送數據的通道,一般在旁邊標注數據流名。n存儲文件(數據源):表示處理過程中存放各種數據的文件。存儲文件(數據源):表示
19、處理過程中存放各種數據的文件。n源,潭:表示系統和環境的接口,屬系統之外的實體。源,潭:表示系統和環境的接口,屬系統之外的實體。加工數據流存儲文件源、潭2.數據字典n數據字典(數據字典(DD):):對所有與系統相關的數據元素的一對所有與系統相關的數據元素的一個有組織的列表,以及精確的、嚴格的定義,使得用個有組織的列表,以及精確的、嚴格的定義,使得用戶和系統分析員對于輸入、輸出、存儲成分和中間計戶和系統分析員對于輸入、輸出、存儲成分和中間計算結果有共同的理解。算結果有共同的理解。n* 數據字典的作用是對數據流圖中出現的被命名的圖數據字典的作用是對數據流圖中出現的被命名的圖形元素的確切解釋。形元素
20、的確切解釋。n* 數據字典是結構化分析方法的核心。數據字典是結構化分析方法的核心。3.軟件需求規格說明書(SRS)n軟件需求規格說明書是需求分析階段的軟件需求規格說明書是需求分析階段的最后成果最后成果,通,通過建立完整的信息描述、詳細的功能和行為描述、性過建立完整的信息描述、詳細的功能和行為描述、性能需求和設計約束的說明、合適的驗收標準,給出對能需求和設計約束的說明、合適的驗收標準,給出對目標軟件的各種需求。目標軟件的各種需求。n軟件需求規格說明書應具有以下特點:正確性、無歧軟件需求規格說明書應具有以下特點:正確性、無歧義性、完整性、可驗證性、一致性、可理解性、可修義性、完整性、可驗證性、一致
21、性、可理解性、可修改性、可追蹤性。改性、可追蹤性。3.3 結構化設計方法3.3.1 基本概念基本概念n* 需求分析主要解決需求分析主要解決“做什么做什么”的問題,而軟件設計的問題,而軟件設計主要解決主要解決“怎么做怎么做”的問題。的問題。n一旦軟件需求確定之后,就進入開發階段。開發階段一旦軟件需求確定之后,就進入開發階段。開發階段由三個互相關聯的步驟組成:設計、實現和測試。由三個互相關聯的步驟組成:設計、實現和測試。n軟件設計是開發階段最重要的步驟。軟件設計是開發階段最重要的步驟。n按工程管理角度可分為兩步:按工程管理角度可分為兩步:概要設計和詳細設計概要設計和詳細設計。n從技術觀點來看,軟件
22、設計包括軟件從技術觀點來看,軟件設計包括軟件結構設計、數據結構設計、數據設計、接口設計、過程設計設計、接口設計、過程設計。軟件設計的基本原理n軟件設計的基本原理包括:軟件設計的基本原理包括:1)抽象)抽象2)模塊化)模塊化3)信息隱蔽)信息隱蔽4)模塊獨立性:軟件系統中每個模塊只涉及軟件要求的具體的)模塊獨立性:軟件系統中每個模塊只涉及軟件要求的具體的子功能,而和軟件系統中其他的模塊的接口是簡單的。子功能,而和軟件系統中其他的模塊的接口是簡單的。* 模塊分解的主要指導思想是模塊分解的主要指導思想是信息隱蔽信息隱蔽和和模塊獨立性模塊獨立性。n模塊的模塊的耦合性耦合性和和內聚性內聚性是衡量軟件的模
23、塊獨立性的兩是衡量軟件的模塊獨立性的兩個定性指標。一個設計良好的軟件系統應具有個定性指標。一個設計良好的軟件系統應具有高內聚高內聚、低耦合、低耦合的特征。的特征。 3.3.2概要設計n概要設計又稱總體設計。概要設計又稱總體設計。n軟件概要設計的基本任務軟件概要設計的基本任務是:是:(熟記)(熟記)1)設計軟件系統結構;)設計軟件系統結構;2)數據結構及數據庫設計;)數據結構及數據庫設計;3)編寫概要設計文檔;)編寫概要設計文檔;4)概要設計文檔評審。)概要設計文檔評審。概要概要設計設計設計設計文檔文檔設計軟件系統結構設計軟件系統結構設計數據結構和數據庫設計數據結構和數據庫編寫概要設計文檔編寫概
24、要設計文檔評審評審概要設計說明書概要設計說明書:就是根據需求分析階段產生的圖書管:就是根據需求分析階段產生的圖書管理系統的需求規格,擬定相應的系統說明書,建立管理理系統的需求規格,擬定相應的系統說明書,建立管理系統的總體結構。此份文檔將確定系統中每個程序是由系統的總體結構。此份文檔將確定系統中每個程序是由哪些模塊組成,及各個模塊的功能;確定模塊相互間的哪些模塊組成,及各個模塊的功能;確定模塊相互間的關系;設計全局數據庫和數據結構;制定測試計劃;審關系;設計全局數據庫和數據結構;制定測試計劃;審核和復審。核和復審。結構圖(一)n常用的軟件結構設計工具是結構圖常用的軟件結構設計工具是結構圖(SC,
25、Stucture Chart),也稱程序結構圖。,也稱程序結構圖。n模塊用一個矩形表示;箭頭(或直線)表示模塊間的模塊用一個矩形表示;箭頭(或直線)表示模塊間的調用關系;用帶注釋的箭頭表示模塊調用過程中來回調用關系;用帶注釋的箭頭表示模塊調用過程中來回傳遞的信息。還可用帶實心圓的箭頭表示傳遞的是控傳遞的信息。還可用帶實心圓的箭頭表示傳遞的是控制信息,空心圓箭心表示傳遞的是數據信息。制信息,空心圓箭心表示傳遞的是數據信息。 一般模塊一般模塊數據信息數據信息控制信息控制信息結構圖(二)n經常使用的結構圖有四種模塊類型,分別是:經常使用的結構圖有四種模塊類型,分別是:n傳入模塊:傳入模塊:從下屬模塊
26、取得數據,經處理再將其傳送給上級從下屬模塊取得數據,經處理再將其傳送給上級模塊。模塊。n傳出模塊:傳出模塊:從上級模塊取得數據,經處理再將其傳送給下屬從上級模塊取得數據,經處理再將其傳送給下屬模塊。模塊。n變換模塊:變換模塊:從上級模塊取得數據,進行特定的處理,轉換成從上級模塊取得數據,進行特定的處理,轉換成其他形式,再傳送給上級模塊。其他形式,再傳送給上級模塊。n協調模塊:協調模塊:對所有下屬模塊進行協調和管理的模塊。對所有下屬模塊進行協調和管理的模塊。程序結構圖的例圖及有關術語 n深度:表示控制的層深度:表示控制的層數。數。n寬度:整體控制跨度寬度:整體控制跨度(最大模塊數的層)(最大模塊
27、數的層)的表示。的表示。n扇入:調用一個給定扇入:調用一個給定模塊的模塊個數。模塊的模塊個數。n扇出:一個模塊直接扇出:一個模塊直接調用的其他模塊數。調用的其他模塊數。面向數據流的設計方法n面向數據流的設計方法定義了一些不同的映射方法,面向數據流的設計方法定義了一些不同的映射方法,利用這些方法可以利用這些方法可以把數據流圖(把數據流圖(DFD)變換成結構圖)變換成結構圖(SC)表示軟件的結構。表示軟件的結構。n數據流的類型可以分為兩種類型:數據流的類型可以分為兩種類型:變換型變換型和和事務型事務型。n變換型:變換型數據處理問題的工作過程大致分為三步,即變換型:變換型數據處理問題的工作過程大致分
28、為三步,即取得數據、變換數據和輸出數據。變換型系統結構圖由輸入取得數據、變換數據和輸出數據。變換型系統結構圖由輸入、變換中心、輸出三部分組成。、變換中心、輸出三部分組成。n事務型:事務型數據處理問題的工作機理是接受一項事務,事務型:事務型數據處理問題的工作機理是接受一項事務,根據事務處理的特點和性質,選擇分派一個適當的處理單元根據事務處理的特點和性質,選擇分派一個適當的處理單元,然后給出結果。,然后給出結果。3.3.3詳細設計n詳細設計是為軟件結構圖中的每一個模塊確定實現算詳細設計是為軟件結構圖中的每一個模塊確定實現算法和局部數據結構,用某種選定的表達工具表示算法法和局部數據結構,用某種選定的
29、表達工具表示算法和數據結構的細節。和數據結構的細節。n* 詳細設計的任務是確定實現算法和局部數據結構,詳細設計的任務是確定實現算法和局部數據結構,不同于編碼或編程。不同于編碼或編程。n常用的過程設計(即詳細設計)工具有以下幾種:常用的過程設計(即詳細設計)工具有以下幾種:n圖形工具:程序流程圖、圖形工具:程序流程圖、N-S(方盒圖)、(方盒圖)、PAD(問題分析圖(問題分析圖)和)和HIPO(層次圖(層次圖+輸入輸入/處理處理/輸出圖)。輸出圖)。n表格工具:判定表。表格工具:判定表。n語言工具:語言工具:PDL。1.程序流程圖n 一個加工步驟;一個加工步驟; 一個邏輯條件;一個邏輯條件; 控
30、制流。控制流。 A B A B A exp exp (a) (b) (c) 順序結構順序結構 選擇結構選擇結構 循環結構循環結構 T F F T 2.N-S圖 處理處理 1 處理處理 2 處理處理 3 else 部分部分 條件條件 F T else 部分部分 case 條件條件 值值 1 值值 2 值值 n case 1 部分部分 case 2 部分部分 case n 部分部分 (a) 順序順序 (b) if-then-else 型分型型分型 (c) case 型多分支型多分支 循環條件循環條件 do-while 部分部分 repeat - until 部分部分 循環條件循環條件 子程序子程序
31、 P (d) 循環循環 (e) 調用子程調用子程 P 3.PAD圖 P2 P2 P2 P2 Pn P1 while C C L1 L2 Ln X= (a) 順序順序 (b) 選擇選擇 (c) case多型分支多型分支 P P until C (d) while型循環型循環 (e) until 型循環型循環 P2 4.PDLnProcedure Design Language ,過程設計語言。,過程設計語言。n簡稱偽碼,它是用正文形式表示數據和處理過程的設簡稱偽碼,它是用正文形式表示數據和處理過程的設計工具。計工具。n基本控制結構的常用詞匯:基本控制結構的常用詞匯:n選擇:選擇:IF/THEN/
32、ELSE/ENDIFn循環:循環:DO WHILE/ENDDO, REPEAT UNTIL/ENDREPEATn分支:分支:CASE_OF/WHEN/SELECT/ENDCASE3.4 軟件測試n軟件測試軟件測試就是在軟件投入運行之前,盡可能多地發現就是在軟件投入運行之前,盡可能多地發現軟件中的錯誤。軟件中的錯誤。n軟件測試是保證軟件質量、可靠性的關鍵步驟。是對軟件測試是保證軟件質量、可靠性的關鍵步驟。是對軟件規格說明、設計和編碼的最后復審。軟件規格說明、設計和編碼的最后復審。n通常,軟件測試的工作量占軟件開發總工作量的通常,軟件測試的工作量占軟件開發總工作量的40%以上。以上。3.4.1軟件
33、測試的目的和準則n軟件測試的目的軟件測試的目的n測試是為了發現程序中的錯誤而執行程序的過程。測試是為了發現程序中的錯誤而執行程序的過程。n好的測試用例能找到迄今為止尚未發現的錯誤。好的測試用例能找到迄今為止尚未發現的錯誤。n一次成功的測試是能發現至今為止尚未發現的錯誤。一次成功的測試是能發現至今為止尚未發現的錯誤。n* 盡可能地多發現程序中的錯誤,不能也不可能證明盡可能地多發現程序中的錯誤,不能也不可能證明程序沒有錯誤。程序沒有錯誤。軟件測試的準則n所有測試都應追溯到用戶需求。所有測試都應追溯到用戶需求。n在測試之前制定測試計劃,并嚴格執行。在測試之前制定測試計劃,并嚴格執行。n充分注意測試中
34、的群集現象。充分注意測試中的群集現象。n群集現象群集現象是指在測試中發現缺陷越多的地方,存在的未被發是指在測試中發現缺陷越多的地方,存在的未被發現的缺陷也就越多。現的缺陷也就越多。 n避免由程序的編寫者測試自己的程序。避免由程序的編寫者測試自己的程序。n不可能進行窮舉測試。不可能進行窮舉測試。n妥善保存測試計劃、測試用例、出錯統計和最終分析妥善保存測試計劃、測試用例、出錯統計和最終分析報告,為維護提供方便。報告,為維護提供方便。3.4.2軟件測試方法n依據軟件是否需要執行,分為靜態測試和動態測試。依據軟件是否需要執行,分為靜態測試和動態測試。n依據功能劃分,分為白盒測試和黑盒測試。依據功能劃分
35、,分為白盒測試和黑盒測試。n靜態測試:靜態測試:包括代碼檢查、靜態結構分析、代碼質量包括代碼檢查、靜態結構分析、代碼質量度量。度量。不實際運行軟件,主要通過人工進行不實際運行軟件,主要通過人工進行。n動態測試:動態測試:又稱上機測試,主要包括又稱上機測試,主要包括白盒測試白盒測試方法和方法和黑盒測試黑盒測試方法。方法。 3.4.3白盒測試n白盒測試是把程序看成裝在一只透明的白盒子里,測白盒測試是把程序看成裝在一只透明的白盒子里,測試者完全了解程序的結構和處理過程。試者完全了解程序的結構和處理過程。n白盒測試方法也稱為結構測試或邏輯驅動測試。它允白盒測試方法也稱為結構測試或邏輯驅動測試。它允許測
36、試人員利用程序內部的邏輯結構及有關信息來設許測試人員利用程序內部的邏輯結構及有關信息來設計或選擇測試用例,對程序的邏輯路徑進行測試。計或選擇測試用例,對程序的邏輯路徑進行測試。n它在程序內部進行,主要用于完成軟件內部操縱的驗它在程序內部進行,主要用于完成軟件內部操縱的驗證。證。白盒測試的基本原則n保證所測模塊中每一獨立路徑至少執行一次;保證所保證所測模塊中每一獨立路徑至少執行一次;保證所測模塊所有判斷的每一分支至少執行一次;保證所測測模塊所有判斷的每一分支至少執行一次;保證所測模塊每一循環都在邊界條件和一般條件下至少各執行模塊每一循環都在邊界條件和一般條件下至少各執行一次;驗證所有內部數據結構
37、的有效性。一次;驗證所有內部數據結構的有效性。n白盒測試的主要技術有白盒測試的主要技術有邏輯覆蓋測試、基本路徑測試邏輯覆蓋測試、基本路徑測試等。等。1.邏輯覆蓋測試n邏輯覆蓋泛指一系列以程序內部的邏輯結構為基礎的測試用例設邏輯覆蓋泛指一系列以程序內部的邏輯結構為基礎的測試用例設計技術。通常程序中的邏輯表示有判斷、分支、條件等幾種表示計技術。通常程序中的邏輯表示有判斷、分支、條件等幾種表示方法。方法。 n語句覆蓋:語句覆蓋:選擇足夠的測試用例,使得程序中每一個語句至少都能選擇足夠的測試用例,使得程序中每一個語句至少都能被執行一次。被執行一次。n路徑覆蓋:路徑覆蓋:執行足夠的測試用例,使程序中所有
38、的可能的路徑都至執行足夠的測試用例,使程序中所有的可能的路徑都至少經歷一次。少經歷一次。n判定覆蓋:判定覆蓋:使設計的測試用例保證程序中每個判斷的每個取值分支使設計的測試用例保證程序中每個判斷的每個取值分支(T或或F)至少經歷一次。)至少經歷一次。n條件覆蓋:條件覆蓋:設計的測試用例保證程序中每個判斷的每個條件的可能設計的測試用例保證程序中每個判斷的每個條件的可能取值至少執行一次。取值至少執行一次。n判斷判斷-條件覆蓋:條件覆蓋:設計足夠的測試用例,使判斷中每個條件的所有可設計足夠的測試用例,使判斷中每個條件的所有可能取值至少執行一次,同時每個判斷的所有可能取值分支至少執行能取值至少執行一次,
39、同時每個判斷的所有可能取值分支至少執行一次。一次。n* 邏輯覆蓋的強度依次是:語句覆蓋邏輯覆蓋的強度依次是:語句覆蓋路徑覆蓋路徑覆蓋判定覆蓋判定覆蓋條件條件覆蓋覆蓋判斷判斷-條件覆蓋。條件覆蓋。2.基本路徑測試n其思想和步驟是:其思想和步驟是:根據軟件過程性描述中的控制流程確定程序的環根據軟件過程性描述中的控制流程確定程序的環路復雜性度量,用此度量定義基本路徑集合,并由此路復雜性度量,用此度量定義基本路徑集合,并由此導出一組測試用例,對每一條獨立執行路徑進行測試導出一組測試用例,對每一條獨立執行路徑進行測試。n環路復雜度環路復雜度=程序流程圖中的判斷框個數程序流程圖中的判斷框個數+13.4.3
40、黑盒測試n* 白盒測試在測試過程的早期階段進行,而黑盒測試白盒測試在測試過程的早期階段進行,而黑盒測試主要用于軟件的主要用于軟件的確認測試確認測試。n黑盒測試是把程序看成一只黑盒子,測試者完全不了黑盒測試是把程序看成一只黑盒子,測試者完全不了解,或不考慮程序的結構和處理過程。解,或不考慮程序的結構和處理過程。n黑盒測試方法也稱為功能測試或數據驅動測試。黑盒黑盒測試方法也稱為功能測試或數據驅動測試。黑盒測試是對軟件已經實現的功能測試是對軟件已經實現的功能是否滿足需求(需求規是否滿足需求(需求規格說明書)格說明書)進行測試和驗證。進行測試和驗證。n黑盒測試不關心程序內部的邏輯,只是根據黑盒測試不關
41、心程序內部的邏輯,只是根據程序的功程序的功能說明能說明來設計測試用例。來設計測試用例。n* 主要方法有主要方法有等價類劃分法、邊界值分析法、錯誤推等價類劃分法、邊界值分析法、錯誤推測法測法等。等。常用黑盒測試方法n等價類劃分法:等價類劃分法:這是一種典型的黑盒測試方法,它是這是一種典型的黑盒測試方法,它是將程序的所有可能的輸入數據劃分成若干部分(及若將程序的所有可能的輸入數據劃分成若干部分(及若干等價類),然后從每個等價類中選取數據作為測試干等價類),然后從每個等價類中選取數據作為測試用例。用例。n邊界值分析法:邊界值分析法:它是對各種輸入、輸出范圍的邊界情它是對各種輸入、輸出范圍的邊界情況設
42、計測試用例的方法。況設計測試用例的方法。n錯誤推測法:錯誤推測法:人們可以靠經驗和直覺推測程序中可能人們可以靠經驗和直覺推測程序中可能存在的各種錯誤,從而有針對性地編寫檢查這些錯誤存在的各種錯誤,從而有針對性地編寫檢查這些錯誤的用例。的用例。 3.4.5軟件測試的實施n軟件測試過程一般按軟件測試過程一般按4個步驟進行:個步驟進行:單元測試、集成測單元測試、集成測試、確認測試和系統測試試、確認測試和系統測試。 (熟記)(熟記)1.單元測試單元測試n單元測試是對軟件設計的最小單位單元測試是對軟件設計的最小單位模塊(程序單模塊(程序單元)進行正確性檢測的測試,目的是發現各模塊內部元)進行正確性檢測的
43、測試,目的是發現各模塊內部可能存在的各種錯誤。在可能存在的各種錯誤。在編碼階段編碼階段進行。進行。n單元測試根據單元測試根據程序的內部結構程序的內部結構來設計測試用例,其依來設計測試用例,其依據是據是詳細設計說明書和源程序詳細設計說明書和源程序。單元測試的技術可以。單元測試的技術可以采用靜態分析和動態測試。對動態測試通常以采用靜態分析和動態測試。對動態測試通常以白盒測白盒測試試為主,輔之以黑盒測試。為主,輔之以黑盒測試。單元測試n單元測試的內容包括:模塊接口測試、局部數據結構單元測試的內容包括:模塊接口測試、局部數據結構測試、錯誤處理測試和邊界測試。測試、錯誤處理測試和邊界測試。n* 在進行單
44、元測試時,要用一些輔助模塊去模擬與被在進行單元測試時,要用一些輔助模塊去模擬與被測模塊相聯系的其他模塊,即為被測模塊設計和搭建測模塊相聯系的其他模塊,即為被測模塊設計和搭建驅動模塊和樁模塊。驅動模塊和樁模塊。n驅動模塊相當于被測模塊的主程序,驅動模塊相當于被測模塊的主程序,它接收測試數據,并傳給被測模塊,它接收測試數據,并傳給被測模塊,輸出實際測試結果;輸出實際測試結果;n樁模塊是模擬其他被調用模塊,不樁模塊是模擬其他被調用模塊,不必將子模塊的所有功能帶入。必將子模塊的所有功能帶入。驅動模塊驅動模塊被測模塊被測模塊樁模塊樁模塊1 1樁模塊樁模塊2 2樁模塊樁模塊3 32.集成測試n集成測試是測
45、試和組裝軟件的過程,它是把模塊在按集成測試是測試和組裝軟件的過程,它是把模塊在按照設計要求組裝起來的同時進行測試,主要目的是發照設計要求組裝起來的同時進行測試,主要目的是發現與現與接口有關接口有關的錯誤。的錯誤。n集成測試主要發現設計階段產生的錯誤,其依據是集成測試主要發現設計階段產生的錯誤,其依據是概概要設計說明書要設計說明書。通常采用黑盒測試。通常采用黑盒測試。n集成測試所涉及的內容包括:集成測試所涉及的內容包括:軟件單元的接口測試、軟件單元的接口測試、全局數據結構測試、邊界條件全局數據結構測試、邊界條件和和非法輸入的測試非法輸入的測試等。等。集成測試n集成測試通常采用兩種方式:集成測試通
46、常采用兩種方式:n非增量方式組裝:非增量方式組裝:也稱為一次性組裝方式。首先對每個模塊也稱為一次性組裝方式。首先對每個模塊分別進行模塊測試,然后再把所有模塊組裝在一起進行測試分別進行模塊測試,然后再把所有模塊組裝在一起進行測試,最終得到要求的軟件系統。,最終得到要求的軟件系統。n增量方式組裝:增量方式組裝:又稱漸增式集成方式。首先對一個個模塊進又稱漸增式集成方式。首先對一個個模塊進行模塊測試,然后將這些模塊逐步組裝成較大的系統,在組行模塊測試,然后將這些模塊逐步組裝成較大的系統,在組裝的過程中邊連接邊測試,以發現連接過程中產生的問題。裝的過程中邊連接邊測試,以發現連接過程中產生的問題。最后通過
47、增殖逐步組裝成要求的軟件系統。增量方式組裝又最后通過增殖逐步組裝成要求的軟件系統。增量方式組裝又包括自頂向下、自底向上、自頂向下與自底向上相結合等三包括自頂向下、自底向上、自頂向下與自底向上相結合等三種方式。種方式。3.確認測試n確認測試的任務是驗證確認測試的任務是驗證軟件的有效性軟件的有效性,即驗證軟件的,即驗證軟件的功能和性能及其他特性是否與用戶的要求一致。功能和性能及其他特性是否與用戶的要求一致。n確認測試的主要依據是確認測試的主要依據是軟件需求規格說明書軟件需求規格說明書。n確認測試主要運用確認測試主要運用黑盒測試法黑盒測試法。4.系統測試n系統測試的目的在于通過與系統的需求定義進行比較系統測試的目的在于通過與系統的需求定義進行比較,發現軟件與系統定義不符合或與之矛盾的地方。,發現軟件與系統定義不符合或與之矛盾的地方。n系
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度浙江省二級造價工程師之建設工程造價管理基礎知識押題練習試題B卷含答案
- 公司新聞培訓課件
- 增值稅稅率表
- 重癥肺炎合并I型呼吸衰竭查房要點
- 高考生物核心考點考前沖刺 免疫調節(含解析)
- 學校選拔面試題及答案
- 保險銷售講課課件
- 職業教育學體系構建與實踐路徑
- 冬季防破冰安全教育
- 校園健康生活與快樂成長指南
- 2024山西焦煤集團公司招聘易考易錯模擬試題(共500題)試卷后附參考答案
- 2024年度工廠整體搬遷勞動力外包合同
- 水利工程閥門安裝及調試方案
- 旅游住宿安排協議
- CT設備故障處理及應急方案
- 代持股協議書
- 【網易云聽音樂的品牌營銷問題及優化建議探析(論文)11000字】
- 歷屆“挑戰杯”全國大學生課外科技學術作品競賽獲獎作品
- 遼寧省錦州市2023-2024學年高二下學期期末考試+政治試卷(含答案)
- 貴州省2024年小升初語文模擬考試試卷(含答案)
- 會員體系構建與個性化服務提升策略
評論
0/150
提交評論