軟件質(zhì)量保證與測(cè)試_第1頁(yè)
軟件質(zhì)量保證與測(cè)試_第2頁(yè)
軟件質(zhì)量保證與測(cè)試_第3頁(yè)
軟件質(zhì)量保證與測(cè)試_第4頁(yè)
軟件質(zhì)量保證與測(cè)試_第5頁(yè)
已閱讀5頁(yè),還剩92頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、軟件測(cè)試基礎(chǔ)第一章:預(yù)備知識(shí)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 人、錯(cuò)誤和測(cè)試Aditya P. Mathur 2009Aditya P. Mathur 20

2、09錯(cuò)誤(error)錯(cuò)誤是我們?nèi)粘I畹囊徊糠帧?人們?cè)谒麄兊乃伎?、行為中?huì)犯錯(cuò)誤,并將體現(xiàn)在他們行為的結(jié)果中。只要有人參與的行動(dòng)和決策,都有可能會(huì)發(fā)生錯(cuò)誤。人人類類存在的存在的這這些基本事些基本事實(shí)實(shí),使,使測(cè)測(cè)試試成為非常成為非常重要的活重要的活動(dòng)動(dòng)。 。 錯(cuò)誤的例子領(lǐng)域領(lǐng)域錯(cuò)誤錯(cuò)誤傾聽(tīng)醫(yī)學(xué)音樂(lè)演奏數(shù)據(jù)分析觀察軟件開(kāi)發(fā)演講體育運(yùn)動(dòng)寫(xiě)作講的是:He has a garage for reparing foreign cars聽(tīng)到的是:He has a garage for reparing falling cars不正確地使用抗生素演奏出不正確的音調(diào)采用不正確的算法進(jìn)行矩陣變換操作員沒(méi)有發(fā)

3、現(xiàn)壓力倉(cāng)的安全閥門一直開(kāi)著錯(cuò)誤操作符:;正確操作符:錯(cuò)誤標(biāo)識(shí)符:new_line;正確標(biāo)識(shí)符:next_line實(shí)際說(shuō)得是:Waple malnut;想說(shuō)的是:Maple walnut實(shí)際說(shuō)得是:We need a new refrigerator;想說(shuō)的是。網(wǎng)球比賽中裁判員不正確的判決實(shí)際寫(xiě)出來(lái)的是:What kind of pans did you are?想寫(xiě)的是:What kind of pants did you are?故障(fault)和失效n故障是一個(gè)或多個(gè)錯(cuò)誤的表現(xiàn)。n程序員犯的錯(cuò)誤,表現(xiàn)為含有故障的代碼。n當(dāng)運(yùn)行一個(gè)含有錯(cuò)誤的代碼時(shí),程序?qū)⒊霈F(xiàn)與預(yù)期的行為不一致的情況。這時(shí)

4、,我們稱程序失效。Aditya P. Mathur 2009錯(cuò)誤, 故障, 失效程序員規(guī)格說(shuō)明源程序思想或行動(dòng)中的錯(cuò)誤故障可觀察的行為觀察到的行為它們是一樣的嗎?預(yù)期的行為測(cè)試數(shù)據(jù)編寫(xiě)代碼產(chǎn)生導(dǎo)致決定了可能導(dǎo)致是的,軟件像預(yù)期的一樣運(yùn)行不,軟件不像預(yù)期的那樣運(yùn)行,出現(xiàn)了一個(gè)失效測(cè)試自動(dòng)化n大型復(fù)雜軟件、嵌入式軟件的測(cè)試是勞動(dòng)密集型工作。對(duì)測(cè)試自動(dòng)化存在巨大的需求。n便于自動(dòng)化測(cè)試的工作:n回歸測(cè)試n圖形用戶界面測(cè)試nI/O設(shè)備驅(qū)動(dòng)測(cè)試n自動(dòng)化測(cè)試難于通用化n當(dāng)前的一些自動(dòng)化測(cè)試工具nQTPnC+ TesternLoadrunner開(kāi)發(fā)人員vs.測(cè)試人員n開(kāi)發(fā)人員寫(xiě)代碼,測(cè)試人員測(cè)代碼;n兩種人

5、員既有區(qū)別又互相補(bǔ)充;n同一個(gè)人在不同階段可能充當(dāng)不同的角色;n測(cè)試技術(shù)對(duì)兩種人員都有用。1.2 軟件質(zhì)量Aditya P. Mathur 2009Aditya P. Mathur 2009軟件質(zhì)量靜態(tài)質(zhì)量特性靜態(tài)質(zhì)量特性: 結(jié)構(gòu)化的, 可維護(hù)的, 可測(cè)試的代碼,以及正確性和完整的文檔。動(dòng)態(tài)質(zhì)量特性動(dòng)態(tài)質(zhì)量特性: 軟件可靠性,正確性,完整性,一致性,可用性和效率。軟件質(zhì)量 (續(xù).)可靠性:可靠性:指一個(gè)軟件正確運(yùn)行的概率。正確性:正確性:指一個(gè)軟件的正確操作。通常與一些文檔有關(guān)。Aditya P. Mathur 2009軟件質(zhì)量 (續(xù).)完整性完整性指的是所有在需求或用戶手冊(cè)中列出的特性都能得

6、到,一個(gè)不完整的軟件是沒(méi)有完整實(shí)現(xiàn)所有的需要的特征的軟件。一致性一致性是指遵循一套共同的約定和假設(shè)。例如,在用戶界面上的所有按鈕可能會(huì)遵循一個(gè)共同的顏色編碼約定。不一致的一個(gè)例子是當(dāng)一個(gè)數(shù)據(jù)庫(kù)應(yīng)用程序顯示一個(gè)人在數(shù)據(jù)庫(kù)中的出生日期。Aditya P. Mathur 2009軟件質(zhì)量 (續(xù).)實(shí)用性:實(shí)用性:指的是一個(gè)應(yīng)用程序在使用時(shí)是否容易。這本身就是一個(gè)可用性測(cè)試存在的技術(shù)領(lǐng)域。心理學(xué)在可用性測(cè)試設(shè)計(jì)中起著重要的作用。性能:性能:指的是應(yīng)用程序需要執(zhí)行請(qǐng)求的任務(wù)的時(shí)間。它被認(rèn)為是一個(gè)非功能性要求。它是在諸如指定“這個(gè)任務(wù)必須在一臺(tái)速度為Y,具有ZG字節(jié)內(nèi)存機(jī)器,上以X單位每秒的速度執(zhí)行”Ad

7、itya P. Mathur 2009軟件可靠性:兩種定義軟件可靠性軟件可靠性 ANSI/IEEE Std 729-1983: 是軟件在給定的時(shí)間間隔和在給定條件下的無(wú)故障操作概率。軟件可靠性:軟件可靠性:是軟件在預(yù)期環(huán)境下無(wú)故障運(yùn)行的可能性。1.3 需求、運(yùn)行結(jié)果和正確性Aditya P. Mathur 2009Aditya P. Mathur 2009需求、行為、正確性需求1:請(qǐng)寫(xiě)一個(gè) 程序,輸入兩個(gè)整數(shù),并輸出這兩個(gè)整數(shù)中最大的那一個(gè)。需求2:請(qǐng)寫(xiě)一個(gè) 程序,它輸入一個(gè)整數(shù)序列,并輸出該序列的排序的版本。下面兩個(gè)需求將得到不同的兩個(gè)程序: Aditya P. Mathur 2009需求的

8、不完整性假設(shè)開(kāi)發(fā)了程序maxmax,以滿足需求1。最大的預(yù)期的輸出,當(dāng)輸入整數(shù)是13和19可以很容易地確定為19。現(xiàn)在假設(shè)測(cè)試人員想知道,兩個(gè)整數(shù)在輸入到該程序時(shí),是在同一行中輸入然后加一個(gè)回車,還是在兩行中輸入,每個(gè)整數(shù)后面都要鍵入回車。而上述要求未能提供這個(gè)問(wèn)題的答案。Aditya P. Mathur 2009需求的二義性需求2是有歧義的。目前尚不清楚輸入的序列是按升序還是按降序排列。滿足需求2的排序程序,它的具體行為將依賴于寫(xiě)排序的程序員。Aditya P. Mathur 2009輸入域(輸入空間)所有可能輸入到程序P的集合,被稱為P的輸入域輸入域或輸入空間輸入空間。對(duì)于上面提到的需求1

9、,我們發(fā)現(xiàn)max的輸入域是所有的成對(duì)整數(shù)的集合,其中在成對(duì)整數(shù)的每個(gè)元素的范圍是從-32,768到32,767的。對(duì)于需求2,是不可能找到的排序程序的輸入域。Aditya P. Mathur 2009輸入域(續(xù))修改需求2: 請(qǐng)寫(xiě)一個(gè)程序,輸入一個(gè)整數(shù)序列,并按升序或降序排列輸出這個(gè)序列中的。輸出序列的順序由一個(gè)需求字符決定,該參數(shù)為“A”輸出一個(gè)遞增序列,為“D”則輸出遞減序列。 同時(shí),在提供到程序中輸入序列,需求字符首先輸入,然后是進(jìn)行排序的整數(shù)序列,序列使用句號(hào)作為結(jié)束符。Aditya P. Mathur 2009輸入域(續(xù))基于上述修改后的需求,對(duì)于排序的輸入域是“對(duì)”的集合。每一“對(duì)

10、”的第一個(gè)元素是一個(gè)字符,第二元素是由零個(gè)或多個(gè)整數(shù)構(gòu)成的序列,并以句號(hào)結(jié)束。軟件正確性n如果軟件針對(duì)其輸入域的所有元素都如期望的方式運(yùn)行,那么這個(gè)軟件是正確的。Aditya P. Mathur 2009有效/無(wú)效輸入修改后的排序需求提到,要求字符可以是“A”和“D”,但沒(méi)有回答這個(gè)問(wèn)題:“如果用戶輸入了一個(gè)不同的字符該怎么辦?”當(dāng)使用sort程序時(shí),用戶絕對(duì)有可能鍵入其他字符而不是“A”和“D”等。sort程序除“A”和“D”外的任何字符都被認(rèn)為是無(wú)效的輸入無(wú)效的輸入。然而對(duì)于排序的需求并沒(méi)有指定遇到一個(gè)無(wú)效的輸入時(shí)應(yīng)該采取什么行動(dòng)。1.4 正確性與可靠性Aditya P. Mathur 2

11、009Aditya P. Mathur 2009正確性雖然大家都很渴望一個(gè)程序的正確性,但這幾乎從來(lái)都不是測(cè)試的目標(biāo)。 通過(guò)測(cè)試確認(rèn)的正確性,將意味著測(cè)試程序輸入域中的所有元素。在實(shí)踐中遇到的大多數(shù)情況下,這是不可能完成的任務(wù)。因此,正確性是通過(guò)程序的數(shù)學(xué)因此,正確性是通過(guò)程序的數(shù)學(xué)證明成立。證明成立。Aditya P. Mathur 2009正確性和測(cè)試正確性嘗試確認(rèn)一個(gè)程序沒(méi)有錯(cuò)誤沒(méi)有錯(cuò)誤,而測(cè)試是嘗試發(fā)現(xiàn)程序中是否有錯(cuò)誤。 因此,測(cè)試的完整性并不一定證明程序沒(méi)有錯(cuò)誤。測(cè)試,調(diào)試和錯(cuò)誤清除過(guò)程一起增加我們對(duì)被測(cè)試,調(diào)試和錯(cuò)誤清除過(guò)程一起增加我們對(duì)被測(cè)程序的正常運(yùn)行的信心。測(cè)程序的正常運(yùn)行的

12、信心。可靠性n軟件可靠性:軟件可靠性:是軟件在預(yù)期環(huán)境下無(wú)故障運(yùn)行的可能性。n軟件可靠性與軟件正確性的關(guān)系:一個(gè)是二元度量,一個(gè)是連續(xù)度量;Aditya P. Mathur 2009操作剖面操作剖面操作剖面是程序怎樣被使用的數(shù)值描述??紤]一個(gè)排序程序,它允許兩種類型的輸入序列。對(duì)該程序的一個(gè)操作剖面如下所示。Aditya P. Mathur 2009操作剖面輸入序列輸入序列概率概率只包含數(shù)字的輸入序列只包含數(shù)字的輸入序列0.9包含字母數(shù)字串的輸入序列包含字母數(shù)字串的輸入序列0.1Aditya P. Mathur 2009操作剖面輸入序列輸入序列概率概率只包含數(shù)字的輸入序列只包含數(shù)字的輸入序列0

13、.1包含字母數(shù)字串的輸入序列包含字母數(shù)字串的輸入序列0.91.5 測(cè)試與調(diào)試Aditya P. Mathur 2009Aditya P. Mathur 2009測(cè)試和調(diào)試測(cè)試是確定一個(gè)程序是否有任何錯(cuò)誤的過(guò)程。當(dāng)測(cè)試揭示了一個(gè)錯(cuò)誤,確定此錯(cuò)誤的原因,并消除它的過(guò)程,被稱為調(diào)試。Aditya P. Mathur 2009一個(gè)測(cè)試/調(diào)試的周期輸入域構(gòu)造測(cè)試輸入運(yùn)行程序操作剖面測(cè)試計(jì)劃運(yùn)行結(jié)果如預(yù)期的那樣嗎?結(jié)束測(cè)試嗎?編寫(xiě)測(cè)試報(bào)告錯(cuò)誤的原因現(xiàn)在已檢查出來(lái)了嗎?規(guī)格說(shuō)明糾正錯(cuò)誤現(xiàn)在糾正錯(cuò)誤嗎?編寫(xiě)未處理錯(cuò)誤報(bào)告輸入數(shù)據(jù)測(cè)試用例運(yùn)行結(jié)果修改嗎?采用采用是否是否否是否采用調(diào)試軟件是Aditya P. M

14、athur 2009測(cè)試計(jì)劃一個(gè)測(cè)試周期通常是由一個(gè)測(cè)試計(jì)劃指導(dǎo)。例如:要測(cè)試一個(gè)排序程序,看它是否滿足前面給出的要求。那么,需要做下面這些事情。至少執(zhí)行兩個(gè)輸入序列進(jìn)行排序,其中一個(gè)用“A”另一個(gè)用“D”作為請(qǐng)求字符。Aditya P. Mathur 2009測(cè)試計(jì)劃(續(xù))用空的輸入序列執(zhí)行程序一次。測(cè)試程序的魯棒性,即給出一個(gè)錯(cuò)誤的輸入,例如鍵入“R”作為請(qǐng)求字符。測(cè)試程序過(guò)程中出現(xiàn)的所有失效應(yīng)該被記錄在使用公司失效報(bào)告格式的一個(gè)合適的文件中。Aditya P. Mathur 2009測(cè)試用例/數(shù)據(jù) 測(cè)試用例是由測(cè)試數(shù)據(jù)將被輸入到程序和預(yù)期的輸出構(gòu)成的對(duì)。測(cè)試數(shù)據(jù)是一個(gè)值的集合,每個(gè)值對(duì)應(yīng)

15、一個(gè)輸入變量。測(cè)試集是零個(gè)或多個(gè)測(cè)試用例的集合。sort的測(cè)試用例的例子: 測(cè)試數(shù)據(jù): 期望輸出: -29 12 32運(yùn)行被測(cè)軟件n運(yùn)行被測(cè)軟件是一個(gè)重要步驟;n軟件運(yùn)行的實(shí)際復(fù)雜性依賴于軟件本身;n為運(yùn)行被測(cè)軟件,測(cè)試人員常常要搭建測(cè)試床。n初始化全局變量;n輸入測(cè)試用例;n運(yùn)行被測(cè)軟件;n記錄產(chǎn)生的輸出;Aditya P. Mathur 2009程序行為n程序行為可以用幾種方法來(lái)描述:純自然語(yǔ)言,狀態(tài)圖,形式化的數(shù)學(xué)形式。n狀態(tài)圖描述了程序狀態(tài)以及程序是如何根據(jù)輸入序列或輸入改變狀態(tài)。程序行為的例子n可以用軟件狀態(tài)來(lái)定義軟件行為;n軟件的一個(gè)狀態(tài),是指軟件當(dāng)中所有變量當(dāng)前值的集合,以及下一

16、步要執(zhí)行的語(yǔ)句的指稱。n軟件狀態(tài)的轉(zhuǎn)換序列被稱為軟件行為。Aditya P. Mathur 2009程序行為的例子一個(gè)菜單應(yīng)用程序Aditya P. Mathur 2009程序行為的例子(續(xù))啟動(dòng)程序用戶執(zhí)行的操作程序狀態(tài)等待用戶輸入用戶鼠標(biāo)點(diǎn)擊“File”顯示出下拉菜單用戶選擇“Open”用戶釋放鼠標(biāo)加亮顯示“Open”在一個(gè)窗口中顯示出當(dāng)前目錄下的文件名稱s3Aditya P. Mathur 2009對(duì)程序行為的觀察和分析用于檢查所觀察到的行為是否正確的實(shí)體被稱為測(cè)試預(yù)言測(cè)試預(yù)言(Oracle)。步驟一:測(cè)試人員觀察程序的行為。 步驟二:測(cè)試人員分析觀察到的行為,以檢查它是否是正確與否。對(duì)

17、大型商業(yè)程序而言,這兩個(gè)步驟都可能相當(dāng)復(fù)雜。Aditya P. Mathur 2009測(cè)試預(yù)言的例子輸入測(cè)試預(yù)言觀察到的運(yùn)行結(jié)果與預(yù)期結(jié)果一致嗎?被測(cè)軟件觀察到的運(yùn)行結(jié)果Yes或No并給出解釋Aditya P. Mathur 2009測(cè)試預(yù)言:程序測(cè)試預(yù)言還可以設(shè)計(jì)成一個(gè)用來(lái)檢查其他程序的行為的程序。例如,一個(gè)人可能使用矩陣乘法程序來(lái)檢查一個(gè)矩陣求逆程序是否已經(jīng)生成了正確的輸出。在這種情況下,矩陣求逆程序把給定矩陣A和所生成B(A的逆矩陣)作為輸出到矩陣乘法的參數(shù)。Aditya P. Mathur 2009測(cè)試預(yù)言的構(gòu)造自動(dòng)化測(cè)試預(yù)言的構(gòu)造,如一個(gè)Oracle用于檢查一個(gè)矩陣乘法程序或排序程序

18、,需要確定程序的輸入輸出關(guān)系。在一般情況下,自動(dòng)化測(cè)試預(yù)言的構(gòu)造是一個(gè)相當(dāng)復(fù)雜的任務(wù)。Aditya P. Mathur 2009測(cè)試預(yù)言的構(gòu)造(續(xù))輸入數(shù)據(jù)生成器HVideo測(cè)試預(yù)言數(shù)據(jù)庫(kù)1.6 測(cè)試度量Aditya P. Mathur 2009測(cè)試度量n測(cè)試度量是一些測(cè)量標(biāo)準(zhǔn),用于在測(cè)試過(guò)程中定量描述軟件測(cè)試的進(jìn)度、質(zhì)量、資源和規(guī)模。n軟件測(cè)試可以在組織、過(guò)程、項(xiàng)目、產(chǎn)品等級(jí)別對(duì)測(cè)試進(jìn)行度量。產(chǎn)品級(jí)度量:通用度量n針對(duì)具體的產(chǎn)品,可以用一些度量來(lái)描述產(chǎn)品的相關(guān)特性。n圈復(fù)雜度:基于程序控制流圖,用于描述程序的復(fù)雜性。公式:V(G) = E-N+2p。其中,E是節(jié)點(diǎn)數(shù),N是邊數(shù),p是G中強(qiáng)連通

19、分支數(shù)。V(G)值越大,說(shuō)明程序的復(fù)雜性越高。nHalstead復(fù)雜性度量:用軟件規(guī)模和功耗/工作量,估算在軟件開(kāi)發(fā)中出現(xiàn)的缺陷數(shù)量。n公式:B=7.6E0.667S0.333其中,E是工作量,S是軟件的規(guī)模。組織級(jí)、項(xiàng)目級(jí)和過(guò)程級(jí)度量n組織級(jí)度量n針對(duì)整體項(xiàng)目的規(guī)劃和管理。這類度量部分來(lái)源于匯聚多個(gè)跨項(xiàng)目的相容度量。n這些度量有利于高層管理進(jìn)行資源配置。n項(xiàng)目級(jí)度量n與具體項(xiàng)目有關(guān)的度量。用于對(duì)項(xiàng)目的跟蹤和控制。n過(guò)程級(jí)度量n用于評(píng)價(jià)測(cè)試過(guò)程。產(chǎn)品級(jí)度量:面向?qū)ο筌浖現(xiàn)代程序設(shè)計(jì)語(yǔ)言,不完全符合Halstead復(fù)雜性度量。因此引入了其他一些方法對(duì)軟件可靠性進(jìn)行度量。度量度量含義含義可靠性缺

20、陷密度缺陷嚴(yán)重程度測(cè)試覆蓋度圈復(fù)雜度類加權(quán)方法類耦合響應(yīng)集直接子類數(shù)軟件在給定條件下針對(duì)特定操作剖面失效的概率。每千行代碼的缺陷數(shù)根據(jù)嚴(yán)重性對(duì)缺陷的劃分可測(cè)項(xiàng)所占的比例一個(gè)程序基于CFG的復(fù)雜性被測(cè)類中所有方法的復(fù)雜度之和與特定類耦合的類的數(shù)量當(dāng)向?qū)ο驩發(fā)送一消息,能夠直接或間接激發(fā)的方法集合。在類層次中,一個(gè)類的直接子類數(shù)量進(jìn)度跟蹤與趨勢(shì)n在開(kāi)發(fā)或測(cè)試過(guò)程中,按照固定時(shí)間間隔進(jìn)行測(cè)試度量。測(cè)試結(jié)果將提供一種趨勢(shì)。n通過(guò)統(tǒng)計(jì)這些度量的結(jié)果,可以總結(jié)出產(chǎn)品的狀態(tài)。n例如統(tǒng)計(jì)累積發(fā)現(xiàn)的缺陷數(shù)目,可以得到一條累積缺陷數(shù)目隨時(shí)間變化的曲線,當(dāng)曲線趨于飽和時(shí),說(shuō)明產(chǎn)品質(zhì)量趨于穩(wěn)定。靜態(tài)度量與動(dòng)態(tài)度量n靜

21、態(tài)度量不需要執(zhí)行軟件。n動(dòng)態(tài)度量需要執(zhí)行軟件。可測(cè)試性nIEEE定義:系統(tǒng)或組件有助于建立測(cè)試準(zhǔn)則,執(zhí)行測(cè)試以便判斷這些準(zhǔn)則是否滿足的程度。n軟件越復(fù)雜,軟件可測(cè)試性越低。1.7 軟件測(cè)試與硬件測(cè)試Aditya P. Mathur 2009軟件測(cè)試VS.硬件測(cè)試n軟件測(cè)試與硬件測(cè)試存在相似之處,也有差異。n軟件不會(huì)磨損,不會(huì)因時(shí)間的推移而衰老。硬件不是這樣。n軟件錯(cuò)誤主要是設(shè)計(jì)和開(kāi)發(fā)時(shí)產(chǎn)生;硬件缺陷主要在制造階段或后期產(chǎn)生。硬件設(shè)計(jì)可以采用內(nèi)置自檢技術(shù)。n硬件測(cè)試采用基于故障模型來(lái)設(shè)計(jì)測(cè)試;軟件測(cè)試無(wú)統(tǒng)一的故障模型。n硬件測(cè)試和軟件測(cè)試的另一個(gè)主要差別是測(cè)試域的不同。軟件測(cè)試VS.硬件測(cè)試n測(cè)

22、試覆蓋率問(wèn)題:對(duì)于大型和復(fù)雜的軟件和硬件而言,都不可能進(jìn)行完全測(cè)試。n硬件測(cè)試中產(chǎn)生“可接受的測(cè)試覆蓋率”。通過(guò)測(cè)試覆蓋的故障數(shù)和理論的故障數(shù)的比率來(lái)度量測(cè)試的情況。n這種思想在軟件測(cè)試中產(chǎn)生了變異測(cè)試方法。1.8 測(cè)試與驗(yàn)證Aditya P. Mathur 2009Aditya P. Mathur 2009測(cè)試和驗(yàn)證程序驗(yàn)證的目的是通過(guò)展示它不包含任何錯(cuò)誤來(lái)證明程序的正確性。這與測(cè)試的目的非常不同,因?yàn)闇y(cè)試是揭露在一個(gè)程序中的錯(cuò)誤。程序驗(yàn)證與測(cè)試最好視為互補(bǔ)的技術(shù)。在實(shí)踐中,人們可以擺脫程序驗(yàn)證,但不能略過(guò)測(cè)試。Aditya P. Mathur 2009測(cè)試和檢驗(yàn)(續(xù))測(cè)試是不是完美的技術(shù),

23、一個(gè)程序盡管成功地完成了一組測(cè)試,但可能還是包含錯(cuò)誤。驗(yàn)證看起來(lái)似乎是完美的技術(shù),因?yàn)樗兄Z以驗(yàn)證程序沒(méi)有錯(cuò)誤。然而,驗(yàn)證程序的人可能在驗(yàn)證過(guò)程中犯錯(cuò)誤;有可能是輸入條件的不正確假設(shè),而不正確的假設(shè)可能作出程序界面有關(guān)組件的,等等。有已驗(yàn)證和發(fā)布的程序被證明是不正確的。有已驗(yàn)證和發(fā)布的程序被證明是不正確的。1.9 缺陷管理Aditya P. Mathur 2009缺陷管理n缺陷管理是軟件開(kāi)發(fā)和測(cè)試的重要組成部分。n缺陷管理包括:缺陷預(yù)防、缺陷發(fā)現(xiàn)、缺陷記錄和報(bào)告、缺陷分類、缺陷糾正、缺陷預(yù)測(cè)等。n存在一些用于缺陷管理的工具。1.10 執(zhí)行歷史Aditya P. Mathur 2009執(zhí)行歷史n

24、又稱執(zhí)行軌跡,是程序一次執(zhí)行中收集到的程序各方面信息的有序集合。n可以用多種方法表示執(zhí)行軌跡n語(yǔ)句的執(zhí)行序列;n對(duì)象方法的訪問(wèn)序列;n程序變量值的變化的序列;1.11 測(cè)試生成策略Aditya P. Mathur 2009Aditya P. Mathur 2009測(cè)試生成任何形式的測(cè)試生成都使用源文檔。最非正規(guī)的測(cè)試方法,測(cè)試人員也在腦海里駐留了一個(gè)基于知識(shí)和需求的源文檔。在大多數(shù)的商業(yè)環(huán)境中,測(cè)試過(guò)程更正式一些。測(cè)試會(huì)通過(guò)正式和非正式的混合方法直接從作為源的需求文檔產(chǎn)生。在更先進(jìn)的測(cè)試過(guò)程中,需求將作為開(kāi)發(fā)過(guò)程中的正規(guī)模型的來(lái)源。Aditya P. Mathur 2009測(cè)試生成策略基于模型

25、的:基于模型的:要求需求的一個(gè)子集使用了正式的符號(hào)(通常為圖形界面)來(lái)建模。模型:有限狀態(tài)機(jī),時(shí)間自動(dòng)機(jī),Petri網(wǎng)等?;谝?guī)范的:基于規(guī)范的:要求需求的一個(gè)子集使用一個(gè)正式的數(shù)學(xué)符號(hào)進(jìn)行建模。例如:B,Z,和Larch?;诖a:基于代碼:直接從代碼中生成的測(cè)試。Aditya P. Mathur 2009測(cè)試生成策略 (總結(jié))需求有窮狀態(tài)機(jī)狀態(tài)圖Petri網(wǎng)時(shí)間I/O自動(dòng)機(jī)代數(shù)和邏輯規(guī)范代碼運(yùn)行時(shí)數(shù)據(jù)測(cè)試生成算法測(cè)試生成算法測(cè)試生成算法測(cè)試生成算法測(cè)試生成算法測(cè)試生成算法測(cè)試生成算法測(cè)試用例1.12 靜態(tài)測(cè)試Aditya P. Mathur 2009靜態(tài)測(cè)試n靜態(tài)測(cè)試最大特點(diǎn)是不需要執(zhí)行被

26、測(cè)軟件;n走查:走查:非正式的過(guò)程,對(duì)源代碼和文檔的檢查。n審查:審查:更加正規(guī)的檢查過(guò)程。使用靜態(tài)代碼分析工具n通過(guò)靜態(tài)代碼分析工具得到代碼的相關(guān)信息。如:控制流信息、數(shù)據(jù)流信息等。n有商業(yè)化和開(kāi)源的靜態(tài)分析工具。軟件復(fù)雜性和靜態(tài)測(cè)試n通過(guò)分析軟件的復(fù)雜性,在靜態(tài)測(cè)試中對(duì)較復(fù)雜的模型給予更多的關(guān)注。n可以用不同的復(fù)雜性度量來(lái)計(jì)算模塊復(fù)雜性。n同時(shí)需要考慮模塊功能的重要性。1.13 基于模型的測(cè)試與模型檢驗(yàn)Aditya P. Mathur 2009基于模型的測(cè)試n基于模型的測(cè)試:對(duì)軟件行為進(jìn)行建模,以及根據(jù)軟件的形式化模型設(shè)計(jì)測(cè)試活動(dòng)。模型檢測(cè)n模型檢測(cè)是指用于驗(yàn)證特定模型的一個(gè)或多個(gè)特性的技

27、術(shù)。1.14 控制流圖Aditya P. Mathur 2009Aditya P. Mathur 2009程序表示:基本塊在程序P的一個(gè)基本塊是只有一個(gè)入口和一個(gè)出口點(diǎn)的連續(xù)的語(yǔ)句序列。因此,一個(gè)塊都有唯一的入口點(diǎn)和出口點(diǎn)。程序的控制總是在基本塊的入口點(diǎn)進(jìn)入,并從其出口點(diǎn)退出。除了在基本塊的出口點(diǎn)外,不可能在基本塊內(nèi)的任何點(diǎn)退出或停止。當(dāng)一個(gè)基本塊的入口和出口點(diǎn)重合時(shí),該塊只包含一個(gè)語(yǔ)句。Aditya P. Mathur 2009基本塊的例子Example: 求X的Y次冪的程序Aditya P. Mathur 2009基本塊的例子(續(xù))Basic blocksAditya P. Mathur

28、2009控制流程圖(CFG)一個(gè)控制流圖(或流圖)G 被定義為一個(gè)有限的點(diǎn)的集合N和一個(gè)有限的邊的集合E。E中的一條邊(i, j)連接N中的兩個(gè)結(jié)點(diǎn)ni和nj 。我們經(jīng)常用G= (N, E)來(lái)表達(dá)一個(gè)點(diǎn)集為N,邊集為E的流圖。Aditya P. Mathur 2009控制流程圖(CFG)一個(gè)程序的流圖中,每個(gè)基本塊成為一個(gè)節(jié)點(diǎn),而邊被用來(lái)表示控制在塊之間的流動(dòng)。塊和節(jié)點(diǎn)被標(biāo)記,使得塊bi對(duì)應(yīng)于結(jié)點(diǎn)Ni。 一條邊 (i, j) 連接基本塊 bi和bj說(shuō)明控制可以從塊bi到達(dá)塊bj。 我們還假設(shè)在N中有一個(gè)節(jié)點(diǎn)標(biāo)記為Start,它沒(méi)有進(jìn)入的邊,而另一個(gè)節(jié)點(diǎn)標(biāo)記為End,它沒(méi)有離開(kāi)的邊。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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論