軟件測試方法論.ppt
《軟件測試方法論.ppt》由會員分享,可在線閱讀,更多相關(guān)《軟件測試方法論.ppt(132頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、1,軟件測試工程師培訓(xùn),軟件測試方法論,2,主要內(nèi)容,1 軟件測試方法概述 2 軟件測試規(guī)范 3 軟件測試用例設(shè)計黑盒測試 4 軟件測試用例設(shè)計白盒測試 5小結(jié),3,1 軟件測試方法概述,1.1 軟件測試活動及信息流 1.2 測試方法 1.3 生成測試用例的信息來源 1.4 小結(jié),4,1.1 軟件測試活動及信息流,測試是從大量的測試用例中選擇有限的測試用例發(fā)現(xiàn)軟件中的大部分缺陷的一種技術(shù) 好的測試用例的4個特性: 檢測軟件質(zhì)量的有效性,是否能發(fā)現(xiàn)缺陷,或至少可能發(fā)現(xiàn)缺陷; 可仿效的測試用例可以測試很多內(nèi)容,因而減少測試用例的數(shù)量; 經(jīng)濟(jì)性,測試用例的執(zhí)行、分析和調(diào)試是否經(jīng)濟(jì) 測試用例的可修改性
2、,每次軟件修改后對測試用例的維護(hù)成本,5,測試活動,6,測試活動,1 測試條件取決于被測試驗證的項目或事件。如等價劃分、邊界值分析、因果圖等。測試條件是被測環(huán)境的描述,可以用多種方式描述:如簡單的語言,表格項形式或類似于流圖的圖表形式;標(biāo)識測試條件的活動最好與開發(fā)活動(即V模型左邊的活動)并行開展,7,測試活動,2 設(shè)計測試用例確定“怎樣測試”。測試用例(test case)是按一定順序執(zhí)行的與測試目標(biāo)(test object, 測試?yán)碛苫蚰康模┫嚓P(guān)的一系列測試。測試用例設(shè)計將產(chǎn)生許多測試所包括的輸入值、期望結(jié)果及其他任何運(yùn)行測試的有關(guān)信息,如環(huán)境要求。期望輸出包括應(yīng)輸出或建立的內(nèi)容,應(yīng)修改或
3、更新或應(yīng)刪除的內(nèi)容。期望輸出集可以是一個很大的集合。,8,測試活動,一個測試用例,9,測試活動,3 開發(fā)測試用例包括準(zhǔn)備測試腳本、測試輸入、測試數(shù)據(jù)以及期望輸出。測試腳本(test script)是 具有正規(guī)語法的數(shù)據(jù)和指令的集合,在測試執(zhí)行自動工具使用中,通常以文件形式保存;必須先完成測試用例的先決條件(precondition),然后再執(zhí)行測試。測試用例可能要求專門的硬件或軟件,如網(wǎng)絡(luò)環(huán)境或打印機(jī)等;期望輸出可以組成成文件形式用于自動工具。對于手動測試,期望輸出僅僅只是簡單地記錄在手工測試過程或腳本中。設(shè)置用于自動比較的期望輸出比設(shè)置用于手工測試的期望輸出復(fù)雜得多。在自動工具中要求每項內(nèi)容
4、都要拼寫正確,而在手工測試中要求沒這么嚴(yán)格。 測試開發(fā)的任何工作可以提前進(jìn)行(相對V模型左邊的活動進(jìn)行),以后可以節(jié)省時間。,10,測試活動,4 執(zhí)行測試用例 對于手動測試來講,測試者按事先準(zhǔn)備好的手工過程進(jìn)行測試,測試者輸入數(shù)據(jù)、觀察輸出、記錄發(fā)現(xiàn)的問題。 對于自動測試,可能只需要啟動測試工具,并告訴工具執(zhí)行哪些測試用例; 測試執(zhí)行只能在軟件開發(fā)完成后進(jìn)行,即V模型右邊的活動。,11,測試活動,5 將測試結(jié)果與期望輸出進(jìn)行比較應(yīng)該對每次測試的實際輸出進(jìn)行分析研究,判斷軟件功能是否正確。該驗證可以是非正的測試者主觀判斷,也可以是將實際輸出與期望輸出進(jìn)行嚴(yán)格準(zhǔn)確的比較。一些信息比較,如可以在執(zhí)行
5、測試時進(jìn)行顯示屏幕上的信息,另一些輸出比較,如修改數(shù)據(jù)庫記錄,只能在測試執(zhí)行結(jié)束后進(jìn)行。自動測試一般結(jié)合了這兩種方法。,12,測試階段的信息流,13,測試階段的信息流,測試階段的輸入信息有兩類: 軟件配置:這是測試的對象,包括需求說明書、設(shè)計說明書和被測的源程序等。 測試配置:包括測試計劃、測試步驟、測試用例(測試數(shù)據(jù)),以及具體實施測試的測試程序、測試工具等,14,1.2 測試方法,靜態(tài)方法 動態(tài)方法 黑盒測試 白盒測試,15,靜態(tài)方法和動態(tài)方法,靜態(tài)方法的主要特征是在用計算機(jī)測試源程序時,計算機(jī)并不真正運(yùn)行被測試的程序,只對被測程序進(jìn)行特性分析。因此,靜態(tài)方法常稱為“分析”,靜態(tài)分析是對被
6、測程序進(jìn)行特性分析的一些方法的總稱。 動態(tài)方法的主要特征是計算機(jī)必須真正運(yùn)行被測試的程序,通過輸入測試用例,對其運(yùn)行情況(輸入/輸出的對應(yīng)關(guān)系)進(jìn)行分析。,16,黑盒測試,黑盒測試(Blackbox Testing)又稱功能測試、數(shù)據(jù)驅(qū)動測試或基于規(guī)格說明的測試,是一種從用戶觀點出發(fā)的測試。用這種方法進(jìn)行測試時,被測程序被當(dāng)作一個黑盒,在不考慮程序內(nèi)部結(jié)構(gòu)和內(nèi)部特性,測試者只知道該程序輸入和輸出之間的關(guān)系或程序的功能的情況下,依靠能夠反映這一關(guān)系和程序功能的需求規(guī)格說明書考慮確定測試用例和推斷測試結(jié)果的正確性。軟件的黑盒測試被用來證實軟件功能的正確性和可操作性。,17,白盒測試,白盒測試(Wh
7、itebox Testing)又稱結(jié)構(gòu)測試、邏輯驅(qū)動測試或基于程序的測試。它依賴于對程序細(xì)節(jié)的嚴(yán)密檢驗,針對特定條件和/與循環(huán)集設(shè)計測試用例,對軟件的邏輯路經(jīng)進(jìn)行測試。在程序的不同點檢驗“程序的狀態(tài)”以判定其實際情況是否和預(yù)期的狀態(tài)相一致。軟件的白盒測試用來分析程序的內(nèi)部結(jié)構(gòu)。,18,白盒測試,白盒測試要求對某些程序的結(jié)構(gòu)特性做到一定程度的覆蓋,或者說是“基于覆蓋的測試” 。最為常見的程序結(jié)構(gòu)覆蓋有 : 語句覆蓋:它要求被測程序的每一可執(zhí)行語句在測試中盡可能都檢驗過,這是最弱的邏輯覆蓋準(zhǔn)則; 分支覆蓋或判定覆蓋:要求程序中所有判定的分支盡可能得到檢驗; 條件覆蓋:當(dāng)判定式中含有多個條件時,要求
8、每個條件的取值均得到檢驗; 判定條件覆蓋:同時考慮條件的組合值及判定結(jié)果的檢驗; 路徑覆蓋:只考慮對程序路徑的全面檢驗。取得測試覆蓋的方法程序插裝,,19,白盒測試,既然黑盒測試是測試軟件與需求的一致性,為什么還要白盒測試? 編程是容易發(fā)生邏輯錯誤和作出不正確的假設(shè) 如對執(zhí)行路徑假設(shè)不正確,會產(chǎn)生設(shè)計錯誤,白盒測試能發(fā)現(xiàn)這樣的錯誤 錄入錯誤是隨機(jī)的,20,黑盒測試與白盒測試的比較,21,測試階段與測試方法,22,1.3測試信息來源,基于軟件規(guī)約生成測試用例 基于軟件設(shè)計生成測試用例 基于程序生存測試用例,23,1.4小結(jié),軟件測試主要工作就是確定合適的測試用例; 測試過程貫穿在整個軟件開發(fā)活動
9、中; 測試方法: 動態(tài)、靜態(tài)、黑盒、白盒等,24,2軟件測試用例設(shè)計黑盒測試,2.0 概述 2.1 等價類劃分 2.2 因果圖 2.3 邊值分析 2.4 判定表驅(qū)動測試 2.5 正交實驗設(shè)計法 2.6 自動測試用例生成方法 2.7 小結(jié),25,2.0 概述,這種方法是把測試對象看做一個黑盒子,測試人員完全不考慮程序內(nèi)部的邏輯結(jié)構(gòu)和內(nèi)部特性,只依據(jù)程序的需求規(guī)格說明書,檢查程序的功能是否符合它的功能說明。 黑盒測試又叫做功能測試或數(shù)據(jù)驅(qū)動測試。,26,黑盒測試方法是在程序接口上進(jìn)行測試,主要是為了發(fā)現(xiàn)以下錯誤: 是否有不正確或遺漏了的功能? 在接口上,輸入能否正確地接受? 能否輸出正確的結(jié)果?
10、是否有數(shù)據(jù)結(jié)構(gòu)錯誤或外部信息(例如數(shù)據(jù)文件)訪問錯誤? 性能上是否能夠滿足要求? 是否有初始化或終止性錯誤?,黑盒測試目標(biāo),27,用黑盒測試發(fā)現(xiàn)程序中的錯誤,必須在所有可能的輸入條件和輸出條件中確定測試數(shù)據(jù),來檢查程序是否都能產(chǎn)生正確的輸出。 但這是不可能的。,28,假設(shè)一個程序P有輸入量X和Y及輸出量Z。在字長為32位的計算機(jī)上運(yùn)行。若X、Y取整數(shù),按黑盒方法進(jìn)行窮舉測試: 可能采用的 測試數(shù)據(jù)組: 232232 264 如果測試一 組數(shù)據(jù)需要1毫秒,一年工作365 24小時,完成所有測試需5億年。,29,2.1 測試用例設(shè)計方法等價類劃分,選取測試用例 等價類劃分的辦法是把程序的輸入域
11、劃分成若干部分,然后從每個部分中選取少數(shù)代表性數(shù)據(jù)當(dāng)作測試用例。 在分析需求規(guī)格說明的基礎(chǔ)上劃分等價類,列出等價類表。,30,2.1.1 等價類,所謂等價類是指某個輸入域的集合。它表示,如果用集合中的一個輸入條件作為測試數(shù)據(jù)進(jìn)行測試不能發(fā)現(xiàn)程序中的錯誤,那么使用集合中的其它輸入條件進(jìn)行測試也不可能發(fā)現(xiàn)錯誤。也就是說,對揭露程序中的錯誤來說,集合中的每個輸入條件是等效的。,31,有效等價類和無效等價類,在考慮等價類時,應(yīng)該注意區(qū)別兩種不同的情況: *有效等價類:有效等價類指的是對程序的規(guī)格說明是有意義的、合理的輸入數(shù)據(jù)所構(gòu)成的集合。在具體問題中,有效等價類可以有一個,也可以是多個。 *無效等價類
12、:無效等價類指對程序的規(guī)格說明是不合理的或無意義的輸入數(shù)據(jù)所構(gòu)成的集合。對于具體的問題,無效等價類至少應(yīng)有一個,也可能有多個。,32,等價類,輸入條件 有效等價類 無效等價類 輸入條件:項數(shù)可以從1到999 有效等價類為“1項數(shù)999” 無效等價類為“項數(shù)999”,33,2.1.2 經(jīng)典例子,“輸入三個整數(shù)作為三邊的邊長構(gòu)成三角形。當(dāng)此三角形為一般三角形、等腰三角形及等邊三角形時,分別做計算” 注意輸入和輸出條件,34,有效等價類,覆蓋有效等價類的測試用例: a b c 覆蓋等價類號碼 3 4 5 (1)--(7) 4 4 5 (1)--(7),(8) 4 5
13、 5 (1)--(7),(9) 5 4 5 (1)--(7),(10) 4 4 4 (1)--(7),(11),35,無效等價類,36,2. 1.3 問題討論,問題:給出下面的有效和無效等價類 輸入條件:“統(tǒng)計全國各省、市、自治區(qū)的人口” 輸入條件:“標(biāo)識符應(yīng)以字母開頭” 輸入條件:長度為1-20的字符串 輸入條件:數(shù)據(jù)庫中的值域, CHAR(20), NOT NULL,37,2. 2 測試方法因果圖,采用因果圖方法(Cause一Effect Graphics)能夠幫助我們按一定步驟,高效率地選擇測試用例,同時還能為我們指出,程序規(guī)格說明描述中存在著什么問題。,3
14、8,2. 2.1因果圖介紹,4種符號分別表示了規(guī)格說明中向4種因果關(guān)系 因果圖中使用了簡單的邏輯符號,以直線聯(lián)接左右結(jié)點。左結(jié)點表示輸入狀態(tài)(或稱原因),右結(jié)點表示輸出狀態(tài)(或稱結(jié)果)。 Ci表示原因,通常置于圖的左部;ei表示結(jié)果,通常在圖的右部。ci和ei均可取值0或1,0表示某狀態(tài)不出現(xiàn),1表示某狀態(tài)出現(xiàn)。,39,關(guān)系,恒等:若ci是1,則ei也是1;否則ei為0。 非:若ci是1,則ei是0;否則ei是1。 或:若c1或c2或c3是1,則ei是1;否則ei為0?!盎颉笨捎腥我鈧€輸入。 與:若c1和c2都是1,則ei為1;否則ei為0?!芭c”也可有任意個輸入。,40,約束,輸入狀態(tài)相互之
15、間還可能存在某些依賴關(guān)系 某些輸入條件本身不可能同時出現(xiàn)。輸出狀態(tài)之間也往往存在約束,41,輸入條件約束類型,對于輸入條件的約束有以下4類: E約束(異):a和b中至多有一個可能為1,即a和b不能同時為1。 I約束(或):a、b和c中至少有一個必須是1,即 a、b 和c不能同時為0。 O約束(唯一);a和b必須有一個,且僅有1個為1。 R約束(要求):a是1時,b必須是1,即不可能a是1時b是0。,42,輸出條件約束類型,輸出條件的約束只有: M約束(強(qiáng)制):若結(jié)果a是1,則結(jié)果b強(qiáng)制為0。,43,2. 2.2 步驟,分析程序規(guī)格說明的描述中,哪些是原因,哪些是結(jié)果。原因常常是輸入條件或是輸入
16、條件的等價類。而結(jié)果是輸出條件。 分析程序規(guī)格說明的描述中語義的內(nèi)容,并將其表示成連接各個原因與各個結(jié)果的“因果圖”。,44,步驟,由于語法或環(huán)境的限制,有些原因和結(jié)果的組合情況是不可能出現(xiàn)的。為表明這些特定的情況,在因果圖上使用若干個特殊的符號標(biāo)明約束條件。 把因果圖轉(zhuǎn)換成判定表。 把判定表中每一列表示的情況寫成測試用例。,45,2. 2.3 例子,軟件規(guī)格說明書 “第一列字符必須是A或B,第二列字符必須是一個數(shù)字,在此情況下進(jìn)行文件的修改。但如果第一列字符不正確,則給出信息L,如果第二列字符不是數(shù)字,則給出信息M?!?46,原因和結(jié)果,原因: 1第一列字符是A; 2第一列字符是B;
17、 3第二列字符是一數(shù)字。 結(jié)果: 21修改文件; 22 給出信息L; 23給出信息M。,47,因果圖和具有約束的因果圖,11為中間節(jié)點; 考慮到原因1和原因2不可能同時為1,因此在因果圖上施加E約束。,48,判定表,根據(jù)因果圖建立如下的判定表,表中8種情況的左面兩列情況中,原因和原因同時為1,這是不可能出現(xiàn)的,故應(yīng)排除這兩種情況。表的最下一欄給出了6種情況的測試用例,這是我們所需要的數(shù)據(jù)。,49,2. 2.4 討論,在較為復(fù)雜的問題中,這個方法常常是十分有效的,它能有力地幫助我們確定測試用例 如果哪個開發(fā)項目在設(shè)計階段就采用了判定表,也就不必再畫因果圖,而是可以直接利用判定表
18、設(shè)計測試用例了。,50,2. 3 測試用例設(shè)計方法邊值分析,在軟件設(shè)計和程序編寫中,常常對于規(guī)格說明中的輸入域邊界或輸出域邊界不夠注意,以致形成一些差錯。實踐證明,在設(shè)計測試用例時,對邊界附近的處理必須給予足夠的重視,為檢驗邊界附近的處理專門設(shè)計測試用例,常常取得良好的測試效果。,51,2. 2.1 邊值分析遵循的原則,如果輸入條件規(guī)定了取值范圍,或是規(guī)定了值的個數(shù),應(yīng)以該范圍的邊界內(nèi)及剛剛超出范圍的邊界外的值,或是分別對最大、最小個數(shù)及稍小于最小、稍大于最大個數(shù)作為測試用例。例如,如果程序的規(guī)格說明中規(guī)定:“重量在10公斤至50公斤范圍內(nèi)的郵件,其郵費計算公式為”。作為測試用例,我們應(yīng)取10
19、及50,還應(yīng)取10.01,49.99,9.99及50.01等。如果另一問題規(guī)格說明規(guī)定:“某輸入文件可包含1至255個記錄,”,則測試用例可取1和255,還應(yīng)取0及256等。,52,遵循以下幾條原則,針對規(guī)格說明的每個輸出條件使用前面的第(1)條原則。例如,某程序的規(guī)格說明要求計算出“每月保險金扣除額為0至116525元”,其測試用例可取000及11652、還可取一001及116526等。如果另一程序?qū)儆谇閳髾z索系統(tǒng),要求每次”最多顯示1條情報摘要”,這時我們應(yīng)考慮的測試用例包括1和4,還應(yīng)包括0和5等。,53,遵循以下幾條原則,如果程序規(guī)格說明中提到的輸入或輸出域是個有序的集合(如順序文件、
20、表格等),就應(yīng)注意選取有序集的第一個和最后一個元素作為測試用例。 分析規(guī)格說明,找出其它的可能邊界條件。,54,2. 2.2 例子,某一為學(xué)生考試試卷評分和成績統(tǒng)計的程序,其規(guī)格說明指出了對程序的要求: 程序的輸入文件由80個字符的一些記錄組成,這些記錄分為三組: 標(biāo)題 這一組只有一個記錄,其內(nèi)容為輸出報告的名字。 試卷各題標(biāo)準(zhǔn)答案記錄 每個記錄均在第80個字符處標(biāo)以數(shù)字“2”。該組的第一個記錄的第1至第3個字符為題目編號(取值為1一999)。第10至第59個字符給出第1至第50題的答案(每個合法字符表示一個答案)。該組的第2,第3個記錄相應(yīng)為第51至第100,第101至第150,題
21、的答案。 每個學(xué)生的答卷描述 該組中每個記錄的第80個字符均為數(shù)字“3”。每個學(xué)生的答卷在若干個記錄中給出。如甲的首記錄第1至第9字符給出學(xué)生姓名及學(xué)號,第10至第59字符列出的是甲所做的第1至第50題的答案。若試題數(shù)超過50,則第2,第3紀(jì)錄分別給出他的第51至第100,第101至第150題的解答。然后是學(xué)生乙的答卷記錄。 若學(xué)生最多為200人,輸入數(shù)據(jù)的形式如圖4。15所示。,55,,學(xué)生考卷評分和成績統(tǒng)計程序輸入數(shù)據(jù)的形式,56,,該程序應(yīng)給出4個輸出報告,即: 按學(xué)生學(xué)號排序,每個學(xué)生的成績(答對的百分比)和等級報告。 按學(xué)生得分排序,每個學(xué)生的成績。 平均分?jǐn)?shù),最
22、高與最低分之差。 按題號排序,每題學(xué)生答對的百分比。,57,,,58,2. 4 判定表驅(qū)動測試,在一些數(shù)據(jù)處理問題中,某些操作是否實施依賴于多個邏輯條件的取值。也即在這些邏輯條件取值的組合所構(gòu)成的多種情況下,分別執(zhí)行不同的操作。處理這類問題的一個非常有力的分析和表達(dá)工具是判定表(Decision Table)。,59,2. 3.1 例子1,一張關(guān)于科技書閱讀指南的判定驅(qū)動表:3個問題8種情況,60,判定表組成,條件樁(Condition Stub) 動作樁(Action Stub) 條件項(Condition Entity) 動作項(Action Entity),61,規(guī)則及規(guī)則合并,任何一
23、個條件組合的特定取值及其相應(yīng)要執(zhí)行的操作稱為規(guī)則。在判定表中貫穿條件項和動作項的一列就是一條規(guī)則。顯然,判定表中列出多少組條件取值,也就有多少條規(guī)則,即條件項和動作項有多少列。 化簡 就是規(guī)則合并有兩條或多條規(guī)則 具有相同的動作, 并且其條件項之間 存在著極為相似的關(guān)系,兩條規(guī)則合并成一條 兩條規(guī)則的進(jìn)一步合并,62,一個規(guī)則合并的例子,一個規(guī)則合并的例子,63,2. 3.2 例子2,問題要求:”對功率大于50馬力的機(jī)器、維修記錄不全或已運(yùn)行10年以上的機(jī)器,應(yīng)給予優(yōu)先的維修處理” 假定,“維修記錄不全”和“優(yōu)先維修處理”均已在別處有更嚴(yán)格的定義 按5步建立判定表,64,建立判定表的步驟,確
24、定規(guī)則的個數(shù)。這里有3個條件,每個條件有兩個取值,故應(yīng)有2*2*2=8種規(guī)則。 列出所有的條件茬和動作茬。 填人條件項。為防止遺漏可從最后1行條件項開始,逐行向上填滿乙如第三行是: Y N Y N Y N Y N第二行是: Y Y N N Y Y N N等等。,65,建立判定表的步驟,填人動作樁和動作頂。這樣便得到形如圖的初始判定表。,66,建立判定表的步驟,化簡。合并相似規(guī)則后得到圖。,67,2. 3.3 判定表在功能測試中的應(yīng)用,一軟件規(guī)格說明 (1)當(dāng)條件1和條件2滿足,并且條件3和條件4不滿足,或者當(dāng)條件1、3和條件4滿足時,要執(zhí)行操作1。 (2)在任一個條件都不滿足時,要執(zhí)行
25、操作2。 (3)在條件1不滿足,而條件4被滿足時,要執(zhí)行操作3。,68,規(guī)則,只給出了16種規(guī)則中的4種,根據(jù)規(guī)格說明得到的判定表 默許的規(guī)則,69,2.3.4 判定表的優(yōu)點和缺點,優(yōu)點:它能把復(fù)雜的問題按各種可能的情況一一列舉出來,簡明而易于理解,也可避免遺漏。 缺點:不能表達(dá)重復(fù)執(zhí)行的動作,例如循環(huán)結(jié)構(gòu)。 其他??,70,使用判定表設(shè)計測試用例的Beizer條件,規(guī)格說明以判定表形式給出,或是很容易轉(zhuǎn)換成判定表。 條件的排列順序不會也不應(yīng)影響執(zhí)行哪些操作。 規(guī)則的排列順序不會也不應(yīng)影響執(zhí)行哪些操作。 每當(dāng)某一規(guī)則的條件已經(jīng)滿足,并確定要執(zhí)行的操作后,不必檢驗別的規(guī)則。 如果某一規(guī)則得到
26、滿足要執(zhí)行多個操作,這些操作的執(zhí)行順序無關(guān)緊要。 B。Beizer提出這5個必要條件的目的是為了使操作的執(zhí)行完全依賴于條件的組合。其實對于某些不滿足這幾條的判定表,同樣可以借以設(shè)計測試用例,只不過尚需增加其它的測試用例罷了。,71,2.5正交實驗設(shè)計法,把軟件功能測試作為實驗的一種,從大量的實驗點中選出適量有代表性的點,應(yīng)用依據(jù)伽羅瓦理論導(dǎo)出的“正交表”,合理安排實驗的一種科學(xué)的實驗設(shè)計方法。 從規(guī)約中找出影響其功能實現(xiàn)的操作對象和外部因素作為因子,因子的取值作為狀態(tài),構(gòu)造因素分析表,利用正交表進(jìn)行各因子的專題組合,構(gòu)造有效的測試數(shù)據(jù)集,并由此建立因果圖。,72,2.6 自動測試用例設(shè)計,一些
27、測試工具可以進(jìn)行部分測試用例自動化,“測試輸入生成工具”,該方法也可以用于某些場合,但自動工具不可能完全替代智力的測試活動; 自動方式可以生成大量的測試用例,但他不區(qū)分哪些測試是最重要的。這些要求有創(chuàng)造力的智力活動只能由測試人員完成。 所有測試生成工具依賴于生成測試的算法,工具比使用相同算法的測試人員的測試更徹底、更精確,但人工測試時可以考慮附加測試。,73,三種測試輸入生成工具,基于代碼測試輸入生成 基于界面測試生成 基于規(guī)格說明測試生成,74,基于代碼測試輸入生成,通過檢測軟件代碼結(jié)構(gòu)生成測試輸入。通過代碼的路徑由判斷點確定的段組成。自動生成每個路徑段邏輯覆蓋條件的輪廓文件。與覆蓋工具一起
28、使用較好。 只產(chǎn)生測試輸入,還需要對測試輸出進(jìn)行比較,不能判斷軟件產(chǎn)生的輸出是否正確,只是說明代碼應(yīng)該做什么。也不能發(fā)現(xiàn)丟失的代碼 另一種方法:可以生成滿足較小變化測試準(zhǔn)則的測試。變化測試(Mutation test)是指代碼或輸入做較小的改變,檢測系統(tǒng)是否可以正確地處理或測試稍微改變的版本。該方法可以檢查系統(tǒng)的容錯能力和測試套件的充分性。,75,基于界面測試生成,用于某些定義好的界面如GUI或Web應(yīng)用生成測試。如果屏幕含有各種菜單、按鈕及檢查框,則工具生成訪問每個控件的測試事例。 還可以測試Internet和Intranet頁面。工具可激活WWW頁面的每個鏈接,然后對每頁做相同的測試;該方
29、法對于發(fā)現(xiàn)某類缺陷是有效的,可以部分生成期望輸出,即連接存在或斷開狀況,但不能判斷連接是否在正確的位置; 該方法可以執(zhí)行部分測試事例設(shè)計活動,產(chǎn)生測試輸出,對于檢測“roll-call”即某個東西確實在某處確實有用。手工測試非常枯燥,應(yīng)該采用自動測試。,76,基于規(guī)格說明測試生成,在規(guī)格說明形式化并可被工具分析的前提下,基于規(guī)格說明測試工具可以生成測試輸入及期望結(jié)果;如果面向?qū)ο笠?guī)格說明足夠嚴(yán)格的話,這種工具還可以進(jìn)行面向?qū)ο笠?guī)格說明的測試。 例如,如果一個輸入域的允許范圍被嚴(yán)格定義,那么工具可以產(chǎn)生邊界值以及有效等價類和無效等價類的樣值。 某些基于規(guī)格說明的工具可以進(jìn)行結(jié)構(gòu)化的英文規(guī)格說明或
30、因果圖的測試,可以發(fā)現(xiàn)一些規(guī)格說明的缺陷,如規(guī)格說明含混或冗長 好處是檢查軟件應(yīng)該做什么,而不是軟件做了什么。 從規(guī)格說明中推導(dǎo)測試用例越枯燥,則這類工具的潛力就越大。,77,自動測試用例生成的優(yōu)點,自動化測試用例生成用于設(shè)計的繁瑣部分,如激活每個菜單項或者從已知的數(shù)據(jù)范圍計算邊界值; 可以生成針對源程序的一套完成的測試用例(代碼、界面和規(guī)格說明) 可以發(fā)現(xiàn)某種類型的缺陷,如丟失連接,非工作窗口項或者不符合規(guī)格說明的軟件;,78,自動測試用例生成的限制,基于代碼方法不能生成期望輸出 基于界面方法只能產(chǎn)生部分期望輸出 基于代碼和基于界面方法不能發(fā)現(xiàn)規(guī)格說明的缺陷; 基于規(guī)格說明的方法依賴于規(guī)格說
31、明的質(zhì)量; 所有的方法可以產(chǎn)生大量的測試,而實際操作起來比較困難; 測試前仍需要專家判斷產(chǎn)生的測試的必要性,并考慮任何工具都無法產(chǎn)生的測試;,79,2.7小結(jié),理解和熟練使用4種進(jìn)行測試用例設(shè)計的方法:等價類劃分、因果圖、邊值分析、判定表驅(qū)動; 自動測試用例設(shè)計的原理和方法,,80,4、 軟件測試用例設(shè)計白盒測試,3.0 概述 3.1 程序結(jié)構(gòu)分析 3.2 邏輯覆蓋 3.3 路徑分析 3.4 域測試 3.5 程序插裝 3.6 程序變異 3.7 小結(jié),81,3.0 概述,此方法把測試對象看做一個透明的盒子,它允許測試人員利用程序內(nèi)部的邏輯結(jié)構(gòu)及有關(guān)信息,設(shè)計或選擇測試用例,對程序所有邏輯路徑進(jìn)行
32、測試。 通過在不同點檢查程序的狀態(tài),確定實際的狀態(tài)是否與預(yù)期的狀態(tài)一致。因此白盒測試又稱為結(jié)構(gòu)測試或邏輯驅(qū)動測試。,82,軟件人員使用白盒測試方法,主要想對程序模塊進(jìn)行如下的檢查: 對程序模塊的所有獨立的執(zhí)行路徑至少測試一次; 對所有的邏輯判定,取“真”與取“假”的兩種情況都至少測試一次; 在循環(huán)的邊界和運(yùn)行界限內(nèi)執(zhí)行循環(huán)體; 測試內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性,等。,83,對一個具有多重選擇和循環(huán)嵌套的程序,不同的路徑數(shù)目可能是天文數(shù)字。給出一個小程序的流程圖,它包括了一個執(zhí)行20次的循環(huán)。 包含的不同執(zhí)行路徑數(shù)達(dá)520條,對每一條路徑進(jìn)行測試需要1毫秒,假定一年工作365 24小時,要想把所有路徑測
33、試完,需3170年。,84,85,3.1程序結(jié)構(gòu)分析基本路徑測試,基本路徑測試方法把覆蓋的路徑數(shù)壓縮到一定限度內(nèi),程序中的循環(huán)體最多只執(zhí)行一次。 它是在程序控制流圖的基礎(chǔ)上,分析控制構(gòu)造的環(huán)路復(fù)雜性,導(dǎo)出基本可執(zhí)行路徑集合,設(shè)計測試用例的方法。設(shè)計出的測試用例要保證在測試中,程序的每一個可執(zhí)行語句至少要執(zhí)行一次。,86,3.1.1. 程序的控制流圖,符號為控制流圖的一個結(jié)點,表示一個或多個無分支的PDL語句或源程序語句。箭頭為邊,表示控制流的方向。,87,在選擇或多分支結(jié)構(gòu)中,分支的匯聚處應(yīng)有一個匯聚結(jié)點。 邊和結(jié)點圈定的區(qū)域叫做區(qū)域,當(dāng)對區(qū)域計數(shù)時,圖形外的區(qū)域也應(yīng)記為一個區(qū)域。 如果判斷中
34、的條件表達(dá)式是由一個或多個邏輯運(yùn)算符 (OR, AND, NAND, NOR) 連接的復(fù)合條件表達(dá)式,則需要改為一系列只有單條件的嵌套的判斷。,88,,,89,90,3.1.2. 程序環(huán)路復(fù)雜性,程序的環(huán)路復(fù)雜性給出了程序基本路徑集中的獨立路徑條數(shù),這是確保程序中每個可執(zhí)行語句至少執(zhí)行一次所必需的測試用例數(shù)目的上界。 從控制流圖來看,一條獨立路徑是至少包含有一條在其它獨立路徑中從未有過的邊的路徑。,91,例如,在圖示的控制流圖中,一組獨立的路徑是path1:1 - 11path2:1 - 2 - 3 - 4 - 5 - 10 - 1 - 11path3:1 - 2 - 3 - 6 - 8 -
35、9 - 10 - 1 - 11path4:1 - 2 - 3 - 6 - 7 - 9 - 10 - 1 - 11 路徑 path1,path2,path3,path4組成了控制流圖的一個基本路徑集。,92,3.1.2. 導(dǎo)出測試用例,導(dǎo)出測試用例,確保基本路徑集中的每一條路徑的執(zhí)行。 根據(jù)判斷結(jié)點給出的條件,選擇適當(dāng)?shù)臄?shù)據(jù)以保證某一條路徑可以被測試到 用邏輯覆蓋方法。,93,每個測試用例執(zhí)行之后,與預(yù)期結(jié)果進(jìn)行比較。如果所有測試用例都執(zhí)行完畢,則可以確信程序中所有的可執(zhí)行語句至少被執(zhí)行了一次。 必須注意,一些獨立的路徑(如例中的路徑1),往往不是完全孤立的,有時它是程序正常的控制流的一部分,這
36、時,這些路徑的測試可以是另一條路徑測試的一部分。,94,3.2 邏輯覆蓋,語句覆蓋 判定覆蓋 條件覆蓋,判定條件覆蓋 條件組合覆蓋 路徑覆蓋。,邏輯覆蓋是以程序內(nèi)部的邏輯結(jié)構(gòu)為基礎(chǔ)的設(shè)計測試用例的技術(shù)。它屬白盒測試。,,95,例,,96,97,98,99,,100,3.2.1語句覆蓋,語句覆蓋就是設(shè)計若干個測試用例,運(yùn)行被測程序,使得每一可執(zhí)行語句至少執(zhí)行一次。 在圖例中,正好所有的可執(zhí)行語句都在路徑L1上,所以選擇路徑 L1設(shè)計測試用例,就可以覆蓋所有的可執(zhí)行語句。,101,測試用例的設(shè)計格式如下【輸入的(A, B, X),輸出的(A, B, X)】 為圖例設(shè)計滿足語句覆蓋的測試用例是:【(
37、2, 0, 4),(2, 0, 3)】 覆蓋 ace【L1】,,102,3.2.2判定覆蓋,判定覆蓋就是設(shè)計若干個測試用例,運(yùn)行被測程序,使得程序中每個判斷的取真分支和取假分支至少經(jīng)歷一次。 判定覆蓋又稱為分支覆蓋。 對于圖例,如果選擇路徑L1和L2,就可得滿足要求的測試用例:,103,【(2, 0, 4),(2, 0, 3)】覆蓋 ace【L1】【(1, 1, 1),(1, 1, 1)】覆蓋 abd【L2】,104,如果選擇路徑L3和L4,還可得另一組可用的測試用例:【(2, 1, 1),(2, 1, 2)】覆蓋 abe【L3】【(3, 0, 3),(3, 1, 1)】覆蓋 acd【L4】,
38、,105,3.2.3條件覆蓋,條件覆蓋就是設(shè)計若干個測試用例,運(yùn)行被測程序,使得程序中每個判斷的每個條件的可能取值至少執(zhí)行一次。 在圖例中,我們事先可對所有條件的取值加以標(biāo)記。例如, 對于第一個判斷: 條件 A1 取真為 ,取假為 條件 B0 取真為 ,取假為,106,對于第二個判斷: 條件A2 取真為 ,取假為 條件X1 取真為 ,取假為 測試用例 覆蓋分支 條件取值 【(2, 0, 4),(2, 0, 3)】L1(c, e) 【(1, 0, 1),(1, 0, 1)】L2(b, d) 【(2, 1, 1),(2, 1, 2)】L3(b, e),107,或 測 試 用 例覆蓋分支 條
39、件取值 【(1, 0, 3),(1, 0, 4)】 L3(b, e) 【(2, 1, 1),(2, 1, 2)】 L3(b, e),,108,3.2.4判定條件覆蓋,判定條件覆蓋就是設(shè)計足夠的測試用例,使得判斷中每個條件的所有可能取值至少執(zhí)行一次,同時每個判斷中的每個條件的可能取值至少執(zhí)行一次。,109,測 試 用 例 覆蓋分支 條件取值 【(2, 0, 4),(2, 0, 3)】L1(c, e) 【(1, 1, 1),(1, 1, 1)】L2(b, d),110,,and,or,,,111,3.2.5條件組合覆蓋,條件組合覆蓋就是設(shè)計足夠的測試用例,運(yùn)行被測程序,使得每個判斷的所有可能的條
40、件取值組合至少執(zhí)行一次。 記 A1, B0 作 A1, B0 作 A1, B0 作 A1, B0 作,112,, A2, X1 作 A2, X1 作 A2, X1 作 A2, X1 作,,113,,測 試 用 例 覆蓋條件 覆蓋組合 【(2, 0, 4), (2, 0, 3)】(L1) , 【(2, 1, 1), (2, 1, 2)】(L3) , 【(1, 0, 3), (1, 0, 4)】(L3) , 【(1, 1, 1), (1, 1, 1)】(L2) , ,114,3.3 路徑測試,路徑測試就是設(shè)計足夠的測試用例,覆蓋程
41、序中所有可能的路徑。 測 試 用 例 通過路徑 覆蓋條件 【(2, 0, 4), (2, 0, 3)】 ace (L1) 【(1, 1, 1), (1, 1, 1)】 abd (L2) 【(1, 1, 2), (1, 1, 3)】 abe (L3) 【(3, 0, 3), (3, 0, 1)】 acd (L4),,115,3.2.1條件測試路徑選擇,當(dāng)程序中判定多于一個時,形成的分支結(jié)構(gòu)可以分為兩類:嵌套型分支結(jié)構(gòu)和連鎖型分支結(jié)構(gòu)。 對于嵌套型分支結(jié)構(gòu),若有n個判定語句,需要n+1個測試用例; 對于連鎖型分支結(jié)構(gòu), 若有n個判定語句,需要有2n個測試用例,覆蓋它的2n條路徑
42、。當(dāng)n較大時將無法測試。,116,117,3.2.2循環(huán)測試路徑選擇,循環(huán)分為4種不同類型: 簡單循環(huán) 連鎖循環(huán) 嵌套循環(huán) 非結(jié)構(gòu)循環(huán)。,118,119,(1) 簡單循環(huán), 零次循環(huán):從循環(huán)入口到出口 一次循環(huán):檢查循環(huán)初始值 二次循環(huán):檢查多次循環(huán) m次循環(huán): 檢查在多次循環(huán) 最大次數(shù)循環(huán)、比最大次數(shù)多一次、少一次的循環(huán)。,120,(2) 嵌套循環(huán), 對最內(nèi)層循環(huán)做簡單循環(huán)的全部測試。所有其它層的循環(huán)變量置為最小值; 逐步外推,對其外面一層循環(huán)進(jìn)行測試。測試時保持所有外層循環(huán)的循環(huán)變量取最小值,所有其它嵌套內(nèi)層循環(huán)的循環(huán)變量取“典型”值。 反復(fù)進(jìn)行,直到所有各層循環(huán)測試完畢。 對全部
43、各層循環(huán)同時取最小循環(huán)次數(shù),或者同時取最大循環(huán)次數(shù),,121,如果各個循環(huán)互相獨立,則可以用與簡單循環(huán)相同的方法進(jìn)行測試。但如果幾個循環(huán)不是互相獨立的,則需要使用測試嵌套循環(huán)的辦法來處理。,(3)連鎖循環(huán),122,(4) 非結(jié)構(gòu)循環(huán),這一類循環(huán)應(yīng)該使用結(jié)構(gòu)化程序設(shè)計方法重新設(shè)計測試用例。,123,3.4 域測試,基于程序結(jié)構(gòu)的測試方法 針對域錯誤,對輸入空間進(jìn)行分析,選擇適當(dāng)?shù)臏y試點,檢驗輸入空間中的每個輸入是否產(chǎn)生正確的結(jié)果。 假設(shè)限制過多,難以運(yùn)用到實際中。,124,3.5 符號測試,另辟途徑解決測試用例選擇問題。 基于代數(shù)運(yùn)算執(zhí)行測試,是測試和驗證的折衷方法,125,3.6 程序插裝,借
44、助往被測程序中插入操作來實現(xiàn)測試目的的方法。,126,3.7 程序變異,是一種錯誤驅(qū)動測試,針對某類特定程序錯誤實現(xiàn)測試。 程序強(qiáng)變異 程序弱變異,127,3.8 小結(jié),白盒測試方法分類 基本路徑測試 邏輯覆蓋測試 路徑測試,128,專題小結(jié),軟件測試用例設(shè)計黑盒測試測試的關(guān)鍵就是確定正確的測試用例。本部分詳細(xì)介紹幾種軟件測試用例設(shè)計方法:等價類劃分、因果圖、邊值分析、判定表驅(qū)動測試和測試用例自動生成原理和方法。,129,專題小結(jié),軟件測試用例設(shè)計白盒測試 程序結(jié)構(gòu)分析 邏輯覆蓋測試 路徑,130,專題小結(jié),學(xué)習(xí)要求: 理解軟件開發(fā)過程中每一階段的軟件測試方法,理解他們的作用和意義。能夠根據(jù)問題選擇正確的軟件測試方法 熟練掌握軟件測試用例的設(shè)計方法,將設(shè)計得到的測試用例編到軟件測試用例表中,根據(jù)軟件測試用例表進(jìn)行軟件測試、填寫軟件測試記錄。 結(jié)合實際的測試用例設(shè)計過程,理解自動測試用例的原理和方法。,131,專題小結(jié),訓(xùn)練: 測試用例的設(shè)計 編制軟件測試用例表,進(jìn)行軟件測試,132,謝謝!,,
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識競賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識測試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測工種技術(shù)比武題庫含解析
- 1 礦山應(yīng)急救援安全知識競賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案