




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、軟件測試軟件測試Software testingSoftware testing 軟件學(xué)院軟件學(xué)院 段喜龍段喜龍 D312 D312 20201414.9.92課程安排:課程安排:w 學(xué)時(shí)分配:學(xué)時(shí)分配:40學(xué)時(shí)(學(xué)時(shí)(32+8)w 教材:教材: 軟件測試技術(shù)軟件測試技術(shù)w聯(lián)系方式:聯(lián)系方式:3第一部分第一部分 基礎(chǔ)篇基礎(chǔ)篇第第1章章 軟件測試背景軟件測試背景1.1 軟件錯(cuò)誤案例(軟件錯(cuò)誤案例(when software attacks)1.2 軟件缺陷(軟件缺陷(whats?why comes?and its cost)1.3 軟件測試員(軟件測試員(job and qualificatio
2、n)1.1 1.1 軟件錯(cuò)誤案例軟件錯(cuò)誤案例Software casesSoftware cases5趣事趣事(The funny)w 美國國稅局(美國國稅局(IRS)的尷尬的尷尬n1993年年7月月,IRS發(fā)出了近發(fā)出了近680億美元的稅單億美元的稅單w 最大方的自動(dòng)柜員機(jī)最大方的自動(dòng)柜員機(jī) n2001年年1月,歐元正式流通后幾天,德國的某些月,歐元正式流通后幾天,德國的某些自動(dòng)柜員機(jī)竟能在提款后不記入帳目!自動(dòng)柜員機(jī)竟能在提款后不記入帳目! w 壞脾氣的洗手間壞脾氣的洗手間n2001年年6月,在英國,一個(gè)全自動(dòng)的洗手間突然月,在英國,一個(gè)全自動(dòng)的洗手間突然出現(xiàn)故障出現(xiàn)故障,將一位老太太整整
3、困了將一位老太太整整困了2小時(shí)小時(shí)6嚴(yán)重事故嚴(yán)重事故(The serious)w 1996年年12月,歐洲航天局(月,歐洲航天局(ESA)阿利亞娜阿利亞娜5型火型火箭在發(fā)射箭在發(fā)射39秒以后爆炸(秒以后爆炸(10年,年,70億)億)n原因:運(yùn)算溢出錯(cuò)誤原因:運(yùn)算溢出錯(cuò)誤w 1999年年11月,月,美國國家航空航天局(美國國家航空航天局(NASANASA)發(fā)射發(fā)射火星溫度探測器失蹤火星溫度探測器失蹤n原因:單位換算錯(cuò)誤原因:單位換算錯(cuò)誤w 千年蟲問題,大約千年蟲問題,大約1974n原因:盲目的強(qiáng)調(diào)數(shù)據(jù)壓縮原因:盲目的強(qiáng)調(diào)數(shù)據(jù)壓縮7悲劇(The tragic)w 愛國者導(dǎo)彈的失利(愛國者導(dǎo)彈的失利
4、(1991年年2月)月)n原因:積累的時(shí)鐘誤差原因:積累的時(shí)鐘誤差w 美國海軍美國海軍“文森斯文森斯”號(hào)巡洋艦誤擊伊朗客號(hào)巡洋艦誤擊伊朗客機(jī)機(jī)( (1987年年4月月) )n原因:不可靠的模式識(shí)別算法原因:不可靠的模式識(shí)別算法1.2 1.2 軟件缺陷軟件缺陷software faultsoftware fault Defect- Defect-缺點(diǎn)缺點(diǎn) Variance-Variance-偏差偏差 Fault- Fault-缺陷缺陷 Failure-Failure-失敗失敗 Problem- Problem-問題問題 Inconsistency-Inconsistency-矛盾矛盾 Error
5、-Error-錯(cuò)誤錯(cuò)誤 Feature-Feature-特殊特殊 Incident- Incident-毛病毛病 Bug Anomaly-Bug Anomaly-異常異常91.2.1軟件缺陷是什么?w 定義:只有符合下列定義:只有符合下列5 5個(gè)規(guī)則的軟件問題,我們個(gè)規(guī)則的軟件問題,我們將其定義為將其定義為軟件缺陷軟件缺陷(software fault)n軟件未達(dá)到產(chǎn)品說明書標(biāo)明的功能軟件未達(dá)到產(chǎn)品說明書標(biāo)明的功能n軟件出現(xiàn)了產(chǎn)品說明書指明不會(huì)出現(xiàn)的錯(cuò)誤軟件出現(xiàn)了產(chǎn)品說明書指明不會(huì)出現(xiàn)的錯(cuò)誤n軟件功能超出產(chǎn)品說明書指明范圍軟件功能超出產(chǎn)品說明書指明范圍n軟件未達(dá)到產(chǎn)品說明書雖未指出但應(yīng)達(dá)到的目
6、標(biāo)軟件未達(dá)到產(chǎn)品說明書雖未指出但應(yīng)達(dá)到的目標(biāo)n軟件測試員認(rèn)為軟件難以理解、不易使用、運(yùn)行速軟件測試員認(rèn)為軟件難以理解、不易使用、運(yùn)行速度緩慢、或者最終用戶認(rèn)為不好。度緩慢、或者最終用戶認(rèn)為不好。101.2.2為什么會(huì)出現(xiàn)軟件缺陷?w 從小程序到大項(xiàng)目的無數(shù)研究得出:從小程序到大項(xiàng)目的無數(shù)研究得出:導(dǎo)致軟導(dǎo)致軟件缺陷最大的原因是件缺陷最大的原因是產(chǎn)品說明書產(chǎn)品說明書(需(需求)求)w 其次的原因是設(shè)計(jì)方案的問題。其次的原因是設(shè)計(jì)方案的問題。111.2.3軟件缺陷的修復(fù)費(fèi)用軟件缺陷的修復(fù)費(fèi)用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 軟件測試員是客戶的眼睛,是第一次看到軟件測試員是客戶的眼睛,是第一次看到軟件的人,代表客戶說話,應(yīng)力求完美。軟件的人,代表客戶說話,應(yīng)力求完美。w 軟件測試員的目標(biāo)是軟件測試員的目標(biāo)是盡可能早的找出軟件盡可能早的找出軟件缺陷,并確保其得以修復(fù)缺陷,并確保其得以修復(fù)。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 技術(shù)能力技術(shù)能力
9、w 探索精神探索精神w 不懈努力不懈努力w 創(chuàng)造力創(chuàng)造力w 說服力說服力w 準(zhǔn)確的洞察力準(zhǔn)確的洞察力w 老練穩(wěn)重老練穩(wěn)重w 追求完美追求完美18第第2章章 軟件測試基礎(chǔ)軟件測試基礎(chǔ)2.1 測試原則(測試原則(principle)2.2 測試目的測試目的(purpose)2.3 測試對(duì)象(測試對(duì)象(object)2.4 測試術(shù)語(測試術(shù)語(glossary)2.5 測試方法(測試方法(method)2.12.1測試原則測試原則principleprinciple201.完全測試程序是不可能的w 輸入量太大輸入量太大w 輸出結(jié)果多輸出結(jié)果多w 軟件實(shí)現(xiàn)途徑太多軟件實(shí)現(xiàn)途徑太多w 軟件說明書沒有客觀
10、標(biāo)準(zhǔn)軟件說明書沒有客觀標(biāo)準(zhǔn)212.軟件測試是有風(fēng)險(xiǎn)的行為軟件測試是有風(fēng)險(xiǎn)的行為w 如果試圖測試所有情況,費(fèi)用將大幅增加,如果試圖測試所有情況,費(fèi)用將大幅增加,軟件缺陷漏掉的數(shù)量并不會(huì)隨費(fèi)用上漲而軟件缺陷漏掉的數(shù)量并不會(huì)隨費(fèi)用上漲而顯著下降。顯著下降。w 如果減少測試或者錯(cuò)誤地確定測試對(duì)象,如果減少測試或者錯(cuò)誤地確定測試對(duì)象,那么費(fèi)用很低,但是會(huì)漏掉大量軟件缺陷。那么費(fèi)用很低,但是會(huì)漏掉大量軟件缺陷。(每個(gè)項(xiàng)目都有一個(gè)最優(yōu)的測試量)(每個(gè)項(xiàng)目都有一個(gè)最優(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)驗(yàn)表明,測試后經(jīng)驗(yàn)表明,測試后程序中殘存的錯(cuò)誤數(shù)目程序中殘存的錯(cuò)誤數(shù)目與該程序中已發(fā)現(xiàn)的錯(cuò)誤數(shù)目成正比與該程序中已發(fā)現(xiàn)的錯(cuò)誤數(shù)目成正比。There is Always One More Bug245.并非所有軟件缺陷都能修復(fù)w 沒有足夠的時(shí)間必須保證按時(shí)完成w 不算真正的軟件缺陷w 修復(fù)的風(fēng)險(xiǎn)太大
12、修復(fù)一個(gè)可能導(dǎo)致其他w 不值得修復(fù)不常出現(xiàn)或在不常用功能中出現(xiàn)的對(duì)于軟件缺陷是否應(yīng)該修復(fù),其決策過程對(duì)于軟件缺陷是否應(yīng)該修復(fù),其決策過程應(yīng)由軟件測試員、項(xiàng)目管理員和程序員共應(yīng)由軟件測試員、項(xiàng)目管理員和程序員共同參與。同參與。256. 軟件測試是一項(xiàng)講究條理的技術(shù)專業(yè)軟件測試是一項(xiàng)講究條理的技術(shù)專業(yè)w 對(duì)于軟件測試應(yīng)嚴(yán)格制定并執(zhí)行測試計(jì)劃,對(duì)于軟件測試應(yīng)嚴(yán)格制定并執(zhí)行測試計(jì)劃,排除測試的隨意性排除測試的隨意性。w 應(yīng)當(dāng)對(duì)每一個(gè)測試結(jié)果做全面檢查。應(yīng)當(dāng)對(duì)每一個(gè)測試結(jié)果做全面檢查。w 妥善保存測試計(jì)劃,測試用例,出錯(cuò)統(tǒng)計(jì)妥善保存測試計(jì)劃,測試用例,出錯(cuò)統(tǒng)計(jì)和最終分析報(bào)告,為維護(hù)提供方便。和最終分析報(bào)
13、告,為維護(hù)提供方便。w 程序員應(yīng)避免檢查自己的程序。程序員應(yīng)避免檢查自己的程序。2.22.2測試目的測試目的purposepurpose27基于不同的立場,存在著兩種完全不同基于不同的立場,存在著兩種完全不同的測試目的的測試目的w 從從用戶的角度用戶的角度出發(fā),普遍希望通過軟件測出發(fā),普遍希望通過軟件測試試暴露軟件中隱藏的錯(cuò)誤和缺陷暴露軟件中隱藏的錯(cuò)誤和缺陷,以考慮,以考慮是否可接受該產(chǎn)品。是否可接受該產(chǎn)品。w 從從軟件開發(fā)者的角度軟件開發(fā)者的角度出發(fā),則希望測試成出發(fā),則希望測試成為為表明軟件產(chǎn)品中不存在錯(cuò)誤表明軟件產(chǎn)品中不存在錯(cuò)誤的過程,驗(yàn)的過程,驗(yàn)證該軟件已正確地實(shí)現(xiàn)了用戶的要求,確證該
14、軟件已正確地實(shí)現(xiàn)了用戶的要求,確立人們對(duì)軟件質(zhì)量的信心立人們對(duì)軟件質(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 以最少的時(shí)間和人力,系統(tǒng)地找出軟件中潛在的各種錯(cuò)誤和缺陷。w 證明證明w 檢測檢測w 預(yù)防預(yù)防2.32.3測試對(duì)象測試對(duì)象objectobject31測試對(duì)象w 軟件測試并不等于程序測試。軟件測試應(yīng)貫穿于軟件定義與開發(fā)的整個(gè)期間。w 需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)以及程序編碼等各階段所得到的,包括需求規(guī)格說明、概要設(shè)計(jì)規(guī)格說明、詳細(xì)設(shè)計(jì)規(guī)格說明以及源程序,都應(yīng)成為軟件測試的對(duì)象。2.4測試術(shù)語glossaryglossary33錯(cuò)誤(error)w 人類會(huì)犯錯(cuò)誤,很接近的一個(gè)同義詞是過人類會(huì)犯錯(cuò)誤,很接近的一個(gè)同義詞是過錯(cuò)(錯(cuò)(mistake)。)。人們
16、在編寫代碼是會(huì)出人們在編寫代碼是會(huì)出現(xiàn)過錯(cuò),我們把這種過錯(cuò)叫做現(xiàn)過錯(cuò),我們把這種過錯(cuò)叫做bug。34缺陷(fault)w 缺陷是錯(cuò)誤的結(jié)果。更精確地說,缺陷是缺陷是錯(cuò)誤的結(jié)果。更精確地說,缺陷是錯(cuò)誤的表現(xiàn),而表現(xiàn)是表示的模式,例如:錯(cuò)誤的表現(xiàn),而表現(xiàn)是表示的模式,例如:敘述性文字、數(shù)據(jù)流框圖、層次結(jié)構(gòu)圖、敘述性文字、數(shù)據(jù)流框圖、層次結(jié)構(gòu)圖、源代碼等。源代碼等。w 缺陷分為缺陷分為過錯(cuò)缺陷過錯(cuò)缺陷和和遺漏缺陷遺漏缺陷。 若把某些信息輸入到不正確的表示中,就若把某些信息輸入到不正確的表示中,就是過錯(cuò)缺陷;如果沒有輸入正確信息,則是過錯(cuò)缺陷;如果沒有輸入正確信息,則為遺漏缺陷。為遺漏缺陷。35失效(
17、failure)w 當(dāng)缺陷執(zhí)行時(shí)會(huì)發(fā)生失效。有兩點(diǎn)需要解釋:一當(dāng)缺陷執(zhí)行時(shí)會(huì)發(fā)生失效。有兩點(diǎn)需要解釋:一是失效只出現(xiàn)在可執(zhí)行的表現(xiàn)中,通常是源代碼,是失效只出現(xiàn)在可執(zhí)行的表現(xiàn)中,通常是源代碼,或更確切地說是被裝載的目標(biāo)代碼;二是這種定或更確切地說是被裝載的目標(biāo)代碼;二是這種定義只與過錯(cuò)缺陷有關(guān)。對(duì)于遺漏缺陷,可以通過義只與過錯(cuò)缺陷有關(guān)。對(duì)于遺漏缺陷,可以通過有效的評(píng)審來避免其產(chǎn)生的失效。有效的評(píng)審來避免其產(chǎn)生的失效。事故(incident)n當(dāng)出現(xiàn)失效時(shí),可能會(huì)也可能不會(huì)呈現(xiàn)給用戶,當(dāng)出現(xiàn)失效時(shí),可能會(huì)也可能不會(huì)呈現(xiàn)給用戶,事故說明出現(xiàn)了與失效類似的情況,警告用戶注事故說明出現(xiàn)了與失效類似的情
18、況,警告用戶注意所出現(xiàn)的失效。意所出現(xiàn)的失效。36測試(測試(test)w 測試顯然要處理錯(cuò)誤、缺陷、失效和事故。測試顯然要處理錯(cuò)誤、缺陷、失效和事故。測試用例(測試用例(test casetest case)n測試用例應(yīng)由測試用例應(yīng)由測試輸入數(shù)據(jù)測試輸入數(shù)據(jù)和對(duì)應(yīng)的和對(duì)應(yīng)的預(yù)期預(yù)期輸出結(jié)果輸出結(jié)果這兩部分組成。這兩部分組成。OVER37通過維恩圖理解測試通過維恩圖理解測試w 軟件測試基本上關(guān)心的是行為,而行為與軟件測試基本上關(guān)心的是行為,而行為與軟件(和系統(tǒng))開發(fā)人員很常見的結(jié)構(gòu)視軟件(和系統(tǒng))開發(fā)人員很常見的結(jié)構(gòu)視圖無關(guān)。圖無關(guān)。n結(jié)構(gòu)視圖關(guān)注的是結(jié)構(gòu)視圖關(guān)注的是它是什么它是什么,而行為視
19、圖關(guān)注,而行為視圖關(guān)注的是它做什么的是它做什么。n一直困擾測試人員的難點(diǎn)之一,就是基本文檔一直困擾測試人員的難點(diǎn)之一,就是基本文檔通常都是由開發(fā)人員編寫,通常都是由開發(fā)人員編寫, 并且是針對(duì)開發(fā)人并且是針對(duì)開發(fā)人員的,因此這些文檔員的,因此這些文檔強(qiáng)調(diào)的是結(jié)構(gòu)信息強(qiáng)調(diào)的是結(jié)構(gòu)信息,而不,而不是是行為信息行為信息。38w 考慮一個(gè)程序行為全域。給定一段程序及考慮一個(gè)程序行為全域。給定一段程序及其規(guī)格說明,集合其規(guī)格說明,集合S是所描述的行為,集合是所描述的行為,集合P是用程序?qū)崿F(xiàn)的行為。是用程序?qū)崿F(xiàn)的行為。S S規(guī)格說明規(guī)格說明P P程序程序程序行為程序行為預(yù)期的預(yù)期的所實(shí)現(xiàn)的所實(shí)現(xiàn)的39S S
20、規(guī)格說明規(guī)格說明P P程序程序預(yù)期的預(yù)期的所實(shí)現(xiàn)的所實(shí)現(xiàn)的程序行為程序行為遺漏缺陷遺漏缺陷過錯(cuò)缺陷過錯(cuò)缺陷測試就是確定既被描述又被實(shí)現(xiàn)的程序行為的測試就是確定既被描述又被實(shí)現(xiàn)的程序行為的范圍,同時(shí)盡量找出缺陷。范圍,同時(shí)盡量找出缺陷。S和和P相交的部分是相交的部分是“正確正確”部分,即既被描述部分,即既被描述又被實(shí)現(xiàn)的行為。又被實(shí)現(xiàn)的行為。40S S規(guī)格說明規(guī)格說明P P程序程序程序行為程序行為T測試用例測試用例5621437412 2和和5 5,可能會(huì)有沒有測試的已描述行為。,可能會(huì)有沒有測試的已描述行為。1 1和和4 4,經(jīng)過測試的已描述行為。,經(jīng)過測試的已描述行為。3 3和和7 7,對(duì)應(yīng)
21、于未描述行為的測試用例。,對(duì)應(yīng)于未描述行為的測試用例。2 2和和6 6,可能會(huì)有沒有測試的程序行為。,可能會(huì)有沒有測試的程序行為。1 1和和3 3,經(jīng)過測試的程序行為。,經(jīng)過測試的程序行為。4 4和和7 7,未通過程序?qū)崿F(xiàn)的行為,未通過程序?qū)崿F(xiàn)的行為。測試的目標(biāo):測試人員怎樣才能使這些集測試的目標(biāo):測試人員怎樣才能使這些集合的相交區(qū)域(區(qū)域合的相交區(qū)域(區(qū)域1 1)盡可能地大。)盡可能地大。2.52.5測試方法測試方法43從代碼的特性角度從代碼的特性角度( (即內(nèi)部即內(nèi)部) )出發(fā)出發(fā)w 單元測試(單元測試(Unit Test):最微小規(guī)模的測試,:最微小規(guī)模的測試,用以測試某個(gè)功能或代碼塊。
22、典型的單元測用以測試某個(gè)功能或代碼塊。典型的單元測試應(yīng)由程序員而非測試員來做,因?yàn)樗枰噾?yīng)由程序員而非測試員來做,因?yàn)樗枰纼?nèi)部程序設(shè)計(jì)和編碼的細(xì)節(jié)知識(shí)。知道內(nèi)部程序設(shè)計(jì)和編碼的細(xì)節(jié)知識(shí)。w 功能測試(功能測試(Function Test)或或特性測試特性測試(Feature Test):):按照軟件的功能或特性按照軟件的功能或特性逐個(gè)進(jìn)行測試。逐個(gè)進(jìn)行測試。覆蓋測試(覆蓋測試(Coverage Testing)44w 提交測試提交測試 ( (Check-in Test) ):在開發(fā)人員對(duì)代碼做在開發(fā)人員對(duì)代碼做了任何修改,或者修復(fù)了某個(gè)了任何修改,或者修復(fù)了某個(gè)BugBug時(shí),需要重新
23、時(shí),需要重新Check-in代碼代碼 ( (即將修改后的代碼放大到整個(gè)大即將修改后的代碼放大到整個(gè)大的系統(tǒng)中的系統(tǒng)中) )w 基本驗(yàn)證測試基本驗(yàn)證測試 ( (Build Verification Test,簡稱簡稱BVT) ):對(duì)完成的代碼進(jìn)行編譯和連接,產(chǎn)生一個(gè)對(duì)完成的代碼進(jìn)行編譯和連接,產(chǎn)生一個(gè)構(gòu)造,以檢查程序的主要功能是否會(huì)像預(yù)期一樣構(gòu)造,以檢查程序的主要功能是否會(huì)像預(yù)期一樣進(jìn)行工作。這是最簡單而又最省時(shí)的一種測試方進(jìn)行工作。這是最簡單而又最省時(shí)的一種測試方法。每產(chǎn)生一個(gè)新的構(gòu)造時(shí)都要進(jìn)行測試。如果法。每產(chǎn)生一個(gè)新的構(gòu)造時(shí)都要進(jìn)行測試。如果BVTBVT通不過,表明問題很嚴(yán)重,開發(fā)人員需要
24、盡快通不過,表明問題很嚴(yán)重,開發(fā)人員需要盡快修復(fù)出現(xiàn)的問題,測試人員也就不用浪費(fèi)時(shí)間做修復(fù)出現(xiàn)的問題,測試人員也就不用浪費(fèi)時(shí)間做其他測試了其他測試了45w 回歸測試(回歸測試(Regression Test): : 過一過一段時(shí)間以后,再回過頭來對(duì)以前修復(fù)段時(shí)間以后,再回過頭來對(duì)以前修復(fù)過的過的BugBug重新進(jìn)行測試,看該重新進(jìn)行測試,看該BugBug是否是否會(huì)重新出現(xiàn)。會(huì)重新出現(xiàn)。46從用戶的角度從用戶的角度( (即外部即外部) )出發(fā)出發(fā)w 配置測試配置測試( (Configuration Test) ):從用戶從用戶的使用出發(fā)進(jìn)行多方面的測試,要考慮的使用出發(fā)進(jìn)行多方面的測試,要考慮到
25、用戶的多種情況,用多種配置對(duì)軟件到用戶的多種情況,用多種配置對(duì)軟件進(jìn)行測試。進(jìn)行測試。w 兼容性測試兼容性測試( (Compatibility Test) ):主要考主要考慮兼容性問題,比如同一個(gè)產(chǎn)品的不同慮兼容性問題,比如同一個(gè)產(chǎn)品的不同版本之間的兼容問題,不同廠家的同一版本之間的兼容問題,不同廠家的同一個(gè)產(chǎn)品之間的兼容問題,不同類型軟件個(gè)產(chǎn)品之間的兼容問題,不同類型軟件之間的兼容問題等。之間的兼容問題等。使用測試使用測試( (Usage testing) ) 47w 強(qiáng)力測試強(qiáng)力測試( (StressTest):):在各種極限情況下對(duì)在各種極限情況下對(duì)產(chǎn)品進(jìn)行測試產(chǎn)品進(jìn)行測試 ( (如很多
26、人同時(shí)使用該軟件,如很多人同時(shí)使用該軟件,或者反復(fù)運(yùn)行該軟件或者反復(fù)運(yùn)行該軟件) ),以檢查產(chǎn)品的長期,以檢查產(chǎn)品的長期穩(wěn)定性。穩(wěn)定性。w 性能測試性能測試( (Performance Test):):本項(xiàng)測試是本項(xiàng)測試是保證程序具有良好的性能。如果別人的產(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): 因?yàn)橛脩敉ǔ?/p>
27、是通過文檔和因?yàn)橛脩敉ǔJ峭ㄟ^文檔和幫助文件來學(xué)習(xí)使用產(chǎn)品的,如果文檔和幫助文件來學(xué)習(xí)使用產(chǎn)品的,如果文檔和幫助文件存在錯(cuò)誤,就可能會(huì)導(dǎo)致用戶無幫助文件存在錯(cuò)誤,就可能會(huì)導(dǎo)致用戶無法正常使用產(chǎn)品。法正常使用產(chǎn)品。w AlphaAlpha和和BetaBeta測試測試( (Alpha and Beta Test):):在在正式發(fā)布產(chǎn)品之前往往要先發(fā)布一些測試正式發(fā)布產(chǎn)品之前往往要先發(fā)布一些測試版,讓用戶能夠反饋出相關(guān)信息,或者找版,讓用戶能夠反饋出相關(guān)信息,或者找到存在的到存在的BugBug,以便在正式版中得到解決。以便在正式版中得到解決。49從區(qū)分測試用例的角度出發(fā)從區(qū)分測試用例的角度出發(fā)w 黑
28、盒測試黑盒測試(Black Box Testing ):功能性功能性RequirementsInputOutput基于軟件規(guī)格說明的測試基于軟件規(guī)格說明的測試任何程序都可以看作是將從輸入定義域取值映射到任何程序都可以看作是將從輸入定義域取值映射到輸出值域的函數(shù)。輸出值域的函數(shù)。50規(guī)格說明程序測試用例對(duì)于功能性測試,不管采用什么方法,測試用例對(duì)于功能性測試,不管采用什么方法,測試用例集合完全局限在已描述行為集合內(nèi)。(集合完全局限在已描述行為集合內(nèi)。(基于已描基于已描述行為述行為)51黑盒測試的優(yōu)點(diǎn):黑盒測試的優(yōu)點(diǎn):w 黑盒測試(功能性測試)與軟件如何實(shí)現(xiàn)黑盒測試(功能性測試)與軟件如何實(shí)現(xiàn)無關(guān)
29、,所以如果實(shí)現(xiàn)發(fā)生變化,測試用例無關(guān),所以如果實(shí)現(xiàn)發(fā)生變化,測試用例仍然有用;仍然有用;w 測試用例開發(fā)可以與實(shí)現(xiàn)并行進(jìn)行,可縮測試用例開發(fā)可以與實(shí)現(xiàn)并行進(jìn)行,可縮短項(xiàng)目總的開發(fā)時(shí)間。短項(xiàng)目總的開發(fā)時(shí)間。不足!測試用例之間可能存在嚴(yán)重的冗不足!測試用例之間可能存在嚴(yán)重的冗余,此外可能還會(huì)有未測試的軟件漏洞余,此外可能還會(huì)有未測試的軟件漏洞52w 白盒測試白盒測試(white box testing):結(jié)構(gòu)性測試結(jié)構(gòu)性測試基于覆蓋全部代碼、分支、路徑、條件的測試。由于實(shí)現(xiàn)是已知的,測試人員可以嚴(yán)格描由于實(shí)現(xiàn)是已知的,測試人員可以嚴(yán)格描述要測試的確切內(nèi)容。述要測試的確切內(nèi)容。53規(guī)格說明程序測試用
30、例對(duì)于結(jié)構(gòu)性測試,不管采用什么方法,測試用例對(duì)于結(jié)構(gòu)性測試,不管采用什么方法,測試用例集合完全局限在已由程序?qū)崿F(xiàn)的行為集合內(nèi)。集合完全局限在已由程序?qū)崿F(xiàn)的行為集合內(nèi)。(基于程序行為基于程序行為)54結(jié)構(gòu)性測試的特點(diǎn)結(jié)構(gòu)性測試的特點(diǎn)w 測試人員可以利用線性圖論的理論,嚴(yán)格測試人員可以利用線性圖論的理論,嚴(yán)格描述要測試的確切內(nèi)容。描述要測試的確切內(nèi)容。w 在結(jié)構(gòu)性測試中,測試覆蓋指標(biāo)能提供明在結(jié)構(gòu)性測試中,測試覆蓋指標(biāo)能提供明確的測試范圍。確的測試范圍。55從測試方式出發(fā)從測試方式出發(fā)w 靜態(tài)測試:靜態(tài)分析技術(shù),不運(yùn)行程序,分靜態(tài)測試:靜態(tài)分析技術(shù),不運(yùn)行程序,分析文檔(說明書、源程序)進(jìn)行測試。
31、析文檔(說明書、源程序)進(jìn)行測試。w 動(dòng)態(tài)測試:執(zhí)行被測程序,通過執(zhí)行結(jié)果分動(dòng)態(tài)測試:執(zhí)行被測程序,通過執(zhí)行結(jié)果分析軟件可能出現(xiàn)的錯(cuò)誤。析軟件可能出現(xiàn)的錯(cuò)誤。56從測試階段出發(fā)從測試階段出發(fā)w 單元測試單元測試w 集成測試集成測試w 系統(tǒng)測試系統(tǒng)測試57示例w 編程:從鍵盤輸入三角形三條邊編程:從鍵盤輸入三角形三條邊a、b、c,判斷該三角形是什么三角形(等腰、等邊、判斷該三角形是什么三角形(等腰、等邊、直角、等腰直角、一般、非),并從屏幕直角、等腰直角、一般、非),并從屏幕上輸出結(jié)果。上輸出結(jié)果。第3章 軟件測試風(fēng)險(xiǎn)管理Risk Management593.1 測試風(fēng)險(xiǎn)的基本概念測試風(fēng)險(xiǎn)的基本
32、概念w 在軟件測試中,即使很小的軟件系統(tǒng),也在軟件測試中,即使很小的軟件系統(tǒng),也不可能對(duì)系統(tǒng)的所有方面進(jìn)行測試,就會(huì)不可能對(duì)系統(tǒng)的所有方面進(jìn)行測試,就會(huì)存在測試風(fēng)險(xiǎn),即沒有安排或執(zhí)行測試用存在測試風(fēng)險(xiǎn),即沒有安排或執(zhí)行測試用例,但是存在用戶發(fā)現(xiàn)缺陷的可能性。例,但是存在用戶發(fā)現(xiàn)缺陷的可能性。n測試風(fēng)險(xiǎn)發(fā)生的可能性測試風(fēng)險(xiǎn)發(fā)生的可能性n測試風(fēng)險(xiǎn)發(fā)生后的影響測試風(fēng)險(xiǎn)發(fā)生后的影響測試風(fēng)險(xiǎn)的分類測試風(fēng)險(xiǎn)的分類w技術(shù)風(fēng)險(xiǎn)技術(shù)風(fēng)險(xiǎn)w管理風(fēng)險(xiǎn)管理風(fēng)險(xiǎn)3.2 測試風(fēng)險(xiǎn)的識(shí)別技術(shù)測試風(fēng)險(xiǎn)的識(shí)別技術(shù)w頭腦風(fēng)暴法頭腦風(fēng)暴法w訪談訪談w風(fēng)險(xiǎn)檢查表風(fēng)險(xiǎn)檢查表3.3 測試風(fēng)險(xiǎn)分析測試風(fēng)險(xiǎn)分析w 確定測試范圍的功能點(diǎn)和性能
33、屬性確定測試范圍的功能點(diǎn)和性能屬性w 確定測試風(fēng)險(xiǎn)發(fā)生的可能確定測試風(fēng)險(xiǎn)發(fā)生的可能w 確定測試風(fēng)險(xiǎn)發(fā)生后產(chǎn)生的影響程度確定測試風(fēng)險(xiǎn)發(fā)生后產(chǎn)生的影響程度w 計(jì)算測試風(fēng)險(xiǎn)優(yōu)先級(jí)計(jì)算測試風(fēng)險(xiǎn)優(yōu)先級(jí)w 確定測試風(fēng)險(xiǎn)優(yōu)先級(jí)確定測試風(fēng)險(xiǎn)優(yōu)先級(jí)3.4 測試計(jì)劃風(fēng)險(xiǎn)的應(yīng)對(duì)措施測試計(jì)劃風(fēng)險(xiǎn)的應(yīng)對(duì)措施w縮小范圍縮小范圍w推遲實(shí)現(xiàn)推遲實(shí)現(xiàn)w增加資源增加資源w減少質(zhì)量過程減少質(zhì)量過程第第4章章 測試過程概述測試過程概述Testing Process4.1 常見的測試過程模型常見的測試過程模型w 瀑布模型瀑布模型w V模型模型w W模型模型w X模型模型w H模型模型瀑布模型瀑布模型的核心思想是按工序?qū)栴}化簡,將功能
34、的實(shí)現(xiàn)與設(shè)計(jì)分開,采用機(jī)構(gòu)化的分析與設(shè)計(jì)方法將邏輯實(shí)現(xiàn)與物理實(shí)現(xiàn)分開。軟件生命周期劃分為制定計(jì)劃、需求分析、軟件設(shè)計(jì)、程序編寫、軟件測試、運(yùn)行維護(hù)。規(guī)定活動(dòng)自上而下、相互銜接的固定次序,逐級(jí)下落。瀑布模型的重要地位瀑布模型的重要地位瀑布模型是最早出現(xiàn)的軟件開發(fā)模型,在軟件工程中占有重要的地位,它提供了軟件開發(fā)的基本框架。其過程是從上一項(xiàng)活動(dòng)接收該項(xiàng)活動(dòng)的工作對(duì)象作為輸入,利用這一輸入實(shí)施該項(xiàng)活動(dòng)應(yīng)完成的內(nèi)容給出該項(xiàng)活動(dòng)的工作成果,并作為輸出傳給下一項(xiàng)活動(dòng)。同時(shí)評(píng)審該項(xiàng)活動(dòng)的實(shí)施,若確認(rèn),則繼續(xù)下一項(xiàng)活動(dòng);否則返回前面,甚至更前面的活動(dòng)。對(duì)于經(jīng)常變化的項(xiàng)目而言,瀑布模型毫無價(jià)值。瀑布模型的優(yōu)點(diǎn)為
35、項(xiàng)目提供了按階段劃分的檢查點(diǎn)。當(dāng)前一階段完成后,您只需要去關(guān)注后續(xù)階段。 可在迭代模型中應(yīng)用瀑布模型。缺點(diǎn)在項(xiàng)目各個(gè)階段之間極少有反饋。 只有在項(xiàng)目生命周期的后期才能看到結(jié)果。 通過過多的強(qiáng)制完成日期和里程碑來跟蹤各個(gè)項(xiàng)目階段。總結(jié)傳統(tǒng)的瀑布模型,軟件測試的地位和價(jià)值并沒有體現(xiàn)出來,測試只能作為一個(gè)事后補(bǔ)救工作。早期的錯(cuò)誤可能要等到開發(fā)后期的測試階段才能發(fā)現(xiàn),進(jìn)而帶來嚴(yán)重的后果。各個(gè)階段的劃分完全固定,階段之間產(chǎn)生大量的文檔,極大地增加了工作量。由于開發(fā)模型是線性的,用戶只有等到整個(gè)過程的末期才能見到開發(fā)成果,從而增加 了開發(fā)的風(fēng)險(xiǎn)。測試傳統(tǒng)模型-V模型V模型是最廣為人知的測試模型由Paul
36、Rook在世紀(jì)年代后期提出的,旨在改進(jìn)軟件開發(fā)的效率和效果。從左到右,描述了基本的開發(fā)過程和測試行為非常明確地標(biāo)明了測試過程中存在的不同級(jí)別,描述了這些測試階段和開發(fā)過程期間各階段的對(duì)應(yīng)關(guān)系V模型(測試與開發(fā)階段對(duì)應(yīng)關(guān)系)單元和集成測試應(yīng)檢測程序的執(zhí)行是否滿足軟件設(shè)計(jì)的要求;系統(tǒng)測試應(yīng)檢測系統(tǒng)功能、性能的質(zhì)量特性是否達(dá)到系統(tǒng)要求的指標(biāo);驗(yàn)收測試確定軟件的實(shí)現(xiàn)是否滿足用戶需要或合同的要求。V模型的缺陷存在局限性,僅僅把測試過程作為在需求分析、系統(tǒng)設(shè)計(jì)及編碼之后的一個(gè)階段,只針對(duì)程序進(jìn)行的尋找錯(cuò)誤的活動(dòng),忽視了測試活動(dòng)對(duì)需求分析,系統(tǒng)設(shè)計(jì)等活動(dòng)的驗(yàn)證和確認(rèn)的功能,直到后期的驗(yàn)收測試才被發(fā)現(xiàn)。W W
37、模型模型W模型由Evolutif公司提出。W模型從V模型演化過來,實(shí)際上開發(fā)是V,測試也是與此并行的V。相對(duì)于V模型,W模型增加了軟件各開發(fā)階段中應(yīng)同步進(jìn)行的驗(yàn)證和確認(rèn)活動(dòng)。W W模型模型測試伴隨整個(gè)軟件開發(fā)周期,而且測試的對(duì)象不僅僅是程序,需求、設(shè)計(jì)等同樣要測試,測試與開發(fā)是同步進(jìn)行的。W模型有利于盡早地全面的發(fā)現(xiàn)問題。W模型的缺點(diǎn)W模型也存在局限性。在W模型中,需求、設(shè)計(jì)、編碼等活動(dòng)被視為串行的,同時(shí),測試和開發(fā)活動(dòng)也保持著一種線性的前后關(guān)系,上一階段完全結(jié)束,才可正式開始下一個(gè)階段工作工作。這樣就無法支持迭代的開發(fā)模型。對(duì)于當(dāng)前軟件開發(fā)復(fù)雜多變的情況,W模型并不能解除測試管理面臨著困惑。
38、X模型很好地處理測試與開發(fā)的交接過程(交接的過程是一個(gè)時(shí)間段,而不是一個(gè)點(diǎn))左邊描述的是針對(duì)單獨(dú)程序片段所進(jìn)行的相互分離的編碼和測試,此后將進(jìn)行頻繁的交接,通過集成最終合成為可執(zhí)行的程序,然后再對(duì)這些可執(zhí)行程序進(jìn)行測試。己通過集成測試的成品可以進(jìn)行封裝并提交給用戶,也可以作為更大規(guī)模和范圍內(nèi)集成的一部分。多根并行的曲線表示變更可以在各個(gè)部分發(fā)生。X模型還定位了探索性測試,這是不進(jìn)行事先計(jì)劃的特殊類型的測試,給有經(jīng)驗(yàn)的測試人員在測試計(jì)劃之外發(fā)現(xiàn)更多的軟件缺陷。H H模型模型H H模型模型在H模型中,軟件測試過程是一個(gè)獨(dú)立的流程,貫穿于整個(gè)產(chǎn)品周期,與其他流程并發(fā)地進(jìn)行。H模型指出,軟件測試要盡早
39、準(zhǔn)備,盡早執(zhí)行。當(dāng)某個(gè)測試時(shí)間點(diǎn)就緒時(shí),軟件測試即從測試準(zhǔn)備階段進(jìn)入測試執(zhí)行階段。軟件測試可以根據(jù)被測物的不同而分層次進(jìn)行。不同的測試活動(dòng)可以是按照某個(gè)次序先后進(jìn)行的。但也可能是反復(fù)的,只要某個(gè)測試達(dá)到準(zhǔn)備就緒點(diǎn),測試執(zhí)行活動(dòng)就可以開展。第3章 數(shù)學(xué)背景離散數(shù)學(xué)84w 關(guān)于集合,重要的是它使我們能夠作為一關(guān)于集合,重要的是它使我們能夠作為一個(gè)單位,或一個(gè)整體引用多個(gè)事物。個(gè)單位,或一個(gè)整體引用多個(gè)事物。w 例如:我們可能要引用正好有例如:我們可能要引用正好有3030天的月份,天的月份,若采用集合論表示法可以寫為:若采用集合論表示法可以寫為: M1= = 以上表示法讀做以上表示法讀做“M1”是元
40、素是元素4 4月、月、6 6月、月、9 9月、月、1111月的集合。月的集合。3.1集合論集合論(set theory)月月、月、月、1196485w 集合中的項(xiàng)叫做集合的元素或成員,這種集合中的項(xiàng)叫做集合的元素或成員,這種關(guān)系采用符號(hào)關(guān)系采用符號(hào) 表示。表示。w 因此,我們可以有因此,我們可以有 3.1.1集合成員關(guān)系集合成員關(guān)系112M月14M月如果事物是集合成員如果事物是集合成員如果事物不是集合成員如果事物不是集合成員863.1.2集合定義集合定義w 集合定義有三種方式:簡單列出集合的元集合定義有三種方式:簡單列出集合的元素,給出辨別規(guī)則,或通過其他集合構(gòu)建。素,給出辨別規(guī)則,或通過其他
41、集合構(gòu)建。w 定義一個(gè)年份集合為:定義一個(gè)年份集合為: Y =1812,1813,1814, ,2011,2012 通過列出元素定義集合時(shí),與元素順序沒通過列出元素定義集合時(shí),與元素順序沒有關(guān)系有關(guān)系 87w 也可以通過給出辨別規(guī)則來定義。也可以通過給出辨別規(guī)則來定義。 如可以把年份定為如可以把年份定為: Y =year:1812year2012 讀做讀做 “Y是所有是所有year的集合,使得的集合,使得year在在1812(含)(含)2012(含)之間(含)之間” 。w 當(dāng)采用辨別規(guī)則定義集合時(shí),必須保證是當(dāng)采用辨別規(guī)則定義集合時(shí),必須保證是無歧義無歧義的,即定義要清晰。給出年份的所的,即定
42、義要清晰。給出年份的所有可能取值,因此可以判斷某個(gè)年份是否有可能取值,因此可以判斷某個(gè)年份是否在我們的集合中。在我們的集合中。883.1.3空集空集w 空集采用符號(hào)空集采用符號(hào) ,在集合論中占有特殊位在集合論中占有特殊位置??占话?。置??占话?。n空集是唯一的,即不會(huì)有兩個(gè)空集;空集是唯一的,即不會(huì)有兩個(gè)空集;n、 都是不同的集合。都是不同的集合。w 如果集合被辨別規(guī)則定義為永遠(yuǎn)失敗。那如果集合被辨別規(guī)則定義為永遠(yuǎn)失敗。那么該集合就是空集。如:么該集合就是空集。如: = =yearyear:2012year18122012year181289w 在維恩圖中,集合被表示為一個(gè)圓圈,
43、圓在維恩圖中,集合被表示為一個(gè)圓圈,圓圈中的點(diǎn)表示集合元素。這樣我們可以把圈中的點(diǎn)表示集合元素。這樣我們可以把集合集合M1= = ,表示為表示為3.1.4維恩圖維恩圖4月月 11月月9月月 6月月月月、月、月、11964U U90w 給定集合給定集合A和和B,包括并、交、補(bǔ)、相對(duì)補(bǔ)、,包括并、交、補(bǔ)、相對(duì)補(bǔ)、對(duì)稱差。對(duì)稱差。w 兩個(gè)集合的笛卡爾積(又叫做叉積),它取兩個(gè)集合的笛卡爾積(又叫做叉積),它取決于有序?qū)ε嫉母拍睿瑹o序和有序?qū)ε嫉谋頉Q于有序?qū)ε嫉母拍?,無序和有序?qū)ε嫉谋硎痉ㄒ话闶牵菏痉ㄒ话闶牵?無序?qū)ε紵o序?qū)ε迹?a,b) 有序?qū)ε迹河行驅(qū)ε迹?若若 ab 則,則,(a,b)= (b,
44、a), 但但 3.1.5集合操作集合操作91w 定義:兩個(gè)集合定義:兩個(gè)集合A和和B的笛卡爾積,是集合的笛卡爾積,是集合 AB= :xAyBAyBw 集合集合A的勢是的勢是A中的元素?cái)?shù),采用中的元素?cái)?shù),采用|A|表示,表示,對(duì)于集合對(duì)于集合A和和B, |AB|=|A|B|,利用笛卡利用笛卡爾積可以爾積可以描述具有多個(gè)輸入變量的程序的描述具有多個(gè)輸入變量的程序的測試用例測試用例。w 笛卡爾積的乘法性質(zhì),意味著這種形式的笛卡爾積的乘法性質(zhì),意味著這種形式的測試會(huì)生成大量測試用例。測試會(huì)生成大量測試用例。92w A是是B的子集,記做的子集,記做 ,當(dāng)且僅當(dāng)當(dāng)且僅當(dāng)w A是是B的真子集,記做的真子集,
45、記做 ,當(dāng)且僅當(dāng)當(dāng)且僅當(dāng) w A和和B是相等集合,記做是相等集合,記做A=B,當(dāng)且僅當(dāng)當(dāng)且僅當(dāng) w 若若A的每個(gè)元素也是的每個(gè)元素也是B的元素,集合的元素,集合A是集合是集合B 的子集的子集;如果如果A和和B互為子集,則互為子集,則A和和B相等。相等。 3.1.6集合關(guān)系集合關(guān)系BABaAaBABAAB BA AB933.1.7子集劃分w “劃分劃分”的含義是將一個(gè)整體分為小塊,使的含義是將一個(gè)整體分為小塊,使得所有事物都在某個(gè)小塊中,不會(huì)遺漏。得所有事物都在某個(gè)小塊中,不會(huì)遺漏。w 形式化的描述是:形式化的描述是: 定義:給定集合定義:給定集合B,以及以及B的一組子集的一組子集A1、A2,
46、,An,這些子集是這些子集是B的一個(gè)劃分,的一個(gè)劃分,當(dāng)且僅當(dāng)當(dāng)且僅當(dāng)A1A2An=B,且且jiAAji94w 由于一個(gè)劃分是一組子集,因此我們常常把由于一個(gè)劃分是一組子集,因此我們常常把單個(gè)子集看作是劃分的元素單個(gè)子集看作是劃分的元素。w 這個(gè)定義的兩部分對(duì)于測試人員很重要。第這個(gè)定義的兩部分對(duì)于測試人員很重要。第一部分保證一部分保證B的所有元素都在某個(gè)子集中,第的所有元素都在某個(gè)子集中,第二部分保證二部分保證B沒有元素在兩個(gè)子集中。沒有元素在兩個(gè)子集中。w 劃分對(duì)測試人員很有用,因?yàn)閯澐帜鼙WC:劃分對(duì)測試人員很有用,因?yàn)閯澐帜鼙WC:完備性和無冗余性完備性和無冗余性。當(dāng)研究功能性測試,經(jīng)。當(dāng)
47、研究功能性測試,經(jīng)常會(huì)出現(xiàn)漏洞和冗余性:有些內(nèi)容沒有被測常會(huì)出現(xiàn)漏洞和冗余性:有些內(nèi)容沒有被測試,而另外一些內(nèi)容被測試多次。試,而另外一些內(nèi)容被測試多次。功能性測功能性測試的主要困難之一,就是找出合適的劃分試的主要困難之一,就是找出合適的劃分。953.1.8集合恒等式集合恒等式名稱名稱 表達(dá)式表達(dá)式等同律等同律 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名稱名稱 表達(dá)式表達(dá)式求反律求反律 ( (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 所有功能性測試的基礎(chǔ)都是函數(shù)。所有功能性測試的基礎(chǔ)都是函數(shù)。w 定義:定義:給定集合給定集合A和和B,函數(shù)函數(shù)f是是AB的一個(gè)的一個(gè)子集,使得對(duì)于子集,使得對(duì)于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,并且定義并且定義集合:集合: 這個(gè)集合有時(shí)記做這個(gè)集合有時(shí)記做A在在f下的映象。下的映象。w 定義:定義: f是從是從A到到B的的上函數(shù)上函數(shù),當(dāng)且僅當(dāng),當(dāng)且僅當(dāng)f(A)=B; f是從是從A到到B的的中函數(shù)中函數(shù),當(dāng)且僅當(dāng),當(dāng)且僅當(dāng) f是從是從A到到B的的一對(duì)一函數(shù)一對(duì)一函數(shù),當(dāng)且僅當(dāng)對(duì)于所有,當(dāng)且僅當(dāng)對(duì)于所有 ai,ajA, 3.2.2函數(shù)類型函數(shù)類型AaafbBbAfiiii對(duì)
50、于某個(gè))(:)(BAf)()()(jijiafafaa99w f是從是從A到到B的的多對(duì)一函數(shù)多對(duì)一函數(shù),當(dāng)且僅當(dāng)存在,當(dāng)且僅當(dāng)存在ai,ajA, aiaj使得使得f(ai) = f(aj);w 所有這些對(duì)于測試都很重要。中函數(shù)與上所有這些對(duì)于測試都很重要。中函數(shù)與上函數(shù),意味著函數(shù),意味著基于定義域還是基于值域的基于定義域還是基于值域的功能性測試,功能性測試,一對(duì)一函數(shù)要求比多對(duì)一函一對(duì)一函數(shù)要求比多對(duì)一函數(shù)要多得多的測試。數(shù)要多得多的測試。100w 假設(shè)取假設(shè)取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是一個(gè)一對(duì)一的是一個(gè)一對(duì)一的上函數(shù),上函數(shù),NextDate : A C C是一個(gè)一對(duì)一是一個(gè)一對(duì)一 的中函數(shù)。的中函數(shù)。1013.2.3函數(shù)合成函數(shù)合成w 假設(shè)我們有集合和函數(shù),使得一個(gè)函數(shù)的假設(shè)我們有集合和函數(shù),使得一個(gè)函數(shù)的值域是另一個(gè)函數(shù)的定義域:值域是另一個(gè)函數(shù)的定義域: f:A B g:BC h:CD 如果出現(xiàn)這種情況,則可以合成函數(shù)。如果出現(xiàn)
52、這種情況,則可以合成函數(shù)。w 設(shè)引用集合定義域和值域的特定元素設(shè)引用集合定義域和值域的特定元素aA、 bBB、cCC、 dDD,并假設(shè)并假設(shè)f(a)=bf(a)=b、g(b)=cg(b)=c和和h(c)=dh(c)=d,則則函數(shù)函數(shù)g g和和f f的合成的合成為:為: dchbghafghafgh)()()()(1023.3關(guān)系關(guān)系w 函數(shù)是關(guān)系的一種特例函數(shù)是關(guān)系的一種特例w 定義:給定兩個(gè)集合定義:給定兩個(gè)集合A和和B,關(guān)系關(guān)系R是笛卡爾積是笛卡爾積AB的一個(gè)子集。的一個(gè)子集。w 給定兩個(gè)集合給定兩個(gè)集合A和和B,一個(gè)關(guān)系一個(gè)關(guān)系 關(guān)系關(guān)系R的的勢勢是:是: 一對(duì)一勢一對(duì)一勢,當(dāng)且僅當(dāng),當(dāng)
53、且僅當(dāng)R是是A到到B的一對(duì)一函數(shù)的一對(duì)一函數(shù) 多對(duì)一勢多對(duì)一勢,當(dāng)且僅當(dāng),當(dāng)且僅當(dāng)R是是A到到B的多對(duì)一函數(shù)的多對(duì)一函數(shù) 一對(duì)多勢一對(duì)多勢,當(dāng)且僅當(dāng)至少有一個(gè)元素,當(dāng)且僅當(dāng)至少有一個(gè)元素aA在在R中的中的兩個(gè)有序?qū)ε贾校磧蓚€(gè)有序?qū)ε贾?,?a,bi)RR和和( (a,a,bj)RRBAR103設(shè)設(shè)A是一個(gè)集合,設(shè)是一個(gè)集合,設(shè) 是定義在是定義在A上的上的一個(gè)關(guān)系,關(guān)系具有四個(gè)特殊屬性:一個(gè)關(guān)系,關(guān)系具有四個(gè)特殊屬性:w 自反的自反的,當(dāng)且僅當(dāng)所有,當(dāng)且僅當(dāng)所有aAaA,RRw 對(duì)稱的對(duì)稱的,當(dāng)且僅當(dāng)若,當(dāng)且僅當(dāng)若RR,則則 Rb,aRw 反對(duì)稱的反對(duì)稱的,當(dāng)且僅當(dāng)若,當(dāng)且僅當(dāng)若 a,b、 R
54、,b,aR,則則 a=b a=bw 傳遞的傳遞的,當(dāng)且僅當(dāng)若,當(dāng)且僅當(dāng)若 a,b、R,R,則則 Ra,cR3.3.2單個(gè)集合上的關(guān)系單個(gè)集合上的關(guān)系A(chǔ)AR104w 關(guān)系關(guān)系 是偏序關(guān)系,如果是偏序關(guān)系,如果R是自反、反對(duì)是自反、反對(duì)稱和傳遞的。稱和傳遞的。w 關(guān)系關(guān)系 是等價(jià)關(guān)系,如果是等價(jià)關(guān)系,如果R是自反、對(duì)稱是自反、對(duì)稱和傳遞的。和傳遞的。w 如果如果b1和和b2是在相同的劃分元素中,則我們說是在相同的劃分元素中,則我們說b1和和b2是相關(guān)的是相關(guān)的(b1Rb2),這個(gè)關(guān)系是自反的、對(duì)稱,這個(gè)關(guān)系是自反的、對(duì)稱的、傳遞的。叫的、傳遞的。叫由劃分歸納的等價(jià)關(guān)系由劃分歸納的等價(jià)關(guān)系。w 如果
55、從定義在一個(gè)集合上的等價(jià)關(guān)系開始,則可如果從定義在一個(gè)集合上的等價(jià)關(guān)系開始,則可根據(jù)與該等價(jià)關(guān)系相關(guān)的元素定義子集,這些子根據(jù)與該等價(jià)關(guān)系相關(guān)的元素定義子集,這些子集就構(gòu)成劃分,由等價(jià)關(guān)系歸納的劃分,劃分中集就構(gòu)成劃分,由等價(jià)關(guān)系歸納的劃分,劃分中的集合叫做等價(jià)類。的集合叫做等價(jià)類。w 因此,因此,只測試等價(jià)類中的一個(gè)元素,并假設(shè)剩余只測試等價(jià)類中的一個(gè)元素,并假設(shè)剩余的元素有類似的測試結(jié)果,可大大提高測試效率。的元素有類似的測試結(jié)果,可大大提高測試效率。AARAAR舉例106NextDate問題問題w NextDate是一個(gè)有三個(gè)變量(月份、日是一個(gè)有三個(gè)變量(月份、日期和年)的函數(shù)。函數(shù)返
56、回輸入日期后面期和年)的函數(shù)。函數(shù)返回輸入日期后面的那個(gè)日期。變量月份、日期和年都具有的那個(gè)日期。變量月份、日期和年都具有整數(shù)值,且滿足以下條件:整數(shù)值,且滿足以下條件:w c1. 1月份月份12w c2. 1月份月份31w c3. 1812年年2012 107程序要求程序要求w 類類Date:year、month、day、Isleapyear()、Week()、NextDate()、PreDate()w 對(duì)該程序進(jìn)行調(diào)試、測試、確保沒有錯(cuò)誤,對(duì)該程序進(jìn)行調(diào)試、測試、確保沒有錯(cuò)誤,記錄所有測試的輸入數(shù)據(jù)、輸出數(shù)據(jù)記錄所有測試的輸入數(shù)據(jù)、輸出數(shù)據(jù)OVER第4章 數(shù)學(xué)背景圖論109 4.1圖圖w
57、圖圖(又叫線性圖又叫線性圖)是一種由兩個(gè)集合定義的抽是一種由兩個(gè)集合定義的抽象數(shù)學(xué)結(jié)構(gòu),即一個(gè)節(jié)點(diǎn)集合和一個(gè)構(gòu)成象數(shù)學(xué)結(jié)構(gòu),即一個(gè)節(jié)點(diǎn)集合和一個(gè)構(gòu)成節(jié)點(diǎn)之間連接的邊集合。節(jié)點(diǎn)之間連接的邊集合。w 定義:圖定義:圖G=由節(jié)點(diǎn)的有限由節(jié)點(diǎn)的有限(并且非空并且非空) 集合集合V和節(jié)點(diǎn)無序?qū)ε技虾凸?jié)點(diǎn)無序?qū)ε技螮組成。組成。 V=n1,n2, ,nm和和E=e1,e2, ,ep 其中每條邊其中每條邊ek=ni,nj, ni,njV。 ni,nj是一是一個(gè)無序?qū)ε?,有時(shí)記做個(gè)無序?qū)ε迹袝r(shí)記做(ni,nj)110n1n5n2n4n3n6n7e1e4e2e3e5n如左圖所示,節(jié)點(diǎn)和邊集如左圖所示,節(jié)點(diǎn)
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é)點(diǎn)看做是程序語句,把節(jié)點(diǎn)看做是程序語句,并且邊表示控制流或定義并且邊表示控制流或定義/使用關(guān)系。使用關(guān)系。111 4.1.1節(jié)點(diǎn)的度節(jié)點(diǎn)的度w 定義:節(jié)點(diǎn)的度是以該節(jié)點(diǎn)作為端點(diǎn)的邊定義:節(jié)點(diǎn)的度是以該節(jié)點(diǎn)作為端點(diǎn)的邊的條數(shù)。我們把節(jié)點(diǎn)的條數(shù)。我們把節(jié)點(diǎn)n的度記做的度記做deg(n)。w 可以說,節(jié)點(diǎn)的度表示它在圖中的可以說,節(jié)點(diǎn)的度表示它在圖中的“流行流行程度程度”。如果圖中的節(jié)點(diǎn)表示對(duì)象,邊
59、表。如果圖中的節(jié)點(diǎn)表示對(duì)象,邊表示消息,則節(jié)點(diǎn)示消息,則節(jié)點(diǎn)(對(duì)象對(duì)象)的度表示適合該對(duì)象的度表示適合該對(duì)象的集成測試范圍。的集成測試范圍。w 上圖中節(jié)點(diǎn)的度是:上圖中節(jié)點(diǎn)的度是:deg(n1)=2,deg(n2)=2 deg(n3)=1,deg(n4)=3, deg(n5)=1,deg(n6)=1, deg(n7)=01124.1.2關(guān)聯(lián)矩陣關(guān)聯(lián)矩陣w 定義:擁有定義:擁有m個(gè)節(jié)點(diǎn)和個(gè)節(jié)點(diǎn)和n條邊的圖條邊的圖G=的關(guān)聯(lián)矩陣是一種的關(guān)聯(lián)矩陣是一種mn n矩陣,矩陣,其中第其中第i行第行第j列的元素是列的元素是1,當(dāng)且僅當(dāng),當(dāng)且僅當(dāng)節(jié)點(diǎn)節(jié)點(diǎn)i是邊是邊j的一個(gè)端點(diǎn),否則元素是的一個(gè)端點(diǎn),否則元素是
60、0。 w 任何列的表項(xiàng)和為任何列的表項(xiàng)和為2,這是因?yàn)槊織l邊,這是因?yàn)槊織l邊都是恰好有兩個(gè)端點(diǎn)。都是恰好有兩個(gè)端點(diǎn)。1134.1.3相鄰矩陣相鄰矩陣w 定義:擁有定義:擁有m個(gè)節(jié)點(diǎn)和個(gè)節(jié)點(diǎn)和n條邊的圖條邊的圖G=的相鄰矩陣是一種的相鄰矩陣是一種mm矩陣,矩陣,其中第其中第i行第行第j列的元素是列的元素是1,當(dāng)且僅當(dāng)節(jié)點(diǎn),當(dāng)且僅當(dāng)節(jié)點(diǎn)i和節(jié)點(diǎn)和節(jié)點(diǎn)j之間存在一條邊,否則元素是之間存在一條邊,否則元素是0。 w 相鄰矩陣是對(duì)稱的,行的和即是該節(jié)點(diǎn)的相鄰矩陣是對(duì)稱的,行的和即是該節(jié)點(diǎn)的度度1144.1.4路徑路徑w 定義:定義:路徑是一系列的邊路徑是一系列的邊,對(duì)于序列中的,對(duì)于序列中的任何相鄰邊對(duì)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年懷仁縣三上數(shù)學(xué)期末質(zhì)量檢測試題含解析
- 醫(yī)學(xué)專業(yè)技術(shù)人員發(fā)展試題及答案
- 文化概論考試指導(dǎo)試題及答案
- 護(hù)理過程中的健康教育與試題及答案
- 護(hù)理人員的藥學(xué)知識(shí)加強(qiáng)練習(xí)試題及答案
- 2025年醫(yī)學(xué)診斷技術(shù)試題及答案
- 唐宋八大家之一蘇軾蘇東坡定風(fēng)波動(dòng)態(tài)
- 行政法學(xué)專業(yè)發(fā)展的關(guān)鍵試題及答案
- 2025年執(zhí)業(yè)藥師高分策略試題及答案
- 護(hù)理學(xué)創(chuàng)新能力培養(yǎng)與2025年試題及答案
- 項(xiàng)目部臨時(shí)動(dòng)火作業(yè)審批表
- 飲料生產(chǎn)公司應(yīng)急預(yù)案匯編參考范本
- 高效水泥助磨劑PPT課件(PPT 66頁)
- 生物防治第三講
- 旁站監(jiān)理實(shí)施細(xì)則(完整版)
- 學(xué)業(yè)水平考試復(fù)習(xí)高中語文文言文課本翻譯
- 蘇教版二年級(jí)(下冊)科學(xué)全冊單元測試卷含期中期末(有答案)
- 常用原料凈料率參照表
- 高低溫試驗(yàn)報(bào)告
- 第一章 混凝土拌合站組織機(jī)構(gòu)框圖及崗位職責(zé)
- 指南預(yù)應(yīng)力簡支t形梁橋
評(píng)論
0/150
提交評(píng)論