軟件測(cè)試(完整版).ppt_第1頁(yè)
軟件測(cè)試(完整版).ppt_第2頁(yè)
軟件測(cè)試(完整版).ppt_第3頁(yè)
軟件測(cè)試(完整版).ppt_第4頁(yè)
軟件測(cè)試(完整版).ppt_第5頁(yè)
已閱讀5頁(yè),還剩489頁(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è)試Software testing,軟件學(xué)院 段喜龍 D312 2014.9,2,課程安排:,學(xué)時(shí)分配:40學(xué)時(shí)(32+8) 教材: 軟件測(cè)試技術(shù) 聯(lián)系方式:,3,第一部分 基礎(chǔ)篇,第1章 軟件測(cè)試背景 1.1 軟件錯(cuò)誤案例(when software attacks) 1.2 軟件缺陷(whats?why comes?and its cost) 1.3 軟件測(cè)試員(job and qualification),1.1 軟件錯(cuò)誤案例,Software cases,5,趣事(The funny),美國(guó)國(guó)稅局(IRS)的尷尬 1993年7月,IRS發(fā)出了近680億美元的稅單 最大方的自動(dòng)柜員

2、機(jī) 2001年1月,歐元正式流通后幾天,德國(guó)的某些自動(dòng)柜員機(jī)竟能在提款后不記入帳目! 壞脾氣的洗手間 2001年6月,在英國(guó),一個(gè)全自動(dòng)的洗手間突然出現(xiàn)故障,將一位老太太整整困了2小時(shí),6,嚴(yán)重事故(The serious),1996年12月,歐洲航天局(ESA)阿利亞娜5型火箭在發(fā)射39秒以后爆炸(10年,70億) 原因:運(yùn)算溢出錯(cuò)誤 1999年11月,美國(guó)國(guó)家航空航天局(NASA)發(fā)射火星溫度探測(cè)器失蹤 原因:?jiǎn)挝粨Q算錯(cuò)誤 千年蟲問(wèn)題,大約1974 原因:盲目的強(qiáng)調(diào)數(shù)據(jù)壓縮,7,悲?。═he tragic),愛國(guó)者導(dǎo)彈的失利(1991年2月) 原因:積累的時(shí)鐘誤差 美國(guó)海軍“文森斯”號(hào)巡洋

3、艦誤擊伊朗客機(jī)(1987年4月) 原因:不可靠的模式識(shí)別算法,1.2 軟件缺陷,software fault Defect-缺點(diǎn) Variance-偏差 Fault-缺陷 Failure-失敗 Problem-問(wèn)題 Inconsistency-矛盾 Error-錯(cuò)誤 Feature-特殊 Incident-毛病 Bug Anomaly-異常,9,1.2.1軟件缺陷是什么?,定義:只有符合下列5個(gè)規(guī)則的軟件問(wèn)題,我們將其定義為軟件缺陷(software fault) 軟件未達(dá)到產(chǎn)品說(shuō)明書標(biāo)明的功能 軟件出現(xiàn)了產(chǎn)品說(shuō)明書指明不會(huì)出現(xiàn)的錯(cuò)誤 軟件功能超出產(chǎn)品說(shuō)明書指明范圍 軟件未達(dá)到產(chǎn)品說(shuō)明書雖未指

4、出但應(yīng)達(dá)到的目標(biāo) 軟件測(cè)試員認(rèn)為軟件難以理解、不易使用、運(yùn)行速度緩慢、或者最終用戶認(rèn)為不好。,10,1.2.2為什么會(huì)出現(xiàn)軟件缺陷?,從小程序到大項(xiàng)目的無(wú)數(shù)研究得出:導(dǎo)致軟件缺陷最大的原因是產(chǎn)品說(shuō)明書(需求) 其次的原因是設(shè)計(jì)方案的問(wèn)題。,11,1.2.3軟件缺陷的修復(fù)費(fèi)用,1.2.4 軟件質(zhì)量,軟件質(zhì)量是軟件產(chǎn)品滿足使用要求的程度。 質(zhì)量模型: McCall模型 Boehm模型 ISO/IEC9126模型,1.3 軟件測(cè)試員,Software tester,14,1.3.1軟件測(cè)試員的工作,軟件測(cè)試員是客戶的眼睛,是第一次看到軟件的人,代表客戶說(shuō)話,應(yīng)力求完美。 軟件測(cè)試員的目標(biāo)是盡可能早的

5、找出軟件缺陷,并確保其得以修復(fù)。,15,The Software Job Spectrum,SDE: Software Design Engineer SDE/T: Software Design Engineer in Test STE: Software Test Engineer PM: Program Manager,SDE,STE,Development,Testing,16,Division of Labor,Windows 2000 Product Team,Total of 5,245 People 900 Developers 1,800 Testers Largest pr

6、oduct team in Microsoft history(at the time),17,1.3.2怎樣成為優(yōu)秀的軟件測(cè)試員,技術(shù)能力 探索精神 不懈努力 創(chuàng)造力,說(shuō)服力 準(zhǔn)確的洞察力 老練穩(wěn)重 追求完美,18,第2章 軟件測(cè)試基礎(chǔ),2.1 測(cè)試原則(principle) 2.2 測(cè)試目的(purpose) 2.3 測(cè)試對(duì)象(object) 2.4 測(cè)試術(shù)語(yǔ)(glossary) 2.5 測(cè)試方法(method),2.1測(cè)試原則,principle,20,1.完全測(cè)試程序是不可能的,輸入量太大 輸出結(jié)果多 軟件實(shí)現(xiàn)途徑太多 軟件說(shuō)明書沒有客觀標(biāo)準(zhǔn),21,2.軟件測(cè)試是有風(fēng)險(xiǎn)的行為,如果試圖

7、測(cè)試所有情況,費(fèi)用將大幅增加,軟件缺陷漏掉的數(shù)量并不會(huì)隨費(fèi)用上漲而顯著下降。 如果減少測(cè)試或者錯(cuò)誤地確定測(cè)試對(duì)象,那么費(fèi)用很低,但是會(huì)漏掉大量軟件缺陷。 (每個(gè)項(xiàng)目都有一個(gè)最優(yōu)的測(cè)試量),22,3.測(cè)試無(wú)法顯示潛伏的軟件缺陷,“Program testing can be used to show the presence of bugs but never to show their absence.” Edsger W. Dijkstra, 1972,23,4.找到的軟件缺陷越多,就說(shuō)明軟件缺陷越多,充分注意測(cè)試中的群集現(xiàn)象。經(jīng)驗(yàn)表明,測(cè)試后程序中殘存的錯(cuò)誤數(shù)目與該程序中已發(fā)現(xiàn)的錯(cuò)誤數(shù)目成

8、正比。,There is Always One More Bug,24,5.并非所有軟件缺陷都能修復(fù),沒有足夠的時(shí)間必須保證按時(shí)完成 不算真正的軟件缺陷 修復(fù)的風(fēng)險(xiǎn)太大修復(fù)一個(gè)可能導(dǎo)致其他 不值得修復(fù)不常出現(xiàn)或在不常用功能中出現(xiàn)的,對(duì)于軟件缺陷是否應(yīng)該修復(fù),其決策過(guò)程應(yīng)由軟件測(cè)試員、項(xiàng)目管理員和程序員共同參與。,25,6. 軟件測(cè)試是一項(xiàng)講究條理的技術(shù)專業(yè),對(duì)于軟件測(cè)試應(yīng)嚴(yán)格制定并執(zhí)行測(cè)試計(jì)劃,排除測(cè)試的隨意性。 應(yīng)當(dāng)對(duì)每一個(gè)測(cè)試結(jié)果做全面檢查。 妥善保存測(cè)試計(jì)劃,測(cè)試用例,出錯(cuò)統(tǒng)計(jì)和最終分析報(bào)告,為維護(hù)提供方便。 程序員應(yīng)避免檢查自己的程序。,2.2測(cè)試目的,purpose,27,基于不同的

9、立場(chǎng),存在著兩種完全不同的測(cè)試目的,從用戶的角度出發(fā),普遍希望通過(guò)軟件測(cè)試暴露軟件中隱藏的錯(cuò)誤和缺陷,以考慮是否可接受該產(chǎn)品。 從軟件開發(fā)者的角度出發(fā),則希望測(cè)試成為表明軟件產(chǎn)品中不存在錯(cuò)誤的過(guò)程,驗(yàn)證該軟件已正確地實(shí)現(xiàn)了用戶的要求,確立人們對(duì)軟件質(zhì)量的信心,28,Myerss Testing Objectives,Testing is a process of executing a program with the intent of finding an error. A good test is one that has a high probability of finding an

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

11、y,33,錯(cuò)誤(error),人類會(huì)犯錯(cuò)誤,很接近的一個(gè)同義詞是過(guò)錯(cuò)(mistake)。人們?cè)诰帉懘a是會(huì)出現(xiàn)過(guò)錯(cuò),我們把這種過(guò)錯(cuò)叫做bug。,34,缺陷(fault),缺陷是錯(cuò)誤的結(jié)果。更精確地說(shuō),缺陷是錯(cuò)誤的表現(xiàn),而表現(xiàn)是表示的模式,例如:敘述性文字、數(shù)據(jù)流框圖、層次結(jié)構(gòu)圖、源代碼等。 缺陷分為過(guò)錯(cuò)缺陷和遺漏缺陷。 若把某些信息輸入到不正確的表示中,就是過(guò)錯(cuò)缺陷;如果沒有輸入正確信息,則為遺漏缺陷。,35,失效(failure),當(dāng)缺陷執(zhí)行時(shí)會(huì)發(fā)生失效。有兩點(diǎn)需要解釋:一是失效只出現(xiàn)在可執(zhí)行的表現(xiàn)中,通常是源代碼,或更確切地說(shuō)是被裝載的目標(biāo)代碼;二是這種定義只與過(guò)錯(cuò)缺陷有關(guān)。對(duì)于遺漏缺陷,

12、可以通過(guò)有效的評(píng)審來(lái)避免其產(chǎn)生的失效。,事故(incident),當(dāng)出現(xiàn)失效時(shí),可能會(huì)也可能不會(huì)呈現(xiàn)給用戶,事故說(shuō)明出現(xiàn)了與失效類似的情況,警告用戶注意所出現(xiàn)的失效。,36,測(cè)試(test),測(cè)試顯然要處理錯(cuò)誤、缺陷、失效和事故。,測(cè)試用例(test case),測(cè)試用例應(yīng)由測(cè)試輸入數(shù)據(jù)和對(duì)應(yīng)的預(yù)期輸出結(jié)果這兩部分組成。,OVER,37,通過(guò)維恩圖理解測(cè)試,軟件測(cè)試基本上關(guān)心的是行為,而行為與軟件(和系統(tǒng))開發(fā)人員很常見的結(jié)構(gòu)視圖無(wú)關(guān)。 結(jié)構(gòu)視圖關(guān)注的是它是什么,而行為視圖關(guān)注的是它做什么。 一直困擾測(cè)試人員的難點(diǎn)之一,就是基本文檔通常都是由開發(fā)人員編寫, 并且是針對(duì)開發(fā)人員的,因此這些文檔強(qiáng)

13、調(diào)的是結(jié)構(gòu)信息,而不是行為信息。,38,考慮一個(gè)程序行為全域。給定一段程序及其規(guī)格說(shuō)明,集合S是所描述的行為,集合P是用程序?qū)崿F(xiàn)的行為。,S 規(guī)格說(shuō)明,P 程序,程序行為,預(yù)期的,所實(shí)現(xiàn)的,39,遺漏缺陷,過(guò)錯(cuò)缺陷,測(cè)試就是確定既被描述又被實(shí)現(xiàn)的程序行為的范圍,同時(shí)盡量找出缺陷。,S和P相交的部分是“正確”部分,即既被描述又被實(shí)現(xiàn)的行為。,40,41,2和5,可能會(huì)有沒有測(cè)試的已描述行為。 1和4,經(jīng)過(guò)測(cè)試的已描述行為。 3和7,對(duì)應(yīng)于未描述行為的測(cè)試用例。 2和6,可能會(huì)有沒有測(cè)試的程序行為。 1和3,經(jīng)過(guò)測(cè)試的程序行為。 4和7,未通過(guò)程序?qū)崿F(xiàn)的行為。,測(cè)試的目標(biāo):測(cè)試人員怎樣才能使這些集

14、合的相交區(qū)域(區(qū)域1)盡可能地大。,2.5測(cè)試方法,43,從代碼的特性角度(即內(nèi)部)出發(fā),單元測(cè)試(Unit Test):最微小規(guī)模的測(cè)試,用以測(cè)試某個(gè)功能或代碼塊。典型的單元測(cè)試應(yīng)由程序員而非測(cè)試員來(lái)做,因?yàn)樗枰纼?nèi)部程序設(shè)計(jì)和編碼的細(xì)節(jié)知識(shí)。 功能測(cè)試(Function Test)或特性測(cè)試(Feature Test):按照軟件的功能或特性逐個(gè)進(jìn)行測(cè)試。,覆蓋測(cè)試(Coverage Testing),44,提交測(cè)試 (Check-in Test):在開發(fā)人員對(duì)代碼做了任何修改,或者修復(fù)了某個(gè)Bug時(shí),需要重新Check-in代碼 (即將修改后的代碼放大到整個(gè)大的系統(tǒng)中) 基本驗(yàn)證測(cè)試

15、(Build Verification Test,簡(jiǎn)稱BVT):對(duì)完成的代碼進(jìn)行編譯和連接,產(chǎn)生一個(gè)構(gòu)造,以檢查程序的主要功能是否會(huì)像預(yù)期一樣進(jìn)行工作。這是最簡(jiǎn)單而又最省時(shí)的一種測(cè)試方法。每產(chǎn)生一個(gè)新的構(gòu)造時(shí)都要進(jìn)行測(cè)試。如果BVT通不過(guò),表明問(wèn)題很嚴(yán)重,開發(fā)人員需要盡快修復(fù)出現(xiàn)的問(wèn)題,測(cè)試人員也就不用浪費(fèi)時(shí)間做其他測(cè)試了,45,回歸測(cè)試(Regression Test): 過(guò)一段時(shí)間以后,再回過(guò)頭來(lái)對(duì)以前修復(fù)過(guò)的Bug重新進(jìn)行測(cè)試,看該Bug是否會(huì)重新出現(xiàn)。,46,從用戶的角度(即外部)出發(fā),配置測(cè)試(Configuration Test):從用戶的使用出發(fā)進(jìn)行多方面的測(cè)試,要考慮到用戶的多

16、種情況,用多種配置對(duì)軟件進(jìn)行測(cè)試。 兼容性測(cè)試(Compatibility Test):主要考慮兼容性問(wèn)題,比如同一個(gè)產(chǎn)品的不同版本之間的兼容問(wèn)題,不同廠家的同一個(gè)產(chǎn)品之間的兼容問(wèn)題,不同類型軟件之間的兼容問(wèn)題等。,使用測(cè)試(Usage testing),47,強(qiáng)力測(cè)試(StressTest):在各種極限情況下對(duì)產(chǎn)品進(jìn)行測(cè)試 (如很多人同時(shí)使用該軟件,或者反復(fù)運(yùn)行該軟件),以檢查產(chǎn)品的長(zhǎng)期穩(wěn)定性。 性能測(cè)試(Performance Test):本項(xiàng)測(cè)試是保證程序具有良好的性能。如果別人的產(chǎn)品只需5秒鐘就能得出結(jié)果,而你的產(chǎn)品需要10秒鐘才能得出結(jié)果,就說(shuō)明你的產(chǎn)品性能不好。,48,文檔和幫助文

17、件測(cè)試(Documentation and help file Test): 因?yàn)橛脩敉ǔJ峭ㄟ^(guò)文檔和幫助文件來(lái)學(xué)習(xí)使用產(chǎn)品的,如果文檔和幫助文件存在錯(cuò)誤,就可能會(huì)導(dǎo)致用戶無(wú)法正常使用產(chǎn)品。 Alpha和Beta測(cè)試(Alpha and Beta Test):在正式發(fā)布產(chǎn)品之前往往要先發(fā)布一些測(cè)試版,讓用戶能夠反饋出相關(guān)信息,或者找到存在的Bug,以便在正式版中得到解決。,49,從區(qū)分測(cè)試用例的角度出發(fā),黑盒測(cè)試(Black Box Testing ):功能性,基于軟件規(guī)格說(shuō)明的測(cè)試,任何程序都可以看作是將從輸入定義域取值映射到輸出值域的函數(shù)。,50,測(cè)試用例,對(duì)于功能性測(cè)試,不管采用什么方法

18、,測(cè)試用例集合完全局限在已描述行為集合內(nèi)。(基于已描述行為),51,黑盒測(cè)試的優(yōu)點(diǎn):,黑盒測(cè)試(功能性測(cè)試)與軟件如何實(shí)現(xiàn)無(wú)關(guān),所以如果實(shí)現(xiàn)發(fā)生變化,測(cè)試用例仍然有用; 測(cè)試用例開發(fā)可以與實(shí)現(xiàn)并行進(jìn)行,可縮短項(xiàng)目總的開發(fā)時(shí)間。,不足!測(cè)試用例之間可能存在嚴(yán)重的冗余,此外可能還會(huì)有未測(cè)試的軟件漏洞,52,白盒測(cè)試(white box testing):結(jié)構(gòu)性測(cè)試,基于覆蓋全部代碼、分支、路徑、條件的測(cè)試。,由于實(shí)現(xiàn)是已知的,測(cè)試人員可以嚴(yán)格描述要測(cè)試的確切內(nèi)容。,53,測(cè)試用例,對(duì)于結(jié)構(gòu)性測(cè)試,不管采用什么方法,測(cè)試用例集合完全局限在已由程序?qū)崿F(xiàn)的行為集合內(nèi)。 (基于程序行為),54,結(jié)構(gòu)性測(cè)試

19、的特點(diǎn),測(cè)試人員可以利用線性圖論的理論,嚴(yán)格描述要測(cè)試的確切內(nèi)容。 在結(jié)構(gòu)性測(cè)試中,測(cè)試覆蓋指標(biāo)能提供明確的測(cè)試范圍。,55,從測(cè)試方式出發(fā),靜態(tài)測(cè)試:靜態(tài)分析技術(shù),不運(yùn)行程序,分析文檔(說(shuō)明書、源程序)進(jìn)行測(cè)試。 動(dòng)態(tài)測(cè)試:執(zhí)行被測(cè)程序,通過(guò)執(zhí)行結(jié)果分析軟件可能出現(xiàn)的錯(cuò)誤。,56,從測(cè)試階段出發(fā),單元測(cè)試 集成測(cè)試 系統(tǒng)測(cè)試,57,示例,編程:從鍵盤輸入三角形三條邊a、b、c,判斷該三角形是什么三角形(等腰、等邊、直角、等腰直角、一般、非),并從屏幕上輸出結(jié)果。,第3章 軟件測(cè)試風(fēng)險(xiǎn)管理,Risk Management,59,3.1 測(cè)試風(fēng)險(xiǎn)的基本概念,在軟件測(cè)試中,即使很小的軟件系統(tǒng),也不

20、可能對(duì)系統(tǒng)的所有方面進(jìn)行測(cè)試,就會(huì)存在測(cè)試風(fēng)險(xiǎn),即沒有安排或執(zhí)行測(cè)試用例,但是存在用戶發(fā)現(xiàn)缺陷的可能性。 測(cè)試風(fēng)險(xiǎn)發(fā)生的可能性 測(cè)試風(fēng)險(xiǎn)發(fā)生后的影響,測(cè)試風(fēng)險(xiǎn)的分類,技術(shù)風(fēng)險(xiǎn) 管理風(fēng)險(xiǎn),3.2 測(cè)試風(fēng)險(xiǎn)的識(shí)別技術(shù),頭腦風(fēng)暴法 訪談 風(fēng)險(xiǎn)檢查表,3.3 測(cè)試風(fēng)險(xiǎn)分析,確定測(cè)試范圍的功能點(diǎn)和性能屬性 確定測(cè)試風(fēng)險(xiǎn)發(fā)生的可能 確定測(cè)試風(fēng)險(xiǎn)發(fā)生后產(chǎn)生的影響程度 計(jì)算測(cè)試風(fēng)險(xiǎn)優(yōu)先級(jí) 確定測(cè)試風(fēng)險(xiǎn)優(yōu)先級(jí),3.4 測(cè)試計(jì)劃風(fēng)險(xiǎn)的應(yīng)對(duì)措施,縮小范圍 推遲實(shí)現(xiàn) 增加資源 減少質(zhì)量過(guò)程,第4章 測(cè)試過(guò)程概述,Testing Process,4.1 常見的測(cè)試過(guò)程模型,瀑布模型 V模型 W模型 X模型 H模型,瀑布

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

22、而言,瀑布模型毫無(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)目階段。,總結(jié),傳統(tǒng)的瀑布模型,軟件測(cè)試的地位和價(jià)值并沒有體現(xiàn)出來(lái),測(cè)試只能作為一個(gè)事后補(bǔ)救工作。早期的錯(cuò)誤可能要等到開發(fā)后期的測(cè)試階段才能發(fā)現(xiàn),進(jìn)而帶來(lái)嚴(yán)重的后果。 各個(gè)階段的劃分完全固定,階段之間產(chǎn)生大量的文檔,極大地增加了工作量。 由于開發(fā)模型是線性的,用戶只有等到整個(gè)過(guò)程的末期才能見到開發(fā)成果,從而增加 了開發(fā)的風(fēng)險(xiǎn)。,

23、測(cè)試傳統(tǒng)模型-V模型,V模型是最廣為人知的測(cè)試模型 由Paul Rook在世紀(jì)年代后期提出的,旨在改進(jìn)軟件開發(fā)的效率和效果。 從左到右,描述了基本的開發(fā)過(guò)程和測(cè)試行為 非常明確地標(biāo)明了測(cè)試過(guò)程中存在的不同級(jí)別,描述了這些測(cè)試階段和開發(fā)過(guò)程期間各階段的對(duì)應(yīng)關(guān)系,V模型(測(cè)試與開發(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)

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

25、開發(fā)模型。 對(duì)于當(dāng)前軟件開發(fā)復(fù)雜多變的情況,W模型并不能解除測(cè)試管理面臨著困惑。,X模型,很好地處理測(cè)試與開發(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模型中,軟件測(cè)試過(guò)程是一個(gè)

26、獨(dú)立的流程,貫穿于整個(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)就可以開展。,第3章 數(shù)學(xué)背景離散數(shù)學(xué),84,關(guān)于集合,重要的是它使我們能夠作為一個(gè)單位,或一個(gè)整體引用多個(gè)事物。 例如:我們可能要引用正好有30天的月份,若采用集合論表示法可以寫為: M1= 以上表示法讀做“M1”是元素4月、6月、9月、11月的集合。,3.1集合論(set theor

27、y),85,集合中的項(xiàng)叫做集合的元素或成員,這種關(guān)系采用符號(hào) 表示。 因此,我們可以有,3.1.1集合成員關(guān)系,如果事物是集合成員,如果事物不是集合成員,86,3.1.2集合定義,集合定義有三種方式:簡(jiǎn)單列出集合的元素,給出辨別規(guī)則,或通過(guò)其他集合構(gòu)建。 定義一個(gè)年份集合為: Y =1812,1813,1814, ,2011,2012 通過(guò)列出元素定義集合時(shí),與元素順序沒有關(guān)系,87,也可以通過(guò)給出辨別規(guī)則來(lái)定義。 如可以把年份定為: Y =year:1812year2012 讀做 “Y是所有year的集合,使得year在1812(含)2012(含)之間” 。 當(dāng)采用辨別規(guī)則定義集合時(shí),必須保

28、證是無(wú)歧義的,即定義要清晰。給出年份的所有可能取值,因此可以判斷某個(gè)年份是否在我們的集合中。,88,3.1.3空集,空集采用符號(hào) ,在集合論中占有特殊位置??占话亍?空集是唯一的,即不會(huì)有兩個(gè)空集; 、 都是不同的集合。 如果集合被辨別規(guī)則定義為永遠(yuǎn)失敗。那么該集合就是空集。如: =year:2012year1812,89,在維恩圖中,集合被表示為一個(gè)圓圈,圓圈中的點(diǎn)表示集合元素。這樣我們可以把集合M1= ,表示為,3.1.4維恩圖,4月 11月 9月 6月,U,90,給定集合A和B,包括并、交、補(bǔ)、相對(duì)補(bǔ)、對(duì)稱差。 兩個(gè)集合的笛卡爾積(又叫做叉積),它取決于有序?qū)ε嫉母拍?,無(wú)序和有序

29、對(duì)偶的表示法一般是: 無(wú)序?qū)ε迹?a,b) 有序?qū)ε迹?若 ab 則,(a,b)= (b,a), 但 ,3.1.5集合操作,91,定義:兩個(gè)集合A和B的笛卡爾積,是集合 AB= :xAyB 集合A的勢(shì)是A中的元素?cái)?shù),采用|A|表示,對(duì)于集合A和B, |AB|=|A|B|,利用笛卡爾積可以描述具有多個(gè)輸入變量的程序的測(cè)試用例。 笛卡爾積的乘法性質(zhì),意味著這種形式的測(cè)試會(huì)生成大量測(cè)試用例。,92,A是B的子集,記做 ,當(dāng)且僅當(dāng) A是B的真子集,記做 ,當(dāng)且僅當(dāng) A和B是相等集合,記做A=B,當(dāng)且僅當(dāng) 若A的每個(gè)元素也是B的元素,集合A是集合B 的子集;如果A和B互為子集,則A和B相等。,3.1.6

30、集合關(guān)系,93,3.1.7子集劃分,“劃分”的含義是將一個(gè)整體分為小塊,使得所有事物都在某個(gè)小塊中,不會(huì)遺漏。 形式化的描述是: 定義:給定集合B,以及B的一組子集A1、A2, ,An,這些子集是B的一個(gè)劃分,當(dāng)且僅當(dāng)A1A2An=B,且,94,由于一個(gè)劃分是一組子集,因此我們常常把單個(gè)子集看作是劃分的元素。 這個(gè)定義的兩部分對(duì)于測(cè)試人員很重要。第一部分保證B的所有元素都在某個(gè)子集中,第二部分保證B沒有元素在兩個(gè)子集中。 劃分對(duì)測(cè)試人員很有用,因?yàn)閯澐帜鼙WC:完備性和無(wú)冗余性。當(dāng)研究功能性測(cè)試,經(jīng)常會(huì)出現(xiàn)漏洞和冗余性:有些內(nèi)容沒有被測(cè)試,而另外一些內(nèi)容被測(cè)試多次。功能性測(cè)試的主要困難之一,就是

31、找出合適的劃分。,95,3.1.8集合恒等式,96,97,所有功能性測(cè)試的基礎(chǔ)都是函數(shù)。 定義:給定集合A和B,函數(shù)f是AB的一個(gè)子集,使得對(duì)于ai,ajA,bi,bjB, f(ai)=bi ,f(aj)=bj,3.2函數(shù),3.2.1定義域與值域,集合A是函數(shù)f的定義域,集合B是值域。 函數(shù)的表示法:f:A B或,98,在以下定義中,首先給出函數(shù)f:A B,并且定義集合: 這個(gè)集合有時(shí)記做A在f下的映象。 定義: f是從A到B的上函數(shù),當(dāng)且僅當(dāng)f(A)=B; f是從A到B的中函數(shù),當(dāng)且僅當(dāng) f是從A到B的一對(duì)一函數(shù),當(dāng)且僅當(dāng)對(duì)于所有 ai,ajA,,3.2.2函數(shù)類型,99,f是從A到B的多對(duì)

32、一函數(shù),當(dāng)且僅當(dāng)存在ai,ajA, aiaj使得f(ai) = f(aj); 所有這些對(duì)于測(cè)試都很重要。中函數(shù)與上函數(shù),意味著基于定義域還是基于值域的功能性測(cè)試,一對(duì)一函數(shù)要求比多對(duì)一函數(shù)要多得多的測(cè)試。,100,假設(shè)取A、B和C作為NextDate程序的日期集合,其中: A =日期:1812年1月1日日期2012年12月31日 B =日期:1812年1月2日日期2013年1月1日 C = A B 現(xiàn)在, NextDate : A B是一個(gè)一對(duì)一的上函數(shù),NextDate : A C是一個(gè)一對(duì)一 的中函數(shù)。,101,3.2.3函數(shù)合成,假設(shè)我們有集合和函數(shù),使得一個(gè)函數(shù)的值域是另一個(gè)函數(shù)的定義

33、域: f:A B g:BC h:CD 如果出現(xiàn)這種情況,則可以合成函數(shù)。 設(shè)引用集合定義域和值域的特定元素aA、 bB、cC、 dD,并假設(shè)f(a)=b、g(b)=c和h(c)=d,則函數(shù)g和f的合成為:,102,3.3關(guān)系,函數(shù)是關(guān)系的一種特例 定義:給定兩個(gè)集合A和B,關(guān)系R是笛卡爾積AB的一個(gè)子集。 給定兩個(gè)集合A和B,一個(gè)關(guān)系 關(guān)系R的勢(shì)是: 一對(duì)一勢(shì),當(dāng)且僅當(dāng)R是A到B的一對(duì)一函數(shù) 多對(duì)一勢(shì),當(dāng)且僅當(dāng)R是A到B的多對(duì)一函數(shù) 一對(duì)多勢(shì),當(dāng)且僅當(dāng)至少有一個(gè)元素aA在R中的兩個(gè)有序?qū)ε贾校?a,bi)R和(a,bj)R,103,設(shè)A是一個(gè)集合,設(shè) 是定義在A上的 一個(gè)關(guān)系,關(guān)系具有四個(gè)特

34、殊屬性: 自反的,當(dāng)且僅當(dāng)所有aA,R 對(duì)稱的,當(dāng)且僅當(dāng)若R,則R 反對(duì)稱的,當(dāng)且僅當(dāng)若、R,則 a=b 傳遞的,當(dāng)且僅當(dāng)若、R,則R,3.3.2單個(gè)集合上的關(guān)系,104,關(guān)系 是偏序關(guān)系,如果R是自反、反對(duì)稱和傳遞的。 關(guān)系 是等價(jià)關(guān)系,如果R是自反、對(duì)稱和傳遞的。 如果b1和b2是在相同的劃分元素中,則我們說(shuō)b1和b2是相關(guān)的(b1Rb2),這個(gè)關(guān)系是自反的、對(duì)稱的、傳遞的。叫由劃分歸納的等價(jià)關(guān)系。 如果從定義在一個(gè)集合上的等價(jià)關(guān)系開始,則可根據(jù)與該等價(jià)關(guān)系相關(guān)的元素定義子集,這些子集就構(gòu)成劃分,由等價(jià)關(guān)系歸納的劃分,劃分中的集合叫做等價(jià)類。 因此,只測(cè)試等價(jià)類中的一個(gè)元素,并假設(shè)剩余的元

35、素有類似的測(cè)試結(jié)果,可大大提高測(cè)試效率。,舉例,106,NextDate問(wèn)題,NextDate是一個(gè)有三個(gè)變量(月份、日期和年)的函數(shù)。函數(shù)返回輸入日期后面的那個(gè)日期。變量月份、日期和年都具有整數(shù)值,且滿足以下條件: c1. 1月份12 c2. 1月份31 c3. 1812年2012,107,程序要求,類Date:year、month、day、Isleapyear()、Week()、NextDate()、PreDate() 對(duì)該程序進(jìn)行調(diào)試、測(cè)試、確保沒有錯(cuò)誤,記錄所有測(cè)試的輸入數(shù)據(jù)、輸出數(shù)據(jù),OVER,第4章 數(shù)學(xué)背景圖論,109,4.1圖,圖(又叫線性圖)是一種由兩個(gè)集合定義的抽象數(shù)學(xué)結(jié)構(gòu)

36、,即一個(gè)節(jié)點(diǎn)集合和一個(gè)構(gòu)成節(jié)點(diǎn)之間連接的邊集合。 定義:圖G=由節(jié)點(diǎn)的有限(并且非空) 集合V和節(jié)點(diǎn)無(wú)序?qū)ε技螮組成。 V=n1,n2, ,nm和E=e1,e2, ,ep 其中每條邊ek=ni,nj, ni,njV。 ni,nj是一個(gè)無(wú)序?qū)ε迹袝r(shí)記做(ni,nj),110,如左圖所示,節(jié)點(diǎn)和邊集合為: V=n1,n2,n3, n4,n5,n6,n7 和 E=e1,e2, e3, e4,e5 =(n1,n2), (n1,n4), (n3,n4), (n2,n5), (n4,n6) 把節(jié)點(diǎn)看做是程序語(yǔ)句,并且邊表示控制流或定義/使用關(guān)系。,111,4.1.1節(jié)點(diǎn)的度,定義:節(jié)點(diǎn)的度是以該節(jié)點(diǎn)作

37、為端點(diǎn)的邊的條數(shù)。我們把節(jié)點(diǎn)n的度記做deg(n)。 可以說(shuō),節(jié)點(diǎn)的度表示它在圖中的“流行程度”。如果圖中的節(jié)點(diǎn)表示對(duì)象,邊表示消息,則節(jié)點(diǎn)(對(duì)象)的度表示適合該對(duì)象的集成測(cè)試范圍。 上圖中節(jié)點(diǎn)的度是:deg(n1)=2,deg(n2)=2 deg(n3)=1,deg(n4)=3, deg(n5)=1,deg(n6)=1, deg(n7)=0,112,4.1.2關(guān)聯(lián)矩陣,定義:擁有m個(gè)節(jié)點(diǎn)和n條邊的圖G=的關(guān)聯(lián)矩陣是一種mn矩陣,其中第i行第j列的元素是1,當(dāng)且僅當(dāng)節(jié)點(diǎn)i是邊j的一個(gè)端點(diǎn),否則元素是0。 任何列的表項(xiàng)和為2,這是因?yàn)槊織l邊都是恰好有兩個(gè)端點(diǎn)。,113,4.1.3相鄰矩陣,定義:

38、擁有m個(gè)節(jié)點(diǎn)和n條邊的圖G=的相鄰矩陣是一種mm矩陣,其中第i行第j列的元素是1,當(dāng)且僅當(dāng)節(jié)點(diǎn)i和節(jié)點(diǎn)j之間存在一條邊,否則元素是0。 相鄰矩陣是對(duì)稱的,行的和即是該節(jié)點(diǎn)的度,114,4.1.4路徑,定義:路徑是一系列的邊,對(duì)于序列中的任何相鄰邊對(duì)偶ei,ej, 邊都擁有相同的(節(jié)點(diǎn))端點(diǎn)。 上圖中的一些路徑是:,115,4.1.5連接性,定義:節(jié)點(diǎn)ni和nj是被連接的,當(dāng)且僅當(dāng)它們都在同一條路徑上。 “連接性”是一種圖的節(jié)點(diǎn)集合上的等價(jià)關(guān)系。 連接性是自反的, 連接性是對(duì)稱的, 連接性是傳遞的。 圖的組件是相連節(jié)點(diǎn)的最大集合。上圖中有兩個(gè)組件:n1,n2,n3,n4,n5,n6和n7,116

39、,4.1.6壓縮圖,給定圖G=,其壓縮圖通過(guò)用壓縮節(jié)點(diǎn)替代每個(gè)組件構(gòu)成。 在我們的例子中的組件是 s1=n1,n2,n3,n4,n5,n6 和s2=n7,117,4.1.7圈數(shù),圖G的圈數(shù)由V(G)=e-n+p給出,其中: e是G中的邊數(shù) n是G中的節(jié)點(diǎn)數(shù) p是G中的組件數(shù) V(G)是圖中不同區(qū)域的個(gè)數(shù)。 在結(jié)構(gòu)性測(cè)試的一個(gè)定理要求使用程序中的基本路徑概念,并使得程序圖的圈數(shù)就是這些基本路徑的數(shù)量。,118,4.2有向圖,對(duì)于有向圖,邊有了方向含義,在符號(hào)上,無(wú)序?qū)ε?ni ,nj)變成有序?qū)ε?,我們說(shuō)有向邊從節(jié)點(diǎn)ni到nj,而不是在節(jié)點(diǎn)之間。 定義:有向圖(或框圖)D=(V,E)包含:一個(gè)節(jié)

40、點(diǎn)的有限集合V= n1,n2, ,nm,一個(gè)邊的集合E=e1,e2, ,ep,其中每條ek=是節(jié)點(diǎn)ni,njV的一個(gè)有序?qū)ε肌?有向圖中的邊適合很多軟件概念:串性行為、命令式程序設(shè)計(jì)語(yǔ)言、按時(shí)間順序的事件等。,119,如左圖所示,節(jié)點(diǎn)和邊集合為: V=n1,n2,n3, n4,n5,n6,n7 和 E=e1,e2, e3, e4,e5 =, , ,120,4.2.1內(nèi)度與外度,定義: 有向圖中節(jié)點(diǎn)的內(nèi)度,是將該節(jié)點(diǎn)做為終止節(jié)點(diǎn)的不同邊的條數(shù)。記為indeg(n)。 有向圖中節(jié)點(diǎn)的外度,是將該節(jié)點(diǎn)做為開始節(jié)點(diǎn)的不同邊的條數(shù)。記為outdeg(n)。 如在上圖中節(jié)點(diǎn)具有以下內(nèi)度和外度: indeg

41、(n1)=0 outdeg(n1)=2 indeg(n2)=1 outdeg(n2)=1 一般圖和有向圖存在某種聯(lián)系,比如: deg(n)=indeg(n)+outdeg(n),121,4.2.2節(jié)點(diǎn)的類型,定義: 內(nèi)度為0的節(jié)點(diǎn)是源節(jié)點(diǎn)。 外度為0的節(jié)點(diǎn)是吸收節(jié)點(diǎn)。 內(nèi)度不為0,并且外度不為0的節(jié)點(diǎn)是傳遞節(jié)點(diǎn) 源節(jié)點(diǎn)和吸收節(jié)點(diǎn)構(gòu)成圖的外部邊界。 既是源節(jié)點(diǎn)又是吸收節(jié)點(diǎn)的節(jié)點(diǎn)是孤立節(jié)點(diǎn)。 在上圖中,n1,n3和n7是源節(jié)點(diǎn),n5,n6和n7是吸收節(jié)點(diǎn),n2和n4是傳遞節(jié)點(diǎn)。n7是孤立節(jié)點(diǎn),122,4.2.3有向圖的相鄰矩陣,定義:有m個(gè)節(jié)點(diǎn)和n條邊的圖D=的相鄰矩陣是一種mm矩陣,A=(aij

42、),其中aij=1,當(dāng)且僅當(dāng)從節(jié)點(diǎn)I到節(jié)點(diǎn)j之間有一條邊,否則該元素是0。,123,4.2.4路徑與半路徑,定義: (有向)路徑是一系列邊,使得第一條邊的終止節(jié)點(diǎn)是第二條邊的初始節(jié)點(diǎn)。 環(huán)路是一個(gè)在同一個(gè)節(jié)點(diǎn)上開始和結(jié)束的有向路徑。 半路徑是一系列邊,至少有一對(duì)相鄰邊對(duì)偶ei、ej來(lái)說(shuō),第一條邊的初始節(jié)點(diǎn)是第二條邊的初始節(jié)點(diǎn),或第一條邊的終止節(jié)點(diǎn)是第二條邊的終止節(jié)點(diǎn)。 在上圖中,從n1到n6存在一條路徑,n1和n3之間有一條半路徑。,124,4.2.5可到達(dá)性矩陣,有m個(gè)節(jié)點(diǎn)和n條邊的圖D=的相鄰矩陣是一種mm矩陣,R=(rij),其中rij=1,當(dāng)且僅當(dāng)從節(jié)點(diǎn)I到節(jié)點(diǎn)j之間有一條路徑,否則該

43、元素是0。,125,4.2.6 n-連接性,有向圖中的兩個(gè)節(jié)點(diǎn)ni和nj是: 0-連接,當(dāng)且僅當(dāng)ni和nj之間沒有路徑。 1-連接,當(dāng)且僅當(dāng)ni和nj之間有一條半路徑,但是沒有路徑。 2-連接,當(dāng)且僅當(dāng)ni和nj之間有一條路徑。 3-連接,當(dāng)且僅當(dāng)從ni和nj之間有一條路徑,并且從nj和ni之間有一條路徑,126,n1和n7是0-連接 n2和n4是1-連接 n1和n6是2-連接 n3和n6是3-連接,127,4.2.7強(qiáng)組件,定義:有向圖的強(qiáng)組件是3-連接節(jié)點(diǎn)的最大集合。 在我們上一 個(gè)例子中, 強(qiáng)組件是集合 s1=n3,n4, n6 和s2=n7,128,強(qiáng)組件使我們能夠通過(guò)清除循環(huán)和孤立節(jié)

44、點(diǎn)來(lái)簡(jiǎn)化有向圖。 有向圖的壓縮圖永遠(yuǎn)不會(huì)包含環(huán)路。(如果包含環(huán)路,則環(huán)路會(huì)被劃分的最大化特性壓縮掉。),即有向無(wú)環(huán)圖,又叫DAG(directed acyclic graph),129,4.3用于測(cè)試的圖,廣泛用于測(cè)試的四種特殊圖。第一種是程序圖,主要用于單元測(cè)試層次。其他三種圖分別是:有限狀態(tài)機(jī) 、狀態(tài)圖和petri圖,這三種圖最適合用來(lái)描述系統(tǒng)級(jí)行為,盡管也可以用于較低層次的測(cè)試。,130,4.3.1程序圖,定義:給定一個(gè)采用命令式程序設(shè)計(jì)語(yǔ)言編寫的程序,其程序圖是一種有向圖,其中: 傳統(tǒng)定義: 節(jié)點(diǎn)是程序語(yǔ)句,邊表示控制流(從節(jié)點(diǎn)i到節(jié)點(diǎn)j有一條邊,當(dāng)且僅當(dāng)對(duì)應(yīng)節(jié)點(diǎn)j的語(yǔ)句可以立即在節(jié)點(diǎn)

45、i對(duì)應(yīng)的語(yǔ)句之后執(zhí)行)。 改進(jìn)后的定義: 節(jié)點(diǎn)要么是整個(gè)語(yǔ)句,要么是語(yǔ)句的一部分,邊表示控制流(從節(jié)點(diǎn)i到節(jié)點(diǎn)j有一條邊,當(dāng)且僅當(dāng)對(duì)應(yīng)節(jié)點(diǎn)j的語(yǔ)句或語(yǔ)句的一部分,可以立即在節(jié)點(diǎn)i對(duì)應(yīng)的語(yǔ)句或語(yǔ)句的一部分之后執(zhí)行),131,結(jié)構(gòu)化程序設(shè)計(jì)基本結(jié)構(gòu)的有向圖:,串行,If-Then-Else,If-Then,132,條件(多分支),前測(cè)試環(huán)路,后測(cè)試環(huán)路,133,4.3.2有限自動(dòng)機(jī),有限狀態(tài)機(jī)是表示需求規(guī)格說(shuō)明的一種相當(dāng)標(biāo)準(zhǔn)的方法。所有結(jié)構(gòu)化分析的實(shí)時(shí)擴(kuò)展,都要使用某種形式的有限狀態(tài)機(jī),并且?guī)缀跛行问降拿嫦驅(qū)ο蠓治鲆捕家褂糜邢逘顟B(tài)機(jī)。 有限狀態(tài)機(jī)是一種有向圖,其中狀態(tài)是節(jié)點(diǎn),轉(zhuǎn)移是邊。源狀態(tài)和

46、吸收狀態(tài)是初始節(jié)點(diǎn)和終止節(jié)點(diǎn)。大多數(shù)有限狀態(tài)機(jī)表示方法都要為邊增加信息,以表示轉(zhuǎn)移的原因和作為轉(zhuǎn)移的結(jié)果要發(fā)生的行為。,134,ATM PIN識(shí)別部分,135,4.3.3狀態(tài)圖,David Harel在開發(fā)狀態(tài)圖表示法時(shí),考慮到兩個(gè)功能:維恩圖描述層次結(jié)構(gòu)的能力以及有向圖描述連接性的能力。 狀態(tài)圖現(xiàn)在被Rational公司選為統(tǒng)一建模語(yǔ)言(UML)的控制模型。 在狀態(tài)圖中,用“團(tuán)點(diǎn)”表示基本構(gòu)件塊。團(tuán)點(diǎn)可以像維恩圖顯示集合包含那樣包含其它團(tuán)點(diǎn),團(tuán)點(diǎn)還可以像在有向圖中連接節(jié)點(diǎn)一樣地通過(guò)邊連接其它團(tuán)點(diǎn)。,136,團(tuán)點(diǎn)A包含兩個(gè)團(tuán)點(diǎn)(B和C),通過(guò)邊連接。團(tuán)點(diǎn)A通過(guò)邊與團(tuán)點(diǎn)D連接。,137,我們可以

47、把團(tuán)點(diǎn)解釋為狀態(tài),把邊解釋為轉(zhuǎn)移。 狀態(tài)圖的“初始狀態(tài)”由沒有源狀態(tài)的邊表示。當(dāng)狀態(tài)嵌入在其他狀態(tài)內(nèi)部時(shí),使用同樣的方式顯示低層初始狀態(tài)。,狀態(tài)A是初始狀態(tài),當(dāng)進(jìn)入這個(gè)狀態(tài)時(shí),也進(jìn)入低層狀態(tài)B,138,當(dāng)進(jìn)入某個(gè)狀態(tài)時(shí),我們可以認(rèn)為該狀態(tài)是活動(dòng)的。 從狀態(tài)A轉(zhuǎn)移到狀態(tài)D初看起來(lái)是有歧義的,因?yàn)樗鼪]有區(qū)分狀態(tài)B和C 約定:邊必須開始和結(jié)束于狀態(tài)的外圍。如果狀態(tài)包含子狀態(tài),邊會(huì)“引用”所有的子狀態(tài)。 因此,從A到D的邊意味著轉(zhuǎn)移可以從狀態(tài)B或從狀態(tài)C發(fā)生。如果有從狀態(tài)D到狀態(tài)A的邊,則意味著轉(zhuǎn)移實(shí)際上是從狀態(tài)D到狀態(tài)B,139,傭金問(wèn)題,前亞利桑那洲境內(nèi)的一位步槍銷售商銷售密蘇里州制造商制造的步槍

48、機(jī)(lock)、槍托(stock)和槍管(barrel)。槍機(jī)賣45美元,槍托賣30美元,槍管賣25美元。銷售商每月至少要售出一支完整的步槍,且生產(chǎn)限額是大多數(shù)銷售商在一個(gè)月內(nèi)可銷售70個(gè)槍機(jī)、80個(gè)槍托和90個(gè)槍管。,140,要求,根據(jù)當(dāng)月的銷售情況,并計(jì)算銷售商的傭金如下: 不到(含)1000美元的部分為10%; 1000(不含)1800(含)美元的部分為15%; 超過(guò)1800美元的部分為20%。 傭金程序生成月份銷售報(bào)告,匯總售出的槍機(jī)、槍托和槍管總數(shù),銷售商的總銷售額以及傭金。,第三講 邊界值測(cè)試,Boundary test If you can safely and confiden

49、tly walk along the edge of a cliff without falling off, you can almost certainly walk in the middle of a field.,142,函數(shù):是將一個(gè)集合(函數(shù)的定義域)的值映射到另一個(gè)集合(函數(shù)的值域)的值上。任何程序都可以看做是一個(gè)函數(shù),程序的輸入構(gòu)成函數(shù)的定義域,程序的輸出構(gòu)成函數(shù)的值域。 輸入定義域測(cè)試是最著名的功能性測(cè)試手段。,143,3.1邊界值分析,設(shè)有兩個(gè)變量x1和x2的函數(shù)F,如果函數(shù)F實(shí)現(xiàn)為一個(gè)程序,則輸入兩個(gè)變量x1和x2會(huì)有一些邊界(可能為規(guī)定): ax1b cx2d 邊界值

50、分析關(guān)注的是輸入空間的邊界,以標(biāo)識(shí)測(cè)試用例。 邊界值測(cè)試背后的基本原理是錯(cuò)誤更可能出現(xiàn)在輸入變量的極值附近。,144,有些強(qiáng)類型語(yǔ)言(Pascal和Ada)允許顯示地定義變量值域。其目的就是要防止程序員出現(xiàn)某些類型的錯(cuò)誤。而邊界測(cè)試更適用于采用非強(qiáng)類型語(yǔ)言編寫的程序。,145,邊界值分析的基本思想是使用在最小值、略高于最小值、正常值、略低于最大值和最大值處取得的值作為輸入變量值。 我們將以上這些在邊界值分析中取得的輸入變量值分別記做:min、min+、nom、max-和max。 邊界值分析的下一部分基于一種關(guān)鍵假設(shè),叫做“單缺陷”假設(shè)。這種假設(shè)是說(shuō),失效極少是由兩個(gè)(或多個(gè))缺陷的同時(shí)發(fā)生引起

51、的。 因此,通過(guò)使所有變量取正常值,而只使一個(gè)變量取極值來(lái)獲得邊界值分析測(cè)試用例。,146,對(duì)于我們的兩變量函數(shù)F,其邊界值分析測(cè)試用例是: , , , , , , , , ,147,3.1.1歸納邊界值分析,基本邊界值分析手段可以用兩種方式歸納:變量數(shù)量和值域。 歸納變量數(shù)量:如果有一個(gè)n變量函數(shù),使除一個(gè)以外的所有變量取正常值,使剩余的那個(gè)變量取最小值、略高于最小值、正常值、略低于最大值和最大值,對(duì)每個(gè)變量都重復(fù)進(jìn)行,這樣,對(duì)于一個(gè)n變量函數(shù),邊界值分析會(huì)產(chǎn)生4n+1個(gè)測(cè)試用例。 歸納值域取決于變量本身的性質(zhì)。,148,3.1.2邊界值分析的局限性,因?yàn)?,邊界值分析假設(shè)變量是完全獨(dú)立的。如

52、果被測(cè)程序是多個(gè)獨(dú)立變量的函數(shù),這些變量受物理量的限制,則很適合邊界值分析。 而實(shí)際上,變量之間卻存在某種依賴關(guān)系。所以,邊界值分析測(cè)試用例是初步的。即便如此,邊界值分析也能捕獲大量的邊界值缺陷。,149,邊界值分析假設(shè)變量是完全獨(dú)立的。 邊界值分析測(cè)試用例通過(guò)引用物理量的邊界獨(dú)立變量極值導(dǎo)出,不考慮函數(shù)的性質(zhì),也不考慮變量的語(yǔ)義含義。 因此,由邊界值分析產(chǎn)生的測(cè)試用例是一種初步的測(cè)試用例。,150,3.2健壯性測(cè)試,健壯性測(cè)試是邊界值分析的一種簡(jiǎn)單擴(kuò)展:除了變量的五個(gè)邊界值分析取值,還要通過(guò)采用一個(gè)略超過(guò)最大值(max+)的取值,以及一個(gè)略小于最小值(min-)的取值,看看超過(guò)極值時(shí)系統(tǒng)會(huì)有

53、什么表現(xiàn)。 此時(shí),輸入變量值可?。?min-、min、min+、nom、max-、max和max+。,151,變量取值7個(gè),其中一個(gè)取正常值,用例個(gè)數(shù)6n+1,152,3.3最壞情況測(cè)試,邊界值測(cè)試分析采用了可靠性理論的單缺陷假設(shè)。拒絕這種假設(shè),意味著我們關(guān)心當(dāng)多個(gè)變量取極值時(shí)會(huì)出現(xiàn)什么情況。我們?cè)谶@里使用這種思想來(lái)生成最壞情況測(cè)試用例。 對(duì)每個(gè)變量,首先進(jìn)行包含min、min+、nom、max-和max五元素集合的測(cè)試,然后對(duì)這些集合進(jìn)行笛卡爾積計(jì)算,以生成最壞測(cè)試用例。 顯然,邊界值分析測(cè)試用例是最壞情況測(cè)試用例的真子集。n變量函數(shù)的最壞情況測(cè)試,會(huì)產(chǎn)生5n個(gè)測(cè)試用例,而邊界值分析只產(chǎn)生4

54、n+1個(gè)測(cè)試用例。,153,min,min+,nom,max-,max min,min+,nom,max-,max,154,對(duì)于最壞情況測(cè)試的健壯性測(cè)試,采用健壯性測(cè)試的七元素集合的笛卡爾積作為測(cè)試用例。(72=49個(gè)用例),155,3.4 特殊值測(cè)試,特殊值測(cè)試大概是運(yùn)用得最廣泛的一種功能性測(cè)試。 當(dāng)測(cè)試人員使用其領(lǐng)域知識(shí)、使用類似程序的經(jīng)驗(yàn)以及關(guān)于“軟點(diǎn)”信息開發(fā)測(cè)試用例時(shí),會(huì)出現(xiàn)特殊值測(cè)試。 特殊測(cè)試特別依賴測(cè)試人員的能力。盡管特殊值測(cè)試是高度主觀性的,但是所產(chǎn)生的測(cè)試用例集合,常常更能有效地發(fā)現(xiàn)缺陷。,156,3.5用例,3.5.1三角形問(wèn)題的測(cè)試用例 3.5.2Nextdate函數(shù)的

55、測(cè)試用例 3.5.3傭金問(wèn)題的測(cè)試用例,157,3.5.3傭金問(wèn)題的測(cè)試用例,對(duì)于產(chǎn)生傭金問(wèn)題的測(cè)試用例,我們研究輸出值域的邊界值,特別是接近1000美元和1800美元門限點(diǎn)的值。,158,低于較低平面的值,對(duì)應(yīng)低于1000美元門限的銷售額。兩個(gè)平面之間的值是15%傭金區(qū)域。 使用輸出值域確定測(cè)試用例的部分原因是,通過(guò)輸入值域生成的測(cè)試用例幾乎都在20%傭金區(qū)域。 我們要找出強(qiáng)調(diào)邊界值100美元、1000美元、1800美元和7800美元對(duì)應(yīng)的輸入變量組合。 最大值和最小值的確定很容易,給出的數(shù)正好便于生成邊界點(diǎn)。對(duì)于邊界值1000美元、1800美元也可以確定出輸入的邊界點(diǎn)。(1000:槍機(jī):1

56、0,槍托:10,槍管:10; 1800:槍機(jī):18,槍托:18,槍管:18),159,3.6 隨機(jī)測(cè)試,隨機(jī)測(cè)試的思想是:不是永遠(yuǎn)選取有界變量的最小值、略高于最小值、正常值、略低于最大值和最大值,而是使用隨機(jī)數(shù)生成器選出測(cè)試用例值。 隨機(jī)測(cè)試可以避免出現(xiàn)測(cè)試偏見,但是也帶來(lái)了一個(gè)嚴(yán)重的問(wèn)題:多少隨機(jī)測(cè)試用例才是充分的。 對(duì)于有界變量axb可采用以下程序(C)生成:x=int(b-a+1)*random(1)+a 這個(gè)程序持續(xù)生成隨機(jī)測(cè)試用例,直到每種輸出至少出現(xiàn)一次。在每張表中,程序循環(huán)“七次”。,160,3.7邊界值測(cè)試的指導(dǎo)方針,除了特殊值測(cè)試,基于函數(shù)(程序)輸入定義域的測(cè)試方法,是所有

57、測(cè)試方法中最基本的。 這類測(cè)試方法都有一種假設(shè),即輸入變量是真正獨(dú)立的,如果不能保證這種假設(shè),則這類方法會(huì)產(chǎn)生不能令人滿意的測(cè)試用例(例如在Nextdate中的1912年2月31日)。 另一種很有用的基于輸出的測(cè)試用例形式,可用于生成錯(cuò)誤消息的系統(tǒng)。測(cè)試人員應(yīng)該設(shè)計(jì)測(cè)試用例,以檢查在適當(dāng)?shù)臅r(shí)候,錯(cuò)誤消息是否被生成,并且不會(huì)被錯(cuò)誤地生成。,161,傭金問(wèn)題,前亞利桑那洲境內(nèi)的一位步槍銷售商銷售密蘇里州制造商制造的步槍機(jī)(lock)、槍托(stock)和槍管(barrel)。槍機(jī)賣45美元,槍托賣30美元,槍管賣25美元。銷售商每月至少要售出一支完整的步槍,且生產(chǎn)限額是大多數(shù)銷售商在一個(gè)月內(nèi)可銷售

58、70個(gè)槍機(jī)、80個(gè)槍托和90個(gè)槍管。,162,要求,根據(jù)當(dāng)月的銷售情況,并計(jì)算銷售商的傭金如下: 不到(含)1000美元的部分為10%; 1000(不含)1800(含)美元的部分為15%; 超過(guò)1800美元的部分為20%。 傭金程序生成月份銷售報(bào)告,匯總售出的槍機(jī)、槍托和槍管總數(shù),銷售商的總銷售額以及傭金。,找零錢最佳組合,假 設(shè) 商 店 貨 品 價(jià) 格 (R) 皆 不 大 于 100 元 ( 且 為 整 數(shù) ) , 若 顧 客 付 款 在 100 元 內(nèi) (P) , 求 找 給 顧 客 之 最 少 貨幣 個(gè)(張) 數(shù) ? ( 貨 幣 面 值 50 元 (N50) , 10 元 (N10) ,

59、 5 元 (N5) , 1 元 (N1) 四 種 ),163,第7章 等價(jià)類測(cè)試,Equivalence Class test,165,使用等價(jià)類作為功能性測(cè)試的基礎(chǔ)有兩個(gè)動(dòng)機(jī):我們希望進(jìn)行完備的測(cè)試,同時(shí)又希望避免冗余。 而邊界值測(cè)試不能實(shí)現(xiàn)這兩種希望中的任意一個(gè);研究那些測(cè)試用例表,很容易看出存在大量冗余,并且還會(huì)發(fā)現(xiàn)嚴(yán)重漏洞。 等價(jià)類測(cè)試重復(fù)邊界值測(cè)試的兩個(gè)決定因素,即健壯性和單/多缺陷假設(shè)。,166,7.1 等價(jià)類概述,在劃分中,由于子集是由等價(jià)關(guān)系決定的,因此,子集的元素都有一些共同點(diǎn)。所以,等價(jià)類測(cè)試的思想是通過(guò)每個(gè)等價(jià)類中的一個(gè)元素標(biāo)識(shí)測(cè)試用例。如果廣泛選擇等價(jià)類,則這樣可以大大降低測(cè)試用例之間的冗余。 等價(jià)類測(cè)試的關(guān)鍵,就是選擇確定類的等價(jià)關(guān)系。但必須區(qū)分弱和強(qiáng)等價(jià)類。,167,7.2 等價(jià)類特點(diǎn),測(cè)試的內(nèi)容相同 一個(gè)等價(jià)類中的某個(gè)測(cè)試可以發(fā)現(xiàn)缺陷,那么這個(gè)等價(jià)類的其他測(cè)試也能發(fā)現(xiàn)該缺陷。

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論