軟件工程學:實現(xiàn)_第1頁
軟件工程學:實現(xiàn)_第2頁
軟件工程學:實現(xiàn)_第3頁
軟件工程學:實現(xiàn)_第4頁
軟件工程學:實現(xiàn)_第5頁
已閱讀5頁,還剩48頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、通常把編碼和測試統(tǒng)稱為實現(xiàn)。通常把編碼和測試統(tǒng)稱為實現(xiàn)。第第7章章 實實 現(xiàn)現(xiàn) 本章介紹編碼和測試兩個階段,其中主要介紹進行單元本章介紹編碼和測試兩個階段,其中主要介紹進行單元測試、集成測試、確認測試的方法和步驟,設計測試方案的測試、集成測試、確認測試的方法和步驟,設計測試方案的白盒和黑盒測試技術,以及軟件可靠性的相關概念。白盒和黑盒測試技術,以及軟件可靠性的相關概念。 軟件測試的軟件測試的任務任務:根據(jù)軟件開發(fā)各階段的文檔資料和程序的內:根據(jù)軟件開發(fā)各階段的文檔資料和程序的內部結構,精心設計一組測試方案,用這些方案執(zhí)行程序,找出軟部結構,精心設計一組測試方案,用這些方案執(zhí)行程序,找出軟件中潛

2、在的各種錯誤和缺陷,并進行調試糾錯。件中潛在的各種錯誤和缺陷,并進行調試糾錯。 編碼是詳細設計的自然結果,是將詳細設計得到的處理過程描編碼是詳細設計的自然結果,是將詳細設計得到的處理過程描述轉換為基于某種程序設計語言的程序。述轉換為基于某種程序設計語言的程序。 軟件測試的軟件測試的目的目的:在軟件投入生產運行之前,盡可能多地發(fā)現(xiàn):在軟件投入生產運行之前,盡可能多地發(fā)現(xiàn)軟件中的錯誤和缺陷。軟件中的錯誤和缺陷。 防不勝防的軟件錯誤防不勝防的軟件錯誤 例例1:1963年年, 美國美國, 飛往火星的火箭爆炸飛往火星的火箭爆炸, 損失損失$ 10 million. 原因原因: FORTRAN循環(huán)循環(huán) D

3、O 5 I = 1, 3 誤寫為誤寫為 DO 5 I = 1.3例例2:1996年,美國年,美國 Washington Post 報導報導Dallas, Aug. 23 The captain of an American Airlines jet that crashed in Colombia last December entered an incorrect one-letter computer command that sent the plane into a mountain, the airline said today.第第7章章 實現(xiàn)實現(xiàn)第第7章章 實現(xiàn)實現(xiàn)The cra

4、sh killed all but four of the 163 people aboard.Americans investigators concluded that the captain of the Boeing 757 apparently thought he had entered the coordinates for the intended destination, Cali.But on most South American aeronautical charts, the one-letter code for Cali is the same as the on

5、e for Bogota, 132 miles in the opposite direction.The coordinates for Bogota directed the plane toward the mountain, according to a letter by Cecil Ewell, Americans chief pilot and vice president for flight. The codes for Bogota and Cali are different in most computer databases, Ewell said. 軟件測試是保證軟

6、件質量的關鍵步驟,是對軟件測試是保證軟件質量的關鍵步驟,是對軟件規(guī)格說明、設計和編碼的最后復審,其工作軟件規(guī)格說明、設計和編碼的最后復審,其工作量約占總工作量量約占總工作量40%以上(對于人命關天的系統(tǒng),以上(對于人命關天的系統(tǒng),測試相當于其它開發(fā)總成本的測試相當于其它開發(fā)總成本的3 - 5倍倍)。)。 這意味著,寫出程序代碼并不是開發(fā)工作接這意味著,寫出程序代碼并不是開發(fā)工作接近完成,實際上還有大約同樣多甚至更多的工作近完成,實際上還有大約同樣多甚至更多的工作需要做。需要做。第第7章章 實現(xiàn)實現(xiàn)1. 編碼編碼2、編碼風格、編碼風格程序代碼應簡明清晰、易讀易懂,應遵循以下規(guī)則:程序代碼應簡明清

7、晰、易讀易懂,應遵循以下規(guī)則: 程序內部應該有很好的文檔(標示符、注釋、組織等)程序內部應該有很好的文檔(標示符、注釋、組織等) 數(shù)據(jù)說明應該易于理解便于查閱(說明次序、實現(xiàn)方法等)數(shù)據(jù)說明應該易于理解便于查閱(說明次序、實現(xiàn)方法等) 語句構造應該盡可能簡單直觀語句構造應該盡可能簡單直觀 輸入輸出風格遵守人機界面設計準則輸入輸出風格遵守人機界面設計準則 效率滿足用戶需求即可(運行時間、存儲效率、效率滿足用戶需求即可(運行時間、存儲效率、I/O效率等)效率等)2. 軟件測試基礎軟件測試基礎定義:測試是為了定義:測試是為了發(fā)現(xiàn)程序中的錯誤發(fā)現(xiàn)程序中的錯誤而執(zhí)行程序的過程。而執(zhí)行程序的過程。1、軟件

8、測試的目標、軟件測試的目標目標:證明程序有錯誤,從而發(fā)現(xiàn)錯誤并排除錯誤。目標:證明程序有錯誤,從而發(fā)現(xiàn)錯誤并排除錯誤。2、軟件測試指導原則、軟件測試指導原則 所有的測試都應該追溯到用戶需求所有的測試都應該追溯到用戶需求 應該在測試開始之前制定嚴格的測試計劃應該在測試開始之前制定嚴格的測試計劃 把把Pareto原理應用到軟件測試中原理應用到軟件測試中 應該從應該從“小模塊小模塊”開始,逐步過渡到開始,逐步過渡到“大模塊大模塊”的測試的測試 不可能進行窮舉測試不可能進行窮舉測試 測試方案應作為文檔長期保存測試方案應作為文檔長期保存 應該由獨立的第三方進行測試應該由獨立的第三方進行測試3、軟件測試方

9、法與技術、軟件測試方法與技術2. 軟件測試基礎軟件測試基礎(1)靜態(tài)測試與動態(tài)測試)靜態(tài)測試與動態(tài)測試 靜態(tài)測試靜態(tài)測試是指被測試程序不在機器上運行,而是采用人工測是指被測試程序不在機器上運行,而是采用人工測試或計算機輔助分析的手段對程序進行的測試。試或計算機輔助分析的手段對程序進行的測試。 動態(tài)測試動態(tài)測試是指通過實際運行被測試程序從而發(fā)現(xiàn)錯誤的測試。是指通過實際運行被測試程序從而發(fā)現(xiàn)錯誤的測試。(2)黑盒測試與白盒測試)黑盒測試與白盒測試 黑盒測試黑盒測試(black-box , or closed-box testing): Make sure that every kind of in

10、put is submitted, and the output observed matches the output expected. Functional testing白盒測試白盒測試(white-box , or open-box, clear-box testing): Use the structure of the program to test. Structural testing 動態(tài)測試三過程:設計方案、執(zhí)行程序、分析結果并發(fā)現(xiàn)錯誤動態(tài)測試三過程:設計方案、執(zhí)行程序、分析結果并發(fā)現(xiàn)錯誤(3)窮舉測試與選擇測試)窮舉測試與選擇測試2. 軟件測試基礎軟件測試基礎14141

11、6161616161610103 32 22 22 2若程序若程序1次執(zhí)行需次執(zhí)行需10-3秒,秒,則對于所有合法輸入的測試大約則對于所有合法輸入的測試大約需用需用1萬年,而且還應測試輸入萬年,而且還應測試輸入非法數(shù)據(jù)的情況。非法數(shù)據(jù)的情況。 因此因此:窮舉測試:窮舉測試(complete test)通常通常是不可能的,說明黑盒、是不可能的,說明黑盒、白盒測試都不可能使測試達到徹底。在實際中只能選擇一些有白盒測試都不可能使測試達到徹底。在實際中只能選擇一些有代表性的典型用例進行有限測試。代表性的典型用例進行有限測試。例例1:(Black-box) 程序要求輸入程序要求輸入3個整型數(shù)據(jù)。若字長個

12、整型數(shù)據(jù)。若字長16位,則各位,則各種可能輸入的排列組合共有種可能輸入的排列組合共有 (種)(種)例例2:(White-box) 右圖所示的程序中右圖所示的程序中共有共有 520 1014條可能的執(zhí)行通路,條可能的執(zhí)行通路,顯然,每條通路都執(zhí)行一遍是不顯然,每條通路都執(zhí)行一遍是不現(xiàn)實的?,F(xiàn)實的。循環(huán)循環(huán)2020次次4、軟件測試步驟、軟件測試步驟(1) Module testing program design & coding bugs2. 軟件測試基礎軟件測試基礎(2) Subsystem testing connections between modules 又稱單元測試,發(fā)現(xiàn)并改正程序模

13、塊中的錯誤,保證模塊正確又稱單元測試,發(fā)現(xiàn)并改正程序模塊中的錯誤,保證模塊正確實現(xiàn)規(guī)定的功能。測試在編碼或詳細設計中的錯誤。實現(xiàn)規(guī)定的功能。測試在編碼或詳細設計中的錯誤。(4) Acceptance testing customer joins in 把經(jīng)過模塊測試的模塊組裝在一起形成子系統(tǒng)進行的測試,測把經(jīng)過模塊測試的模塊組裝在一起形成子系統(tǒng)進行的測試,測試模塊間相互協(xié)調和通信錯誤。試模塊間相互協(xié)調和通信錯誤。(3) System testing requirements & system design 把經(jīng)過測試的子系統(tǒng)組裝成一個完整的系統(tǒng)進行的測試,測試與把經(jīng)過測試的子系統(tǒng)組裝成一個完整

14、的系統(tǒng)進行的測試,測試與設計有關的軟件系統(tǒng)結構中的錯誤。設計有關的軟件系統(tǒng)結構中的錯誤。 子系統(tǒng)測試和系統(tǒng)測試統(tǒng)稱為集成測試子系統(tǒng)測試和系統(tǒng)測試統(tǒng)稱為集成測試(Integration testing)。 把軟件作為單一的實體進行的測試,測試是否滿足需求規(guī)格說把軟件作為單一的實體進行的測試,測試是否滿足需求規(guī)格說明中確定的各種需求。明中確定的各種需求。2. 軟件測試基礎軟件測試基礎測試測試評價評價調試調試可靠性可靠性模型模型軟件配置軟件配置測試配置測試配置測試結果測試結果可靠性預測可靠性預測錯錯 誤誤正正 確確錯誤率數(shù)據(jù)錯誤率數(shù)據(jù)預期結果預期結果測試階段的信息流:測試階段的信息流:(5) Par

15、allel running compare the new system with the old one. 把軟件系統(tǒng)與舊系統(tǒng)同時運行來進行的測試,測試性能指標、把軟件系統(tǒng)與舊系統(tǒng)同時運行來進行的測試,測試性能指標、用戶指南手冊、讓用戶熟悉等。用戶指南手冊、讓用戶熟悉等。 通過運行得到結果與預期結果比較評價,不一致則找出錯誤進通過運行得到結果與預期結果比較評價,不一致則找出錯誤進行調試,同時收集可靠性指標。行調試,同時收集可靠性指標。3. 單元測試單元測試從模塊開始進行測試的好處:從模塊開始進行測試的好處: 減小測試工作的復雜性減小測試工作的復雜性 易于確定錯誤位置并進行調試糾錯易于確定錯誤

16、位置并進行調試糾錯 可同時對多個模塊進行測試可同時對多個模塊進行測試1、單元測試的內容、單元測試的內容 單元測試的單元測試的目的目的:是考察模塊的接口和內部結構是否符合模塊:是考察模塊的接口和內部結構是否符合模塊功能說明的要求。功能說明的要求。 (1)模塊接口)模塊接口 內部檢查:傳輸參數(shù)的數(shù)目、屬性、單位、次序是否匹配;內部檢查:傳輸參數(shù)的數(shù)目、屬性、單位、次序是否匹配;全程變量的定義是否一致;只做輸入的變元有無被修改,等等。全程變量的定義是否一致;只做輸入的變元有無被修改,等等。 外部檢查:打開、結束、關閉文件的操作;文件和屬性;外部檢查:打開、結束、關閉文件的操作;文件和屬性;I/O錯誤

17、處理;輸出拼寫,等等。錯誤處理;輸出拼寫,等等。主要測試以下五個方面:主要測試以下五個方面:(2)局部數(shù)據(jù)結構)局部數(shù)據(jù)結構 數(shù)據(jù)說明數(shù)據(jù)說明(declaration);初始化與缺省值的設置;變量名拼寫;初始化與缺省值的設置;變量名拼寫;數(shù)據(jù)類型的相容性;上數(shù)據(jù)類型的相容性;上下溢出及地址異常;等等下溢出及地址異常;等等3. 單元測試單元測試(3)重要的執(zhí)行通路)重要的執(zhí)行通路 由于窮盡測試不可能,故通常針對最常見的錯誤設計測試方案。由于窮盡測試不可能,故通常針對最常見的錯誤設計測試方案。較常見的錯誤有:計算次序問題;初值設置錯誤;表達式錯誤;較常見的錯誤有:計算次序問題;初值設置錯誤;表達式

18、錯誤;循環(huán)終止條件錯誤;等等循環(huán)終止條件錯誤;等等(4)出錯處理通路)出錯處理通路 預見出現(xiàn)錯誤的條件,設置處理。較常見的問題有:輸出的錯預見出現(xiàn)錯誤的條件,設置處理。較常見的問題有:輸出的錯誤信息難以理解,不能確定錯誤位置;描述的錯誤與實際錯誤不誤信息難以理解,不能確定錯誤位置;描述的錯誤與實際錯誤不符;處理之前系統(tǒng)已經(jīng)干預;處理不正確;等等符;處理之前系統(tǒng)已經(jīng)干預;處理不正確;等等(5)邊界條件)邊界條件 是單元測試的最后也可能是最重要的任務,因為軟件常在其邊是單元測試的最后也可能是最重要的任務,因為軟件常在其邊界失效。數(shù)組的邊界;循環(huán)的邊界;等等界失效。數(shù)組的邊界;循環(huán)的邊界;等等 人工

19、測試:人工測試:如由四人組成小組如由四人組成小組(包括包括header,author,programmer和和tester),逐行檢查源代碼。,逐行檢查源代碼。 預排預排(Rehearsal):由人扮演:由人扮演computer,模擬執(zhí)行情況。,模擬執(zhí)行情況。 優(yōu)點優(yōu)點: 一次審查可發(fā)現(xiàn)多個錯誤,不必改一個測一個。一次審查可發(fā)現(xiàn)多個錯誤,不必改一個測一個。3. 單元測試單元測試 制作測試程序:制作測試程序:Stub (存根)和(存根)和 Driver(驅動)程序的編寫,(驅動)程序的編寫,屬額外開支。模塊高內聚可簡化這一過程。屬額外開支。模塊高內聚可簡化這一過程。2、單元測試的手段、單元測試的

20、手段(1)代碼審查)代碼審查(code inspection)(2)計算機測試)計算機測試 Stub模塊的作用:是模擬被測試模塊所調用的下級模塊,返模塊的作用:是模擬被測試模塊所調用的下級模塊,返回被測試模塊所需的信息。回被測試模塊所需的信息。 Driver模塊的作用:是模擬被測試模塊的上級調用模塊,驅動模塊的作用:是模擬被測試模塊的上級調用模塊,驅動被測試模塊,接收被測試模塊的測試結果并輸出。被測試模塊,接收被測試模塊的測試結果并輸出。 例如:例如:P.1554. 集成測試集成測試 (Integration Testing)1、集成測試的內容、集成測試的內容單元測試以后進行集成測試是由于:單

21、元測試以后進行集成測試是由于: Stub和和Driver模塊與真實模塊并不完全等效模塊與真實模塊并不完全等效 模塊組裝后穿過模塊接口的數(shù)據(jù)可能丟失模塊組裝后穿過模塊接口的數(shù)據(jù)可能丟失 一個模塊的功能可能會對另一個模塊的功能產生不利的影響一個模塊的功能可能會對另一個模塊的功能產生不利的影響 各模塊的功能組裝起來可能達不到預期的功能各模塊的功能組裝起來可能達不到預期的功能 單個模塊可接受的誤差,組裝后可能積累或放大到不能接受單個模塊可接受的誤差,組裝后可能積累或放大到不能接受的程度的程度 全局數(shù)據(jù)可能出現(xiàn)引用問題全局數(shù)據(jù)可能出現(xiàn)引用問題 不正確的接口不正確的接口 因存取全局數(shù)據(jù)引起的塊間干擾因存取

22、全局數(shù)據(jù)引起的塊間干擾 不一致的文件與數(shù)據(jù)結構不一致的文件與數(shù)據(jù)結構 不適當?shù)哪K調用不適當?shù)哪K調用 出錯處理上的錯誤出錯處理上的錯誤(1)非漸增式測試)非漸增式測試 (Big-bang testing)4. 集成測試集成測試2、集成測試的方式、集成測試的方式集成測試通常采用黑盒測試的方法,主要有兩種:集成測試通常采用黑盒測試的方法,主要有兩種: 把經(jīng)過單元測試的模塊按設計要求組把經(jīng)過單元測試的模塊按設計要求組裝成所要的程序,再進行全程序的測試。裝成所要的程序,再進行全程序的測試。(2)漸增式測試)漸增式測試 (Incremental testing) 從一個模塊開始進行測試,每組裝一從一個

23、模塊開始進行測試,每組裝一個模塊進行一次測試,重復此過程直至個模塊進行一次測試,重復此過程直至程序組裝完畢。程序組裝完畢。Test A,B, C, DTestATestBTestCTestDTestATest A,B, C, DTestA,BTestA,B,C4. 集成測試集成測試 Incremental testing可以較早發(fā)現(xiàn)模塊間的接口錯誤;可以較早發(fā)現(xiàn)模塊間的接口錯誤;Big-bang testing 最后才組裝,因此錯誤發(fā)現(xiàn)得晚。最后才組裝,因此錯誤發(fā)現(xiàn)得晚。 Big-bang testing中發(fā)現(xiàn)錯誤后難以診斷定位;中發(fā)現(xiàn)錯誤后難以診斷定位;Incremental testing

24、中出現(xiàn)的錯誤往往跟最新加入的模塊有關。中出現(xiàn)的錯誤往往跟最新加入的模塊有關。 Incremental testing 在不斷集成的過程中使模塊不斷在新的條件在不斷集成的過程中使模塊不斷在新的條件下受到新的檢測,測試更徹底。下受到新的檢測,測試更徹底。 Incremental testing 較較 Big-bang testing 費時。費時。Big-bang testing 可以同時并行測試所有模塊,能充分利用人力??梢酝瑫r并行測試所有模塊,能充分利用人力。(3)兩種測試方式的比較)兩種測試方式的比較 第第1步:測試頂層模塊,用存根程序步:測試頂層模塊,用存根程序(Stub)代替直接附屬的下代

25、替直接附屬的下層模塊層模塊 Stub: to simulate the activity of the component which is not yet tested.4. 集成測試集成測試3、Incremental testing 的幾種策略的幾種策略MS1S2 Top-down testing第第2步:根據(jù)深度優(yōu)先或寬度優(yōu)先的策略,每次用一個實際模步:根據(jù)深度優(yōu)先或寬度優(yōu)先的策略,每次用一個實際模塊代換一個塊代換一個Stub。MS1S2M1S3S4M2S24. 集成測試集成測試第第3步:在結合進一個模塊的同時進行測試。步:在結合進一個模塊的同時進行測試。第第4步:回歸測試。步:回歸測試

26、?;貧w測試集包括以下測試用例:回歸測試集包括以下測試用例: 檢測軟件全部功能的代表性測試用例檢測軟件全部功能的代表性測試用例 專門針對可能受修改影響的軟件功能的附加測試專門針對可能受修改影響的軟件功能的附加測試 針對被修改過的軟件成分的測試針對被修改過的軟件成分的測試 回歸測試回歸測試(regression testing) :是指重新執(zhí)行已經(jīng)做過的測:是指重新執(zhí)行已經(jīng)做過的測試的某個子集,以保證當一個新模塊結合進來時,程序發(fā)生的試的某個子集,以保證當一個新模塊結合進來時,程序發(fā)生的變化沒有帶來非預期的副作用。變化沒有帶來非預期的副作用。4. 集成測試集成測試Top-down testing的

27、的優(yōu)點優(yōu)點: 能在早期即對主要控制及關鍵的抉擇進行檢驗。能在早期即對主要控制及關鍵的抉擇進行檢驗。 能較早顯示出整個程序的輪廓。能較早顯示出整個程序的輪廓。 不需要不需要Driver模塊,上級模塊采用真實模塊。模塊,上級模塊采用真實模塊。 高層模塊可以多次測試,使測試更徹底。高層模塊可以多次測試,使測試更徹底。Top-down testing的的缺點缺點: 設計較多設計較多Stub模塊,測試開銷大。模塊,測試開銷大。 Stub只是對低層模塊的模擬,許多重要的測試須推遲。只是對低層模塊的模擬,許多重要的測試須推遲。 早期不能并行進行,不能充分利用人力。早期不能并行進行,不能充分利用人力。第第2步

28、:用驅動程序步:用驅動程序(Driver)協(xié)調測試數(shù)據(jù)的協(xié)調測試數(shù)據(jù)的IO,測試子功能族。,測試子功能族。4. 集成測試集成測試Driver: to call a particular component and passes a test case to it.DM1M2 Bottom - up testing第第1步:把低層模塊組合成族,每族實現(xiàn)一個子功能。步:把低層模塊組合成族,每族實現(xiàn)一個子功能。MMMMMMMMMMMMDDDDDD第第3步:去掉步:去掉Driver,自下而上把子功能族合成更大的子功能族。,自下而上把子功能族合成更大的子功能族。4. 集成測試集成測試注意:注意:兩種集成

29、測試策略的優(yōu)、缺點剛好互補,但單用其中任一兩種集成測試策略的優(yōu)、缺點剛好互補,但單用其中任一種都不實際,通常根據(jù)軟件的特點將二者混用。種都不實際,通常根據(jù)軟件的特點將二者混用。Bottom - up testing的的優(yōu)點優(yōu)點: 不需要不需要Stub模塊,下級模塊采用真實模塊。模塊,下級模塊采用真實模塊。 隨著測試的進行,隨著測試的進行,Driver模塊逐漸減少。模塊逐漸減少。 比較容易設計測試用例。比較容易設計測試用例。 測試的早期可以并行工作。測試的早期可以并行工作。Bottom - up testing的的缺點缺點: 軟件系統(tǒng)的整體功能(輪廓)最后才清晰。軟件系統(tǒng)的整體功能(輪廓)最后才

30、清晰。 上層模塊的錯誤發(fā)現(xiàn)晚,這些全局性的錯誤影響范圍大。上層模塊的錯誤發(fā)現(xiàn)晚,這些全局性的錯誤影響范圍大。 Sandwich testing4. 集成測試集成測試Target layerTop-downBottom-up 對上層模塊采取對上層模塊采取Top-down testing,使能較早顯示軟件系,使能較早顯示軟件系統(tǒng)的功能。統(tǒng)的功能。 對某些關鍵模塊或全部的下層模塊采取對某些關鍵模塊或全部的下層模塊采取Bottom - up testing ,減少,減少Stub模塊并能合理利用人力。模塊并能合理利用人力。 Sandwich testing兼有前兩種集成測試策略的優(yōu)、缺點,兼有前兩種集成

31、測試策略的優(yōu)、缺點,取長補短,混合使用。取長補短,混合使用。5. 確認測試確認測試(Validation testing)內容:內容: 功能測試功能測試確認是否實現(xiàn)了需求規(guī)格說明書中規(guī)定的一確認是否實現(xiàn)了需求規(guī)格說明書中規(guī)定的一切功能;切功能; 性能測試性能測試確認執(zhí)行的響應時間和處理速度,占用內存確認執(zhí)行的響應時間和處理速度,占用內存和外存容量等;和外存容量等; 強度測試強度測試確認對強負荷的承受能力;確認對強負荷的承受能力; 軟件配置復查軟件配置復查檢查所有文檔資料的完整性、正確性。檢查所有文檔資料的完整性、正確性。任務:驗證軟件的有效性。任務:驗證軟件的有效性。手段:黑盒測試;用戶參與;

32、主要用實際數(shù)據(jù)進行測試。手段:黑盒測試;用戶參與;主要用實際數(shù)據(jù)進行測試。 Alpha測試測試在受控的環(huán)境中進行在受控的環(huán)境中進行 Beta測試測試在非受控環(huán)境中真實進行在非受控環(huán)境中真實進行有效性有效性是指軟件的功能和性能如同用戶所合理期望的那樣。是指軟件的功能和性能如同用戶所合理期望的那樣。6. 白盒測試技術白盒測試技術 設計測試方案是測試階段的關鍵性技術問題。其設計測試方案是測試階段的關鍵性技術問題。其任務任務包括:包括: 預定要測試的功能預定要測試的功能 設計輸入的測試數(shù)據(jù)設計輸入的測試數(shù)據(jù)(test cases) 列出預期結果列出預期結果(expected output) 設計測試方

33、案的設計測試方案的目標目標是:要確定一組最有效、最可能發(fā)現(xiàn)某是:要確定一組最有效、最可能發(fā)現(xiàn)某個錯誤或某類錯誤的測試數(shù)據(jù)。個錯誤或某類錯誤的測試數(shù)據(jù)。 測試用例測試用例1、邏輯覆蓋、邏輯覆蓋(Logical coverage) 邏輯覆蓋是一系列覆蓋測試的總稱,其基本思想是設計測試邏輯覆蓋是一系列覆蓋測試的總稱,其基本思想是設計測試用例,使在程序執(zhí)行時盡量執(zhí)行程序的所有邏輯結構(語句、條用例,使在程序執(zhí)行時盡量執(zhí)行程序的所有邏輯結構(語句、條件、路徑等)。件、路徑等)。6. 白盒測試技術白盒測試技術例:例:P.163 圖圖7.5問題:若問題:若AND錯寫錯寫為為OR,或,或X1錯寫錯寫為為X 1

34、AND B=0TA=2OR X 1TX = X / AX = X + 1返回返回FFTest case : A=2 , B=0 , X=4. 語句覆蓋語句覆蓋(Statement coverage)選擇足夠多的測試數(shù)據(jù),使被測程序中每個語句至少執(zhí)行一次。選擇足夠多的測試數(shù)據(jù),使被測程序中每個語句至少執(zhí)行一次。又稱分支覆蓋,在的基礎上,每個判定的每個分支至少執(zhí)又稱分支覆蓋,在的基礎上,每個判定的每個分支至少執(zhí)行一次。行一次。Test cases:A=3 , B=0 , X=3A=2 , B=1 , X=1問題:若問題:若X1錯寫為錯寫為X 1AND B=0TA=2OR X 1TX = X / A

35、X = X + 1返回返回FF 判定覆蓋判定覆蓋(Branch coverage)6. 白盒測試技術白盒測試技術 在的基礎上,使每個判定表達式的每個條件都取到各種可能在的基礎上,使每個判定表達式的每個條件都取到各種可能的結果。的結果。Test cases:A=2 , B=0 , X=4(滿足(滿足A1, B=0; A=2, X1)A=1, B=1, X=1(滿足滿足A 1, B 0; A 2, X 1)問:條件覆蓋問:條件覆蓋 ? 判定覆蓋判定覆蓋 答答: 不一定。不一定。 反例反例: A=2, B=0, X=1 A=1, B=1, X=2 判定判定/條件覆蓋:即條件覆蓋:即判定覆蓋判定覆蓋

36、條件覆蓋條件覆蓋 入口入口A 1AND B=0TA=2OR X 1TX = X / AX = X + 1返回返回FF 條件覆蓋條件覆蓋(Condition coverage)6. 白盒測試技術白盒測試技術 條件組合覆蓋條件組合覆蓋入口入口A 1AND B=0TA=2OR X 1TX = X / AX = X + 1返回返回FF全部可能的條件組合為:全部可能的條件組合為: A1, B=0 A1, B 0 A 1, B=0 A 1, B 0 A=2, X1 A=2, X 1 A 2, X1 A 2,X 1 Test cases: A=2, B=0, X=4 (T T) A=2. B=1, X=1

37、(F T) A=1, B=0, X=2 (F T) A=1, B=1, X=1 (F F)問題:沒有測試到(問題:沒有測試到(T F)的情形)的情形每個判定表達式中條件的各種可能組合都至少出現(xiàn)一次。每個判定表達式中條件的各種可能組合都至少出現(xiàn)一次。6. 白盒測試技術白盒測試技術 點覆蓋點覆蓋 邊覆蓋邊覆蓋= 語句覆蓋語句覆蓋 路徑覆蓋路徑覆蓋(Path coverage)= 判定覆蓋判定覆蓋Test cases: A=1 , B=1 , X=1 A=1 , B=1 , X=2 A=3 , B=0 , X=1 A=2 , B=0 , X=4 路徑覆蓋路徑覆蓋 條件組合覆蓋條件組合覆蓋考察考察Co

38、ntrol flow graph 的角度,還可考慮下述覆蓋:的角度,還可考慮下述覆蓋: 每條可能的路徑都至少執(zhí)行一次,若每條可能的路徑都至少執(zhí)行一次,若圖中有環(huán),則每個環(huán)至少經(jīng)過一次。圖中有環(huán),則每個環(huán)至少經(jīng)過一次。6. 白盒測試技術白盒測試技術2、控制結構測試、控制結構測試6. 白盒測試技術白盒測試技術 基本路徑測試基本路徑測試 基本路徑測試是基本路徑測試是T.McCabe提出的一種白盒測試技術,提出的一種白盒測試技術,其步驟如下:其步驟如下:第第1步步 根據(jù)過程設計結果畫出流圖。如根據(jù)過程設計結果畫出流圖。如P.16612345678910111213第第2步步 計算流圖的環(huán)形復雜度。計算

39、流圖的環(huán)形復雜度。V=6第第3步步 確定線性獨立路徑的基本集合。確定線性獨立路徑的基本集合。 獨立路徑獨立路徑是至少包含一條在定義該路徑是至少包含一條在定義該路徑之前不曾用過的邊。之前不曾用過的邊。Independent path:path1:1-2-10-11-13path4:1-2-3-4-5-8-9-2-path2:1-2-10-12-13path5:1-2-3-4-5-6-8-9-2-path3:1-2-3-10-11-13path6:1-2-3-4-5-6-7-8-9-2-第第4步步 設計可強制執(zhí)行基本集合中每條路徑的測試用例。設計可強制執(zhí)行基本集合中每條路徑的測試用例。注意注意:

40、基本路徑測試可以保證程序中每條語句至少執(zhí)行一次,且每個條基本路徑測試可以保證程序中每條語句至少執(zhí)行一次,且每個條件在執(zhí)行時都將分別取真、假值。件在執(zhí)行時都將分別取真、假值。 基本路徑測試中某些獨立路徑不能以獨立的方式測試?;韭窂綔y試中某些獨立路徑不能以獨立的方式測試。6. 白盒測試技術白盒測試技術 條件測試條件測試 條件測試技術設計的用例,能夠檢查程序模塊中包含的邏輯條件。條件測試技術設計的用例,能夠檢查程序模塊中包含的邏輯條件。其測試策略是:對于任何復合條件,設計用例以能保證真分支、假其測試策略是:對于任何復合條件,設計用例以能保證真分支、假分支及每個簡單條件都至少執(zhí)行一次。分支及每個簡單

41、條件都至少執(zhí)行一次。 K.C.Tai提出的提出的BRO(Branch and Relational Operator)測試是一測試是一種比較有效的條件測試策略:如果在條件中所有布爾量和關系算符種比較有效的條件測試策略:如果在條件中所有布爾量和關系算符都只出現(xiàn)一次而且沒有公共變量,則能保證發(fā)現(xiàn)該條件中的分支錯都只出現(xiàn)一次而且沒有公共變量,則能保證發(fā)現(xiàn)該條件中的分支錯和關系算符錯。和關系算符錯。 E1和和E2是算術表達式,是算術表達式,關系算符關系算符是是、 之一,之一,但僅需要但僅需要3個測試分別使個測試分別使E1的值小于、等于、大于的值小于、等于、大于E2就能夠發(fā)現(xiàn)算就能夠發(fā)現(xiàn)算符的錯誤。符的

42、錯誤。 如:如:E1關系算符關系算符E26. 白盒測試技術白盒測試技術例例1:B1 & B2 條件約束為條件約束為(D1,D2),約束集為,約束集為(t,t)、(t,f)、(f,t)例例2:B1 & (E1=E2) 條件約束為條件約束為(D1,D2),約束集為,約束集為(t,=)、(t,)、(f,=)例例3:(E1E2) & (E3=E4) 條件約束為條件約束為(D1,D2),約束集為,約束集為(,=)、(,)、(=,=)、(,=) BRO測試是利用條件測試是利用條件C的條件約束來設計測試用例:條件的條件約束來設計測試用例:條件C有有n個簡單條件,其條件約束定義為個簡單條件,其條件約束定義為D

43、=(D1,D2,Dn),如果在如果在C的一次執(zhí)的一次執(zhí)行過程中,每個簡單條件的輸出都滿足行過程中,每個簡單條件的輸出都滿足D中對應的約束,稱中對應的約束,稱C的這次的這次執(zhí)行覆蓋了執(zhí)行覆蓋了C的條件約束的條件約束D。注意注意: 條件測試易于度量條件的測試覆蓋率,由此指導附加測試的設計。條件測試易于度量條件的測試覆蓋率,由此指導附加測試的設計。 條件測試不僅檢測程序條件中的錯誤,同時可以檢測其他的錯誤。條件測試不僅檢測程序條件中的錯誤,同時可以檢測其他的錯誤。 循環(huán)測試循環(huán)測試6. 白盒測試技術白盒測試技術 循環(huán)測試技術專注于測試循環(huán)結構的有效性。循環(huán)測試技術專注于測試循環(huán)結構的有效性。 簡單循

44、環(huán)簡單循環(huán) 嵌套循環(huán)嵌套循環(huán) 串接循環(huán)串接循環(huán) 跳過循環(huán)跳過循環(huán) 通過循環(huán)通過循環(huán)m次次(mn-1) 通過循環(huán)通過循環(huán)1次次 通過循環(huán)通過循環(huán)n-1,n,n+1次次 通過循環(huán)通過循環(huán)2次次 從最內層開始測試,其他循環(huán)設為最小值從最內層開始測試,其他循環(huán)設為最小值 最內層循環(huán)使用簡單循環(huán)測試方法最內層循環(huán)使用簡單循環(huán)測試方法 由內向外,內層循環(huán)取典型值,外層循環(huán)由內向外,內層循環(huán)取典型值,外層循環(huán)取最小值,直到測試完所有循環(huán)取最小值,直到測試完所有循環(huán) 若各循環(huán)是獨立的,使用簡單循環(huán)測試若各循環(huán)是獨立的,使用簡單循環(huán)測試 若各循環(huán)不是獨立的,使用嵌套循環(huán)測試若各循環(huán)不是獨立的,使用嵌套循環(huán)測試1

45、、等價劃分、等價劃分(Equivalence Partitioning)7. 黑盒測試技術黑盒測試技術黑盒測試著重測試軟件的功能需求。黑盒測試著重測試軟件的功能需求。黑盒測試通常發(fā)現(xiàn)的錯誤:黑盒測試通常發(fā)現(xiàn)的錯誤: 功能不正確或遺漏功能不正確或遺漏 界面錯誤界面錯誤 數(shù)據(jù)結構或外部數(shù)據(jù)庫訪問錯誤數(shù)據(jù)結構或外部數(shù)據(jù)庫訪問錯誤 性能錯誤性能錯誤 初始化或終止錯誤初始化或終止錯誤黑盒測試技術設計的測試用例滿足:黑盒測試技術設計的測試用例滿足: 可以減少總的測試用例數(shù)可以減少總的測試用例數(shù) 可以測試某一類錯誤可以測試某一類錯誤 等價劃分技術是把程序的輸入域劃分成若干個數(shù)據(jù)類,由此等價劃分技術是把程序的

46、輸入域劃分成若干個數(shù)據(jù)類,由此導出測試用例。導出測試用例。注:注: 需認真研究程序的功能說明,注意經(jīng)驗的積累;需認真研究程序的功能說明,注意經(jīng)驗的積累; 以上經(jīng)驗亦適用于輸出數(shù)據(jù);以上經(jīng)驗亦適用于輸出數(shù)據(jù); 不需要測試編譯程序肯定能發(fā)現(xiàn)的錯誤不需要測試編譯程序肯定能發(fā)現(xiàn)的錯誤。 當規(guī)定了輸入范圍或數(shù)據(jù)個數(shù)時:當規(guī)定了輸入范圍或數(shù)據(jù)個數(shù)時:無效類無效類 有效類有效類 無效類無效類 當規(guī)定了輸入的一組值,且對不同值做不同處理時:當規(guī)定了輸入的一組值,且對不同值做不同處理時:第第1步步 劃分等價類劃分等價類劃分等價類需要經(jīng)驗:劃分等價類需要經(jīng)驗:如:教工分房方案中,按教授、副教授、講師、助教分別計分

47、如:教工分房方案中,按教授、副教授、講師、助教分別計分 有效類有效類4個;無效類個;無效類1個個 當規(guī)定了輸入的規(guī)則時:當規(guī)定了輸入的規(guī)則時:如:如:(PASCAL) 語言規(guī)定,每個語句以語言規(guī)定,每個語句以“ ;” 結結 束束 有效類有效類1個;個;無效類若干(以無效類若干(以“ ,”結束、以結束、以“ :”結束、以空格結束等等)結束、以空格結束等等) 當輸入為整型時:有效類可分為當輸入為整型時:有效類可分為Z+、0、Z 三種三種 當處理表格時:有效類可分為空表、含一項的表、含多項的表等當處理表格時:有效類可分為空表、含一項的表、含多項的表等7. 黑盒測試技術黑盒測試技術 設計一個新方案以設

48、計一個新方案以盡可能多盡可能多地覆蓋尚未被覆蓋的地覆蓋尚未被覆蓋的有效有效等價類;等價類;重復這一步驟直到所有重復這一步驟直到所有有效類有效類都被覆蓋為止。都被覆蓋為止。 設計一個新方案以覆蓋設計一個新方案以覆蓋一個且僅一個一個且僅一個尚未被覆蓋的尚未被覆蓋的無效無效等價類;等價類;重復這一步驟直到所有重復這一步驟直到所有無效類無效類都被覆蓋為止。都被覆蓋為止。第第2步步 設計測試方案設計測試方案7. 黑盒測試技術黑盒測試技術設計步驟:設計步驟:注:注: 對有效等價類的覆蓋,盡量公用用例減少測試次數(shù);對有效等價類的覆蓋,盡量公用用例減少測試次數(shù); 對無效等價類的覆蓋,必須每類一個用例,以防遺漏

49、可能對無效等價類的覆蓋,必須每類一個用例,以防遺漏可能發(fā)現(xiàn)的錯誤。發(fā)現(xiàn)的錯誤。例:考察一個把數(shù)字串轉變成整數(shù)的函數(shù)。用二進制補碼例:考察一個把數(shù)字串轉變成整數(shù)的函數(shù)。用二進制補碼表示整數(shù),機器字長表示整數(shù),機器字長16位,即整數(shù)范圍最小為位,即整數(shù)范圍最小為- 32768,最大為最大為32767。函數(shù)及參數(shù)的。函數(shù)及參數(shù)的PASCAL說明如下:說明如下: function StrToInt (dstr : shortstr) : integer; type shortstr = array 1.6 of char; 要求被處理的數(shù)字串是右對齊的,即在少于要求被處理的數(shù)字串是右對齊的,即在少于6

50、個字符的個字符的串左邊補空格。負號在最高位數(shù)字左邊一位。串左邊補空格。負號在最高位數(shù)字左邊一位。試用等價劃分法設計測試方案。試用等價劃分法設計測試方案。7. 黑盒測試技術黑盒測試技術解:首先根據(jù)規(guī)格說明劃分等價類??紤]到解:首先根據(jù)規(guī)格說明劃分等價類。考慮到PASCAL編譯器的固有編譯器的固有檢錯功能,測試時不需要使用長度不等于檢錯功能,測試時不需要使用長度不等于6的數(shù)組,也不需要的數(shù)組,也不需要用非字符數(shù)組類型的參數(shù)。用非字符數(shù)組類型的參數(shù)。有效輸入類:有效輸入類:16個數(shù)字字符組成的數(shù)字串(最高位非個數(shù)字字符組成的數(shù)字串(最高位非0););最高位為最高位為0的數(shù)字串;的數(shù)字串; 最高位左鄰

51、負號的數(shù)字串;最高位左鄰負號的數(shù)字串;無效輸入類:無效輸入類:空字符串(空字符串(6位空格);左邊補位的既非位空格);左邊補位的既非0亦非空格;亦非空格;最高位右邊含有空格;最高位右邊含有空格;最高位右邊含有其它非數(shù)字字符;最高位右邊含有其它非數(shù)字字符;負號與最高位間有空格;負號與最高位間有空格;有效輸出類:有效輸出類: 在合法范圍內的負整數(shù);在合法范圍內的負整數(shù);101011110 0 ;在合法范圍內的正整數(shù);在合法范圍內的正整數(shù);無效輸出類:無效輸出類: 小于小于 - 32768的負整數(shù);的負整數(shù); 大于大于 32767的正整數(shù)。的正整數(shù)。121213137. 黑盒測試技術黑盒測試技術 最

52、高位為最高位為0的數(shù)字串,輸出為合法正整數(shù)。的數(shù)字串,輸出為合法正整數(shù)。 輸入:輸入: 預期輸出:預期輸出:1 0 0 0 0 0 1 16個數(shù)字字符組成的數(shù)字串,最高位非個數(shù)字字符組成的數(shù)字串,最高位非0;輸出為合法正整數(shù)。;輸出為合法正整數(shù)。 輸入:輸入: 預期輸出:預期輸出:11下面根據(jù)等價劃分,設計出一套測試方案:下面根據(jù)等價劃分,設計出一套測試方案: 負號與最高位數(shù)字相鄰;輸出合法負整數(shù)。負號與最高位數(shù)字相鄰;輸出合法負整數(shù)。 輸入:輸入: 預期輸出:預期輸出:-1- 0 0 0 0 1 最高位為最高位為0;輸出;輸出0。 輸入:輸入: 預期輸出:預期輸出:0 0 0 0 0 0 0

53、 太小的負整數(shù)。太小的負整數(shù)。 輸入:輸入: 預期輸出:預期輸出:“錯誤,無效輸入錯誤,無效輸入”- 3 2 7 6 97. 黑盒測試技術黑盒測試技術 左邊補位的非左邊補位的非0也非空格。也非空格。 輸入:輸入: 預期輸出:預期輸出:“錯誤:非法填充錯誤:非法填充”a a a a a 1 最高位右邊也含空格。最高位右邊也含空格。 輸入:輸入: 預期輸出:預期輸出:“錯誤:無效輸入錯誤:無效輸入” 1 2 最高位右邊含其它非數(shù)字字符。最高位右邊含其它非數(shù)字字符。 輸入:輸入: 預期輸出:預期輸出:“錯誤:無效輸入錯誤:無效輸入”0 0 1 x x 2 負號與最高位間有空格。負號與最高位間有空格。

54、 輸入:輸入: 預期輸出:預期輸出:“錯誤:負號位置非法錯誤:負號位置非法”11 - 1 2 太大的正整數(shù)。太大的正整數(shù)。 輸入:輸入: 預期輸出:預期輸出:“錯誤:無效輸入錯誤:無效輸入” 3 2 7 6 8 空字符串??兆址?。 輸入:輸入: 預期輸出:預期輸出:“錯誤:沒有數(shù)字錯誤:沒有數(shù)字” 7. 黑盒測試技術黑盒測試技術思路:思路: 列出可能有的錯誤;列出可能有的錯誤; 列出容易發(fā)生錯誤的特殊情列出容易發(fā)生錯誤的特殊情況。以此為基礎設計測試方案。況。以此為基礎設計測試方案。根據(jù):直覺、經(jīng)驗根據(jù):直覺、經(jīng)驗工具:常見錯誤清單、判定表等。工具:常見錯誤清單、判定表等。7. 黑盒測試技術黑

55、盒測試技術2、邊界值分析、邊界值分析(Boundary Value Analysis) 程序最容易在邊界發(fā)生錯誤;程序最容易在邊界發(fā)生錯誤; 通常與等價劃分結合進行。通常與等價劃分結合進行。3、錯誤推測、錯誤推測(Failure Prediction) 錯誤推測是推測被測試程序中哪些地方容易出錯,并據(jù)此設錯誤推測是推測被測試程序中哪些地方容易出錯,并據(jù)此設計測試方案。計測試方案。注:注: 對多個輸入數(shù)據(jù)的組合應測試其組合效應;對多個輸入數(shù)據(jù)的組合應測試其組合效應; 白盒測試在早期測試進行,黑盒測試在后期進行;白盒測試在早期測試進行,黑盒測試在后期進行; 對發(fā)現(xiàn)較多錯誤的程序段,應進行著重的測試

56、。對發(fā)現(xiàn)較多錯誤的程序段,應進行著重的測試。8. 調調 試試(Debugging)測試測試 發(fā)現(xiàn)錯誤發(fā)現(xiàn)錯誤調試調試 改正錯誤改正錯誤第第1步:確定錯誤的位置步:確定錯誤的位置(占占95%工作量工作量);第第2步:改正錯誤。步:改正錯誤。 調試(糾錯)是在經(jīng)成功測試發(fā)現(xiàn)錯誤之后,確定錯誤的位調試(糾錯)是在經(jīng)成功測試發(fā)現(xiàn)錯誤之后,確定錯誤的位置并改正錯誤的過程。置并改正錯誤的過程。1、調試過程、調試過程Execution of casesTestcasesResultsDebuggingAdditional testsSuspected causesIdentified causesCorre

57、ctionsRegression testsDebugging8. 調調 試試 調試是軟件開發(fā)過程中最艱巨的腦力勞動,其原因在于心理方調試是軟件開發(fā)過程中最艱巨的腦力勞動,其原因在于心理方面、技術方面以及軟件錯誤的自身特征方面。面、技術方面以及軟件錯誤的自身特征方面。 激活對程序運行過程的跟蹤,在程序中插入激活對程序運行過程的跟蹤,在程序中插入write(輸出輸出)語句,語句,以八進制或十六進制的形式印出存儲器的內容。通過分析這些以八進制或十六進制的形式印出存儲器的內容。通過分析這些大量的信息來發(fā)現(xiàn)錯誤的原因。大量的信息來發(fā)現(xiàn)錯誤的原因。8. 調調 試試2、調試途徑、調試途徑(1)蠻干法)蠻干

58、法缺點:缺點: 輸出信息量極大,不易解讀且大多無用輸出信息量極大,不易解讀且大多無用(浪費時間和精力);(浪費時間和精力); 輸出的是程序在某一時刻的靜態(tài)情況,輸出的是程序在某一時刻的靜態(tài)情況,且往往不是出錯時的狀態(tài);且往往不是出錯時的狀態(tài); 改動源代碼,增加出錯機會。改動源代碼,增加出錯機會。(2)回溯法)回溯法8. 調調 試試 由癥狀由癥狀(symptom)最先出現(xiàn)的地方,沿程序的控制流最先出現(xiàn)的地方,沿程序的控制流(control flow)往往回檢查,追蹤分析源程序代碼,直至找出錯誤回檢查,追蹤分析源程序代碼,直至找出錯誤原因。原因。 適用于小型程序。適用于小型程序。(3)原因排除法)

59、原因排除法 對分查找法對分查找法在關鍵點插入變量的正確值,則在關鍵點插入變量的正確值,則輸出正確輸出正確錯誤在前半段錯誤在前半段錯誤在后半段錯誤在后半段NY收集數(shù)據(jù)收集數(shù)據(jù)組織數(shù)據(jù)組織數(shù)據(jù)研究數(shù)據(jù)研究數(shù)據(jù)間的關系間的關系提出假設提出假設證明假設證明假設糾正錯誤糾正錯誤能能能能不不能能不能不能特殊特殊 一般一般從錯誤癥狀中找出規(guī)律,推斷根源。從錯誤癥狀中找出規(guī)律,推斷根源。8. 調調 試試 歸納法歸納法YesNo What Where When How3W1H TableWhat:列出一般現(xiàn)象:列出一般現(xiàn)象Where:說明發(fā)現(xiàn)現(xiàn)象的地點:說明發(fā)現(xiàn)現(xiàn)象的地點When:列出現(xiàn)象發(fā)生時所有已知情況:列

60、出現(xiàn)象發(fā)生時所有已知情況How:說明現(xiàn)象的范圍和量級:說明現(xiàn)象的范圍和量級Yes:描述出現(xiàn)錯誤的:描述出現(xiàn)錯誤的3W1HNo:作為比較,描述了沒有錯誤的:作為比較,描述了沒有錯誤的3W1H例如:學生考試評卷報告。要求輸出成績排名、平均分、試題分析例如:學生考試評卷報告。要求輸出成績排名、平均分、試題分析報告。報告。發(fā)現(xiàn)錯誤:對發(fā)現(xiàn)錯誤:對51個學生評分個學生評分 平均分為平均分為26(期望值(期望值80) 對對1個學生評個學生評分分 平均分為平均分為1觀察分析:取奇數(shù)時出錯?觀察分析:取奇數(shù)時出錯? 打印的是中間學生的編號而非分數(shù)?打印的是中間學生的編號而非分數(shù)?加測試來驗證上述推測。加測試來

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論