軟件測(cè)試140901_第1頁(yè)
軟件測(cè)試140901_第2頁(yè)
軟件測(cè)試140901_第3頁(yè)
軟件測(cè)試140901_第4頁(yè)
軟件測(cè)試140901_第5頁(yè)
已閱讀5頁(yè),還剩473頁(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è)試軟件測(cè)試Software testingSoftware testing 軟件學(xué)院軟件學(xué)院 段喜龍段喜龍 20 2014.914.922課程安排:課程安排:w 學(xué)時(shí)分配:學(xué)時(shí)分配:64學(xué)時(shí)(學(xué)時(shí)(32+32)w 教材:軟件質(zhì)量保證與測(cè)試技術(shù)教材:軟件質(zhì)量保證與測(cè)試技術(shù)w聯(lián)系方式:聯(lián)系方式:2544700241QQ.com33第一部分第一部分 基礎(chǔ)篇基礎(chǔ)篇第第1章章 軟件測(cè)試背景軟件測(cè)試背景1.1 軟件錯(cuò)誤案例(軟件錯(cuò)誤案例(when software attacks)1.2 軟件缺陷(軟件缺陷(whats?why comes?and its cost)1.3 軟件測(cè)試員(軟件測(cè)試員(j

2、ob and qualification)1.1 1.1 軟件錯(cuò)誤案例軟件錯(cuò)誤案例Software casesSoftware cases55趣事趣事(The funny)w 美國(guó)國(guó)稅局(美國(guó)國(guó)稅局(IRS)的尷尬的尷尬n1993年年7月月,IRS發(fā)出了近發(fā)出了近680億美元的稅單億美元的稅單w 最大方的自動(dòng)柜員機(jī)最大方的自動(dòng)柜員機(jī) n2001年年1月,歐元正式流通后幾天,德國(guó)的某些月,歐元正式流通后幾天,德國(guó)的某些自動(dòng)柜員機(jī)竟能在提款后不記入帳目!自動(dòng)柜員機(jī)竟能在提款后不記入帳目! w 壞脾氣的洗手間壞脾氣的洗手間n2001年年6月,在英國(guó),一個(gè)全自動(dòng)的洗手間突然月,在英國(guó),一個(gè)全自動(dòng)的洗手

3、間突然出現(xiàn)故障出現(xiàn)故障,將一位老太太整整困了將一位老太太整整困了2小時(shí)小時(shí)66嚴(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月,月,美國(guó)國(guó)家航空航天局(美國(guó)國(guó)家航空航天局(NASANASA)發(fā)射發(fā)射火星溫度探測(cè)器失蹤火星溫度探測(cè)器失蹤(1.25(1.25億億) )n原因:?jiǎn)挝粨Q算錯(cuò)誤原因:?jiǎn)挝粨Q算錯(cuò)誤w 千年蟲(chóng)問(wèn)題,大約千年蟲(chóng)問(wèn)題,大約1974w 原因:盲目的強(qiáng)調(diào)數(shù)據(jù)壓縮原因:盲目的強(qiáng)調(diào)數(shù)

4、據(jù)壓縮w 19831983年年9 9月月2626日,前蘇聯(lián)佩特羅夫避免核戰(zhàn)日,前蘇聯(lián)佩特羅夫避免核戰(zhàn)77悲劇(The tragic)w 愛(ài)國(guó)者導(dǎo)彈的失利(愛(ài)國(guó)者導(dǎo)彈的失利(1991年年2月)月)n原因:積累的時(shí)鐘誤差原因:積累的時(shí)鐘誤差w 美國(guó)海軍美國(guó)海軍“文森斯文森斯”號(hào)巡洋艦誤擊伊朗客號(hào)巡洋艦誤擊伊朗客機(jī)機(jī)( (1987年年4月月) )n原因:不可靠的模式識(shí)別算法原因:不可靠的模式識(shí)別算法81.2 1.2 軟件缺陷軟件缺陷software faultsoftware fault Defect- Defect-缺點(diǎn)缺點(diǎn) Variance-Variance-偏差偏差 Fault- Fault-

5、缺陷缺陷 Failure-Failure-失敗失敗 Problem- Problem-問(wèn)題問(wèn)題 Inconsistency-Inconsistency-矛盾矛盾 Error-Error-錯(cuò)誤錯(cuò)誤 Feature-Feature-特殊特殊 Incident- Incident-毛病毛病 Bug Anomaly-Bug Anomaly-異常異常10101.2.1軟件缺陷是什么?w 定義:只有符合下列定義:只有符合下列5 5個(gè)規(guī)則的軟件問(wèn)題,我們個(gè)規(guī)則的軟件問(wèn)題,我們將其定義為將其定義為軟件缺陷軟件缺陷(software fault)n軟件未達(dá)到產(chǎn)品說(shuō)明書(shū)標(biāo)明的功能軟件未達(dá)到產(chǎn)品說(shuō)明書(shū)標(biāo)明的功能n軟

6、件出現(xiàn)了產(chǎn)品說(shuō)明書(shū)指明不會(huì)出現(xiàn)的錯(cuò)誤軟件出現(xiàn)了產(chǎn)品說(shuō)明書(shū)指明不會(huì)出現(xiàn)的錯(cuò)誤n軟件功能超出產(chǎn)品說(shuō)明書(shū)指明范圍軟件功能超出產(chǎn)品說(shuō)明書(shū)指明范圍n軟件未達(dá)到產(chǎn)品說(shuō)明書(shū)雖未指出但應(yīng)達(dá)到的目標(biāo)軟件未達(dá)到產(chǎn)品說(shuō)明書(shū)雖未指出但應(yīng)達(dá)到的目標(biāo)n軟件測(cè)試員認(rèn)為軟件難以理解、不易使用、運(yùn)行速軟件測(cè)試員認(rèn)為軟件難以理解、不易使用、運(yùn)行速度緩慢、或者最終用戶認(rèn)為不好。度緩慢、或者最終用戶認(rèn)為不好。11111.2.2為什么會(huì)出現(xiàn)軟件缺陷?w 從小程序到大項(xiàng)目的無(wú)數(shù)研究得出:從小程序到大項(xiàng)目的無(wú)數(shù)研究得出:導(dǎo)致軟導(dǎo)致軟件缺陷最大的原因是件缺陷最大的原因是產(chǎn)品說(shuō)明書(shū)產(chǎn)品說(shuō)明書(shū)(需(需求)求)w 其次的原因是設(shè)計(jì)方案的問(wèn)題。其次

7、的原因是設(shè)計(jì)方案的問(wèn)題。12121.2.3軟件缺陷的修復(fù)費(fèi)用軟件缺陷的修復(fù)費(fèi)用131.2.4 軟件質(zhì)量軟件質(zhì)量w軟件質(zhì)量是軟件產(chǎn)品滿足使用要求的軟件質(zhì)量是軟件產(chǎn)品滿足使用要求的程度。程度。w質(zhì)量模型:質(zhì)量模型:nMcCall模型模型nBoehm模型模型nISO/IEC9126模型模型1.3 1.3 軟件測(cè)試員軟件測(cè)試員Software testerSoftware tester15151.3.1軟件測(cè)試員的工作w 軟件測(cè)試員是客戶的眼睛,是第一次看到軟件測(cè)試員是客戶的眼睛,是第一次看到軟件的人,代表客戶說(shuō)話,應(yīng)力求完美。軟件的人,代表客戶說(shuō)話,應(yīng)力求完美。w 軟件測(cè)試員的目標(biāo)是軟件測(cè)試員的目標(biāo)

8、是盡可能早的找出軟件盡可能早的找出軟件缺陷,并確保其得以修復(fù)缺陷,并確保其得以修復(fù)。1616The Software Job Spectrumw SDE: Software Design Engineerw SDE/T: Software Design Engineer in Testw STE: Software Test Engineerw PM: Program ManagerSDESTEDevelopmentTestingSDE/TPM1717Division of LaborWindows 2000 Product TeamTotal of 5,245 People900 Devel

9、opers1,800 TestersLargest product team in Microsoft history(at the time)18181.3.2怎樣成為優(yōu)秀的軟件測(cè)試員w 技術(shù)能力技術(shù)能力w 探索精神探索精神w 不懈努力不懈努力w 創(chuàng)造力創(chuàng)造力w 說(shuō)服力說(shuō)服力w 準(zhǔn)確的洞察力準(zhǔn)確的洞察力w 老練穩(wěn)重老練穩(wěn)重w 追求完美追求完美1919第第2章章 軟件測(cè)試基礎(chǔ)軟件測(cè)試基礎(chǔ)2.1 測(cè)試原則(測(cè)試原則(principle)2.2 測(cè)試目的測(cè)試目的(purpose)2.3 測(cè)試對(duì)象(測(cè)試對(duì)象(object)2.4 測(cè)試術(shù)語(yǔ)(測(cè)試術(shù)語(yǔ)(glossary)2.5 測(cè)試方法(測(cè)試方法(me

10、thod)2.12.1測(cè)試原則測(cè)試原則principleprinciple21211.完全測(cè)試程序是不可能的w 輸入量太大輸入量太大w 輸出結(jié)果多輸出結(jié)果多w 軟件實(shí)現(xiàn)途徑太多軟件實(shí)現(xiàn)途徑太多w 軟件說(shuō)明書(shū)沒(méi)有客觀標(biāo)準(zhǔn)軟件說(shuō)明書(shū)沒(méi)有客觀標(biāo)準(zhǔn)22222.軟件測(cè)試是有風(fēng)險(xiǎn)的行為軟件測(cè)試是有風(fēng)險(xiǎn)的行為w 如果試圖測(cè)試所有情況,費(fèi)用將大幅增加,如果試圖測(cè)試所有情況,費(fèi)用將大幅增加,軟件缺陷漏掉的數(shù)量并不會(huì)隨費(fèi)用上漲而軟件缺陷漏掉的數(shù)量并不會(huì)隨費(fèi)用上漲而顯著下降。顯著下降。w 如果減少測(cè)試或者錯(cuò)誤地確定測(cè)試對(duì)象,如果減少測(cè)試或者錯(cuò)誤地確定測(cè)試對(duì)象,那么費(fèi)用很低,但是會(huì)漏掉大量軟件缺陷。那么費(fèi)用很低,但是

11、會(huì)漏掉大量軟件缺陷。(每個(gè)項(xiàng)目都有一個(gè)最優(yōu)的測(cè)試量)(每個(gè)項(xiàng)目都有一個(gè)最優(yōu)的測(cè)試量)23233.測(cè)試無(wú)法顯示潛伏的軟件缺陷測(cè)試無(wú)法顯示潛伏的軟件缺陷 “Program testing can be used to show the presence of bugs but never to show their absence.” Edsger W. Dijkstra, 197224244.找到的軟件缺陷越多,就說(shuō)明軟件缺陷越多找到的軟件缺陷越多,就說(shuō)明軟件缺陷越多w 充分注意測(cè)試中的群集現(xiàn)象。充分注意測(cè)試中的群集現(xiàn)象。經(jīng)驗(yàn)表明,測(cè)試后經(jīng)驗(yàn)表明,測(cè)試后程序中殘存的錯(cuò)誤數(shù)目程序中殘存的錯(cuò)誤數(shù)目與

12、該程序中已發(fā)現(xiàn)的錯(cuò)誤數(shù)目成正比與該程序中已發(fā)現(xiàn)的錯(cuò)誤數(shù)目成正比。There is Always One More Bug25255.并非所有軟件缺陷都能修復(fù)w 沒(méi)有足夠的時(shí)間必須保證按時(shí)完成w 不算真正的軟件缺陷w 修復(fù)的風(fēng)險(xiǎn)太大修復(fù)一個(gè)可能導(dǎo)致其他w 不值得修復(fù)不常出現(xiàn)或在不常用功能中出現(xiàn)的對(duì)于軟件缺陷是否應(yīng)該修復(fù),其決策過(guò)程對(duì)于軟件缺陷是否應(yīng)該修復(fù),其決策過(guò)程應(yīng)由軟件測(cè)試員、項(xiàng)目管理員和程序員共應(yīng)由軟件測(cè)試員、項(xiàng)目管理員和程序員共同參與。同參與。26266. 軟件測(cè)試是一項(xiàng)講究條理的技術(shù)專業(yè)軟件測(cè)試是一項(xiàng)講究條理的技術(shù)專業(yè)w 對(duì)于軟件測(cè)試應(yīng)嚴(yán)格制定并執(zhí)行測(cè)試計(jì)劃,對(duì)于軟件測(cè)試應(yīng)嚴(yán)格制定并執(zhí)

13、行測(cè)試計(jì)劃,排除測(cè)試的隨意性排除測(cè)試的隨意性。w 應(yīng)當(dāng)對(duì)每一個(gè)測(cè)試結(jié)果做全面檢查。應(yīng)當(dāng)對(duì)每一個(gè)測(cè)試結(jié)果做全面檢查。w 妥善保存測(cè)試計(jì)劃,測(cè)試用例,出錯(cuò)統(tǒng)計(jì)妥善保存測(cè)試計(jì)劃,測(cè)試用例,出錯(cuò)統(tǒng)計(jì)和最終分析報(bào)告,為維護(hù)提供方便。和最終分析報(bào)告,為維護(hù)提供方便。w 程序員應(yīng)避免檢查自己的程序。程序員應(yīng)避免檢查自己的程序。2.22.2測(cè)試目的測(cè)試目的purposepurpose2828基于不同的立場(chǎng),存在著兩種完全不同基于不同的立場(chǎng),存在著兩種完全不同的測(cè)試目的的測(cè)試目的w 從從用戶的角度用戶的角度出發(fā),普遍希望通過(guò)軟件測(cè)出發(fā),普遍希望通過(guò)軟件測(cè)試試暴露軟件中隱藏的錯(cuò)誤和缺陷暴露軟件中隱藏的錯(cuò)誤和缺陷,

14、以考慮,以考慮是否可接受該產(chǎn)品。是否可接受該產(chǎn)品。w 從從軟件開(kāi)發(fā)者的角度軟件開(kāi)發(fā)者的角度出發(fā),則希望測(cè)試成出發(fā),則希望測(cè)試成為為表明軟件產(chǎn)品中不存在錯(cuò)誤表明軟件產(chǎn)品中不存在錯(cuò)誤的過(guò)程,驗(yàn)的過(guò)程,驗(yàn)證該軟件已正確地實(shí)現(xiàn)了用戶的要求,確證該軟件已正確地實(shí)現(xiàn)了用戶的要求,確立人們對(duì)軟件質(zhì)量的信心立人們對(duì)軟件質(zhì)量的信心2929Myerss 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

15、high probability of finding an as yet undiscovered error.w A successful test is one that uncovers an as yet undiscovered error.3030換言之,測(cè)試的目的是:w 以最少的時(shí)間和人力,系統(tǒng)地找出軟件中潛在的各種錯(cuò)誤和缺陷。w 證明證明w 檢測(cè)檢測(cè)w 預(yù)防預(yù)防2.32.3測(cè)試對(duì)象測(cè)試對(duì)象objectobject3232測(cè)試對(duì)象w 軟件測(cè)試并不等于程序測(cè)試。軟件測(cè)試應(yīng)貫穿于軟件定義與開(kāi)發(fā)的整個(gè)期間。w 需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)以及程序編碼等各階段所得到的,包括需求規(guī)格說(shuō)明

16、、概要設(shè)計(jì)規(guī)格說(shuō)明、詳細(xì)設(shè)計(jì)規(guī)格說(shuō)明以及源程序,都應(yīng)成為軟件測(cè)試的對(duì)象。2.4測(cè)試術(shù)語(yǔ)glossaryglossary3434錯(cuò)誤(error)w 人類會(huì)犯錯(cuò)誤,很接近的一個(gè)同義詞是過(guò)人類會(huì)犯錯(cuò)誤,很接近的一個(gè)同義詞是過(guò)錯(cuò)(錯(cuò)(mistake)。)。人們?cè)诰帉懘a是會(huì)出人們?cè)诰帉懘a是會(huì)出現(xiàn)過(guò)錯(cuò),我們把這種過(guò)錯(cuò)叫做現(xiàn)過(guò)錯(cuò),我們把這種過(guò)錯(cuò)叫做bug。3535缺陷(fault)w 缺陷是錯(cuò)誤的結(jié)果。更精確地說(shuō),缺陷是缺陷是錯(cuò)誤的結(jié)果。更精確地說(shuō),缺陷是錯(cuò)誤的表現(xiàn),而表現(xiàn)是表示的模式,例如:錯(cuò)誤的表現(xiàn),而表現(xiàn)是表示的模式,例如:敘述性文字、數(shù)據(jù)流框圖、層次結(jié)構(gòu)圖、敘述性文字、數(shù)據(jù)流框圖、層次結(jié)構(gòu)圖、

17、源代碼等。源代碼等。w 缺陷分為缺陷分為過(guò)錯(cuò)缺陷過(guò)錯(cuò)缺陷和和遺漏缺陷遺漏缺陷。 若把某些信息輸入到不正確的表示中,就若把某些信息輸入到不正確的表示中,就是過(guò)錯(cuò)缺陷;如果沒(méi)有輸入正確信息,則是過(guò)錯(cuò)缺陷;如果沒(méi)有輸入正確信息,則為遺漏缺陷。為遺漏缺陷。3636失效(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)中,通常是源代碼,或更確切地說(shuō)是被裝載的目標(biāo)代碼;二是這種定或更確切地說(shuō)是被裝載的目標(biāo)代碼;二是這種定義只與過(guò)錯(cuò)缺陷有關(guān)。對(duì)于遺漏缺陷,可以通過(guò)義只與過(guò)錯(cuò)缺陷有關(guān)。

18、對(duì)于遺漏缺陷,可以通過(guò)有效的評(píng)審來(lái)避免其產(chǎn)生的失效。有效的評(píng)審來(lái)避免其產(chǎn)生的失效。事故(incident)n當(dāng)出現(xiàn)失效時(shí),可能會(huì)也可能不會(huì)呈現(xiàn)給用戶,當(dāng)出現(xiàn)失效時(shí),可能會(huì)也可能不會(huì)呈現(xiàn)給用戶,事故說(shuō)明出現(xiàn)了與失效類似的情況,警告用戶注事故說(shuō)明出現(xiàn)了與失效類似的情況,警告用戶注意所出現(xiàn)的失效。意所出現(xiàn)的失效。3737測(cè)試(測(cè)試(test)w 測(cè)試顯然要處理錯(cuò)誤、缺陷、失效和事故。測(cè)試顯然要處理錯(cuò)誤、缺陷、失效和事故。測(cè)試用例(測(cè)試用例(test casetest case)n測(cè)試用例應(yīng)由測(cè)試用例應(yīng)由測(cè)試輸入數(shù)據(jù)測(cè)試輸入數(shù)據(jù)和對(duì)應(yīng)的和對(duì)應(yīng)的預(yù)期預(yù)期輸出結(jié)果輸出結(jié)果這兩部分組成。這兩部分組成。OVE

19、R3838通過(guò)維恩圖理解測(cè)試通過(guò)維恩圖理解測(cè)試w 軟件測(cè)試基本上關(guān)心的是行為,而行為與軟件測(cè)試基本上關(guān)心的是行為,而行為與軟件(和系統(tǒng))開(kāi)發(fā)人員很常見(jiàn)的結(jié)構(gòu)視軟件(和系統(tǒng))開(kāi)發(fā)人員很常見(jiàn)的結(jié)構(gòu)視圖無(wú)關(guān)。圖無(wú)關(guān)。n結(jié)構(gòu)視圖關(guān)注的是結(jié)構(gòu)視圖關(guān)注的是它是什么它是什么,而行為視圖關(guān)注,而行為視圖關(guān)注的是它做什么的是它做什么。n一直困擾測(cè)試人員的難點(diǎn)之一,就是基本文檔一直困擾測(cè)試人員的難點(diǎn)之一,就是基本文檔通常都是由開(kāi)發(fā)人員編寫,通常都是由開(kāi)發(fā)人員編寫, 并且是針對(duì)開(kāi)發(fā)人并且是針對(duì)開(kāi)發(fā)人員的,因此這些文檔員的,因此這些文檔強(qiáng)調(diào)的是結(jié)構(gòu)信息強(qiáng)調(diào)的是結(jié)構(gòu)信息,而不,而不是是行為信息行為信息。3939w 考慮

20、一個(gè)程序行為全域。給定一段程序及考慮一個(gè)程序行為全域。給定一段程序及其規(guī)格說(shuō)明,集合其規(guī)格說(shuō)明,集合S是所描述的行為,集合是所描述的行為,集合P是用程序?qū)崿F(xiàn)的行為。是用程序?qū)崿F(xiàn)的行為。S S規(guī)格說(shuō)明規(guī)格說(shuō)明P P程序程序程序行為程序行為預(yù)期的預(yù)期的所實(shí)現(xiàn)的所實(shí)現(xiàn)的4040S S規(guī)格說(shuō)明規(guī)格說(shuō)明P P程序程序預(yù)期的預(yù)期的所實(shí)現(xiàn)的所實(shí)現(xiàn)的程序行為程序行為遺漏缺陷遺漏缺陷過(guò)錯(cuò)缺陷過(guò)錯(cuò)缺陷測(cè)試就是確定既被描述又被實(shí)現(xiàn)的程序行為的測(cè)試就是確定既被描述又被實(shí)現(xiàn)的程序行為的范圍,同時(shí)盡量找出缺陷。范圍,同時(shí)盡量找出缺陷。S和和P相交的部分是相交的部分是“正確正確”部分,即既被描述部分,即既被描述又被實(shí)現(xiàn)的行

21、為。又被實(shí)現(xiàn)的行為。4141S S規(guī)格說(shuō)明規(guī)格說(shuō)明P P程序程序程序行為程序行為T測(cè)試用例測(cè)試用例562143742422 2和和5 5,可能會(huì)有沒(méi)有測(cè)試的已描述行為。,可能會(huì)有沒(méi)有測(cè)試的已描述行為。1 1和和4 4,經(jīng)過(guò)測(cè)試的已描述行為。,經(jīng)過(guò)測(cè)試的已描述行為。3 3和和7 7,對(duì)應(yīng)于未描述行為的測(cè)試用例。,對(duì)應(yīng)于未描述行為的測(cè)試用例。2 2和和6 6,可能會(huì)有沒(méi)有測(cè)試的程序行為。,可能會(huì)有沒(méi)有測(cè)試的程序行為。1 1和和3 3,經(jīng)過(guò)測(cè)試的程序行為。,經(jīng)過(guò)測(cè)試的程序行為。4 4和和7 7,未通過(guò)程序?qū)崿F(xiàn)的行為,未通過(guò)程序?qū)崿F(xiàn)的行為。測(cè)試的目標(biāo):測(cè)試人員怎樣才能使這些集測(cè)試的目標(biāo):測(cè)試人員怎樣才

22、能使這些集合的相交區(qū)域(區(qū)域合的相交區(qū)域(區(qū)域1 1)盡可能地大。)盡可能地大。2.52.5測(cè)試方法測(cè)試方法4444從代碼的特性角度從代碼的特性角度( (即內(nèi)部即內(nèi)部) )出發(fā)出發(fā)w 單元測(cè)試(單元測(cè)試(Unit Test):最微小規(guī)模的測(cè)試,:最微小規(guī)模的測(cè)試,用以測(cè)試某個(gè)功能或代碼塊。典型的單元測(cè)用以測(cè)試某個(gè)功能或代碼塊。典型的單元測(cè)試應(yīng)由程序員而非測(cè)試員來(lái)做,因?yàn)樗枰噾?yīng)由程序員而非測(cè)試員來(lái)做,因?yàn)樗枰纼?nèi)部程序設(shè)計(jì)和編碼的細(xì)節(jié)知識(shí)。知道內(nèi)部程序設(shè)計(jì)和編碼的細(xì)節(jié)知識(shí)。w 功能測(cè)試(功能測(cè)試(Function Test)或或特性測(cè)試特性測(cè)試(Feature Test):):按照軟件的

23、功能或特性按照軟件的功能或特性逐個(gè)進(jìn)行測(cè)試。逐個(gè)進(jìn)行測(cè)試。覆蓋測(cè)試(覆蓋測(cè)試(Coverage Testing)4545w 提交測(cè)試提交測(cè)試 ( (Check-in Test) ):在開(kāi)發(fā)人員對(duì)代碼做在開(kāi)發(fā)人員對(duì)代碼做了任何修改,或者修復(fù)了某個(gè)了任何修改,或者修復(fù)了某個(gè)BugBug時(shí),需要重新時(shí),需要重新Check-in代碼代碼 ( (即將修改后的代碼放大到整個(gè)大即將修改后的代碼放大到整個(gè)大的系統(tǒng)中的系統(tǒng)中) )w 基本驗(yàn)證測(cè)試基本驗(yàn)證測(cè)試 ( (Build Verification Test,簡(jiǎn)稱簡(jiǎn)稱BVT) ):對(duì)完成的代碼進(jìn)行編譯和連接,產(chǎn)生一個(gè)對(duì)完成的代碼進(jìn)行編譯和連接,產(chǎn)生一個(gè)構(gòu)造,

24、以檢查程序的主要功能是否會(huì)像預(yù)期一樣構(gòu)造,以檢查程序的主要功能是否會(huì)像預(yù)期一樣進(jìn)行工作。這是最簡(jiǎn)單而又最省時(shí)的一種測(cè)試方進(jìn)行工作。這是最簡(jiǎn)單而又最省時(shí)的一種測(cè)試方法。每產(chǎn)生一個(gè)新的構(gòu)造時(shí)都要進(jìn)行測(cè)試。如果法。每產(chǎn)生一個(gè)新的構(gòu)造時(shí)都要進(jìn)行測(cè)試。如果BVTBVT通不過(guò),表明問(wèn)題很嚴(yán)重,開(kāi)發(fā)人員需要盡快通不過(guò),表明問(wèn)題很嚴(yán)重,開(kāi)發(fā)人員需要盡快修復(fù)出現(xiàn)的問(wèn)題,測(cè)試人員也就不用浪費(fèi)時(shí)間做修復(fù)出現(xiàn)的問(wèn)題,測(cè)試人員也就不用浪費(fèi)時(shí)間做其他測(cè)試了其他測(cè)試了4646w 回歸測(cè)試(回歸測(cè)試(Regression Test): : 過(guò)一過(guò)一段時(shí)間以后,再回過(guò)頭來(lái)對(duì)以前修復(fù)段時(shí)間以后,再回過(guò)頭來(lái)對(duì)以前修復(fù)過(guò)的過(guò)的Bug

25、Bug重新進(jìn)行測(cè)試,看該重新進(jìn)行測(cè)試,看該BugBug是否是否會(huì)重新出現(xiàn)。會(huì)重新出現(xiàn)。4747從用戶的角度從用戶的角度( (即外部即外部) )出發(fā)出發(fā)w 配置測(cè)試配置測(cè)試( (Configuration Test) ):從用戶從用戶的使用出發(fā)進(jìn)行多方面的測(cè)試,要考慮的使用出發(fā)進(jìn)行多方面的測(cè)試,要考慮到用戶的多種情況,用多種配置對(duì)軟件到用戶的多種情況,用多種配置對(duì)軟件進(jìn)行測(cè)試。進(jìn)行測(cè)試。w 兼容性測(cè)試兼容性測(cè)試( (Compatibility Test) ):主要主要考慮兼容性問(wèn)題,比如同一個(gè)產(chǎn)品的不考慮兼容性問(wèn)題,比如同一個(gè)產(chǎn)品的不同版本之間的兼容問(wèn)題,不同廠家的同同版本之間的兼容問(wèn)題,不同廠

26、家的同一個(gè)產(chǎn)品之間的兼容問(wèn)題,不同類型軟一個(gè)產(chǎn)品之間的兼容問(wèn)題,不同類型軟件之間的兼容問(wèn)題等。件之間的兼容問(wèn)題等。使用測(cè)試使用測(cè)試( (Usage testing) ) 4848w 強(qiáng)力測(cè)試強(qiáng)力測(cè)試( (StressTest):):在各種極限情況下在各種極限情況下對(duì)產(chǎn)品進(jìn)行測(cè)試對(duì)產(chǎn)品進(jìn)行測(cè)試 ( (如很多人同時(shí)使用該軟如很多人同時(shí)使用該軟件,或者反復(fù)運(yùn)行該軟件件,或者反復(fù)運(yùn)行該軟件) ),以檢查產(chǎn)品的,以檢查產(chǎn)品的長(zhǎng)期穩(wěn)定性。長(zhǎng)期穩(wěn)定性。w 性能測(cè)試性能測(cè)試( (Performance Test):):本項(xiàng)測(cè)試是本項(xiàng)測(cè)試是保證程序具有良好的性能。如果別人的產(chǎn)保證程序具有良好的性能。如果別人的產(chǎn)

27、品只需品只需5 5秒鐘就能得出結(jié)果,而你的產(chǎn)品需秒鐘就能得出結(jié)果,而你的產(chǎn)品需要要1010秒鐘才能得出結(jié)果,就說(shuō)明你的產(chǎn)品秒鐘才能得出結(jié)果,就說(shuō)明你的產(chǎn)品性能不好。性能不好。4949w 文檔和幫助文件測(cè)試文檔和幫助文件測(cè)試( (Documentation and help file Test): 因?yàn)橛脩敉ǔJ峭ㄟ^(guò)文檔因?yàn)橛脩敉ǔJ峭ㄟ^(guò)文檔和幫助文件來(lái)學(xué)習(xí)使用產(chǎn)品的,如果文檔和幫助文件來(lái)學(xué)習(xí)使用產(chǎn)品的,如果文檔和幫助文件存在錯(cuò)誤,就可能會(huì)導(dǎo)致用戶和幫助文件存在錯(cuò)誤,就可能會(huì)導(dǎo)致用戶無(wú)法正常使用產(chǎn)品。無(wú)法正常使用產(chǎn)品。w AlphaAlpha和和BetaBeta測(cè)試測(cè)試( (Alpha and

28、Beta Test):):在在正式發(fā)布產(chǎn)品之前往往要先發(fā)布一些測(cè)試正式發(fā)布產(chǎn)品之前往往要先發(fā)布一些測(cè)試版,讓用戶能夠反饋出相關(guān)信息,或者找版,讓用戶能夠反饋出相關(guān)信息,或者找到存在的到存在的BugBug,以便在正式版中得到解決。以便在正式版中得到解決。5050從區(qū)分測(cè)試用例的角度出發(fā)從區(qū)分測(cè)試用例的角度出發(fā)w 黑盒測(cè)試黑盒測(cè)試(Black Box Testing ):功能性功能性RequirementsInputOutput基于軟件規(guī)格說(shuō)明的測(cè)試基于軟件規(guī)格說(shuō)明的測(cè)試任何程序都可以看作是將從輸入定義域取值映射到任何程序都可以看作是將從輸入定義域取值映射到輸出值域的函數(shù)。輸出值域的函數(shù)。5151

29、規(guī)格說(shuō)明程序測(cè)試用例對(duì)于功能性測(cè)試,不管采用什么方法,測(cè)試用例對(duì)于功能性測(cè)試,不管采用什么方法,測(cè)試用例集合完全局限在已描述行為集合內(nèi)。(集合完全局限在已描述行為集合內(nèi)。(基于已描基于已描述行為述行為)5252黑盒測(cè)試的優(yōu)點(diǎn):黑盒測(cè)試的優(yōu)點(diǎn):w 黑盒測(cè)試(功能性測(cè)試)與軟件如何實(shí)現(xiàn)黑盒測(cè)試(功能性測(cè)試)與軟件如何實(shí)現(xiàn)無(wú)關(guān),所以如果實(shí)現(xiàn)發(fā)生變化,測(cè)試用例無(wú)關(guān),所以如果實(shí)現(xiàn)發(fā)生變化,測(cè)試用例仍然有用;仍然有用;w 測(cè)試用例開(kāi)發(fā)可以與實(shí)現(xiàn)并行進(jìn)行,可縮測(cè)試用例開(kāi)發(fā)可以與實(shí)現(xiàn)并行進(jìn)行,可縮短項(xiàng)目總的開(kāi)發(fā)時(shí)間。短項(xiàng)目總的開(kāi)發(fā)時(shí)間。不足!測(cè)試用例之間可能存在嚴(yán)重的冗不足!測(cè)試用例之間可能存在嚴(yán)重的冗余,此

30、外可能還會(huì)有未測(cè)試的軟件漏洞余,此外可能還會(huì)有未測(cè)試的軟件漏洞5353w 白盒測(cè)試白盒測(cè)試(white box testing):結(jié)構(gòu)性測(cè)試結(jié)構(gòu)性測(cè)試基于覆蓋全部代碼、分支、路徑、條件的測(cè)試。由于實(shí)現(xiàn)是已知的,測(cè)試人員可以嚴(yán)格描由于實(shí)現(xiàn)是已知的,測(cè)試人員可以嚴(yán)格描述要測(cè)試的確切內(nèi)容。述要測(cè)試的確切內(nèi)容。5454規(guī)格說(shuō)明程序測(cè)試用例對(duì)于結(jié)構(gòu)性測(cè)試,不管采用什么方法,測(cè)試用例對(duì)于結(jié)構(gòu)性測(cè)試,不管采用什么方法,測(cè)試用例集合完全局限在已由程序?qū)崿F(xiàn)的行為集合內(nèi)。集合完全局限在已由程序?qū)崿F(xiàn)的行為集合內(nèi)。(基于程序行為基于程序行為)5555結(jié)構(gòu)性測(cè)試的特點(diǎn)結(jié)構(gòu)性測(cè)試的特點(diǎn)w 測(cè)試人員可以利用線性圖論的理論,

31、嚴(yán)格測(cè)試人員可以利用線性圖論的理論,嚴(yán)格描述要測(cè)試的確切內(nèi)容。描述要測(cè)試的確切內(nèi)容。w 在結(jié)構(gòu)性測(cè)試中,測(cè)試覆蓋指標(biāo)能提供明在結(jié)構(gòu)性測(cè)試中,測(cè)試覆蓋指標(biāo)能提供明確的測(cè)試范圍。確的測(cè)試范圍。5656從測(cè)試方式出發(fā)從測(cè)試方式出發(fā)w 靜態(tài)測(cè)試:靜態(tài)分析技術(shù),不運(yùn)行程序,分靜態(tài)測(cè)試:靜態(tài)分析技術(shù),不運(yùn)行程序,分析文檔(說(shuō)明書(shū)、源程序)進(jìn)行測(cè)試。析文檔(說(shuō)明書(shū)、源程序)進(jìn)行測(cè)試。w 動(dòng)態(tài)測(cè)試:執(zhí)行被測(cè)程序,通過(guò)執(zhí)行結(jié)果分動(dòng)態(tài)測(cè)試:執(zhí)行被測(cè)程序,通過(guò)執(zhí)行結(jié)果分析軟件可能出現(xiàn)的錯(cuò)誤。析軟件可能出現(xiàn)的錯(cuò)誤。5757從測(cè)試階段出發(fā)從測(cè)試階段出發(fā)w 單元測(cè)試單元測(cè)試w 集成測(cè)試集成測(cè)試w 系統(tǒng)測(cè)試系統(tǒng)測(cè)試5858

32、w編程:編寫編程:編寫C+、Java或或C#控制控制臺(tái)程序,從鍵盤輸入三角形三條臺(tái)程序,從鍵盤輸入三角形三條邊邊a、b、c,判斷該三角形是什么,判斷該三角形是什么三角形(等腰、等邊、直角、等三角形(等腰、等邊、直角、等腰直角、一般、非),假定輸入腰直角、一般、非),假定輸入數(shù)據(jù)均為數(shù)字,并從屏幕上輸出數(shù)據(jù)均為數(shù)字,并從屏幕上輸出結(jié)果,注意對(duì)非法輸入數(shù)據(jù)的處結(jié)果,注意對(duì)非法輸入數(shù)據(jù)的處理(輸出理(輸出“輸入數(shù)據(jù)非法輸入數(shù)據(jù)非法”)。)。59w編寫編寫C+、Java或或C#控制臺(tái)控制臺(tái)程序,從鍵盤輸入年、月、程序,從鍵盤輸入年、月、日的值,其中,年份的取值日的值,其中,年份的取值范圍為范圍為181

33、4,2014,求出該,求出該日期的下一天(假定輸入數(shù)日期的下一天(假定輸入數(shù)據(jù)均為數(shù)字),并在屏幕上據(jù)均為數(shù)字),并在屏幕上顯示結(jié)果顯示結(jié)果596060傭金問(wèn)題傭金問(wèn)題w 前亞利桑那洲境內(nèi)的一位步槍銷售商銷售前亞利桑那洲境內(nèi)的一位步槍銷售商銷售密蘇里州制造商制造的步槍機(jī)(密蘇里州制造商制造的步槍機(jī)(lock)、)、槍托(槍托(stock)和槍管()和槍管(barrel)。槍機(jī)賣)。槍機(jī)賣45美元,槍托賣美元,槍托賣30美元,槍管賣美元,槍管賣25美元。美元。銷售商每月至少要售出一支完整的步槍,銷售商每月至少要售出一支完整的步槍,且生產(chǎn)限額是大多數(shù)銷售商在一個(gè)月內(nèi)可且生產(chǎn)限額是大多數(shù)銷售商在一個(gè)

34、月內(nèi)可銷售銷售70個(gè)槍機(jī)、個(gè)槍機(jī)、80個(gè)槍托和個(gè)槍托和90個(gè)槍管。個(gè)槍管。 6161要求要求w 根據(jù)當(dāng)月的銷售情況,并計(jì)算銷售商的傭金如根據(jù)當(dāng)月的銷售情況,并計(jì)算銷售商的傭金如下:下:w 不到(含)不到(含)1000美元的部分為美元的部分為10%;w 1000(不含)(不含)1800(含)美元的部分為(含)美元的部分為15%;w 超過(guò)超過(guò)1800美元的部分為美元的部分為20%。w 傭金程序生成月份銷售報(bào)告,匯總售出的槍機(jī)、傭金程序生成月份銷售報(bào)告,匯總售出的槍機(jī)、槍托和槍管總數(shù),銷售商的總銷售額以及傭金。槍托和槍管總數(shù),銷售商的總銷售額以及傭金。第3章 軟件測(cè)試風(fēng)險(xiǎn)管理Risk Managem

35、ent63633.1 測(cè)試風(fēng)險(xiǎn)的基本概念測(cè)試風(fēng)險(xiǎn)的基本概念w 在軟件測(cè)試中,即使很小的軟件系統(tǒng),也在軟件測(cè)試中,即使很小的軟件系統(tǒng),也不可能對(duì)系統(tǒng)的所有方面進(jìn)行測(cè)試,就會(huì)不可能對(duì)系統(tǒng)的所有方面進(jìn)行測(cè)試,就會(huì)存在測(cè)試風(fēng)險(xiǎn),即沒(méi)有安排或執(zhí)行測(cè)試用存在測(cè)試風(fēng)險(xiǎn),即沒(méi)有安排或執(zhí)行測(cè)試用例,但是存在用戶發(fā)現(xiàn)缺陷的可能性。例,但是存在用戶發(fā)現(xiàn)缺陷的可能性。n測(cè)試風(fēng)險(xiǎn)發(fā)生的可能性測(cè)試風(fēng)險(xiǎn)發(fā)生的可能性n測(cè)試風(fēng)險(xiǎn)發(fā)生后的影響測(cè)試風(fēng)險(xiǎn)發(fā)生后的影響64測(cè)試風(fēng)險(xiǎn)的分類測(cè)試風(fēng)險(xiǎn)的分類w技術(shù)風(fēng)險(xiǎn)技術(shù)風(fēng)險(xiǎn)w管理風(fēng)險(xiǎn)管理風(fēng)險(xiǎn)653.2 測(cè)試風(fēng)險(xiǎn)的識(shí)別技術(shù)測(cè)試風(fēng)險(xiǎn)的識(shí)別技術(shù)w頭腦風(fēng)暴法頭腦風(fēng)暴法w訪談訪談w風(fēng)險(xiǎn)檢查表風(fēng)險(xiǎn)檢查表

36、663.3 測(cè)試風(fēng)險(xiǎn)分析測(cè)試風(fēng)險(xiǎn)分析w 確定測(cè)試范圍的功能點(diǎn)和性能屬性確定測(cè)試范圍的功能點(diǎn)和性能屬性w 確定測(cè)試風(fēng)險(xiǎn)發(fā)生的可能確定測(cè)試風(fēng)險(xiǎn)發(fā)生的可能w 確定測(cè)試風(fēng)險(xiǎn)發(fā)生后產(chǎn)生的影響程度確定測(cè)試風(fēng)險(xiǎn)發(fā)生后產(chǎn)生的影響程度w 計(jì)算測(cè)試風(fēng)險(xiǎn)優(yōu)先級(jí)計(jì)算測(cè)試風(fēng)險(xiǎn)優(yōu)先級(jí)w 確定測(cè)試風(fēng)險(xiǎn)優(yōu)先級(jí)確定測(cè)試風(fēng)險(xiǎn)優(yōu)先級(jí)673.4 測(cè)試計(jì)劃風(fēng)險(xiǎn)的應(yīng)對(duì)措施測(cè)試計(jì)劃風(fēng)險(xiǎn)的應(yīng)對(duì)措施w縮小范圍縮小范圍w推遲實(shí)現(xiàn)推遲實(shí)現(xiàn)w增加資源增加資源w減少質(zhì)量過(guò)程減少質(zhì)量過(guò)程第第4章章 測(cè)試過(guò)程概述測(cè)試過(guò)程概述Testing Process694.1 常見(jiàn)的測(cè)試過(guò)程模型常見(jiàn)的測(cè)試過(guò)程模型w 瀑布模型瀑布模型w V模型模型w W模型模型w X

37、模型模型w H模型模型瀑布模型瀑布模型的核心思想是按工序?qū)?wèn)題化簡(jiǎn),將功能的實(shí)現(xiàn)與設(shè)計(jì)分開(kāi),采用機(jī)構(gòu)化的分析與設(shè)計(jì)方法將邏輯實(shí)現(xiàn)與物理實(shí)現(xiàn)分開(kāi)。軟件生命周期劃分為制定計(jì)劃、需求分析、軟件設(shè)計(jì)、程序編寫、軟件測(cè)試、運(yùn)行維護(hù)。規(guī)定活動(dòng)自上而下、相互銜接的固定次序,逐級(jí)下落。瀑布模型的重要地位瀑布模型的重要地位瀑布模型是最早出現(xiàn)的軟件開(kāi)發(fā)模型,在軟件工程中占有重要的地位,它提供了軟件開(kāi)發(fā)的基本框架。其過(guò)程是從上一項(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);否則返回前面,甚

38、至更前面的活動(dòng)。對(duì)于經(jīng)常變化的項(xiàng)目而言,瀑布模型毫無(wú)價(jià)值。瀑布模型的優(yōu)點(diǎn)為項(xiàng)目提供了按階段劃分的檢查點(diǎn)。當(dāng)前一階段完成后,您只需要去關(guān)注后續(xù)階段。 可在迭代模型中應(yīng)用瀑布模型。缺點(diǎn)在項(xiàng)目各個(gè)階段之間極少有反饋。 只有在項(xiàng)目生命周期的后期才能看到結(jié)果。 通過(guò)過(guò)多的強(qiáng)制完成日期和里程碑來(lái)跟蹤各個(gè)項(xiàng)目階段??偨Y(jié)傳統(tǒng)的瀑布模型,軟件測(cè)試的地位和價(jià)值并沒(méi)有體現(xiàn)出來(lái),測(cè)試只能作為一個(gè)事后補(bǔ)救工作。早期的錯(cuò)誤可能要等到開(kāi)發(fā)后期的測(cè)試階段才能發(fā)現(xiàn),進(jìn)而帶來(lái)嚴(yán)重的后果。各個(gè)階段的劃分完全固定,階段之間產(chǎn)生大量的文檔,極大地增加了工作量。由于開(kāi)發(fā)模型是線性的,用戶只有等到整個(gè)過(guò)程的末期才能見(jiàn)到開(kāi)發(fā)成果,從而增加

39、了開(kāi)發(fā)的風(fēng)險(xiǎn)。測(cè)試傳統(tǒng)模型-V模型V模型是最廣為人知的測(cè)試模型由Paul Rook在世紀(jì)年代后期提出的,旨在改進(jìn)軟件開(kāi)發(fā)的效率和效果。從左到右,描述了基本的開(kāi)發(fā)過(guò)程和測(cè)試行為非常明確地標(biāo)明了測(cè)試過(guò)程中存在的不同級(jí)別,描述了這些測(cè)試階段和開(kāi)發(fā)過(guò)程期間各階段的對(duì)應(yīng)關(guān)系V模型(測(cè)試與開(kāi)發(fā)階段對(duì)應(yīng)關(guān)系)單元和集成測(cè)試應(yīng)檢測(cè)程序的執(zhí)行是否滿足軟件設(shè)計(jì)的要求;系統(tǒng)測(cè)試應(yīng)檢測(cè)系統(tǒng)功能、性能的質(zhì)量特性是否達(dá)到系統(tǒng)要求的指標(biāo);驗(yàn)收測(cè)試確定軟件的實(shí)現(xiàn)是否滿足用戶需要或合同的要求。V模型的缺陷存在局限性,僅僅把測(cè)試過(guò)程作為在需求分析、系統(tǒng)設(shè)計(jì)及編碼之后的一個(gè)階段,只針對(duì)程序進(jìn)行的尋找錯(cuò)誤的活動(dòng),忽視了測(cè)試活動(dòng)對(duì)需求

40、分析,系統(tǒng)設(shè)計(jì)等活動(dòng)的驗(yàn)證和確認(rèn)的功能,直到后期的驗(yàn)收測(cè)試才被發(fā)現(xiàn)。W W模型模型W模型由Evolutif公司提出。W模型從V模型演化過(guò)來(lái),實(shí)際上開(kāi)發(fā)是V,測(cè)試也是與此并行的V。相對(duì)于V模型,W模型增加了軟件各開(kāi)發(fā)階段中應(yīng)同步進(jìn)行的驗(yàn)證和確認(rèn)活動(dòng)。W W模型模型測(cè)試伴隨整個(gè)軟件開(kāi)發(fā)周期,而且測(cè)試的對(duì)象不僅僅是程序,需求、設(shè)計(jì)等同樣要測(cè)試,測(cè)試與開(kāi)發(fā)是同步進(jìn)行的。W模型有利于盡早地全面的發(fā)現(xiàn)問(wèn)題。W模型的缺點(diǎn)W模型也存在局限性。在W模型中,需求、設(shè)計(jì)、編碼等活動(dòng)被視為串行的,同時(shí),測(cè)試和開(kāi)發(fā)活動(dòng)也保持著一種線性的前后關(guān)系,上一階段完全結(jié)束,才可正式開(kāi)始下一個(gè)階段工作工作。這樣就無(wú)法支持迭代的開(kāi)發(fā)

41、模型。對(duì)于當(dāng)前軟件開(kāi)發(fā)復(fù)雜多變的情況,W模型并不能解除測(cè)試管理面臨著困惑。X模型很好地處理測(cè)試與開(kāi)發(fā)的交接過(guò)程(交接的過(guò)程是一個(gè)時(shí)間段,而不是一個(gè)點(diǎn))左邊描述的是針對(duì)單獨(dú)程序片段所進(jìn)行的相互分離的編碼和測(cè)試,此后將進(jìn)行頻繁的交接,通過(guò)集成最終合成為可執(zhí)行的程序,然后再對(duì)這些可執(zhí)行程序進(jìn)行測(cè)試。己通過(guò)集成測(cè)試的成品可以進(jìn)行封裝并提交給用戶,也可以作為更大規(guī)模和范圍內(nèi)集成的一部分。多根并行的曲線表示變更可以在各個(gè)部分發(fā)生。X模型還定位了探索性測(cè)試,這是不進(jìn)行事先計(jì)劃的特殊類型的測(cè)試,給有經(jīng)驗(yàn)的測(cè)試人員在測(cè)試計(jì)劃之外發(fā)現(xiàn)更多的軟件缺陷。H H模型模型H H模型模型在H模型中,軟件測(cè)試過(guò)程是一個(gè)獨(dú)立的

42、流程,貫穿于整個(gè)產(chǎn)品周期,與其他流程并發(fā)地進(jìn)行。H模型指出,軟件測(cè)試要盡早準(zhǔn)備,盡早執(zhí)行。當(dāng)某個(gè)測(cè)試時(shí)間點(diǎn)就緒時(shí),軟件測(cè)試即從測(cè)試準(zhǔn)備階段進(jìn)入測(cè)試執(zhí)行階段。軟件測(cè)試可以根據(jù)被測(cè)物的不同而分層次進(jìn)行。不同的測(cè)試活動(dòng)可以是按照某個(gè)次序先后進(jìn)行的。但也可能是反復(fù)的,只要某個(gè)測(cè)試達(dá)到準(zhǔn)備就緒點(diǎn),測(cè)試執(zhí)行活動(dòng)就可以開(kāi)展。第3章 數(shù)學(xué)背景離散數(shù)學(xué)8585w 關(guān)于集合,重要的是它使我們能夠作為一關(guān)于集合,重要的是它使我們能夠作為一個(gè)單位,或一個(gè)整體引用多個(gè)事物。個(gè)單位,或一個(gè)整體引用多個(gè)事物。w 例如:我們可能要引用正好有例如:我們可能要引用正好有3030天的月份,天的月份,若采用集合論表示法可以寫為:若采

43、用集合論表示法可以寫為: M1= = 以上表示法讀做以上表示法讀做“M1”是元素是元素4 4月、月、6 6月、月、9 9月、月、1111月的集合。月的集合。3.1集合論集合論(set theory)月月、月、月、119648686w 集合中的項(xiàng)叫做集合的元素或成員,這種集合中的項(xiàng)叫做集合的元素或成員,這種關(guān)系采用符號(hào)關(guān)系采用符號(hào) 表示。表示。w 因此,我們可以有因此,我們可以有 3.1.1集合成員關(guān)系集合成員關(guān)系112M月14M月如果事物是集合成員如果事物是集合成員如果事物不是集合成員如果事物不是集合成員87873.1.2集合定義集合定義w 集合定義有三種方式:簡(jiǎn)單列出集合的元集合定義有三種方

44、式:簡(jiǎn)單列出集合的元素,給出辨別規(guī)則,或通過(guò)其他集合構(gòu)建。素,給出辨別規(guī)則,或通過(guò)其他集合構(gòu)建。w 定義一個(gè)年份集合為:定義一個(gè)年份集合為: Y =1812,1813,1814, ,2011,2012 通過(guò)列出元素定義集合時(shí),與元素順序沒(méi)通過(guò)列出元素定義集合時(shí),與元素順序沒(méi)有關(guān)系有關(guān)系 8888w 也可以通過(guò)給出辨別規(guī)則來(lái)定義。也可以通過(guò)給出辨別規(guī)則來(lái)定義。 如可以把年份定為如可以把年份定為: Y =year:1812year2012 讀做讀做 “Y是所有是所有year的集合,使得的集合,使得year在在1812(含)(含)2012(含)之間(含)之間” 。w 當(dāng)采用辨別規(guī)則定義集合時(shí),必須保

45、證是當(dāng)采用辨別規(guī)則定義集合時(shí),必須保證是無(wú)歧義無(wú)歧義的,即定義要清晰。給出年份的所的,即定義要清晰。給出年份的所有可能取值,因此可以判斷某個(gè)年份是否有可能取值,因此可以判斷某個(gè)年份是否在我們的集合中。在我們的集合中。89893.1.3空集空集w 空集采用符號(hào)空集采用符號(hào) ,在集合論中占有特殊位在集合論中占有特殊位置??占话?。置??占话?。n空集是唯一的,即不會(huì)有兩個(gè)空集;空集是唯一的,即不會(huì)有兩個(gè)空集;n、 都是不同的集合。都是不同的集合。w 如果集合被辨別規(guī)則定義為永遠(yuǎn)失敗。那如果集合被辨別規(guī)則定義為永遠(yuǎn)失敗。那么該集合就是空集。如:么該集合就是空集。如: = =yearyea

46、r:2012year18122012year18129090w 在維恩圖中,集合被表示為一個(gè)圓圈,圓在維恩圖中,集合被表示為一個(gè)圓圈,圓圈中的點(diǎn)表示集合元素。這樣我們可以把圈中的點(diǎn)表示集合元素。這樣我們可以把集合集合M1= = ,表示為表示為3.1.4維恩圖維恩圖4月月 11月月9月月 6月月月月、月、月、11964U U9191w 給定集合給定集合A和和B,包括并、交、補(bǔ)、相對(duì)補(bǔ)、,包括并、交、補(bǔ)、相對(duì)補(bǔ)、對(duì)稱差。對(duì)稱差。w 兩個(gè)集合的笛卡爾積(又叫做叉積),它取兩個(gè)集合的笛卡爾積(又叫做叉積),它取決于有序?qū)ε嫉母拍?,無(wú)序和有序?qū)ε嫉谋頉Q于有序?qū)ε嫉母拍睿瑹o(wú)序和有序?qū)ε嫉谋硎痉ㄒ话闶牵菏痉?/p>

47、一般是: 無(wú)序?qū)ε紵o(wú)序?qū)ε迹?a,b) 有序?qū)ε迹河行驅(qū)ε迹?若若 ab 則,則,(a,b)= (b,a), 但但 3.1.5集合操作集合操作9292w 定義:兩個(gè)集合定義:兩個(gè)集合A和和B的笛卡爾積,是集合的笛卡爾積,是集合 AB= :xAyBAyBw 集合集合A的勢(shì)是的勢(shì)是A中的元素?cái)?shù),采用中的元素?cái)?shù),采用|A|表示,表示,對(duì)于集合對(duì)于集合A和和B, |AB|=|A|B|,利用笛卡利用笛卡爾積可以爾積可以描述具有多個(gè)輸入變量的程序的描述具有多個(gè)輸入變量的程序的測(cè)試用例測(cè)試用例。w 笛卡爾積的乘法性質(zhì),意味著這種形式的笛卡爾積的乘法性質(zhì),意味著這種形式的測(cè)試會(huì)生成大量測(cè)試用例。測(cè)試會(huì)生成大量

48、測(cè)試用例。9393w A是是B的子集,記做的子集,記做 ,當(dāng)且僅當(dāng)當(dāng)且僅當(dāng)w A是是B的真子集,記做的真子集,記做 ,當(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 AB94943.1.7子集劃分w “劃分劃分”的含義是將一個(gè)整體分為小塊,使的含義是將一個(gè)整體分為小塊,使得所有事物都在某個(gè)小塊中,不會(huì)遺漏。得所有事物都在某個(gè)小塊中,不會(huì)遺漏。

49、w 形式化的描述是:形式化的描述是: 定義:給定集合定義:給定集合B,以及以及B的一組子集的一組子集A1、A2, ,An,這些子集是這些子集是B的一個(gè)劃分,的一個(gè)劃分,當(dāng)且僅當(dāng)當(dāng)且僅當(dāng)A1A2An=B,且且jiAAji9595w 由于一個(gè)劃分是一組子集,因此我們常常把由于一個(gè)劃分是一組子集,因此我們常常把單個(gè)子集看作是劃分的元素單個(gè)子集看作是劃分的元素。w 這個(gè)定義的兩部分對(duì)于測(cè)試人員很重要。第這個(gè)定義的兩部分對(duì)于測(cè)試人員很重要。第一部分保證一部分保證B的所有元素都在某個(gè)子集中,第的所有元素都在某個(gè)子集中,第二部分保證二部分保證B沒(méi)有元素在兩個(gè)子集中。沒(méi)有元素在兩個(gè)子集中。w 劃分對(duì)測(cè)試人員很

50、有用,因?yàn)閯澐帜鼙WC:劃分對(duì)測(cè)試人員很有用,因?yàn)閯澐帜鼙WC:完備性和無(wú)冗余性完備性和無(wú)冗余性。當(dāng)研究功能性測(cè)試,經(jīng)。當(dāng)研究功能性測(cè)試,經(jīng)常會(huì)出現(xiàn)漏洞和冗余性:有些內(nèi)容沒(méi)有被測(cè)常會(huì)出現(xiàn)漏洞和冗余性:有些內(nèi)容沒(méi)有被測(cè)試,而另外一些內(nèi)容被測(cè)試多次。試,而另外一些內(nèi)容被測(cè)試多次。功能性測(cè)功能性測(cè)試的主要困難之一,就是找出合適的劃分試的主要困難之一,就是找出合適的劃分。96963.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 =

51、 BA AB = BA AB = BA AB = BA 9797名稱名稱 表達(dá)式表達(dá)式求反律求反律 ( (A A) )=A=A結(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 9898w 所有功能性測(cè)試的基礎(chǔ)都是函數(shù)。所有功能性測(cè)試的基礎(chǔ)都是函數(shù)。w 定義:定義:給定集合給定集合A和和B,函數(shù)函數(shù)f是是AB的一個(gè)的一個(gè)子集,使得對(duì)于

52、子集,使得對(duì)于ai,ajA,bi,bjBB, , f(ai)=bi ,f(aj)=bj,3.2函數(shù)函數(shù)jijiaabb3.2.1定義域與值域定義域與值域n集合集合A是函數(shù)是函數(shù)f的定義域,集合的定義域,集合B是值域。是值域。 n函數(shù)的表示法:函數(shù)的表示法:f:A B或或BAf9999w 在以下定義中,首先給出函數(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到

53、到B的的一對(duì)一函數(shù)一對(duì)一函數(shù),當(dāng)且僅當(dāng)對(duì)于所有,當(dāng)且僅當(dāng)對(duì)于所有 ai,ajA, 3.2.2函數(shù)類型函數(shù)類型AaafbBbAfiiii對(duì)于某個(gè))(:)(BAf)()()(jijiafafaa100100w f是從是從A到到B的的多對(duì)一函數(shù)多對(duì)一函數(shù),當(dāng)且僅當(dāng)存在,當(dāng)且僅當(dāng)存在ai,ajA, aiaj使得使得f(ai) = f(aj);w 所有這些對(duì)于測(cè)試都很重要。中函數(shù)與上所有這些對(duì)于測(cè)試都很重要。中函數(shù)與上函數(shù),意味著函數(shù),意味著基于定義域還是基于值域的基于定義域還是基于值域的功能性測(cè)試,功能性測(cè)試,一對(duì)一函數(shù)要求比多對(duì)一函一對(duì)一函數(shù)要求比多對(duì)一函數(shù)要多得多的測(cè)試。數(shù)要多得多的測(cè)試。1011

54、01w 假設(shè)取假設(shè)取A、B和和C作為作為NextDate程序的日期集程序的日期集合,其中合,其中:A = =日期:日期:18121812年年1 1月月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ù)。1021023.2.3函數(shù)合成函數(shù)合成w 假設(shè)我們有集合和函數(shù),使得一個(gè)函數(shù)的假設(shè)我們

55、有集合和函數(shù),使得一個(gè)函數(shù)的值域是另一個(gè)函數(shù)的定義域:值域是另一個(gè)函數(shù)的定義域: f:A B g:BC h:CD 如果出現(xiàn)這種情況,則可以合成函數(shù)。如果出現(xiàn)這種情況,則可以合成函數(shù)。w 設(shè)引用集合定義域和值域的特定元素設(shè)引用集合定義域和值域的特定元素aA、 bBB、cCC、 dDD,并假設(shè)并假設(shè)f(af(a)=)=b b、g(bg(b)=c)=c和和h(ch(c)=d)=d,則則函數(shù)函數(shù)g g和和f f的合成的合成為:為: dchbghafghafgh)()()()(1031033.3關(guān)系關(guān)系w 函數(shù)是關(guān)系的一種特例函數(shù)是關(guān)系的一種特例w 定義:給定兩個(gè)集合定義:給定兩個(gè)集合A和和B,關(guān)系關(guān)系

56、R是笛卡爾積是笛卡爾積AB的一個(gè)子集。的一個(gè)子集。w 給定兩個(gè)集合給定兩個(gè)集合A和和B,一個(gè)關(guān)系一個(gè)關(guān)系 關(guān)系關(guān)系R的的勢(shì)勢(shì)是:是: 一對(duì)一勢(shì)一對(duì)一勢(shì),當(dāng)且僅當(dāng),當(dāng)且僅當(dāng)R是是A到到B的一對(duì)一函數(shù)的一對(duì)一函數(shù) 多對(duì)一勢(shì)多對(duì)一勢(shì),當(dāng)且僅當(dāng),當(dāng)且僅當(dāng)R是是A到到B的多對(duì)一函數(shù)的多對(duì)一函數(shù) 一對(duì)多勢(shì)一對(duì)多勢(shì),當(dāng)且僅當(dāng)至少有一個(gè)元素,當(dāng)且僅當(dāng)至少有一個(gè)元素aA在在R中的中的兩個(gè)有序?qū)ε贾?,即兩個(gè)有序?qū)ε贾?,?a,bi)RR和和( (a,a,bj)RRBAR104104設(shè)設(shè)A是一個(gè)集合,設(shè)是一個(gè)集合,設(shè) 是定義在是定義在A上的上的一個(gè)關(guān)系,關(guān)系具有四個(gè)特殊屬性:一個(gè)關(guān)系,關(guān)系具有四個(gè)特殊屬性:w 自反

57、的自反的,當(dāng)且僅當(dāng)所有,當(dāng)且僅當(dāng)所有aAaA, RRw 對(duì)稱的對(duì)稱的,當(dāng)且僅當(dāng)若,當(dāng)且僅當(dāng)若 RR,則則 RRw 反對(duì)稱的反對(duì)稱的,當(dāng)且僅當(dāng)若,當(dāng)且僅當(dāng)若 、 R,R,則則 a=b a=bw 傳遞的傳遞的,當(dāng)且僅當(dāng)若,當(dāng)且僅當(dāng)若 、 R,R,則則 RR3.3.2單個(gè)集合上的關(guān)系單個(gè)集合上的關(guān)系A(chǔ)AR105105w 關(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是在相同的劃分元素中,則我們說(shuō)是在相同的劃分元素中,則我們說(shuō)b1和和b2是相

58、關(guān)的是相關(guān)的(b1Rb2),這個(gè)關(guān)系是自反的、對(duì)稱,這個(gè)關(guān)系是自反的、對(duì)稱的、傳遞的。叫的、傳遞的。叫由劃分歸納的等價(jià)關(guān)系由劃分歸納的等價(jià)關(guān)系。w 如果從定義在一個(gè)集合上的等價(jià)關(guān)系開(kāi)始,則可如果從定義在一個(gè)集合上的等價(jià)關(guān)系開(kāi)始,則可根據(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 因此,因此,只測(cè)試等價(jià)類中的一個(gè)元素,并假設(shè)剩余只測(cè)試等價(jià)類中的一個(gè)元素,并假設(shè)剩余的元素有類似的測(cè)試結(jié)果,可大大提高測(cè)試效率。的元素有類似的測(cè)試結(jié)果,可大大提

59、高測(cè)試效率。AARAAR舉例107107NextDate問(wèn)題問(wèn)題w NextDate是一個(gè)有三個(gè)變量(月份、日是一個(gè)有三個(gè)變量(月份、日期和年)的函數(shù)。函數(shù)返回輸入日期后面期和年)的函數(shù)。函數(shù)返回輸入日期后面的那個(gè)日期。變量月份、日期和年都具有的那個(gè)日期。變量月份、日期和年都具有整數(shù)值,且滿足以下條件:整數(shù)值,且滿足以下條件:w c1. 1月份月份12w c2. 1月份月份31w c3. 1812年年2012 108108程序要求程序要求w 類類Date:year、month、day、Isleapyear()、Week()、NextDate()、PreDate()w 對(duì)該程序進(jìn)行調(diào)試、測(cè)試、確

60、保沒(méi)有錯(cuò)誤,對(duì)該程序進(jìn)行調(diào)試、測(cè)試、確保沒(méi)有錯(cuò)誤,記錄所有測(cè)試的輸入數(shù)據(jù)、輸出數(shù)據(jù)記錄所有測(cè)試的輸入數(shù)據(jù)、輸出數(shù)據(jù)OVER第4章 數(shù)學(xué)背景圖論110110 4.1圖圖w 圖圖(又叫線性圖又叫線性圖)是一種由兩個(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)無(wú)序?qū)ε技虾凸?jié)點(diǎn)無(wú)序?qū)ε技螮組成。組成。 V=n1,n2, ,nm和和E=e1,e2, ,ep 其中每條邊其中每條邊ek=ni,nj, ni,njV

溫馨提示

  • 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)論