版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、軟件測試基礎第一章:預備知識1.1 人、錯誤和測試錯誤(error)錯誤是我們日常生活的一部分。 人們在他們的思考、行為中會犯錯誤,并將體現(xiàn)在他們行為的結果中。只要有人參與的行動和決策,都有可能會發(fā)生錯誤。人人類類存在的存在的這這些基本事些基本事實實,使,使測測試試成為非常成為非常重要的活重要的活動動。 。 錯誤的例子領域領域錯誤錯誤傾聽醫(yī)學音樂演奏數(shù)據(jù)分析觀察軟件開發(fā)演講體育運動寫作講的是:He has a garage for reparing foreign cars聽到的是:He has a garage for reparing falling cars不正確地使用抗生素演奏出不正確
2、的音調采用不正確的算法進行矩陣變換操作員沒有發(fā)現(xiàn)壓力倉的安全閥門一直開著錯誤操作符:;正確操作符:錯誤標識符:new_line;正確標識符:next_line實際說得是:Waple malnut;想說的是:Maple walnut實際說得是:We need a new refrigerator;想說的是。網(wǎng)球比賽中裁判員不正確的判決實際寫出來的是:What kind of pans did you are?想寫的是:What kind of pants did you are?故障(fault)和失效n故障是一個或多個錯誤的表現(xiàn)。n程序員犯的錯誤,表現(xiàn)為含有故障的代碼。n當運行一個含有錯誤的代
3、碼時,程序將出現(xiàn)與預期的行為不一致的情況。這時,我們稱程序失效。錯誤, 故障, 失效程序員規(guī)格說明源程序思想或行動中的錯誤故障可觀察的行為觀察到的行為它們是一樣的嗎?預期的行為測試數(shù)據(jù)編寫代碼產(chǎn)生導致決定了可能導致是的,軟件像預期的一樣運行不,軟件不像預期的那樣運行,出現(xiàn)了一個失效測試自動化n大型復雜軟件、嵌入式軟件的測試是勞動密集型工作。對測試自動化存在巨大的需求。n便于自動化測試的工作:n回歸測試n圖形用戶界面測試nI/O設備驅動測試n自動化測試難于通用化n當前的一些自動化測試工具nQTPnC+ TesternLoadrunner開發(fā)人員vs.測試人員n開發(fā)人員寫代碼,測試人員測代碼;n兩
4、種人員既有區(qū)別又互相補充;n同一個人在不同階段可能充當不同的角色;n測試技術對兩種人員都有用。1.2 軟件質量軟件質量靜態(tài)質量特性靜態(tài)質量特性: 結構化的, 可維護的, 可測試的代碼,以及正確性和完整的文檔。動態(tài)質量特性動態(tài)質量特性: 軟件可靠性,正確性,完整性,一致性,可用性和效率。軟件質量 (續(xù).)可靠性:可靠性:指一個軟件正確運行的概率。正確性:正確性:指一個軟件的正確操作。通常與一些文檔有關。軟件質量 (續(xù).)完整性完整性指的是所有在需求或用戶手冊中列出的特性都能得到,一個不完整的軟件是沒有完整實現(xiàn)所有的需要的特征的軟件。一致性一致性是指遵循一套共同的約定和假設。例如,在用戶界面上的所
5、有按鈕可能會遵循一個共同的顏色編碼約定。不一致的一個例子是當一個數(shù)據(jù)庫應用程序顯示一個人在數(shù)據(jù)庫中的出生日期。軟件質量 (續(xù).)實用性:實用性:指的是一個應用程序在使用時是否容易。這本身就是一個可用性測試存在的技術領域。心理學在可用性測試設計中起著重要的作用。性能:性能:指的是應用程序需要執(zhí)行請求的任務的時間。它被認為是一個非功能性要求。它是在諸如指定“這個任務必須在一臺速度為Y,具有ZG字節(jié)內存機器,上以X單位每秒的速度執(zhí)行”軟件可靠性:兩種定義軟件可靠性軟件可靠性 ANSI/IEEE Std 729-1983: 是軟件在給定的時間間隔和在給定條件下的無故障操作概率。軟件可靠性:軟件可靠性:
6、是軟件在預期環(huán)境下無故障運行的可能性。1.3 需求、運行結果和正確性需求、行為、正確性需求1:請寫一個 程序,輸入兩個整數(shù),并輸出這兩個整數(shù)中最大的那一個。需求2:請寫一個 程序,它輸入一個整數(shù)序列,并輸出該序列的排序的版本。下面兩個需求將得到不同的兩個程序: 需求的不完整性假設開發(fā)了程序maxmax,以滿足需求1。最大的預期的輸出,當輸入整數(shù)是13和19可以很容易地確定為19?,F(xiàn)在假設測試人員想知道,兩個整數(shù)在輸入到該程序時,是在同一行中輸入然后加一個回車,還是在兩行中輸入,每個整數(shù)后面都要鍵入回車。而上述要求未能提供這個問題的答案。需求的二義性需求2是有歧義的。目前尚不清楚輸入的序列是按升
7、序還是按降序排列。滿足需求2的排序程序,它的具體行為將依賴于寫排序的程序員。輸入域(輸入空間)所有可能輸入到程序P的集合,被稱為P的輸入域輸入域或輸入空間輸入空間。對于上面提到的需求1,我們發(fā)現(xiàn)max的輸入域是所有的成對整數(shù)的集合,其中在成對整數(shù)的每個元素的范圍是從-32,768到32,767的。對于需求2,是不可能找到的排序程序的輸入域。輸入域(續(xù))修改需求2: 請寫一個程序,輸入一個整數(shù)序列,并按升序或降序排列輸出這個序列中的。輸出序列的順序由一個需求字符決定,該參數(shù)為“A”輸出一個遞增序列,為“D”則輸出遞減序列。 同時,在提供到程序中輸入序列,需求字符首先輸入,然后是進行排序的整數(shù)序列
8、,序列使用句號作為結束符。輸入域(續(xù))基于上述修改后的需求,對于排序的輸入域是“對”的集合。每一“對”的第一個元素是一個字符,第二元素是由零個或多個整數(shù)構成的序列,并以句號結束。軟件正確性n如果軟件針對其輸入域的所有元素都如期望的方式運行,那么這個軟件是正確的。有效/無效輸入修改后的排序需求提到,要求字符可以是“A”和“D”,但沒有回答這個問題:“如果用戶輸入了一個不同的字符該怎么辦?”當使用sort程序時,用戶絕對有可能鍵入其他字符而不是“A”和“D”等。sort程序除“A”和“D”外的任何字符都被認為是無效的輸入無效的輸入。然而對于排序的需求并沒有指定遇到一個無效的輸入時應該采取什么行動。
9、1.4 正確性與可靠性正確性雖然大家都很渴望一個程序的正確性,但這幾乎從來都不是測試的目標。 通過測試確認的正確性,將意味著測試程序輸入域中的所有元素。在實踐中遇到的大多數(shù)情況下,這是不可能完成的任務。因此,正確性是通過程序的數(shù)學因此,正確性是通過程序的數(shù)學證明成立。證明成立。正確性和測試正確性嘗試確認一個程序沒有錯誤沒有錯誤,而測試是嘗試發(fā)現(xiàn)程序中是否有錯誤。 因此,測試的完整性并不一定證明程序沒有錯誤。測試,調試和錯誤清除過程一起增加我們對被測試,調試和錯誤清除過程一起增加我們對被測程序的正常運行的信心。測程序的正常運行的信心??煽啃詎軟件可靠性:軟件可靠性:是軟件在預期環(huán)境下無故障運行的
10、可能性。n軟件可靠性與軟件正確性的關系:一個是二元度量,一個是連續(xù)度量;操作剖面操作剖面操作剖面是程序怎樣被使用的數(shù)值描述??紤]一個排序程序,它允許兩種類型的輸入序列。對該程序的一個操作剖面如下所示。操作剖面輸入序列輸入序列概率概率只包含數(shù)字的輸入序列只包含數(shù)字的輸入序列0.9包含字母數(shù)字串的輸入序列包含字母數(shù)字串的輸入序列0.1操作剖面輸入序列輸入序列概率概率只包含數(shù)字的輸入序列只包含數(shù)字的輸入序列0.1包含字母數(shù)字串的輸入序列包含字母數(shù)字串的輸入序列0.91.5 測試與調試測試和調試測試是確定一個程序是否有任何錯誤的過程。當測試揭示了一個錯誤,確定此錯誤的原因,并消除它的過程,被稱為調試。
11、一個測試/調試的周期輸入域構造測試輸入運行程序操作剖面測試計劃運行結果如預期的那樣嗎?結束測試嗎?編寫測試報告錯誤的原因現(xiàn)在已檢查出來了嗎?規(guī)格說明糾正錯誤現(xiàn)在糾正錯誤嗎?編寫未處理錯誤報告輸入數(shù)據(jù)測試用例運行結果修改嗎?采用采用是否是否否是否采用調試軟件是Aditya P. Mathur 2009測試計劃一個測試周期通常是由一個測試計劃指導。例如:要測試一個排序程序,看它是否滿足前面給出的要求。那么,需要做下面這些事情。至少執(zhí)行兩個輸入序列進行排序,其中一個用“A”另一個用“D”作為請求字符。Aditya P. Mathur 2009測試計劃(續(xù))用空的輸入序列執(zhí)行程序一次。測試程序的魯棒性
12、,即給出一個錯誤的輸入,例如鍵入“R”作為請求字符。測試程序過程中出現(xiàn)的所有失效應該被記錄在使用公司失效報告格式的一個合適的文件中。Aditya P. Mathur 2009測試用例/數(shù)據(jù) 測試用例是由測試數(shù)據(jù)將被輸入到程序和預期的輸出構成的對。測試數(shù)據(jù)是一個值的集合,每個值對應一個輸入變量。測試集是零個或多個測試用例的集合。sort的測試用例的例子: 測試數(shù)據(jù): 期望輸出: -29 12 32運行被測軟件n運行被測軟件是一個重要步驟;n軟件運行的實際復雜性依賴于軟件本身;n為運行被測軟件,測試人員常常要搭建測試床。n初始化全局變量;n輸入測試用例;n運行被測軟件;n記錄產(chǎn)生的輸出;Adity
13、a P. Mathur 2009程序行為n程序行為可以用幾種方法來描述:純自然語言,狀態(tài)圖,形式化的數(shù)學形式。n狀態(tài)圖描述了程序狀態(tài)以及程序是如何根據(jù)輸入序列或輸入改變狀態(tài)。程序行為的例子n可以用軟件狀態(tài)來定義軟件行為;n軟件的一個狀態(tài),是指軟件當中所有變量當前值的集合,以及下一步要執(zhí)行的語句的指稱。n軟件狀態(tài)的轉換序列被稱為軟件行為。Aditya P. Mathur 2009程序行為的例子一個菜單應用程序Aditya P. Mathur 2009程序行為的例子(續(xù))啟動程序用戶執(zhí)行的操作程序狀態(tài)等待用戶輸入用戶鼠標點擊“File”顯示出下拉菜單用戶選擇“Open”用戶釋放鼠標加亮顯示“Ope
14、n”在一個窗口中顯示出當前目錄下的文件名稱s3Aditya P. Mathur 2009對程序行為的觀察和分析用于檢查所觀察到的行為是否正確的實體被稱為測試預言測試預言(Oracle)。步驟一:測試人員觀察程序的行為。 步驟二:測試人員分析觀察到的行為,以檢查它是否是正確與否。對大型商業(yè)程序而言,這兩個步驟都可能相當復雜。Aditya P. Mathur 2009測試預言的例子輸入測試預言觀察到的運行結果與預期結果一致嗎?被測軟件觀察到的運行結果Yes或No并給出解釋Aditya P. Mathur 2009測試預言:程序測試預言還可以設計成一個用來檢查其他程序的行為的程序。例如,一個人可能使
15、用矩陣乘法程序來檢查一個矩陣求逆程序是否已經(jīng)生成了正確的輸出。在這種情況下,矩陣求逆程序把給定矩陣A和所生成B(A的逆矩陣)作為輸出到矩陣乘法的參數(shù)。Aditya P. Mathur 2009測試預言的構造自動化測試預言的構造,如一個Oracle用于檢查一個矩陣乘法程序或排序程序,需要確定程序的輸入輸出關系。在一般情況下,自動化測試預言的構造是一個相當復雜的任務。Aditya P. Mathur 2009測試預言的構造(續(xù))輸入數(shù)據(jù)生成器HVideo測試預言數(shù)據(jù)庫1.6 測試度量Aditya P. Mathur 2009測試度量n測試度量是一些測量標準,用于在測試過程中定量描述軟件測試的進度、
16、質量、資源和規(guī)模。n軟件測試可以在組織、過程、項目、產(chǎn)品等級別對測試進行度量。產(chǎn)品級度量:通用度量n針對具體的產(chǎn)品,可以用一些度量來描述產(chǎn)品的相關特性。n圈復雜度:基于程序控制流圖,用于描述程序的復雜性。公式:V(G) = E-N+2p。其中,E是節(jié)點數(shù),N是邊數(shù),p是G中強連通分支數(shù)。V(G)值越大,說明程序的復雜性越高。nHalstead復雜性度量:用軟件規(guī)模和功耗/工作量,估算在軟件開發(fā)中出現(xiàn)的缺陷數(shù)量。n公式:B=7.6E0.667S0.333其中,E是工作量,S是軟件的規(guī)模。組織級、項目級和過程級度量n組織級度量n針對整體項目的規(guī)劃和管理。這類度量部分來源于匯聚多個跨項目的相容度量。
17、n這些度量有利于高層管理進行資源配置。n項目級度量n與具體項目有關的度量。用于對項目的跟蹤和控制。n過程級度量n用于評價測試過程。產(chǎn)品級度量:面向對象軟件n現(xiàn)代程序設計語言,不完全符合Halstead復雜性度量。因此引入了其他一些方法對軟件可靠性進行度量。度量度量含義含義可靠性缺陷密度缺陷嚴重程度測試覆蓋度圈復雜度類加權方法類耦合響應集直接子類數(shù)軟件在給定條件下針對特定操作剖面失效的概率。每千行代碼的缺陷數(shù)根據(jù)嚴重性對缺陷的劃分可測項所占的比例一個程序基于CFG的復雜性被測類中所有方法的復雜度之和與特定類耦合的類的數(shù)量當向對象O發(fā)送一消息,能夠直接或間接激發(fā)的方法集合。在類層次中,一個類的直接
18、子類數(shù)量進度跟蹤與趨勢n在開發(fā)或測試過程中,按照固定時間間隔進行測試度量。測試結果將提供一種趨勢。n通過統(tǒng)計這些度量的結果,可以總結出產(chǎn)品的狀態(tài)。n例如統(tǒng)計累積發(fā)現(xiàn)的缺陷數(shù)目,可以得到一條累積缺陷數(shù)目隨時間變化的曲線,當曲線趨于飽和時,說明產(chǎn)品質量趨于穩(wěn)定。靜態(tài)度量與動態(tài)度量n靜態(tài)度量不需要執(zhí)行軟件。n動態(tài)度量需要執(zhí)行軟件??蓽y試性nIEEE定義:系統(tǒng)或組件有助于建立測試準則,執(zhí)行測試以便判斷這些準則是否滿足的程度。n軟件越復雜,軟件可測試性越低。1.7 軟件測試與硬件測試Aditya P. Mathur 2009軟件測試VS.硬件測試n軟件測試與硬件測試存在相似之處,也有差異。n軟件不會磨損
19、,不會因時間的推移而衰老。硬件不是這樣。n軟件錯誤主要是設計和開發(fā)時產(chǎn)生;硬件缺陷主要在制造階段或后期產(chǎn)生。硬件設計可以采用內置自檢技術。n硬件測試采用基于故障模型來設計測試;軟件測試無統(tǒng)一的故障模型。n硬件測試和軟件測試的另一個主要差別是測試域的不同。軟件測試VS.硬件測試n測試覆蓋率問題:對于大型和復雜的軟件和硬件而言,都不可能進行完全測試。n硬件測試中產(chǎn)生“可接受的測試覆蓋率”。通過測試覆蓋的故障數(shù)和理論的故障數(shù)的比率來度量測試的情況。n這種思想在軟件測試中產(chǎn)生了變異測試方法。1.8 測試與驗證Aditya P. Mathur 2009Aditya P. Mathur 2009測試和驗證
20、程序驗證的目的是通過展示它不包含任何錯誤來證明程序的正確性。這與測試的目的非常不同,因為測試是揭露在一個程序中的錯誤。程序驗證與測試最好視為互補的技術。在實踐中,人們可以擺脫程序驗證,但不能略過測試。Aditya P. Mathur 2009測試和檢驗(續(xù))測試是不是完美的技術,一個程序盡管成功地完成了一組測試,但可能還是包含錯誤。驗證看起來似乎是完美的技術,因為它承諾以驗證程序沒有錯誤。然而,驗證程序的人可能在驗證過程中犯錯誤;有可能是輸入條件的不正確假設,而不正確的假設可能作出程序界面有關組件的,等等。有已驗證和發(fā)布的程序被證明是不正確的。有已驗證和發(fā)布的程序被證明是不正確的。1.9 缺陷
21、管理Aditya P. Mathur 2009缺陷管理n缺陷管理是軟件開發(fā)和測試的重要組成部分。n缺陷管理包括:缺陷預防、缺陷發(fā)現(xiàn)、缺陷記錄和報告、缺陷分類、缺陷糾正、缺陷預測等。n存在一些用于缺陷管理的工具。1.10 執(zhí)行歷史Aditya P. Mathur 2009執(zhí)行歷史n又稱執(zhí)行軌跡,是程序一次執(zhí)行中收集到的程序各方面信息的有序集合。n可以用多種方法表示執(zhí)行軌跡n語句的執(zhí)行序列;n對象方法的訪問序列;n程序變量值的變化的序列;1.11 測試生成策略Aditya P. Mathur 2009Aditya P. Mathur 2009測試生成任何形式的測試生成都使用源文檔。最非正規(guī)的測試方
22、法,測試人員也在腦海里駐留了一個基于知識和需求的源文檔。在大多數(shù)的商業(yè)環(huán)境中,測試過程更正式一些。測試會通過正式和非正式的混合方法直接從作為源的需求文檔產(chǎn)生。在更先進的測試過程中,需求將作為開發(fā)過程中的正規(guī)模型的來源。Aditya P. Mathur 2009測試生成策略基于模型的:基于模型的:要求需求的一個子集使用了正式的符號(通常為圖形界面)來建模。模型:有限狀態(tài)機,時間自動機,Petri網(wǎng)等?;谝?guī)范的:基于規(guī)范的:要求需求的一個子集使用一個正式的數(shù)學符號進行建模。例如:B,Z,和Larch?;诖a:基于代碼:直接從代碼中生成的測試。Aditya P. Mathur 2009測試生成策
23、略 (總結)需求有窮狀態(tài)機狀態(tài)圖Petri網(wǎng)時間I/O自動機代數(shù)和邏輯規(guī)范代碼運行時數(shù)據(jù)測試生成算法測試生成算法測試生成算法測試生成算法測試生成算法測試生成算法測試生成算法測試用例1.12 靜態(tài)測試Aditya P. Mathur 2009靜態(tài)測試n靜態(tài)測試最大特點是不需要執(zhí)行被測軟件;n走查:走查:非正式的過程,對源代碼和文檔的檢查。n審查:審查:更加正規(guī)的檢查過程。使用靜態(tài)代碼分析工具n通過靜態(tài)代碼分析工具得到代碼的相關信息。如:控制流信息、數(shù)據(jù)流信息等。n有商業(yè)化和開源的靜態(tài)分析工具。軟件復雜性和靜態(tài)測試n通過分析軟件的復雜性,在靜態(tài)測試中對較復雜的模型給予更多的關注。n可以用不同的復雜
24、性度量來計算模塊復雜性。n同時需要考慮模塊功能的重要性。1.13 基于模型的測試與模型檢驗Aditya P. Mathur 2009基于模型的測試n基于模型的測試:對軟件行為進行建模,以及根據(jù)軟件的形式化模型設計測試活動。模型檢測n模型檢測是指用于驗證特定模型的一個或多個特性的技術。1.14 控制流圖Aditya P. Mathur 2009Aditya P. Mathur 2009程序表示:基本塊在程序P的一個基本塊是只有一個入口和一個出口點的連續(xù)的語句序列。因此,一個塊都有唯一的入口點和出口點。程序的控制總是在基本塊的入口點進入,并從其出口點退出。除了在基本塊的出口點外,不可能在基本塊內的
25、任何點退出或停止。當一個基本塊的入口和出口點重合時,該塊只包含一個語句。Aditya P. Mathur 2009基本塊的例子Example: 求X的Y次冪的程序Aditya P. Mathur 2009基本塊的例子(續(xù))Basic blocksAditya P. Mathur 2009控制流程圖(CFG)一個控制流圖(或流圖)G 被定義為一個有限的點的集合N和一個有限的邊的集合E。E中的一條邊(i, j)連接N中的兩個結點ni和nj 。我們經(jīng)常用G= (N, E)來表達一個點集為N,邊集為E的流圖。Aditya P. Mathur 2009控制流程圖(CFG)一個程序的流圖中,每個基本塊成為
26、一個節(jié)點,而邊被用來表示控制在塊之間的流動。塊和節(jié)點被標記,使得塊bi對應于結點Ni。 一條邊 (i, j) 連接基本塊 bi和bj說明控制可以從塊bi到達塊bj。 我們還假設在N中有一個節(jié)點標記為Start,它沒有進入的邊,而另一個節(jié)點標記為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), (6, 5), (5, 7), (7, 8), (7, 9), (9, End)Aditya P. Mathur 2009CFG 例子N=S
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 專項資金借款合同范本
- 景觀設計年終工作總結4
- 二小消防安全制度模版(2篇)
- 2025年班主任頂崗實習計劃
- 市食用農(nóng)產(chǎn)品安全管理制度范文(2篇)
- 2025年個人年度工作總結與計劃(4篇)
- 車輛出租協(xié)議模板
- 樣板房裝修工程施工合同
- 2024年高三生物教師期末工作總結
- 鄉(xiāng)鎮(zhèn)環(huán)保人員工作總結
- DB14-T 2730-2023 產(chǎn)后康復管理師等級劃分與評定
- 《預防流感》主題班會教案3篇
- 湖南省炎德英才大聯(lián)考2025屆高二數(shù)學第一學期期末考試試題含解析
- 中等職業(yè)學?!稒C械制造工藝基礎》課程標準
- DBJ33T 1312-2024 工程渣土再生填料道路路基技術規(guī)程
- 高級流行病學與醫(yī)學統(tǒng)計學智慧樹知到期末考試答案章節(jié)答案2024年浙江中醫(yī)藥大學
- 服務開口合同模板
- 2024年200MW-400MWh電化學儲能電站設計方案
- 2024數(shù)據(jù)采集合同模板
- SH/T 3227-2024 石油化工裝置固定水噴霧和水(泡沫)噴淋滅火系統(tǒng)技術標準(正式版)
- (正式版)JBT 7248-2024 閥門用低溫鋼鑄件技術規(guī)范
評論
0/150
提交評論