




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、軟件測試基礎第一章:預備知識Last update: December 23, 2009These slides are copyrighted. They are for use with the Foundations of Software Testing book by Aditya Mathur. Please use the slides but do not remove the copyright notice.Aditya P. MathurPurdue University1.1 人、錯誤和測試Aditya P. Mathur 2009Aditya P. Mathur 20
2、09錯誤(error)錯誤是我們日常生活的一部分。 人們在他們的思考、行為中會犯錯誤,并將體現在他們行為的結果中。只要有人參與的行動和決策,都有可能會發生錯誤。人人類類存在的存在的這這些基本事些基本事實實,使,使測測試試成為非常成為非常重要的活重要的活動動。 。 錯誤的例子領域領域錯誤錯誤傾聽醫學音樂演奏數據分析觀察軟件開發演講體育運動寫作講的是:He has a garage for reparing foreign cars聽到的是:He has a garage for reparing falling cars不正確地使用抗生素演奏出不正確的音調采用不正確的算法進行矩陣變換操作員沒有發
3、現壓力倉的安全閥門一直開著錯誤操作符:;正確操作符:錯誤標識符:new_line;正確標識符:next_line實際說得是:Waple malnut;想說的是:Maple walnut實際說得是:We need a new refrigerator;想說的是。網球比賽中裁判員不正確的判決實際寫出來的是:What kind of pans did you are?想寫的是:What kind of pants did you are?故障(fault)和失效n故障是一個或多個錯誤的表現。n程序員犯的錯誤,表現為含有故障的代碼。n當運行一個含有錯誤的代碼時,程序將出現與預期的行為不一致的情況。這時
4、,我們稱程序失效。Aditya P. Mathur 2009錯誤, 故障, 失效程序員規格說明源程序思想或行動中的錯誤故障可觀察的行為觀察到的行為它們是一樣的嗎?預期的行為測試數據編寫代碼產生導致決定了可能導致是的,軟件像預期的一樣運行不,軟件不像預期的那樣運行,出現了一個失效測試自動化n大型復雜軟件、嵌入式軟件的測試是勞動密集型工作。對測試自動化存在巨大的需求。n便于自動化測試的工作:n回歸測試n圖形用戶界面測試nI/O設備驅動測試n自動化測試難于通用化n當前的一些自動化測試工具nQTPnC+ TesternLoadrunner開發人員vs.測試人員n開發人員寫代碼,測試人員測代碼;n兩種人
5、員既有區別又互相補充;n同一個人在不同階段可能充當不同的角色;n測試技術對兩種人員都有用。1.2 軟件質量Aditya P. Mathur 2009Aditya P. Mathur 2009軟件質量靜態質量特性靜態質量特性: 結構化的, 可維護的, 可測試的代碼,以及正確性和完整的文檔。動態質量特性動態質量特性: 軟件可靠性,正確性,完整性,一致性,可用性和效率。軟件質量 (續.)可靠性:可靠性:指一個軟件正確運行的概率。正確性:正確性:指一個軟件的正確操作。通常與一些文檔有關。Aditya P. Mathur 2009軟件質量 (續.)完整性完整性指的是所有在需求或用戶手冊中列出的特性都能得
6、到,一個不完整的軟件是沒有完整實現所有的需要的特征的軟件。一致性一致性是指遵循一套共同的約定和假設。例如,在用戶界面上的所有按鈕可能會遵循一個共同的顏色編碼約定。不一致的一個例子是當一個數據庫應用程序顯示一個人在數據庫中的出生日期。Aditya P. Mathur 2009軟件質量 (續.)實用性:實用性:指的是一個應用程序在使用時是否容易。這本身就是一個可用性測試存在的技術領域。心理學在可用性測試設計中起著重要的作用。性能:性能:指的是應用程序需要執行請求的任務的時間。它被認為是一個非功能性要求。它是在諸如指定“這個任務必須在一臺速度為Y,具有ZG字節內存機器,上以X單位每秒的速度執行”Ad
7、itya P. Mathur 2009軟件可靠性:兩種定義軟件可靠性軟件可靠性 ANSI/IEEE Std 729-1983: 是軟件在給定的時間間隔和在給定條件下的無故障操作概率。軟件可靠性:軟件可靠性:是軟件在預期環境下無故障運行的可能性。1.3 需求、運行結果和正確性Aditya P. Mathur 2009Aditya P. Mathur 2009需求、行為、正確性需求1:請寫一個 程序,輸入兩個整數,并輸出這兩個整數中最大的那一個。需求2:請寫一個 程序,它輸入一個整數序列,并輸出該序列的排序的版本。下面兩個需求將得到不同的兩個程序: Aditya P. Mathur 2009需求的
8、不完整性假設開發了程序maxmax,以滿足需求1。最大的預期的輸出,當輸入整數是13和19可以很容易地確定為19。現在假設測試人員想知道,兩個整數在輸入到該程序時,是在同一行中輸入然后加一個回車,還是在兩行中輸入,每個整數后面都要鍵入回車。而上述要求未能提供這個問題的答案。Aditya P. Mathur 2009需求的二義性需求2是有歧義的。目前尚不清楚輸入的序列是按升序還是按降序排列。滿足需求2的排序程序,它的具體行為將依賴于寫排序的程序員。Aditya P. Mathur 2009輸入域(輸入空間)所有可能輸入到程序P的集合,被稱為P的輸入域輸入域或輸入空間輸入空間。對于上面提到的需求1
9、,我們發現max的輸入域是所有的成對整數的集合,其中在成對整數的每個元素的范圍是從-32,768到32,767的。對于需求2,是不可能找到的排序程序的輸入域。Aditya P. Mathur 2009輸入域(續)修改需求2: 請寫一個程序,輸入一個整數序列,并按升序或降序排列輸出這個序列中的。輸出序列的順序由一個需求字符決定,該參數為“A”輸出一個遞增序列,為“D”則輸出遞減序列。 同時,在提供到程序中輸入序列,需求字符首先輸入,然后是進行排序的整數序列,序列使用句號作為結束符。Aditya P. Mathur 2009輸入域(續)基于上述修改后的需求,對于排序的輸入域是“對”的集合。每一“對
10、”的第一個元素是一個字符,第二元素是由零個或多個整數構成的序列,并以句號結束。軟件正確性n如果軟件針對其輸入域的所有元素都如期望的方式運行,那么這個軟件是正確的。Aditya P. Mathur 2009有效/無效輸入修改后的排序需求提到,要求字符可以是“A”和“D”,但沒有回答這個問題:“如果用戶輸入了一個不同的字符該怎么辦?”當使用sort程序時,用戶絕對有可能鍵入其他字符而不是“A”和“D”等。sort程序除“A”和“D”外的任何字符都被認為是無效的輸入無效的輸入。然而對于排序的需求并沒有指定遇到一個無效的輸入時應該采取什么行動。1.4 正確性與可靠性Aditya P. Mathur 2
11、009Aditya P. Mathur 2009正確性雖然大家都很渴望一個程序的正確性,但這幾乎從來都不是測試的目標。 通過測試確認的正確性,將意味著測試程序輸入域中的所有元素。在實踐中遇到的大多數情況下,這是不可能完成的任務。因此,正確性是通過程序的數學因此,正確性是通過程序的數學證明成立。證明成立。Aditya P. Mathur 2009正確性和測試正確性嘗試確認一個程序沒有錯誤沒有錯誤,而測試是嘗試發現程序中是否有錯誤。 因此,測試的完整性并不一定證明程序沒有錯誤。測試,調試和錯誤清除過程一起增加我們對被測試,調試和錯誤清除過程一起增加我們對被測程序的正常運行的信心。測程序的正常運行的
12、信心。可靠性n軟件可靠性:軟件可靠性:是軟件在預期環境下無故障運行的可能性。n軟件可靠性與軟件正確性的關系:一個是二元度量,一個是連續度量;Aditya P. Mathur 2009操作剖面操作剖面操作剖面是程序怎樣被使用的數值描述。考慮一個排序程序,它允許兩種類型的輸入序列。對該程序的一個操作剖面如下所示。Aditya P. Mathur 2009操作剖面輸入序列輸入序列概率概率只包含數字的輸入序列只包含數字的輸入序列0.9包含字母數字串的輸入序列包含字母數字串的輸入序列0.1Aditya P. Mathur 2009操作剖面輸入序列輸入序列概率概率只包含數字的輸入序列只包含數字的輸入序列0
13、.1包含字母數字串的輸入序列包含字母數字串的輸入序列0.91.5 測試與調試Aditya P. Mathur 2009Aditya P. Mathur 2009測試和調試測試是確定一個程序是否有任何錯誤的過程。當測試揭示了一個錯誤,確定此錯誤的原因,并消除它的過程,被稱為調試。Aditya P. Mathur 2009一個測試/調試的周期輸入域構造測試輸入運行程序操作剖面測試計劃運行結果如預期的那樣嗎?結束測試嗎?編寫測試報告錯誤的原因現在已檢查出來了嗎?規格說明糾正錯誤現在糾正錯誤嗎?編寫未處理錯誤報告輸入數據測試用例運行結果修改嗎?采用采用是否是否否是否采用調試軟件是Aditya P. M
14、athur 2009測試計劃一個測試周期通常是由一個測試計劃指導。例如:要測試一個排序程序,看它是否滿足前面給出的要求。那么,需要做下面這些事情。至少執行兩個輸入序列進行排序,其中一個用“A”另一個用“D”作為請求字符。Aditya P. Mathur 2009測試計劃(續)用空的輸入序列執行程序一次。測試程序的魯棒性,即給出一個錯誤的輸入,例如鍵入“R”作為請求字符。測試程序過程中出現的所有失效應該被記錄在使用公司失效報告格式的一個合適的文件中。Aditya P. Mathur 2009測試用例/數據 測試用例是由測試數據將被輸入到程序和預期的輸出構成的對。測試數據是一個值的集合,每個值對應
15、一個輸入變量。測試集是零個或多個測試用例的集合。sort的測試用例的例子: 測試數據: 期望輸出: -29 12 32運行被測軟件n運行被測軟件是一個重要步驟;n軟件運行的實際復雜性依賴于軟件本身;n為運行被測軟件,測試人員常常要搭建測試床。n初始化全局變量;n輸入測試用例;n運行被測軟件;n記錄產生的輸出;Aditya P. Mathur 2009程序行為n程序行為可以用幾種方法來描述:純自然語言,狀態圖,形式化的數學形式。n狀態圖描述了程序狀態以及程序是如何根據輸入序列或輸入改變狀態。程序行為的例子n可以用軟件狀態來定義軟件行為;n軟件的一個狀態,是指軟件當中所有變量當前值的集合,以及下一
16、步要執行的語句的指稱。n軟件狀態的轉換序列被稱為軟件行為。Aditya P. Mathur 2009程序行為的例子一個菜單應用程序Aditya P. Mathur 2009程序行為的例子(續)啟動程序用戶執行的操作程序狀態等待用戶輸入用戶鼠標點擊“File”顯示出下拉菜單用戶選擇“Open”用戶釋放鼠標加亮顯示“Open”在一個窗口中顯示出當前目錄下的文件名稱s3Aditya P. Mathur 2009對程序行為的觀察和分析用于檢查所觀察到的行為是否正確的實體被稱為測試預言測試預言(Oracle)。步驟一:測試人員觀察程序的行為。 步驟二:測試人員分析觀察到的行為,以檢查它是否是正確與否。對
17、大型商業程序而言,這兩個步驟都可能相當復雜。Aditya P. Mathur 2009測試預言的例子輸入測試預言觀察到的運行結果與預期結果一致嗎?被測軟件觀察到的運行結果Yes或No并給出解釋Aditya P. Mathur 2009測試預言:程序測試預言還可以設計成一個用來檢查其他程序的行為的程序。例如,一個人可能使用矩陣乘法程序來檢查一個矩陣求逆程序是否已經生成了正確的輸出。在這種情況下,矩陣求逆程序把給定矩陣A和所生成B(A的逆矩陣)作為輸出到矩陣乘法的參數。Aditya P. Mathur 2009測試預言的構造自動化測試預言的構造,如一個Oracle用于檢查一個矩陣乘法程序或排序程序
18、,需要確定程序的輸入輸出關系。在一般情況下,自動化測試預言的構造是一個相當復雜的任務。Aditya P. Mathur 2009測試預言的構造(續)輸入數據生成器HVideo測試預言數據庫1.6 測試度量Aditya P. Mathur 2009測試度量n測試度量是一些測量標準,用于在測試過程中定量描述軟件測試的進度、質量、資源和規模。n軟件測試可以在組織、過程、項目、產品等級別對測試進行度量。產品級度量:通用度量n針對具體的產品,可以用一些度量來描述產品的相關特性。n圈復雜度:基于程序控制流圖,用于描述程序的復雜性。公式:V(G) = E-N+2p。其中,E是節點數,N是邊數,p是G中強連通
19、分支數。V(G)值越大,說明程序的復雜性越高。nHalstead復雜性度量:用軟件規模和功耗/工作量,估算在軟件開發中出現的缺陷數量。n公式:B=7.6E0.667S0.333其中,E是工作量,S是軟件的規模。組織級、項目級和過程級度量n組織級度量n針對整體項目的規劃和管理。這類度量部分來源于匯聚多個跨項目的相容度量。n這些度量有利于高層管理進行資源配置。n項目級度量n與具體項目有關的度量。用于對項目的跟蹤和控制。n過程級度量n用于評價測試過程。產品級度量:面向對象軟件n現代程序設計語言,不完全符合Halstead復雜性度量。因此引入了其他一些方法對軟件可靠性進行度量。度量度量含義含義可靠性缺
20、陷密度缺陷嚴重程度測試覆蓋度圈復雜度類加權方法類耦合響應集直接子類數軟件在給定條件下針對特定操作剖面失效的概率。每千行代碼的缺陷數根據嚴重性對缺陷的劃分可測項所占的比例一個程序基于CFG的復雜性被測類中所有方法的復雜度之和與特定類耦合的類的數量當向對象O發送一消息,能夠直接或間接激發的方法集合。在類層次中,一個類的直接子類數量進度跟蹤與趨勢n在開發或測試過程中,按照固定時間間隔進行測試度量。測試結果將提供一種趨勢。n通過統計這些度量的結果,可以總結出產品的狀態。n例如統計累積發現的缺陷數目,可以得到一條累積缺陷數目隨時間變化的曲線,當曲線趨于飽和時,說明產品質量趨于穩定。靜態度量與動態度量n靜
21、態度量不需要執行軟件。n動態度量需要執行軟件。可測試性nIEEE定義:系統或組件有助于建立測試準則,執行測試以便判斷這些準則是否滿足的程度。n軟件越復雜,軟件可測試性越低。1.7 軟件測試與硬件測試Aditya P. Mathur 2009軟件測試VS.硬件測試n軟件測試與硬件測試存在相似之處,也有差異。n軟件不會磨損,不會因時間的推移而衰老。硬件不是這樣。n軟件錯誤主要是設計和開發時產生;硬件缺陷主要在制造階段或后期產生。硬件設計可以采用內置自檢技術。n硬件測試采用基于故障模型來設計測試;軟件測試無統一的故障模型。n硬件測試和軟件測試的另一個主要差別是測試域的不同。軟件測試VS.硬件測試n測
22、試覆蓋率問題:對于大型和復雜的軟件和硬件而言,都不可能進行完全測試。n硬件測試中產生“可接受的測試覆蓋率”。通過測試覆蓋的故障數和理論的故障數的比率來度量測試的情況。n這種思想在軟件測試中產生了變異測試方法。1.8 測試與驗證Aditya P. Mathur 2009Aditya P. Mathur 2009測試和驗證程序驗證的目的是通過展示它不包含任何錯誤來證明程序的正確性。這與測試的目的非常不同,因為測試是揭露在一個程序中的錯誤。程序驗證與測試最好視為互補的技術。在實踐中,人們可以擺脫程序驗證,但不能略過測試。Aditya P. Mathur 2009測試和檢驗(續)測試是不是完美的技術,
23、一個程序盡管成功地完成了一組測試,但可能還是包含錯誤。驗證看起來似乎是完美的技術,因為它承諾以驗證程序沒有錯誤。然而,驗證程序的人可能在驗證過程中犯錯誤;有可能是輸入條件的不正確假設,而不正確的假設可能作出程序界面有關組件的,等等。有已驗證和發布的程序被證明是不正確的。有已驗證和發布的程序被證明是不正確的。1.9 缺陷管理Aditya P. Mathur 2009缺陷管理n缺陷管理是軟件開發和測試的重要組成部分。n缺陷管理包括:缺陷預防、缺陷發現、缺陷記錄和報告、缺陷分類、缺陷糾正、缺陷預測等。n存在一些用于缺陷管理的工具。1.10 執行歷史Aditya P. Mathur 2009執行歷史n
24、又稱執行軌跡,是程序一次執行中收集到的程序各方面信息的有序集合。n可以用多種方法表示執行軌跡n語句的執行序列;n對象方法的訪問序列;n程序變量值的變化的序列;1.11 測試生成策略Aditya P. Mathur 2009Aditya P. Mathur 2009測試生成任何形式的測試生成都使用源文檔。最非正規的測試方法,測試人員也在腦海里駐留了一個基于知識和需求的源文檔。在大多數的商業環境中,測試過程更正式一些。測試會通過正式和非正式的混合方法直接從作為源的需求文檔產生。在更先進的測試過程中,需求將作為開發過程中的正規模型的來源。Aditya P. Mathur 2009測試生成策略基于模型
25、的:基于模型的:要求需求的一個子集使用了正式的符號(通常為圖形界面)來建模。模型:有限狀態機,時間自動機,Petri網等。基于規范的:基于規范的:要求需求的一個子集使用一個正式的數學符號進行建模。例如:B,Z,和Larch。基于代碼:基于代碼:直接從代碼中生成的測試。Aditya P. Mathur 2009測試生成策略 (總結)需求有窮狀態機狀態圖Petri網時間I/O自動機代數和邏輯規范代碼運行時數據測試生成算法測試生成算法測試生成算法測試生成算法測試生成算法測試生成算法測試生成算法測試用例1.12 靜態測試Aditya P. Mathur 2009靜態測試n靜態測試最大特點是不需要執行被
26、測軟件;n走查:走查:非正式的過程,對源代碼和文檔的檢查。n審查:審查:更加正規的檢查過程。使用靜態代碼分析工具n通過靜態代碼分析工具得到代碼的相關信息。如:控制流信息、數據流信息等。n有商業化和開源的靜態分析工具。軟件復雜性和靜態測試n通過分析軟件的復雜性,在靜態測試中對較復雜的模型給予更多的關注。n可以用不同的復雜性度量來計算模塊復雜性。n同時需要考慮模塊功能的重要性。1.13 基于模型的測試與模型檢驗Aditya P. Mathur 2009基于模型的測試n基于模型的測試:對軟件行為進行建模,以及根據軟件的形式化模型設計測試活動。模型檢測n模型檢測是指用于驗證特定模型的一個或多個特性的技
27、術。1.14 控制流圖Aditya P. Mathur 2009Aditya P. Mathur 2009程序表示:基本塊在程序P的一個基本塊是只有一個入口和一個出口點的連續的語句序列。因此,一個塊都有唯一的入口點和出口點。程序的控制總是在基本塊的入口點進入,并從其出口點退出。除了在基本塊的出口點外,不可能在基本塊內的任何點退出或停止。當一個基本塊的入口和出口點重合時,該塊只包含一個語句。Aditya P. Mathur 2009基本塊的例子Example: 求X的Y次冪的程序Aditya P. Mathur 2009基本塊的例子(續)Basic blocksAditya P. Mathur
28、2009控制流程圖(CFG)一個控制流圖(或流圖)G 被定義為一個有限的點的集合N和一個有限的邊的集合E。E中的一條邊(i, j)連接N中的兩個結點ni和nj 。我們經常用G= (N, E)來表達一個點集為N,邊集為E的流圖。Aditya P. Mathur 2009控制流程圖(CFG)一個程序的流圖中,每個基本塊成為一個節點,而邊被用來表示控制在塊之間的流動。塊和節點被標記,使得塊bi對應于結點Ni。 一條邊 (i, j) 連接基本塊 bi和bj說明控制可以從塊bi到達塊bj。 我們還假設在N中有一個節點標記為Start,它沒有進入的邊,而另一個節點標記為End,它沒有離開的邊。Aditya P. Mathur 2009CFG 例子N=Start, 1, 2, 3, 4, 5, 6, 7, 8, 9, EndE=(Start,1), (1, 2), (1, 3), (2,4), (3, 4), (4, 5), (5, 6
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 四川長江職業學院《樂理與視唱二》2023-2024學年第二學期期末試卷
- 鹽城幼兒師范高等專科學校《企業項目施工實踐》2023-2024學年第二學期期末試卷
- 山東電子職業技術學院《心理統計學(上)》2023-2024學年第二學期期末試卷
- 長沙理工大學城南學院《和聲基礎理論》2023-2024學年第二學期期末試卷
- 武漢光谷職業學院《光通信原理》2023-2024學年第二學期期末試卷
- 智慧教育環境下學生的學習效果研究
- 2024年度河南省護師類之社區護理主管護師能力提升試卷A卷附答案
- 《舞蹈基礎與幼兒舞蹈(一)》課件-幼兒舞蹈基本步伐
- 個性化教育如何根據學生需求調整教學策略
- 廣西農業工程職業技術學院《生物學綜合實驗》2023-2024學年第二學期期末試卷
- 車輛號牌管理規定
- 體育(2)學習通超星期末考試答案章節答案2024年
- 水利信息化水質監測系統單元工程質量驗收評定表、檢查記錄
- 中國機長課件教學課件
- 客戶月結協議合同模板
- AEO商業伙伴安全管理制度
- 2024年重慶十八中小升初數學試卷
- 2025年中考道德與法治一輪復習:必背重難點知識點提綱
- 中醫兒科學全版
- 口服抗凝藥居家管理中國專家共識(2024版)
- 咨詢服務合同樣本模板
評論
0/150
提交評論