軟件測試(完整版)_第1頁
軟件測試(完整版)_第2頁
軟件測試(完整版)_第3頁
軟件測試(完整版)_第4頁
軟件測試(完整版)_第5頁
已閱讀5頁,還剩489頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、軟件測試軟件測試Software testingSoftware testing 軟件學院軟件學院 段喜龍段喜龍 D312 D312 20201414.9.92課程安排:課程安排:w 學時分配:學時分配:40學時(學時(32+8)w 教材:教材: 軟件測試技術軟件測試技術w聯(lián)系方式:聯(lián)系方式:3第一部分第一部分 基礎篇基礎篇第第1章章 軟件測試背景軟件測試背景1.1 軟件錯誤案例(軟件錯誤案例(when software attacks)1.2 軟件缺陷(軟件缺陷(whats?why comes?and its cost)1.3 軟件測試員(軟件測試員(job and qualificatio

2、n)1.1 1.1 軟件錯誤案例軟件錯誤案例Software casesSoftware cases5趣事趣事(The funny)w 美國國稅局(美國國稅局(IRS)的尷尬的尷尬n1993年年7月月,IRS發(fā)出了近發(fā)出了近680億美元的稅單億美元的稅單w 最大方的自動柜員機最大方的自動柜員機 n2001年年1月,歐元正式流通后幾天,德國的某些月,歐元正式流通后幾天,德國的某些自動柜員機竟能在提款后不記入帳目!自動柜員機竟能在提款后不記入帳目! w 壞脾氣的洗手間壞脾氣的洗手間n2001年年6月,在英國,一個全自動的洗手間突然月,在英國,一個全自動的洗手間突然出現(xiàn)故障出現(xiàn)故障,將一位老太太整整

3、困了將一位老太太整整困了2小時小時6嚴重事故嚴重事故(The serious)w 1996年年12月,歐洲航天局(月,歐洲航天局(ESA)阿利亞娜阿利亞娜5型火型火箭在發(fā)射箭在發(fā)射39秒以后爆炸(秒以后爆炸(10年,年,70億)億)n原因:運算溢出錯誤原因:運算溢出錯誤w 1999年年11月,月,美國國家航空航天局(美國國家航空航天局(NASANASA)發(fā)射發(fā)射火星溫度探測器失蹤火星溫度探測器失蹤n原因:單位換算錯誤原因:單位換算錯誤w 千年蟲問題,大約千年蟲問題,大約1974n原因:盲目的強調(diào)數(shù)據(jù)壓縮原因:盲目的強調(diào)數(shù)據(jù)壓縮7悲?。═he tragic)w 愛國者導彈的失利(愛國者導彈的失利

4、(1991年年2月)月)n原因:積累的時鐘誤差原因:積累的時鐘誤差w 美國海軍美國海軍“文森斯文森斯”號巡洋艦誤擊伊朗客號巡洋艦誤擊伊朗客機機( (1987年年4月月) )n原因:不可靠的模式識別算法原因:不可靠的模式識別算法1.2 1.2 軟件缺陷軟件缺陷software faultsoftware fault Defect- Defect-缺點缺點 Variance-Variance-偏差偏差 Fault- Fault-缺陷缺陷 Failure-Failure-失敗失敗 Problem- Problem-問題問題 Inconsistency-Inconsistency-矛盾矛盾 Error

5、-Error-錯誤錯誤 Feature-Feature-特殊特殊 Incident- Incident-毛病毛病 Bug Anomaly-Bug Anomaly-異常異常91.2.1軟件缺陷是什么?w 定義:只有符合下列定義:只有符合下列5 5個規(guī)則的軟件問題,我們個規(guī)則的軟件問題,我們將其定義為將其定義為軟件缺陷軟件缺陷(software fault)n軟件未達到產(chǎn)品說明書標明的功能軟件未達到產(chǎn)品說明書標明的功能n軟件出現(xiàn)了產(chǎn)品說明書指明不會出現(xiàn)的錯誤軟件出現(xiàn)了產(chǎn)品說明書指明不會出現(xiàn)的錯誤n軟件功能超出產(chǎn)品說明書指明范圍軟件功能超出產(chǎn)品說明書指明范圍n軟件未達到產(chǎn)品說明書雖未指出但應達到的目

6、標軟件未達到產(chǎn)品說明書雖未指出但應達到的目標n軟件測試員認為軟件難以理解、不易使用、運行速軟件測試員認為軟件難以理解、不易使用、運行速度緩慢、或者最終用戶認為不好。度緩慢、或者最終用戶認為不好。101.2.2為什么會出現(xiàn)軟件缺陷?w 從小程序到大項目的無數(shù)研究得出:從小程序到大項目的無數(shù)研究得出:導致軟導致軟件缺陷最大的原因是件缺陷最大的原因是產(chǎn)品說明書產(chǎn)品說明書(需(需求)求)w 其次的原因是設計方案的問題。其次的原因是設計方案的問題。111.2.3軟件缺陷的修復費用軟件缺陷的修復費用1.2.4 軟件質(zhì)量軟件質(zhì)量w軟件質(zhì)量是軟件產(chǎn)品滿足使用要求的軟件質(zhì)量是軟件產(chǎn)品滿足使用要求的程度。程度。w

7、質(zhì)量模型:質(zhì)量模型:nMcCall模型模型nBoehm模型模型nISO/IEC9126模型模型1.3 1.3 軟件測試員軟件測試員Software testerSoftware tester141.3.1軟件測試員的工作w 軟件測試員是客戶的眼睛,是第一次看到軟件測試員是客戶的眼睛,是第一次看到軟件的人,代表客戶說話,應力求完美。軟件的人,代表客戶說話,應力求完美。w 軟件測試員的目標是軟件測試員的目標是盡可能早的找出軟件盡可能早的找出軟件缺陷,并確保其得以修復缺陷,并確保其得以修復。15The Software Job Spectrumw SDE: Software Design Engin

8、eerw SDE/T: Software Design Engineer in Testw STE: Software Test Engineerw PM: Program ManagerSDESTEDevelopmentTestingSDE/TPM16Division of LaborWindows 2000 Product TeamTotal of 5,245 People900 Developers1,800 TestersLargest product team in Microsoft history(at the time)171.3.2怎樣成為優(yōu)秀的軟件測試員w 技術能力技術能力

9、w 探索精神探索精神w 不懈努力不懈努力w 創(chuàng)造力創(chuàng)造力w 說服力說服力w 準確的洞察力準確的洞察力w 老練穩(wěn)重老練穩(wěn)重w 追求完美追求完美18第第2章章 軟件測試基礎軟件測試基礎2.1 測試原則(測試原則(principle)2.2 測試目的測試目的(purpose)2.3 測試對象(測試對象(object)2.4 測試術語(測試術語(glossary)2.5 測試方法(測試方法(method)2.12.1測試原則測試原則principleprinciple201.完全測試程序是不可能的w 輸入量太大輸入量太大w 輸出結(jié)果多輸出結(jié)果多w 軟件實現(xiàn)途徑太多軟件實現(xiàn)途徑太多w 軟件說明書沒有客觀

10、標準軟件說明書沒有客觀標準212.軟件測試是有風險的行為軟件測試是有風險的行為w 如果試圖測試所有情況,費用將大幅增加,如果試圖測試所有情況,費用將大幅增加,軟件缺陷漏掉的數(shù)量并不會隨費用上漲而軟件缺陷漏掉的數(shù)量并不會隨費用上漲而顯著下降。顯著下降。w 如果減少測試或者錯誤地確定測試對象,如果減少測試或者錯誤地確定測試對象,那么費用很低,但是會漏掉大量軟件缺陷。那么費用很低,但是會漏掉大量軟件缺陷。(每個項目都有一個最優(yōu)的測試量)(每個項目都有一個最優(yōu)的測試量)223.測試無法顯示潛伏的軟件缺陷測試無法顯示潛伏的軟件缺陷 “Program testing can be used to show

11、 the presence of bugs but never to show their absence.” Edsger W. Dijkstra, 1972234.找到的軟件缺陷越多,就說明軟件缺陷越多找到的軟件缺陷越多,就說明軟件缺陷越多w 充分注意測試中的群集現(xiàn)象。充分注意測試中的群集現(xiàn)象。經(jīng)驗表明,測試后經(jīng)驗表明,測試后程序中殘存的錯誤數(shù)目程序中殘存的錯誤數(shù)目與該程序中已發(fā)現(xiàn)的錯誤數(shù)目成正比與該程序中已發(fā)現(xiàn)的錯誤數(shù)目成正比。There is Always One More Bug245.并非所有軟件缺陷都能修復w 沒有足夠的時間必須保證按時完成w 不算真正的軟件缺陷w 修復的風險太大

12、修復一個可能導致其他w 不值得修復不常出現(xiàn)或在不常用功能中出現(xiàn)的對于軟件缺陷是否應該修復,其決策過程對于軟件缺陷是否應該修復,其決策過程應由軟件測試員、項目管理員和程序員共應由軟件測試員、項目管理員和程序員共同參與。同參與。256. 軟件測試是一項講究條理的技術專業(yè)軟件測試是一項講究條理的技術專業(yè)w 對于軟件測試應嚴格制定并執(zhí)行測試計劃,對于軟件測試應嚴格制定并執(zhí)行測試計劃,排除測試的隨意性排除測試的隨意性。w 應當對每一個測試結(jié)果做全面檢查。應當對每一個測試結(jié)果做全面檢查。w 妥善保存測試計劃,測試用例,出錯統(tǒng)計妥善保存測試計劃,測試用例,出錯統(tǒng)計和最終分析報告,為維護提供方便。和最終分析報

13、告,為維護提供方便。w 程序員應避免檢查自己的程序。程序員應避免檢查自己的程序。2.22.2測試目的測試目的purposepurpose27基于不同的立場,存在著兩種完全不同基于不同的立場,存在著兩種完全不同的測試目的的測試目的w 從從用戶的角度用戶的角度出發(fā),普遍希望通過軟件測出發(fā),普遍希望通過軟件測試試暴露軟件中隱藏的錯誤和缺陷暴露軟件中隱藏的錯誤和缺陷,以考慮,以考慮是否可接受該產(chǎn)品。是否可接受該產(chǎn)品。w 從從軟件開發(fā)者的角度軟件開發(fā)者的角度出發(fā),則希望測試成出發(fā),則希望測試成為為表明軟件產(chǎn)品中不存在錯誤表明軟件產(chǎn)品中不存在錯誤的過程,驗的過程,驗證該軟件已正確地實現(xiàn)了用戶的要求,確證該

14、軟件已正確地實現(xiàn)了用戶的要求,確立人們對軟件質(zhì)量的信心立人們對軟件質(zhì)量的信心28Myerss Testing Objectivesw Testing is a process of executing a program with the intent of finding an error.w A good test is one that has a high probability of finding an as yet undiscovered error.w A successful test is one that uncovers an as yet undiscovered

15、error.29換言之,測試的目的是:w 以最少的時間和人力,系統(tǒng)地找出軟件中潛在的各種錯誤和缺陷。w 證明證明w 檢測檢測w 預防預防2.32.3測試對象測試對象objectobject31測試對象w 軟件測試并不等于程序測試。軟件測試應貫穿于軟件定義與開發(fā)的整個期間。w 需求分析、概要設計、詳細設計以及程序編碼等各階段所得到的,包括需求規(guī)格說明、概要設計規(guī)格說明、詳細設計規(guī)格說明以及源程序,都應成為軟件測試的對象。2.4測試術語glossaryglossary33錯誤(error)w 人類會犯錯誤,很接近的一個同義詞是過人類會犯錯誤,很接近的一個同義詞是過錯(錯(mistake)。)。人們

16、在編寫代碼是會出人們在編寫代碼是會出現(xiàn)過錯,我們把這種過錯叫做現(xiàn)過錯,我們把這種過錯叫做bug。34缺陷(fault)w 缺陷是錯誤的結(jié)果。更精確地說,缺陷是缺陷是錯誤的結(jié)果。更精確地說,缺陷是錯誤的表現(xiàn),而表現(xiàn)是表示的模式,例如:錯誤的表現(xiàn),而表現(xiàn)是表示的模式,例如:敘述性文字、數(shù)據(jù)流框圖、層次結(jié)構(gòu)圖、敘述性文字、數(shù)據(jù)流框圖、層次結(jié)構(gòu)圖、源代碼等。源代碼等。w 缺陷分為缺陷分為過錯缺陷過錯缺陷和和遺漏缺陷遺漏缺陷。 若把某些信息輸入到不正確的表示中,就若把某些信息輸入到不正確的表示中,就是過錯缺陷;如果沒有輸入正確信息,則是過錯缺陷;如果沒有輸入正確信息,則為遺漏缺陷。為遺漏缺陷。35失效(

17、failure)w 當缺陷執(zhí)行時會發(fā)生失效。有兩點需要解釋:一當缺陷執(zhí)行時會發(fā)生失效。有兩點需要解釋:一是失效只出現(xiàn)在可執(zhí)行的表現(xiàn)中,通常是源代碼,是失效只出現(xiàn)在可執(zhí)行的表現(xiàn)中,通常是源代碼,或更確切地說是被裝載的目標代碼;二是這種定或更確切地說是被裝載的目標代碼;二是這種定義只與過錯缺陷有關。對于遺漏缺陷,可以通過義只與過錯缺陷有關。對于遺漏缺陷,可以通過有效的評審來避免其產(chǎn)生的失效。有效的評審來避免其產(chǎn)生的失效。事故(incident)n當出現(xiàn)失效時,可能會也可能不會呈現(xiàn)給用戶,當出現(xiàn)失效時,可能會也可能不會呈現(xiàn)給用戶,事故說明出現(xiàn)了與失效類似的情況,警告用戶注事故說明出現(xiàn)了與失效類似的情

18、況,警告用戶注意所出現(xiàn)的失效。意所出現(xiàn)的失效。36測試(測試(test)w 測試顯然要處理錯誤、缺陷、失效和事故。測試顯然要處理錯誤、缺陷、失效和事故。測試用例(測試用例(test casetest case)n測試用例應由測試用例應由測試輸入數(shù)據(jù)測試輸入數(shù)據(jù)和對應的和對應的預期預期輸出結(jié)果輸出結(jié)果這兩部分組成。這兩部分組成。OVER37通過維恩圖理解測試通過維恩圖理解測試w 軟件測試基本上關心的是行為,而行為與軟件測試基本上關心的是行為,而行為與軟件(和系統(tǒng))開發(fā)人員很常見的結(jié)構(gòu)視軟件(和系統(tǒng))開發(fā)人員很常見的結(jié)構(gòu)視圖無關。圖無關。n結(jié)構(gòu)視圖關注的是結(jié)構(gòu)視圖關注的是它是什么它是什么,而行為視

19、圖關注,而行為視圖關注的是它做什么的是它做什么。n一直困擾測試人員的難點之一,就是基本文檔一直困擾測試人員的難點之一,就是基本文檔通常都是由開發(fā)人員編寫,通常都是由開發(fā)人員編寫, 并且是針對開發(fā)人并且是針對開發(fā)人員的,因此這些文檔員的,因此這些文檔強調(diào)的是結(jié)構(gòu)信息強調(diào)的是結(jié)構(gòu)信息,而不,而不是是行為信息行為信息。38w 考慮一個程序行為全域。給定一段程序及考慮一個程序行為全域。給定一段程序及其規(guī)格說明,集合其規(guī)格說明,集合S是所描述的行為,集合是所描述的行為,集合P是用程序?qū)崿F(xiàn)的行為。是用程序?qū)崿F(xiàn)的行為。S S規(guī)格說明規(guī)格說明P P程序程序程序行為程序行為預期的預期的所實現(xiàn)的所實現(xiàn)的39S S

20、規(guī)格說明規(guī)格說明P P程序程序預期的預期的所實現(xiàn)的所實現(xiàn)的程序行為程序行為遺漏缺陷遺漏缺陷過錯缺陷過錯缺陷測試就是確定既被描述又被實現(xiàn)的程序行為的測試就是確定既被描述又被實現(xiàn)的程序行為的范圍,同時盡量找出缺陷。范圍,同時盡量找出缺陷。S和和P相交的部分是相交的部分是“正確正確”部分,即既被描述部分,即既被描述又被實現(xiàn)的行為。又被實現(xiàn)的行為。40S S規(guī)格說明規(guī)格說明P P程序程序程序行為程序行為T測試用例測試用例5621437412 2和和5 5,可能會有沒有測試的已描述行為。,可能會有沒有測試的已描述行為。1 1和和4 4,經(jīng)過測試的已描述行為。,經(jīng)過測試的已描述行為。3 3和和7 7,對應

21、于未描述行為的測試用例。,對應于未描述行為的測試用例。2 2和和6 6,可能會有沒有測試的程序行為。,可能會有沒有測試的程序行為。1 1和和3 3,經(jīng)過測試的程序行為。,經(jīng)過測試的程序行為。4 4和和7 7,未通過程序?qū)崿F(xiàn)的行為,未通過程序?qū)崿F(xiàn)的行為。測試的目標:測試人員怎樣才能使這些集測試的目標:測試人員怎樣才能使這些集合的相交區(qū)域(區(qū)域合的相交區(qū)域(區(qū)域1 1)盡可能地大。)盡可能地大。2.52.5測試方法測試方法43從代碼的特性角度從代碼的特性角度( (即內(nèi)部即內(nèi)部) )出發(fā)出發(fā)w 單元測試(單元測試(Unit Test):最微小規(guī)模的測試,:最微小規(guī)模的測試,用以測試某個功能或代碼塊。

22、典型的單元測用以測試某個功能或代碼塊。典型的單元測試應由程序員而非測試員來做,因為它需要試應由程序員而非測試員來做,因為它需要知道內(nèi)部程序設計和編碼的細節(jié)知識。知道內(nèi)部程序設計和編碼的細節(jié)知識。w 功能測試(功能測試(Function Test)或或特性測試特性測試(Feature Test):):按照軟件的功能或特性按照軟件的功能或特性逐個進行測試。逐個進行測試。覆蓋測試(覆蓋測試(Coverage Testing)44w 提交測試提交測試 ( (Check-in Test) ):在開發(fā)人員對代碼做在開發(fā)人員對代碼做了任何修改,或者修復了某個了任何修改,或者修復了某個BugBug時,需要重新

23、時,需要重新Check-in代碼代碼 ( (即將修改后的代碼放大到整個大即將修改后的代碼放大到整個大的系統(tǒng)中的系統(tǒng)中) )w 基本驗證測試基本驗證測試 ( (Build Verification Test,簡稱簡稱BVT) ):對完成的代碼進行編譯和連接,產(chǎn)生一個對完成的代碼進行編譯和連接,產(chǎn)生一個構(gòu)造,以檢查程序的主要功能是否會像預期一樣構(gòu)造,以檢查程序的主要功能是否會像預期一樣進行工作。這是最簡單而又最省時的一種測試方進行工作。這是最簡單而又最省時的一種測試方法。每產(chǎn)生一個新的構(gòu)造時都要進行測試。如果法。每產(chǎn)生一個新的構(gòu)造時都要進行測試。如果BVTBVT通不過,表明問題很嚴重,開發(fā)人員需要

24、盡快通不過,表明問題很嚴重,開發(fā)人員需要盡快修復出現(xiàn)的問題,測試人員也就不用浪費時間做修復出現(xiàn)的問題,測試人員也就不用浪費時間做其他測試了其他測試了45w 回歸測試(回歸測試(Regression Test): : 過一過一段時間以后,再回過頭來對以前修復段時間以后,再回過頭來對以前修復過的過的BugBug重新進行測試,看該重新進行測試,看該BugBug是否是否會重新出現(xiàn)。會重新出現(xiàn)。46從用戶的角度從用戶的角度( (即外部即外部) )出發(fā)出發(fā)w 配置測試配置測試( (Configuration Test) ):從用戶從用戶的使用出發(fā)進行多方面的測試,要考慮的使用出發(fā)進行多方面的測試,要考慮到

25、用戶的多種情況,用多種配置對軟件到用戶的多種情況,用多種配置對軟件進行測試。進行測試。w 兼容性測試兼容性測試( (Compatibility Test) ):主要考主要考慮兼容性問題,比如同一個產(chǎn)品的不同慮兼容性問題,比如同一個產(chǎn)品的不同版本之間的兼容問題,不同廠家的同一版本之間的兼容問題,不同廠家的同一個產(chǎn)品之間的兼容問題,不同類型軟件個產(chǎn)品之間的兼容問題,不同類型軟件之間的兼容問題等。之間的兼容問題等。使用測試使用測試( (Usage testing) ) 47w 強力測試強力測試( (StressTest):):在各種極限情況下對在各種極限情況下對產(chǎn)品進行測試產(chǎn)品進行測試 ( (如很多

26、人同時使用該軟件,如很多人同時使用該軟件,或者反復運行該軟件或者反復運行該軟件) ),以檢查產(chǎn)品的長期,以檢查產(chǎn)品的長期穩(wěn)定性。穩(wěn)定性。w 性能測試性能測試( (Performance Test):):本項測試是本項測試是保證程序具有良好的性能。如果別人的產(chǎn)保證程序具有良好的性能。如果別人的產(chǎn)品只需品只需5 5秒鐘就能得出結(jié)果,而你的產(chǎn)品需秒鐘就能得出結(jié)果,而你的產(chǎn)品需要要1010秒鐘才能得出結(jié)果,就說明你的產(chǎn)品秒鐘才能得出結(jié)果,就說明你的產(chǎn)品性能不好。性能不好。48w 文檔和幫助文件測試文檔和幫助文件測試( (Documentation and help file Test): 因為用戶通常

27、是通過文檔和因為用戶通常是通過文檔和幫助文件來學習使用產(chǎn)品的,如果文檔和幫助文件來學習使用產(chǎn)品的,如果文檔和幫助文件存在錯誤,就可能會導致用戶無幫助文件存在錯誤,就可能會導致用戶無法正常使用產(chǎn)品。法正常使用產(chǎn)品。w AlphaAlpha和和BetaBeta測試測試( (Alpha and Beta Test):):在在正式發(fā)布產(chǎn)品之前往往要先發(fā)布一些測試正式發(fā)布產(chǎn)品之前往往要先發(fā)布一些測試版,讓用戶能夠反饋出相關信息,或者找版,讓用戶能夠反饋出相關信息,或者找到存在的到存在的BugBug,以便在正式版中得到解決。以便在正式版中得到解決。49從區(qū)分測試用例的角度出發(fā)從區(qū)分測試用例的角度出發(fā)w 黑

28、盒測試黑盒測試(Black Box Testing ):功能性功能性RequirementsInputOutput基于軟件規(guī)格說明的測試基于軟件規(guī)格說明的測試任何程序都可以看作是將從輸入定義域取值映射到任何程序都可以看作是將從輸入定義域取值映射到輸出值域的函數(shù)。輸出值域的函數(shù)。50規(guī)格說明程序測試用例對于功能性測試,不管采用什么方法,測試用例對于功能性測試,不管采用什么方法,測試用例集合完全局限在已描述行為集合內(nèi)。(集合完全局限在已描述行為集合內(nèi)。(基于已描基于已描述行為述行為)51黑盒測試的優(yōu)點:黑盒測試的優(yōu)點:w 黑盒測試(功能性測試)與軟件如何實現(xiàn)黑盒測試(功能性測試)與軟件如何實現(xiàn)無關

29、,所以如果實現(xiàn)發(fā)生變化,測試用例無關,所以如果實現(xiàn)發(fā)生變化,測試用例仍然有用;仍然有用;w 測試用例開發(fā)可以與實現(xiàn)并行進行,可縮測試用例開發(fā)可以與實現(xiàn)并行進行,可縮短項目總的開發(fā)時間。短項目總的開發(fā)時間。不足!測試用例之間可能存在嚴重的冗不足!測試用例之間可能存在嚴重的冗余,此外可能還會有未測試的軟件漏洞余,此外可能還會有未測試的軟件漏洞52w 白盒測試白盒測試(white box testing):結(jié)構(gòu)性測試結(jié)構(gòu)性測試基于覆蓋全部代碼、分支、路徑、條件的測試。由于實現(xiàn)是已知的,測試人員可以嚴格描由于實現(xiàn)是已知的,測試人員可以嚴格描述要測試的確切內(nèi)容。述要測試的確切內(nèi)容。53規(guī)格說明程序測試用

30、例對于結(jié)構(gòu)性測試,不管采用什么方法,測試用例對于結(jié)構(gòu)性測試,不管采用什么方法,測試用例集合完全局限在已由程序?qū)崿F(xiàn)的行為集合內(nèi)。集合完全局限在已由程序?qū)崿F(xiàn)的行為集合內(nèi)。(基于程序行為基于程序行為)54結(jié)構(gòu)性測試的特點結(jié)構(gòu)性測試的特點w 測試人員可以利用線性圖論的理論,嚴格測試人員可以利用線性圖論的理論,嚴格描述要測試的確切內(nèi)容。描述要測試的確切內(nèi)容。w 在結(jié)構(gòu)性測試中,測試覆蓋指標能提供明在結(jié)構(gòu)性測試中,測試覆蓋指標能提供明確的測試范圍。確的測試范圍。55從測試方式出發(fā)從測試方式出發(fā)w 靜態(tài)測試:靜態(tài)分析技術,不運行程序,分靜態(tài)測試:靜態(tài)分析技術,不運行程序,分析文檔(說明書、源程序)進行測試。

31、析文檔(說明書、源程序)進行測試。w 動態(tài)測試:執(zhí)行被測程序,通過執(zhí)行結(jié)果分動態(tài)測試:執(zhí)行被測程序,通過執(zhí)行結(jié)果分析軟件可能出現(xiàn)的錯誤。析軟件可能出現(xiàn)的錯誤。56從測試階段出發(fā)從測試階段出發(fā)w 單元測試單元測試w 集成測試集成測試w 系統(tǒng)測試系統(tǒng)測試57示例w 編程:從鍵盤輸入三角形三條邊編程:從鍵盤輸入三角形三條邊a、b、c,判斷該三角形是什么三角形(等腰、等邊、判斷該三角形是什么三角形(等腰、等邊、直角、等腰直角、一般、非),并從屏幕直角、等腰直角、一般、非),并從屏幕上輸出結(jié)果。上輸出結(jié)果。第3章 軟件測試風險管理Risk Management593.1 測試風險的基本概念測試風險的基本

32、概念w 在軟件測試中,即使很小的軟件系統(tǒng),也在軟件測試中,即使很小的軟件系統(tǒng),也不可能對系統(tǒng)的所有方面進行測試,就會不可能對系統(tǒng)的所有方面進行測試,就會存在測試風險,即沒有安排或執(zhí)行測試用存在測試風險,即沒有安排或執(zhí)行測試用例,但是存在用戶發(fā)現(xiàn)缺陷的可能性。例,但是存在用戶發(fā)現(xiàn)缺陷的可能性。n測試風險發(fā)生的可能性測試風險發(fā)生的可能性n測試風險發(fā)生后的影響測試風險發(fā)生后的影響測試風險的分類測試風險的分類w技術風險技術風險w管理風險管理風險3.2 測試風險的識別技術測試風險的識別技術w頭腦風暴法頭腦風暴法w訪談訪談w風險檢查表風險檢查表3.3 測試風險分析測試風險分析w 確定測試范圍的功能點和性能

33、屬性確定測試范圍的功能點和性能屬性w 確定測試風險發(fā)生的可能確定測試風險發(fā)生的可能w 確定測試風險發(fā)生后產(chǎn)生的影響程度確定測試風險發(fā)生后產(chǎn)生的影響程度w 計算測試風險優(yōu)先級計算測試風險優(yōu)先級w 確定測試風險優(yōu)先級確定測試風險優(yōu)先級3.4 測試計劃風險的應對措施測試計劃風險的應對措施w縮小范圍縮小范圍w推遲實現(xiàn)推遲實現(xiàn)w增加資源增加資源w減少質(zhì)量過程減少質(zhì)量過程第第4章章 測試過程概述測試過程概述Testing Process4.1 常見的測試過程模型常見的測試過程模型w 瀑布模型瀑布模型w V模型模型w W模型模型w X模型模型w H模型模型瀑布模型瀑布模型的核心思想是按工序?qū)栴}化簡,將功能

34、的實現(xiàn)與設計分開,采用機構(gòu)化的分析與設計方法將邏輯實現(xiàn)與物理實現(xiàn)分開。軟件生命周期劃分為制定計劃、需求分析、軟件設計、程序編寫、軟件測試、運行維護。規(guī)定活動自上而下、相互銜接的固定次序,逐級下落。瀑布模型的重要地位瀑布模型的重要地位瀑布模型是最早出現(xiàn)的軟件開發(fā)模型,在軟件工程中占有重要的地位,它提供了軟件開發(fā)的基本框架。其過程是從上一項活動接收該項活動的工作對象作為輸入,利用這一輸入實施該項活動應完成的內(nèi)容給出該項活動的工作成果,并作為輸出傳給下一項活動。同時評審該項活動的實施,若確認,則繼續(xù)下一項活動;否則返回前面,甚至更前面的活動。對于經(jīng)常變化的項目而言,瀑布模型毫無價值。瀑布模型的優(yōu)點為

35、項目提供了按階段劃分的檢查點。當前一階段完成后,您只需要去關注后續(xù)階段。 可在迭代模型中應用瀑布模型。缺點在項目各個階段之間極少有反饋。 只有在項目生命周期的后期才能看到結(jié)果。 通過過多的強制完成日期和里程碑來跟蹤各個項目階段??偨Y(jié)傳統(tǒng)的瀑布模型,軟件測試的地位和價值并沒有體現(xiàn)出來,測試只能作為一個事后補救工作。早期的錯誤可能要等到開發(fā)后期的測試階段才能發(fā)現(xiàn),進而帶來嚴重的后果。各個階段的劃分完全固定,階段之間產(chǎn)生大量的文檔,極大地增加了工作量。由于開發(fā)模型是線性的,用戶只有等到整個過程的末期才能見到開發(fā)成果,從而增加 了開發(fā)的風險。測試傳統(tǒng)模型-V模型V模型是最廣為人知的測試模型由Paul

36、Rook在世紀年代后期提出的,旨在改進軟件開發(fā)的效率和效果。從左到右,描述了基本的開發(fā)過程和測試行為非常明確地標明了測試過程中存在的不同級別,描述了這些測試階段和開發(fā)過程期間各階段的對應關系V模型(測試與開發(fā)階段對應關系)單元和集成測試應檢測程序的執(zhí)行是否滿足軟件設計的要求;系統(tǒng)測試應檢測系統(tǒng)功能、性能的質(zhì)量特性是否達到系統(tǒng)要求的指標;驗收測試確定軟件的實現(xiàn)是否滿足用戶需要或合同的要求。V模型的缺陷存在局限性,僅僅把測試過程作為在需求分析、系統(tǒng)設計及編碼之后的一個階段,只針對程序進行的尋找錯誤的活動,忽視了測試活動對需求分析,系統(tǒng)設計等活動的驗證和確認的功能,直到后期的驗收測試才被發(fā)現(xiàn)。W W

37、模型模型W模型由Evolutif公司提出。W模型從V模型演化過來,實際上開發(fā)是V,測試也是與此并行的V。相對于V模型,W模型增加了軟件各開發(fā)階段中應同步進行的驗證和確認活動。W W模型模型測試伴隨整個軟件開發(fā)周期,而且測試的對象不僅僅是程序,需求、設計等同樣要測試,測試與開發(fā)是同步進行的。W模型有利于盡早地全面的發(fā)現(xiàn)問題。W模型的缺點W模型也存在局限性。在W模型中,需求、設計、編碼等活動被視為串行的,同時,測試和開發(fā)活動也保持著一種線性的前后關系,上一階段完全結(jié)束,才可正式開始下一個階段工作工作。這樣就無法支持迭代的開發(fā)模型。對于當前軟件開發(fā)復雜多變的情況,W模型并不能解除測試管理面臨著困惑。

38、X模型很好地處理測試與開發(fā)的交接過程(交接的過程是一個時間段,而不是一個點)左邊描述的是針對單獨程序片段所進行的相互分離的編碼和測試,此后將進行頻繁的交接,通過集成最終合成為可執(zhí)行的程序,然后再對這些可執(zhí)行程序進行測試。己通過集成測試的成品可以進行封裝并提交給用戶,也可以作為更大規(guī)模和范圍內(nèi)集成的一部分。多根并行的曲線表示變更可以在各個部分發(fā)生。X模型還定位了探索性測試,這是不進行事先計劃的特殊類型的測試,給有經(jīng)驗的測試人員在測試計劃之外發(fā)現(xiàn)更多的軟件缺陷。H H模型模型H H模型模型在H模型中,軟件測試過程是一個獨立的流程,貫穿于整個產(chǎn)品周期,與其他流程并發(fā)地進行。H模型指出,軟件測試要盡早

39、準備,盡早執(zhí)行。當某個測試時間點就緒時,軟件測試即從測試準備階段進入測試執(zhí)行階段。軟件測試可以根據(jù)被測物的不同而分層次進行。不同的測試活動可以是按照某個次序先后進行的。但也可能是反復的,只要某個測試達到準備就緒點,測試執(zhí)行活動就可以開展。第3章 數(shù)學背景離散數(shù)學84w 關于集合,重要的是它使我們能夠作為一關于集合,重要的是它使我們能夠作為一個單位,或一個整體引用多個事物。個單位,或一個整體引用多個事物。w 例如:我們可能要引用正好有例如:我們可能要引用正好有3030天的月份,天的月份,若采用集合論表示法可以寫為:若采用集合論表示法可以寫為: M1= = 以上表示法讀做以上表示法讀做“M1”是元

40、素是元素4 4月、月、6 6月、月、9 9月、月、1111月的集合。月的集合。3.1集合論集合論(set theory)月月、月、月、1196485w 集合中的項叫做集合的元素或成員,這種集合中的項叫做集合的元素或成員,這種關系采用符號關系采用符號 表示。表示。w 因此,我們可以有因此,我們可以有 3.1.1集合成員關系集合成員關系112M月14M月如果事物是集合成員如果事物是集合成員如果事物不是集合成員如果事物不是集合成員863.1.2集合定義集合定義w 集合定義有三種方式:簡單列出集合的元集合定義有三種方式:簡單列出集合的元素,給出辨別規(guī)則,或通過其他集合構(gòu)建。素,給出辨別規(guī)則,或通過其他

41、集合構(gòu)建。w 定義一個年份集合為:定義一個年份集合為: Y =1812,1813,1814, ,2011,2012 通過列出元素定義集合時,與元素順序沒通過列出元素定義集合時,與元素順序沒有關系有關系 87w 也可以通過給出辨別規(guī)則來定義。也可以通過給出辨別規(guī)則來定義。 如可以把年份定為如可以把年份定為: Y =year:1812year2012 讀做讀做 “Y是所有是所有year的集合,使得的集合,使得year在在1812(含)(含)2012(含)之間(含)之間” 。w 當采用辨別規(guī)則定義集合時,必須保證是當采用辨別規(guī)則定義集合時,必須保證是無歧義無歧義的,即定義要清晰。給出年份的所的,即定

42、義要清晰。給出年份的所有可能取值,因此可以判斷某個年份是否有可能取值,因此可以判斷某個年份是否在我們的集合中。在我們的集合中。883.1.3空集空集w 空集采用符號空集采用符號 ,在集合論中占有特殊位在集合論中占有特殊位置??占话?。置??占话亍空集是唯一的,即不會有兩個空集;空集是唯一的,即不會有兩個空集;n、 都是不同的集合。都是不同的集合。w 如果集合被辨別規(guī)則定義為永遠失敗。那如果集合被辨別規(guī)則定義為永遠失敗。那么該集合就是空集。如:么該集合就是空集。如: = =yearyear:2012year18122012year181289w 在維恩圖中,集合被表示為一個圓圈,

43、圓在維恩圖中,集合被表示為一個圓圈,圓圈中的點表示集合元素。這樣我們可以把圈中的點表示集合元素。這樣我們可以把集合集合M1= = ,表示為表示為3.1.4維恩圖維恩圖4月月 11月月9月月 6月月月月、月、月、11964U U90w 給定集合給定集合A和和B,包括并、交、補、相對補、,包括并、交、補、相對補、對稱差。對稱差。w 兩個集合的笛卡爾積(又叫做叉積),它取兩個集合的笛卡爾積(又叫做叉積),它取決于有序?qū)ε嫉母拍?,無序和有序?qū)ε嫉谋頉Q于有序?qū)ε嫉母拍?,無序和有序?qū)ε嫉谋硎痉ㄒ话闶牵菏痉ㄒ话闶牵?無序?qū)ε紵o序?qū)ε迹?a,b) 有序?qū)ε迹河行驅(qū)ε迹?若若 ab 則,則,(a,b)= (b,

44、a), 但但 3.1.5集合操作集合操作91w 定義:兩個集合定義:兩個集合A和和B的笛卡爾積,是集合的笛卡爾積,是集合 AB= :xAyBAyBw 集合集合A的勢是的勢是A中的元素數(shù),采用中的元素數(shù),采用|A|表示,表示,對于集合對于集合A和和B, |AB|=|A|B|,利用笛卡利用笛卡爾積可以爾積可以描述具有多個輸入變量的程序的描述具有多個輸入變量的程序的測試用例測試用例。w 笛卡爾積的乘法性質(zhì),意味著這種形式的笛卡爾積的乘法性質(zhì),意味著這種形式的測試會生成大量測試用例。測試會生成大量測試用例。92w A是是B的子集,記做的子集,記做 ,當且僅當當且僅當w A是是B的真子集,記做的真子集,

45、記做 ,當且僅當當且僅當 w A和和B是相等集合,記做是相等集合,記做A=B,當且僅當當且僅當 w 若若A的每個元素也是的每個元素也是B的元素,集合的元素,集合A是集合是集合B 的子集的子集;如果如果A和和B互為子集,則互為子集,則A和和B相等。相等。 3.1.6集合關系集合關系BABaAaBABAAB BA AB933.1.7子集劃分w “劃分劃分”的含義是將一個整體分為小塊,使的含義是將一個整體分為小塊,使得所有事物都在某個小塊中,不會遺漏。得所有事物都在某個小塊中,不會遺漏。w 形式化的描述是:形式化的描述是: 定義:給定集合定義:給定集合B,以及以及B的一組子集的一組子集A1、A2,

46、,An,這些子集是這些子集是B的一個劃分,的一個劃分,當且僅當當且僅當A1A2An=B,且且jiAAji94w 由于一個劃分是一組子集,因此我們常常把由于一個劃分是一組子集,因此我們常常把單個子集看作是劃分的元素單個子集看作是劃分的元素。w 這個定義的兩部分對于測試人員很重要。第這個定義的兩部分對于測試人員很重要。第一部分保證一部分保證B的所有元素都在某個子集中,第的所有元素都在某個子集中,第二部分保證二部分保證B沒有元素在兩個子集中。沒有元素在兩個子集中。w 劃分對測試人員很有用,因為劃分能保證:劃分對測試人員很有用,因為劃分能保證:完備性和無冗余性完備性和無冗余性。當研究功能性測試,經(jīng)。當

47、研究功能性測試,經(jīng)常會出現(xiàn)漏洞和冗余性:有些內(nèi)容沒有被測常會出現(xiàn)漏洞和冗余性:有些內(nèi)容沒有被測試,而另外一些內(nèi)容被測試多次。試,而另外一些內(nèi)容被測試多次。功能性測功能性測試的主要困難之一,就是找出合適的劃分試的主要困難之一,就是找出合適的劃分。953.1.8集合恒等式集合恒等式名稱名稱 表達式表達式等同律等同律 A=A A=A AU =A AU =A支配律支配律 AU =UAU =U A= A=冪等律冪等律 AA =AAA =A AA =A AA =A交換律交換律 AB = BA AB = BA AB = BA AB = BA 96名稱名稱 表達式表達式求反律求反律 ( (A A) )=A=A

48、結(jié)合律結(jié)合律 A(BC)=(AB)CA(BC)=(AB)C A(BC)=(AB)C A(BC)=(AB)C分配律分配律 A(BC)=(AB)(AC)A(BC)=(AB)(AC) A(BC)=(AB)(AC) A(BC)=(AB)(AC) 摩根律摩根律 ( (AB)AB)=A=ABB ( (AB)AB)=A=ABB 97w 所有功能性測試的基礎都是函數(shù)。所有功能性測試的基礎都是函數(shù)。w 定義:定義:給定集合給定集合A和和B,函數(shù)函數(shù)f是是AB的一個的一個子集,使得對于子集,使得對于ai,ajA,bi,bjB,B, f(ai)=bi ,f(aj)=bj,3.2函數(shù)函數(shù)jijiaabb3.2.1定義

49、域與值域定義域與值域n集合集合A是函數(shù)是函數(shù)f的定義域,集合的定義域,集合B是值域。是值域。 n函數(shù)的表示法:函數(shù)的表示法:f:A B或或BAf98w 在以下定義中,首先給出函數(shù)在以下定義中,首先給出函數(shù)f:A B,并且定義并且定義集合:集合: 這個集合有時記做這個集合有時記做A在在f下的映象。下的映象。w 定義:定義: f是從是從A到到B的的上函數(shù)上函數(shù),當且僅當,當且僅當f(A)=B; f是從是從A到到B的的中函數(shù)中函數(shù),當且僅當,當且僅當 f是從是從A到到B的的一對一函數(shù)一對一函數(shù),當且僅當對于所有,當且僅當對于所有 ai,ajA, 3.2.2函數(shù)類型函數(shù)類型AaafbBbAfiiii對

50、于某個)(:)(BAf)()()(jijiafafaa99w f是從是從A到到B的的多對一函數(shù)多對一函數(shù),當且僅當存在,當且僅當存在ai,ajA, aiaj使得使得f(ai) = f(aj);w 所有這些對于測試都很重要。中函數(shù)與上所有這些對于測試都很重要。中函數(shù)與上函數(shù),意味著函數(shù),意味著基于定義域還是基于值域的基于定義域還是基于值域的功能性測試,功能性測試,一對一函數(shù)要求比多對一函一對一函數(shù)要求比多對一函數(shù)要多得多的測試。數(shù)要多得多的測試。100w 假設取假設取A、B和和C作為作為NextDate程序的日期集程序的日期集合,其中合,其中:A = =日期:日期:18121812年年1 1月月

51、1 1日日日期日期2012012 2年年1212月月3131日日B = =日期:日期:18121812年年1 1月月2 2日日日期日期20132013年年1 1月月1 1日日C C = = A Bw 現(xiàn)在,現(xiàn)在, NextDate : A B是一個一對一的是一個一對一的上函數(shù),上函數(shù),NextDate : A C C是一個一對一是一個一對一 的中函數(shù)。的中函數(shù)。1013.2.3函數(shù)合成函數(shù)合成w 假設我們有集合和函數(shù),使得一個函數(shù)的假設我們有集合和函數(shù),使得一個函數(shù)的值域是另一個函數(shù)的定義域:值域是另一個函數(shù)的定義域: f:A B g:BC h:CD 如果出現(xiàn)這種情況,則可以合成函數(shù)。如果出現(xiàn)

52、這種情況,則可以合成函數(shù)。w 設引用集合定義域和值域的特定元素設引用集合定義域和值域的特定元素aA、 bBB、cCC、 dDD,并假設并假設f(a)=bf(a)=b、g(b)=cg(b)=c和和h(c)=dh(c)=d,則則函數(shù)函數(shù)g g和和f f的合成的合成為:為: dchbghafghafgh)()()()(1023.3關系關系w 函數(shù)是關系的一種特例函數(shù)是關系的一種特例w 定義:給定兩個集合定義:給定兩個集合A和和B,關系關系R是笛卡爾積是笛卡爾積AB的一個子集。的一個子集。w 給定兩個集合給定兩個集合A和和B,一個關系一個關系 關系關系R的的勢勢是:是: 一對一勢一對一勢,當且僅當,當

53、且僅當R是是A到到B的一對一函數(shù)的一對一函數(shù) 多對一勢多對一勢,當且僅當,當且僅當R是是A到到B的多對一函數(shù)的多對一函數(shù) 一對多勢一對多勢,當且僅當至少有一個元素,當且僅當至少有一個元素aA在在R中的中的兩個有序?qū)ε贾?,即兩個有序?qū)ε贾?,?a,bi)RR和和( (a,a,bj)RRBAR103設設A是一個集合,設是一個集合,設 是定義在是定義在A上的上的一個關系,關系具有四個特殊屬性:一個關系,關系具有四個特殊屬性:w 自反的自反的,當且僅當所有,當且僅當所有aAaA,RRw 對稱的對稱的,當且僅當若,當且僅當若RR,則則 Rb,aRw 反對稱的反對稱的,當且僅當若,當且僅當若 a,b、 R

54、,b,aR,則則 a=b a=bw 傳遞的傳遞的,當且僅當若,當且僅當若 a,b、R,R,則則 Ra,cR3.3.2單個集合上的關系單個集合上的關系AAR104w 關系關系 是偏序關系,如果是偏序關系,如果R是自反、反對是自反、反對稱和傳遞的。稱和傳遞的。w 關系關系 是等價關系,如果是等價關系,如果R是自反、對稱是自反、對稱和傳遞的。和傳遞的。w 如果如果b1和和b2是在相同的劃分元素中,則我們說是在相同的劃分元素中,則我們說b1和和b2是相關的是相關的(b1Rb2),這個關系是自反的、對稱,這個關系是自反的、對稱的、傳遞的。叫的、傳遞的。叫由劃分歸納的等價關系由劃分歸納的等價關系。w 如果

55、從定義在一個集合上的等價關系開始,則可如果從定義在一個集合上的等價關系開始,則可根據(jù)與該等價關系相關的元素定義子集,這些子根據(jù)與該等價關系相關的元素定義子集,這些子集就構(gòu)成劃分,由等價關系歸納的劃分,劃分中集就構(gòu)成劃分,由等價關系歸納的劃分,劃分中的集合叫做等價類。的集合叫做等價類。w 因此,因此,只測試等價類中的一個元素,并假設剩余只測試等價類中的一個元素,并假設剩余的元素有類似的測試結(jié)果,可大大提高測試效率。的元素有類似的測試結(jié)果,可大大提高測試效率。AARAAR舉例106NextDate問題問題w NextDate是一個有三個變量(月份、日是一個有三個變量(月份、日期和年)的函數(shù)。函數(shù)返

56、回輸入日期后面期和年)的函數(shù)。函數(shù)返回輸入日期后面的那個日期。變量月份、日期和年都具有的那個日期。變量月份、日期和年都具有整數(shù)值,且滿足以下條件:整數(shù)值,且滿足以下條件:w c1. 1月份月份12w c2. 1月份月份31w c3. 1812年年2012 107程序要求程序要求w 類類Date:year、month、day、Isleapyear()、Week()、NextDate()、PreDate()w 對該程序進行調(diào)試、測試、確保沒有錯誤,對該程序進行調(diào)試、測試、確保沒有錯誤,記錄所有測試的輸入數(shù)據(jù)、輸出數(shù)據(jù)記錄所有測試的輸入數(shù)據(jù)、輸出數(shù)據(jù)OVER第4章 數(shù)學背景圖論109 4.1圖圖w

57、圖圖(又叫線性圖又叫線性圖)是一種由兩個集合定義的抽是一種由兩個集合定義的抽象數(shù)學結(jié)構(gòu),即一個節(jié)點集合和一個構(gòu)成象數(shù)學結(jié)構(gòu),即一個節(jié)點集合和一個構(gòu)成節(jié)點之間連接的邊集合。節(jié)點之間連接的邊集合。w 定義:圖定義:圖G=由節(jié)點的有限由節(jié)點的有限(并且非空并且非空) 集合集合V和節(jié)點無序?qū)ε技虾凸?jié)點無序?qū)ε技螮組成。組成。 V=n1,n2, ,nm和和E=e1,e2, ,ep 其中每條邊其中每條邊ek=ni,nj, ni,njV。 ni,nj是一是一個無序?qū)ε?,有時記做個無序?qū)ε?,有時記做(ni,nj)110n1n5n2n4n3n6n7e1e4e2e3e5n如左圖所示,節(jié)點和邊集如左圖所示,節(jié)點

58、和邊集合為合為: V=n1,n2,n3, n4,n5,n6,n7 和和 E=e1,e2, e3, e4,e5 =(n1,n2), (n1,n4), (n3,n4), (n2,n5), (n4,n6)n把節(jié)點看做是程序語句,把節(jié)點看做是程序語句,并且邊表示控制流或定義并且邊表示控制流或定義/使用關系。使用關系。111 4.1.1節(jié)點的度節(jié)點的度w 定義:節(jié)點的度是以該節(jié)點作為端點的邊定義:節(jié)點的度是以該節(jié)點作為端點的邊的條數(shù)。我們把節(jié)點的條數(shù)。我們把節(jié)點n的度記做的度記做deg(n)。w 可以說,節(jié)點的度表示它在圖中的可以說,節(jié)點的度表示它在圖中的“流行流行程度程度”。如果圖中的節(jié)點表示對象,邊

59、表。如果圖中的節(jié)點表示對象,邊表示消息,則節(jié)點示消息,則節(jié)點(對象對象)的度表示適合該對象的度表示適合該對象的集成測試范圍。的集成測試范圍。w 上圖中節(jié)點的度是:上圖中節(jié)點的度是:deg(n1)=2,deg(n2)=2 deg(n3)=1,deg(n4)=3, deg(n5)=1,deg(n6)=1, deg(n7)=01124.1.2關聯(lián)矩陣關聯(lián)矩陣w 定義:擁有定義:擁有m個節(jié)點和個節(jié)點和n條邊的圖條邊的圖G=的關聯(lián)矩陣是一種的關聯(lián)矩陣是一種mn n矩陣,矩陣,其中第其中第i行第行第j列的元素是列的元素是1,當且僅當,當且僅當節(jié)點節(jié)點i是邊是邊j的一個端點,否則元素是的一個端點,否則元素是

60、0。 w 任何列的表項和為任何列的表項和為2,這是因為每條邊,這是因為每條邊都是恰好有兩個端點。都是恰好有兩個端點。1134.1.3相鄰矩陣相鄰矩陣w 定義:擁有定義:擁有m個節(jié)點和個節(jié)點和n條邊的圖條邊的圖G=的相鄰矩陣是一種的相鄰矩陣是一種mm矩陣,矩陣,其中第其中第i行第行第j列的元素是列的元素是1,當且僅當節(jié)點,當且僅當節(jié)點i和節(jié)點和節(jié)點j之間存在一條邊,否則元素是之間存在一條邊,否則元素是0。 w 相鄰矩陣是對稱的,行的和即是該節(jié)點的相鄰矩陣是對稱的,行的和即是該節(jié)點的度度1144.1.4路徑路徑w 定義:定義:路徑是一系列的邊路徑是一系列的邊,對于序列中的,對于序列中的任何相鄰邊對

溫馨提示

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

評論

0/150

提交評論