軟件測試技術(shù)_第1頁
軟件測試技術(shù)_第2頁
軟件測試技術(shù)_第3頁
軟件測試技術(shù)_第4頁
軟件測試技術(shù)_第5頁
已閱讀5頁,還剩235頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

12023/2/7軟件測試技術(shù)22023/2/7課程目標掌握系統(tǒng)的軟件測試方法和技術(shù)應(yīng)試準備:GCT考試32023/2/7參考書《軟件測試基礎(chǔ)教程》.AdityaP.Mathur著,王峰等譯.機械工業(yè)出版社,2011年8月《軟件測試基礎(chǔ)》.PaulAmmann等著,郁蓮等譯.機械工業(yè)出版社,2010年10月42023/2/7參考書《軟件測試技術(shù)經(jīng)典教程》趙斌編著,科學出版社,2007年5月(非常適合實戰(zhàn))《軟件測試教程》賀平編著,電子工業(yè)出版社,2005年6月(高職精品教材,比較實用)52023/2/7參考書《軟件測試》.RonPatton著,張小松等譯,機械工業(yè)出版社,2006年8月《軟件測試--原理與實踐》.SrinivasanDesikan等著,韓柯等譯,機械工業(yè)出版社,2009年2月《軟件測試工程師培訓教程》.劉德寶編著,科學出版社,2009年1月62023/2/7參考網(wǎng)站鏈接所需要的關(guān)于軟件測試方面的絕大多數(shù)問題都可以在這里直接找到答案(包括各種軟件測試工具如何使用)軟件測試自學的最佳網(wǎng)站。72023/2/7第一部分軟件測試概述經(jīng)典案例軟件測試的目的軟件測試準則軟件測試方法軟件測試過程軟件測試環(huán)境82023/2/7軟件測試的歷史與現(xiàn)狀軟件測試的歷史20世紀50年代,英國著名的計算機科學家圖靈就給出了軟件測試的原始定義:測試是程序正確性證明的一種極端實驗形式五個影響人類歷史的蘋果?ACM圖靈獎?92023/2/7軟件測試的歷史與現(xiàn)狀軟件測試的歷史直到上世紀70年代以后,隨著計算機硬件技術(shù)的進步與成熟,軟件在整個系統(tǒng)中所占的地位越來越重要,軟件規(guī)模和復雜性大大增加。102023/2/7軟件測試的歷史與現(xiàn)狀軟件測試的歷史軟件可靠性面臨前所未有的危機,給軟件測試工作帶來了挑戰(zhàn),測試的意義逐漸被人們認識,軟件測試的研究開始受到重視,是軟件測試技術(shù)發(fā)展最活躍的時期。112023/2/7軟件測試的歷史與現(xiàn)狀軟件測試的歷史1975年,Goodenough首次提出了軟件測試理論,從而把軟件測試這一實踐性很強的學科提高到理論的高度。1982年,美國北卡來納大學召開了首次軟件測試技術(shù)會議,是軟件測試與軟件質(zhì)量研究人員和開發(fā)人員的第一次聚會122023/2/7軟件測試的歷史與現(xiàn)狀軟件測試的現(xiàn)狀就目前軟件工程發(fā)展的狀況而言,軟件測試仍然是較為薄弱的一個方面。不僅測試理論,已有的測試方法也不能滿足當前軟件開發(fā)的實際需求。132023/2/7軟件測試的歷史與現(xiàn)狀軟件測試的現(xiàn)狀尤其是進入20世紀90年代后,計算機技術(shù)日趨成熟,軟件應(yīng)用范圍逐步擴大,軟件規(guī)模和復雜性急劇增加,與此同時,計算機出現(xiàn)故障引起系統(tǒng)失效的可能性也逐漸增加。142023/2/7軟件測試的歷史與現(xiàn)狀軟件測試的現(xiàn)狀由于計算機硬件技術(shù)的進步,元器件可靠性的提高,硬件設(shè)計和驗證技術(shù)的成熟,硬件故障相對顯得次要了,軟件故障正逐漸成為導致計算機系統(tǒng)失效和停機的主要因素。152023/2/7軟件測試的歷史與現(xiàn)狀隨著軟件外包行業(yè)的逐漸興起和人們對軟件質(zhì)量保障意識的加強,中國軟件企業(yè)已開始認識到,軟件測試的廣度和深度決定了中國軟件企業(yè)的前途命運。162023/2/7軟件測試的歷史與現(xiàn)狀以占中國軟件外包總量近85%的對日軟件外包來說,業(yè)務(wù)內(nèi)容基本都針對測試環(huán)節(jié)。軟件外包中對測試環(huán)節(jié)的強化,直接導致了軟件外包企業(yè)對測試人才的大量需求。近年來,幾乎所有的軟件企業(yè)均存在不同程度的測試人才缺口,軟件測試工程師已成為了亟待補充的關(guān)鍵技術(shù)工種之一。172023/2/7IBM、百度、華為、惠普、盛大網(wǎng)絡(luò)、聯(lián)想集團等國內(nèi)外大型IT企業(yè)均表現(xiàn)出對成熟軟件測試人才的期盼,而微軟、三星、西門子、思科、華為3COM等多家國內(nèi)外IT巨頭則相繼在全國各大高校招兵買馬,并把軟件測試人才的招聘放在了突出的位置。國內(nèi)軟件測試人才緊缺的現(xiàn)狀已經(jīng)凸現(xiàn)出來。182023/2/7經(jīng)典案例一1994年,迪斯尼發(fā)布的第一個面向兒童的多媒體光盤游戲-獅子王動畫游戲書(TheLionKingAnimatedStorybook)失敗原因:缺乏系統(tǒng)兼容性測試192023/2/7經(jīng)典案例二英特爾奔騰浮點除法缺陷1994年,弗吉尼亞州Lynchburg學院的ThomasR.Nicely博士在實驗中,計算下列算式:(4195835/3145727)*3145727-4195835

主要原因:英特爾奔騰處理器燒制了軟件缺陷202023/2/7經(jīng)典案例三美國航天局火星極地登陸號探測器1999年故障評估委員會認定:火星探測器試圖在火星表面著陸時失蹤,出現(xiàn)故障的原因極可能是一個數(shù)據(jù)位被意外置位。令人警醒的問題是:為什么沒有在內(nèi)部測試時發(fā)現(xiàn)呢?212023/2/7經(jīng)典案例三著陸計劃當探測器向火星表面降落時,它將打開降落傘減緩探測器的下降速度。降落傘打開幾秒鐘后,探測器的三條腿將迅速撐開,并鎖定位置,準備著陸。當探測器離地面1800米時,它將丟棄降落傘,點燃著陸推進器,緩緩降落到地面222023/2/7經(jīng)典案例三美國航天局為了省錢,簡化了確定何時關(guān)閉著陸推進器的裝置。為了替代在其它太空船上使用的昂貴雷達,他們在探測器的腳部裝了一個廉價的觸點開關(guān),在計算機中設(shè)置了一個數(shù)據(jù)位來控制觸點開關(guān)關(guān)閉燃料。很簡單,探測器的發(fā)動機需要一直點火工作,直到腳“著地”為止。232023/2/7經(jīng)典案例三故障評估委員會在測試中發(fā)現(xiàn):很多情況下,當探測器的腳迅速撐開準備著陸時,機械振動也會觸發(fā)著陸觸點開關(guān),設(shè)置致命的數(shù)據(jù)位。設(shè)想探測器開始著陸時,計算機極有可能關(guān)閉著陸推進器,這樣飛船下墜1800米之后沖向火星表面,撞成碎片。242023/2/7經(jīng)典案例三結(jié)果是災難性的,原因卻很簡單:登陸探測器經(jīng)過了多個小組測試,其中一個小組測試飛船的腳折疊過程,另一個小組測試此后的著陸過程。前一個小組不去注意著地數(shù)據(jù)位是否置位(這不是他們負責的范圍);后一個小組總是在開始測試之前復位計算機、清除數(shù)據(jù)位。雙方獨立工作都做得很好,但合在一起就不是這樣了。252023/2/7經(jīng)典案例四愛國者導彈防御系統(tǒng)1991首次應(yīng)用在海灣戰(zhàn)爭中對抗伊拉克飛毛腿導彈,取得了實效,但是確實在對抗幾枚導彈中失利,包括一次在沙特阿拉伯的多哈擊斃了28名美國士兵。分析發(fā)現(xiàn)癥結(jié)在于一個軟件缺陷,系統(tǒng)時鐘的一個很小的計時錯誤積累起來到14小時后,跟蹤系統(tǒng)不再準確。在多哈的這次襲擊中,系統(tǒng)已經(jīng)運行了100多個小時。262023/2/7經(jīng)典案例五千年蟲問題1974年用兩位數(shù)字表示年份原因:為了節(jié)省存儲空間272023/2/7經(jīng)典案例六Windows2000安全漏洞遠程服務(wù)軟件中存在安全漏洞拒絕服務(wù)權(quán)限濫用信息泄露黑客利用這點控制了美國國防部一臺服務(wù)器282023/2/7近期出現(xiàn)的重大事故2007年10月30日,奧運門票第二階段階段預售首日……科技奧運?292023/2/7近期出現(xiàn)的重大事故2007年8月14日14時,美國洛杉磯國際機場電腦發(fā)生故障,60個航班的2萬旅客無法入關(guān)。直至次日凌晨3時50分,所有滯留旅客才全部入關(guān)。2004年9月發(fā)生過類似問題原因分析:包含旅客姓名和犯罪記錄的部分數(shù)據(jù)系統(tǒng)(海關(guān)和邊境保護系統(tǒng):決定旅客是否可以進入美國領(lǐng)土)癱瘓302023/2/7近期出現(xiàn)的重大事故2006年3月2日14點10分,滬深大盤忽然發(fā)生罕見大跳水,7分鐘之內(nèi)上證指數(shù)跌去近20點。原因分析:當日下午剛上市的招商銀行認股權(quán)證成交量巨大,導致其行情顯示時總成交量字段溢出,使其價格在股票分析軟件上成為一條不再波動的直線,讓市場產(chǎn)生了恐慌。312023/2/7近期出現(xiàn)的重大事故2005年4月20日上午10時56分,中國銀聯(lián)系統(tǒng)通信網(wǎng)絡(luò)和主機出現(xiàn)故障,造成轄內(nèi)跨行交易全部中斷。這是2002年中國銀聯(lián)成立以來,首次全國性因系統(tǒng)故障造成的跨行交易全面癱瘓。原因:銀聯(lián)新近準備上線的某外圍設(shè)備的隱性缺陷誘發(fā)了跨行交易系統(tǒng)主機的缺陷,使主機發(fā)生故障軟件能否提供支持?322023/2/7近期出現(xiàn)的重大事故2003年8月14日下午4時10分,美國及加拿大部分地區(qū)發(fā)生歷史上最大的停電事故。15日晚逐步恢復后果:經(jīng)濟損失250億到300億之間,入選2003年國際十大原因分析:俄亥俄州的第一能源公司下屬的電力監(jiān)測與控制管理系統(tǒng)軟件XA/21出現(xiàn)錯誤,系統(tǒng)中重要的預警部分出現(xiàn)嚴重故障,負責預警服務(wù)的主服務(wù)器與備份服務(wù)器連接失控,錯誤沒有得到及時通報和處理,最終多個重要設(shè)備出現(xiàn)故障,導致大規(guī)模停電332023/2/7近期出現(xiàn)的重大事故1996年6月4日,歐洲空間局的阿麗亞娜火箭,發(fā)射后37秒爆炸。損失6億美元原因分析:ADA語言編寫的一段程序,將一個64位浮點整數(shù)轉(zhuǎn)換為16位有符號整數(shù)時,產(chǎn)生溢出,導致系統(tǒng)慣性參考系統(tǒng)完全崩潰342023/2/7計算機系統(tǒng)的軟件可靠性問題隨著對計算機需求和依賴的與日俱增,計算機系統(tǒng)的規(guī)模和復雜性急劇增加,使得計算機軟件的數(shù)量以驚人的速度急劇膨脹。與此同時,計算機出現(xiàn)故障引起系統(tǒng)失效的可能性也逐漸增加。352023/2/7計算機系統(tǒng)的軟件可靠性問題由于計算機硬件技術(shù)的進步,元器件可靠性的提高,硬件設(shè)計和驗證技術(shù)的成熟,硬件故障相對顯得次要了,軟件故障正逐漸成為導致計算機系統(tǒng)失效和停機的主要因素。362023/2/7計算機系統(tǒng)的軟件可靠性問題隨著計算機技術(shù)的飛速發(fā)展,計算機系統(tǒng)的規(guī)模和復雜性急劇增加,其軟件開發(fā)成本以及由于軟件故障而造成的經(jīng)濟損失也正在增加,軟件質(zhì)量問題已成為人們共同關(guān)注的焦點。軟件測試是對軟件需求分析、設(shè)計規(guī)格說明和編碼的最終復審,是軟件質(zhì)量保證的關(guān)鍵步驟。372023/2/7計算機系統(tǒng)的軟件可靠性問題隨著軟件系統(tǒng)規(guī)模和復雜性的增加,進行專業(yè)化高效軟件測試的要求越來越嚴格,軟件測試職業(yè)的價值逐步得到了認可,軟件測試技術(shù)已作為一門新興產(chǎn)業(yè)而快速發(fā)展起來了。382023/2/7軟件測試的目的定義11983年IEEE(國際電子電氣工程師協(xié)會)提出的軟件工程標準術(shù)語中給軟件測試下的定義是:使用人工或自動手段來運行或測定某個系統(tǒng)的過程,其目的在于檢驗它是否滿足規(guī)定的需求或是弄清預期結(jié)果與實際結(jié)果之間的差別”。392023/2/7軟件測試的目的定義2軟件測試是根據(jù)軟件開發(fā)各階段的規(guī)格說明和程序的內(nèi)部結(jié)構(gòu)而精心設(shè)計一批測試用例,并利用這些測試用例去執(zhí)行程序,以發(fā)現(xiàn)軟件故障的過程。該定義強調(diào)尋找故障是測試的目的。402023/2/7軟件測試的目的定義3軟件測試是一種軟件質(zhì)量保證活動,其動機是通過一些經(jīng)濟有效的方法,發(fā)現(xiàn)軟件中存在的缺陷,從而保證軟件質(zhì)量。質(zhì)量保證的觀點。412023/2/7軟件測試準則所有測試都應(yīng)該能追溯到用戶需求。應(yīng)該遠在測試開始之前就制定出測試計劃。把Pareto原理應(yīng)用到軟件測試中。Pareto原理說明,測試發(fā)現(xiàn)的錯誤中的80%很可能是由程序中20%的模塊造成的。422023/2/7軟件測試準則應(yīng)該從“小規(guī)?!睖y試開始,并逐步進行“大規(guī)?!睖y試。窮舉測試是不可能的。為了達到最佳的測試效果,應(yīng)該由獨立的第三方從事測試工作。432023/2/7軟件測試方法測試任何產(chǎn)品都有兩種方法:如果已經(jīng)知道了產(chǎn)品應(yīng)該具有的功能,可以通過測試來檢驗是否每個功能都能正常使用;如果知道產(chǎn)品的內(nèi)部工作過程,可以通過測試來檢驗產(chǎn)品內(nèi)部動作是否按照規(guī)格說明書的規(guī)定正常進行。前一種方法稱為黑盒測試,后一種方法稱為白盒測試。442023/2/7軟件測試方法黑盒測試法把程序看作一個黑盒子,完全不考慮程序的內(nèi)部結(jié)構(gòu)和處理過程。也就是說,黑盒測試是在程序接口進行的測試,它只檢查程序功能是否能按照規(guī)格說明書的規(guī)定正常使用,程序是否能適當?shù)亟邮蛰斎霐?shù)據(jù)并產(chǎn)生正確的輸出信息,程序運行過程中能否保持外部信息的完整性。黑盒測試又稱為功能測試。452023/2/7軟件測試方法白盒測試法與黑盒測試法相反,它的前提是可以把程序看成裝在一個透明的白盒子里,測試者完全知道程序的結(jié)構(gòu)和處理算法。這種方法按照程序內(nèi)部的邏輯測試程序,檢測程序中的主要執(zhí)行通路是否都能按預定要求正確工作。白盒測試又稱為結(jié)構(gòu)測試。462023/2/7軟件測試過程472023/2/7軟件測試過程單元測試目的:檢測程序模塊中有無故障存在對象:軟件設(shè)計的最小單位,與程序設(shè)計和編程實現(xiàn)關(guān)系密切集成測試目的:發(fā)現(xiàn)與接口有關(guān)的模塊之間的問題方法:非增式集成測試法和增式集成測試法482023/2/7集成測試非增式集成測試法對每一個模塊進行單元測試在此基礎(chǔ)上按程序結(jié)構(gòu)圖將各模塊連接起來,把連接后的程序當作一個整體進行測試增式集成測試法不斷地把待測模塊連接到已測模塊集(或其子集)上,對待測模塊進行測試,直到最后一個模塊測試完畢492023/2/7軟件測試過程確認測試目的對軟件產(chǎn)品進行評估,以確定其是否滿足軟件需求的過程502023/2/7軟件測試過程系統(tǒng)測試目的:針對系統(tǒng)中各個組成部分進行的綜合性檢驗,證明系統(tǒng)的性能測試人員要求:系統(tǒng)開發(fā)人員不能進行系統(tǒng)測試。系統(tǒng)開發(fā)組織不能負責系統(tǒng)測試。512023/2/7驗收測試目的:向用戶表明所開發(fā)的軟件系統(tǒng)能夠像用戶所預定的那樣工作主要任務(wù):明確規(guī)定驗收測試通過的標準;確定驗收測試方法;確定驗收測試的組織和可利用的資源;確定測試結(jié)果的分析方法;522023/2/7驗收測試主要任務(wù):制定驗收測試計劃并進行評審;設(shè)計驗收測試的測試用例;審查驗收測試的準備工作;執(zhí)行驗收測試;分析測試結(jié)果,決定是否通過驗收。532023/2/7軟件測試與軟件開發(fā)的關(guān)系542023/2/7軟件測試過程模型V模型552023/2/7軟件測試過程模型W模型562023/2/7軟件測試環(huán)境的搭建測試環(huán)境是指用來運行軟件的環(huán)境。硬件軟件網(wǎng)絡(luò)數(shù)據(jù)準備測試工具572023/2/7硬件環(huán)境主要是指PC機、筆記本電腦、服務(wù)器、各種PDA終端等。例如現(xiàn)要測試微軟的word2003這一款軟件,那么是在PC機上測試還是在筆記本電腦上測試?如果在PC機上測試,那么CPU是奔騰2.4G,還是賽揚1.7G?內(nèi)存是DDR512M,還是SD128M?

不同的機器類型,不同的機器配置,必然會導致不同的反應(yīng)速度,因此測試一款軟件時一定要考慮硬件配置。582023/2/7軟件環(huán)境主要是軟件運行的操作系統(tǒng)。比如word2003是在Window2003下檢測,還是在WindowXP下檢測,這里可能會有兼容性的問題。592023/2/7網(wǎng)絡(luò)環(huán)境主要指的是C/S結(jié)構(gòu)還是B/S結(jié)構(gòu)。例如要測試微軟的outlook2003這一款軟件,那么是在局域網(wǎng)里測,還是在互聯(lián)網(wǎng)里測?如果在局域網(wǎng)中測,那么是在10M的局域網(wǎng)里測,還是在100M的局域網(wǎng)里測?不同的網(wǎng)絡(luò)類型,不同的傳輸速度,必然會導致不同的收發(fā)速度,因此測試一款軟件時也不能忽視網(wǎng)絡(luò)的因素。602023/2/7數(shù)據(jù)準備主要指的是測試數(shù)據(jù)的準備。測試數(shù)據(jù)的準備應(yīng)考慮數(shù)據(jù)量和真實性,即盡可能獲取大量的真實的數(shù)據(jù),包括正確和錯誤的數(shù)據(jù)。當無法取得真實數(shù)據(jù)時應(yīng)盡可能模擬出大量的數(shù)據(jù)。612023/2/7測試工具目前市場上的測試工具很多,可分為靜態(tài)測試工具、動態(tài)測試工具、黑盒測試工具、白盒測試工具、測試執(zhí)行評估工具、測試管理工具等因此,對測試工具的選擇是一個比較重要的問題,應(yīng)根據(jù)測試需求和實際條件來選擇已有的測試工具,或購買、自行開發(fā)相應(yīng)的測試工具622023/2/7搭建軟件測試環(huán)境還應(yīng)注意以下幾點:盡量模擬用戶的真實使用環(huán)境;測試環(huán)境中盡量不要安裝其它與被測軟件無關(guān)的軟件,但最好安裝殺毒軟件,以確保系統(tǒng)沒有病毒;測試環(huán)境應(yīng)與開發(fā)環(huán)境獨立。632023/2/7第二部分黑盒測試法及其用例設(shè)計黑盒測試法概述三角形問題及NextDate函數(shù)等價類劃分法邊界值分析法因果圖法決策表法642023/2/7三角形問題輸入三個整數(shù)a、b、c,分別作為三角形的三條邊,現(xiàn)通過程序判斷由三條邊構(gòu)成的三角形的類型為等邊三角形、等腰三角形、一般三角形(特殊的還有直角三角形),以及構(gòu)不成三角形。結(jié)論:三角形問題的復雜之處在于輸入與輸出之間的關(guān)系比較復雜。652023/2/7三角形問題現(xiàn)在要求輸入三整數(shù)a、b、c,必須滿足以下條件條件11≤a≤100條件21≤b≤100條件31≤c≤100條件4a<b+c條件5b<a+c條件6c<a+b662023/2/7如果輸入值a、b、c不滿足條件1、條件2和條件3,程序給出“邊的取值超出允許范圍”的信息。如果輸入值a、b、c滿足條件1、條件2和條件3,則輸出下列四種情況之一:如果不滿足條件4、條件5和條件6中的一個,則程序輸出為“非三角形”。如果三條邊相等,則程序輸出為“等邊三角形”。如果恰好有兩條邊相等,則程序輸出為“等腰三角形”。如果三條邊都不相等,則程序輸出為“一般三角形”。672023/2/7NextDate函數(shù)NextDate函數(shù)包含三個變量month、day和year,函數(shù)的輸出為輸入日期后一天的日期。要求輸入變量month、day和year均為整數(shù)值,并且滿足下列條件:條件11≤month≤12條件21≤day≤31條件31912≤year≤2050682023/2/7NextDate函數(shù)NextDate函數(shù)說明另一種復雜的關(guān)系,即輸入變量之間邏輯關(guān)系的復雜性。結(jié)論:在NextDate函數(shù)中有兩種復雜性的輸入來源,一是輸入域的復雜性,二是確定閏年的規(guī)則并要增加“額外天”。692023/2/7等價類劃分法等價類的劃分原則等價類劃分法的測試用例設(shè)計使用等價類劃分法測試的實例702023/2/7等價類劃分等價類劃分法是一種重要的、常用的黑盒測試方法,它將不能窮舉的測試過程進行合理分類,從而保證設(shè)計出來的測試用例具有完整性和代表性。等價類劃分法是把所有可能的輸入數(shù)據(jù),即程序的輸入域劃分為若干部分(子集),然后從每一子集中選取少數(shù)具有代表性的數(shù)據(jù)作為測試用例。712023/2/7例子設(shè)計這樣的測試用例,來實現(xiàn)一個對所有實數(shù)進行開平方運算(y=sqrt(x))的程序的測試。思考方向:由于開平方運算只對非負實數(shù)有效,這時需要將所有的實數(shù)(輸入域x)進行劃分,可以分成:正實數(shù)、0和負實數(shù)。假設(shè)我們選定+1.4444代表正實數(shù),-2.345代表負實數(shù),則為該程序設(shè)計的測試用例的輸入為+1.4444、0和-2.345。722023/2/7等價類劃分所謂等價類是指某個輸入域的子集合。在該子集合中,各個輸入數(shù)據(jù)對于揭露程序中的錯誤都是等效的,它們具有等價特性,即每一類的代表性數(shù)據(jù)在測試中的作用都等價于這一類中其它數(shù)據(jù)。這樣,對于表征該類的數(shù)據(jù)輸入將能代表整個子集合的輸入。因此,可以合理假定:測試某等價類的代表值就是等效于對于這一類其它值的測試。732023/2/7等價類的劃分原則等價類是輸入域的某個子集合,而所有等價類的并集就是整個輸入域。因此,等價類對于測試有兩個重要的意義:完備性:整個輸入域提供一種形式的完備性無冗余性:若互不相交則可保證一種形式的無冗余性742023/2/7等價類的劃分原則如何劃分?先從程序的規(guī)格說明書中找出各個輸入條件,再為每個輸入條件劃分兩個或多個等價類,形成若干的互不相交的子集。采用等價類劃分法設(shè)計測試用例通常分兩步進行:確定等價類,列出等價類表。確定測試用例。752023/2/7等價類的劃分原則劃分等價類可分為兩種情況:有效等價類是指對軟件規(guī)格說明而言,是有意義的、合理的輸入數(shù)據(jù)所組成的集合。利用有效等價類,能夠檢驗程序是否實現(xiàn)了規(guī)格說明中預先規(guī)定的功能和性能。762023/2/7等價類的劃分原則劃分等價類可分為兩種情況:無效等價類是指對軟件規(guī)格說明而言,是無意義的、不合理的輸入數(shù)據(jù)所構(gòu)成的集合。利用無效等價類,可以鑒別程序異常處理的情況,檢查被測對象的功能和性能的實現(xiàn)是否有不符合規(guī)格說明要求的地方。772023/2/7等價類劃分的原則啟發(fā)式規(guī)則按照區(qū)間劃分在輸入條件規(guī)定了取值范圍或值的個數(shù)的情況下,可以確定一個有效等價類和兩個無效等價類。782023/2/7等價類劃分的原則啟發(fā)式規(guī)則按照數(shù)值劃分在規(guī)定了一組輸入數(shù)據(jù)(假設(shè)包括n個輸入值),并且程序要對每一個輸入值分別進行處理的情況下,可確定n個有效等價類(每個值確定一個有效等價類)和一個無效等價類(所有不允許的輸入值的集合)。792023/2/7等價類劃分的原則啟發(fā)式規(guī)則按照數(shù)值集合劃分在輸入條件規(guī)定了輸入值的集合或規(guī)定了“必須如何”的條件下,可以確定一個有效等價類和一個無效等價類(該集合有效值之外)。802023/2/7等價類劃分的原則啟發(fā)式規(guī)則按照限制條件或規(guī)則劃分在規(guī)定了輸入數(shù)據(jù)必須遵守的規(guī)則或限制條件的情況下,可確定一個有效等價類(符合規(guī)則)和若干個無效等價類(從不同角度違反規(guī)則)。812023/2/7等價類劃分的原則啟發(fā)式規(guī)則細分等價類在確知已劃分的等價類中各元素在程序中的處理方式不同的情況下,則應(yīng)再將該等價類進一步劃分為更小的等價類,并建立等價類表。822023/2/7等價類劃分法測試用例設(shè)計在設(shè)計測試用例時,應(yīng)同時考慮有效等價類和無效等價類測試用例的設(shè)計。832023/2/7等價類劃分法的測試用例設(shè)計根據(jù)已列出的等價類表可確定測試用例,具體過程如下首先為等價類表中的每一個等價類分別規(guī)定一個唯一的編號。設(shè)計一個新的測試用例,使它能夠盡量覆蓋尚未覆蓋的有效等價類。重復這個步驟,直到所有的有效等價類均被測試用例所覆蓋。設(shè)計一個新的測試用例,使它僅覆蓋一個尚未覆蓋的無效等價類。重復這一步驟,直到所有的無效等價類均被測試用例所覆蓋。842023/2/7輸入3個整數(shù)有效等價類編號無效等價類編號整數(shù)1一邊為非整數(shù)二邊為非整數(shù)三邊為非整數(shù)4563個數(shù)2只有一條邊只有二條邊多于三條邊7891≤a≤1001≤b≤1001≤c≤1003一邊為0二邊為0三邊為0101112一邊<0二邊<0三邊<0131415一邊>100二邊>100三邊>100161718852023/2/7等價類劃分測試的實例測試用例Test1=(3,4,5)便可以覆蓋有效等價類1~3.覆蓋無效等價類的測試用例見下表。862023/2/7測試用例輸入a、b、c期望輸出覆蓋等價類Test21.5,4,5提示“請輸入1~100之間的整數(shù)”4Test33.5,2.5,5提示“請輸入1~100之間的整數(shù)”5Test42.5,4.5,5.5提示“請輸入1~100之間的整數(shù)”6Test53提示“請輸入三條邊長”7Test64,5提示“請輸入三條邊長”8Test72,3,4,5提示“請輸入三條邊長”9Test83,0,8提示“邊長不為0”10Test90,6,0提示“邊長不為0”11Test100,0,0提示“邊長不為0”12Test11-3,4,6提示“邊長不能為負”13Test122,-7,-5提示“邊長不能為負”14Test13-3,-5,-7提示“邊長不能為負”15Test14101,4,8提示“請輸入1~100之間的整數(shù)”16Test153,101,101提示“請輸入1~100之間的整數(shù)”17Test16101,101,101提示“請輸入1~100之間的整數(shù)”18872023/2/7等價類劃分測試的實例三角形問題的等價類測試在多數(shù)情況下,是從輸入域劃分等價類的,但并非不能從被測程序的輸出域反過來定義等價類,事實上,這對于三角形問題卻是最簡單的劃分方法。在三角形問題中,有四種可能的輸出:等邊三角形、等腰三角形、一般三角形和非三角形。882023/2/7等價類劃分測試的實例利用這些信息能夠確定下列輸出(值域)等價類R1={<a,b,c>:邊為a,b,c的等邊三角形}R2={<a,b,c>:邊為a,b,c的等腰三角形}R3={<a,b,c>:邊為a,b,c的一般三角形}R4={<a,b,c>:邊為a,b,c不能組成三角形}892023/2/7等價類劃分測試的實例測試用例abc預期輸出Test1555等邊三角形Test2223等腰三角形Test3345一般三角形Test4412非三角形902023/2/7等價類劃分測試的實例保險公司計算保費費率的程序某保險公司的人壽保險的保費計算方式為:投保額×保險費率其中,保險費率依點數(shù)不同而有別,10點及10點以上保險費率為0.6%,10點以下保險費率為0.1%;而點數(shù)又是由投保人的年齡、性別、婚姻狀況和撫養(yǎng)人數(shù)來決定,具體規(guī)則如下:912023/2/7等價類劃分測試的實例年齡

性別婚姻撫養(yǎng)人數(shù)

20~3940~59其它

M

F已婚

未婚

1人扣0.5點最多扣3點(四舍五入取整)

6點

4點

2點

5點

3點

3點

5點922023/2/7等價類劃分測試的實例分析程序規(guī)格說明中給出和隱含的對輸入條件的要求,列出等價類表(包括有效等價類和無效等價類)。年齡:一位或兩位非零整數(shù),值的有效范圍為1~99性別:一位英文字符,只能取值‘M’或’F’婚姻:字符,只能取值‘已婚’或‘未婚’撫養(yǎng)人數(shù):空白或一位非零整數(shù)(1~9)點數(shù):一位或兩位非零整數(shù),值的范圍為1~99根據(jù)等價類表,設(shè)計能覆蓋所有等價類的測試用例。932023/2/7輸入條件有效等價類編號無效等價類編號年齡20~39歲140~59歲21~19歲60~99歲3小于112大于9913性別單個英文字符4非英文字符14非單個英文字符15‘M’5除‘M’和‘F’之外的其它單個字符16‘F’6婚姻已婚7除’已婚’和’未婚’之外的其它字符17未婚8撫養(yǎng)人數(shù)空白9除空白和數(shù)字之外的其它字符181~6人10小于1196~9人11大于920942023/2/7測試用例編號輸入數(shù)據(jù)預期輸出年齡性別婚姻撫養(yǎng)人數(shù)保險費率127F未婚空白0.6%250M已婚20.6%370F已婚70.1%40M未婚空白無法推算5100F已婚3無法推算699男已婚4無法推算71Child未婚空白無法推算845N已婚5無法推算938F離婚1無法推算1062M已婚沒有無法推算1118F未婚0無法推算1240M未婚10無法推算952023/2/7等價類劃分(習題)請用等價類劃分法為NextDate函數(shù)列出輸入域等價類表,并設(shè)計相應(yīng)的測試用例。962023/2/7邊界值分析法邊界值分析法概要邊界值分析法測試用例邊界值分析法測試舉例972023/2/7邊界值分析法概要邊界值分析法(BoundaryValueAnalysis)是一種很實用的對輸入或輸出的邊界值進行測試的黑盒測試用例設(shè)計方法,具有很強的發(fā)現(xiàn)程序錯誤的能力。通常邊界值分析法是作為對等價類劃分法的補充,這種情況下,其測試用例來自等價類的邊界。982023/2/7邊界值分析法概要為什么使用邊界值分析法?無數(shù)的測試實踐表明,大量的故障往往發(fā)生在輸入定義域或輸出值域的邊界上,而不是在其內(nèi)部。因此,針對各種邊界情況設(shè)計測試用例,通常會取得很好的測試效果。992023/2/7邊界值分析法概要怎樣用邊界值分析法設(shè)計測試用例?首先確定邊界情況。通常輸入或輸出等價類的邊界就是應(yīng)該著重測試的邊界情況。選取正好等于、剛剛大于或剛剛小于邊界的值作為測試數(shù)據(jù),而不是選取等價類中的典型值或任意值。1002023/2/7邊界值分析法概要例子-常見的邊界值對16位的整數(shù)而言32767和-32768是邊界屏幕上光標在最左上、最右下位置報表的第一行和最后一行數(shù)組元素的第一個和最后一個循環(huán)的第0次、第1次和倒數(shù)第2次、最后一次1012023/2/7邊界值分析法概要邊界值分析法遵循的幾條原則:如果輸入條件對取值范圍進行了界定,則應(yīng)以邊界內(nèi)部以及剛超出范圍邊界外的值作為測試用例。若范圍的下界為條件x、上界為y,則測試用例應(yīng)當包含x、y以及稍小于x和稍大于y的值。如果對取值個數(shù)進行了界定,則應(yīng)當分別以最大、最小個數(shù)及稍小于最小、稍大于最大個數(shù)作為測試用例。1022023/2/7邊界值分析法概要邊界值分析法遵循的幾條原則:對于輸出條件,同樣可以應(yīng)用上面提到的兩條原則來進行測試用例設(shè)計。如果程序規(guī)格說明書中指明輸入或者輸出域是一個有序的集合,如順序文件、表格等,就應(yīng)當注意選取該有序集合中的第一個和最后一個元素作為測試用例。1032023/2/7邊界值分析邊界值分析使用與等價類劃分法相同的劃分,只是邊界值分析假定錯誤更多地存在于劃分的邊界上,因此在等價類的邊界上以及兩側(cè)的情況設(shè)計測試用例。1042023/2/7邊界值分析例:測試計算平方根的函數(shù)輸入:實數(shù)輸出:實數(shù)規(guī)格說明:當輸入一個0或比0大的數(shù)的時候,返回其正平方根;當輸入一個小于0的數(shù)時,顯示錯誤信息“平方根非法-輸入值小于0”并返回0;庫函數(shù)Print-Line可以用來輸出錯誤信息。1052023/2/7邊界值分析等價類劃分:可以考慮作出如下劃分:輸入(i)<0和(ii)>=0輸出(a)>=0和(b)Error測試用例有兩個:輸入4,輸出2。對應(yīng)于(ii)和(a)。輸入-10,輸出0和錯誤提示。對應(yīng)于(i)和(b)。1062023/2/7邊界值分析邊界值分析:劃分(ii)的邊界為0和最大正實數(shù);劃分(i)的邊界為最小負實數(shù)和0。由此得到以下測試用例:輸入{最小負實數(shù)}

輸入{絕對值很小的負數(shù)}

輸入0

輸入{絕對值很小的正數(shù)}

輸入{最大正實數(shù)}1072023/2/7邊界值分析通常情況下,軟件測試所包含的邊界檢驗有幾種類型:數(shù)字、字符、位置、質(zhì)量、大小、速度、方位、尺寸、空間等相應(yīng)地,以上類型的邊界值應(yīng)該在:最大/最小、首位/末位、上/下、最快/最慢、最高/最低、最短/最長、空/滿等情況下1082023/2/7舉例-利用邊界值作為測試數(shù)據(jù)項邊界值測試用例的設(shè)計思路字符起始-1個字符/結(jié)束+1個字符假設(shè)一個文本輸入?yún)^(qū)域允許輸入1個到255個字符,輸入1個和255個字符作為有效等價類;輸入0個和256個字符作為無效等價類,這幾個數(shù)值都屬于邊界條件值數(shù)值最小值-1/最大值+1假設(shè)某軟件的數(shù)據(jù)輸入域要求輸入5位的數(shù)據(jù)值,可以使用10000作為最小值、99999作為最大值;然后使用剛好小于5位和大于5位的數(shù)值來作為邊界條件??臻g小于空余空間一點/大于滿空間一點例如在用U盤存儲數(shù)據(jù)時,使用比剩余磁盤空間大一點(幾KB)的文件作為邊界條件。1092023/2/7內(nèi)部邊界值分析在多數(shù)情況下,邊界值條件是基于應(yīng)用程序的功能設(shè)計而需要考慮的因素,可以從軟件的規(guī)格說明或常識中得到,也是最終用戶可以很容易發(fā)現(xiàn)問題的。然而,在測試用例設(shè)計過程中,某些邊界值條件是不需要呈現(xiàn)給用戶的,或者說用戶是很難注意到的,但同時確實屬于檢驗范疇內(nèi)的邊界條件,稱為內(nèi)部邊界值條件或子邊界值條件。1102023/2/7內(nèi)部邊界值分析內(nèi)部邊界值條件主要有下面幾種:數(shù)值的邊界值檢驗字符的邊界值檢驗其它邊界值檢驗1112023/2/7小結(jié)在實際的測試用例設(shè)計中,需要將基本的軟件設(shè)計要求和程序定義的要求結(jié)合起來,即結(jié)合基本邊界值條件和內(nèi)部邊界值條件來設(shè)計有效的測試用例。1122023/2/7數(shù)值的邊界值檢驗計算機是基于二進制進行工作的,因此,軟件的任何數(shù)值運算都有一定的范圍限制。項范圍或值位(bit)0或1字節(jié)(byte)0~255字(word)0~65535(單字)或0~4294967295(雙字)千(K)1024兆(M)1048576吉(G)10737418241132023/2/7字符的邊界值檢驗在計算機軟件中,字符也是很重要的表示元素,其中ASCII和Unicode是常見的編碼方式。下表中列出了一些常用字符對應(yīng)的ASCII碼值。字符ASCII碼值字符ASCII碼值空(null)0A65空格(space)32a97斜杠(/)47Z90048z122冒號(:)58單引號(‘)96@641142023/2/7邊界值分析法測試用例采用邊界值分析測試的基本思想是:故障往往出現(xiàn)在輸入變量的邊界值附近。因此,邊界值分析法利用輸入變量的最小值(min)、略大于最小值(min+)、輸入值域內(nèi)的任意值(nom)、略小于最大值(max-)和最大值(max)來設(shè)計測試用例。1152023/2/7邊界值分析法測試用例邊界值分析法是基于可靠性理論中稱為“單故障”的假設(shè),即有兩個或兩個以上故障同時出現(xiàn)而導致軟件失效的情況很少,也就是說,軟件失效基本上是由單故障引起的。因此,在邊界值分析法中獲取測試用例的方法是:每次保留程序中一個變量,讓其余的變量取正常值,被保留的變量依次取min、min+、nom、max-和max。對程序中的每個變量重復上一步。1162023/2/7邊界值分析法測試用例(續(xù))例1:有兩個輸入變量x1(a≤x1≤b)和x2(c≤x2≤d)的程序F的邊界值分析測試用例如下:{<x1nom,x2min>,<x1nom,x2min+>,<x1nom,x2nom>,<x1nom,x2max>,<x1nom,x2max->,<x1min,x2nom>,<x1min+,x2nom>,<x1max,x2nom>,<x1max-,x2nom>}x1x2a

bcd1172023/2/7邊界值分析法測試用例(續(xù))例2:有二元函數(shù)f(x,y),其中x∈[1,12],y∈[1,31]。則采用邊界值分析法設(shè)計的測試用例是:

{<1,15>,<2,15>,<11,15>,<12,15>,<6,15>,<6,1>,<6,2>,<6,30>,<6,31>}推論:對于一個含有n個變量的程序,采用邊界值分析法測試程序會產(chǎn)生4n+1個測試用例。1182023/2/7邊界值分析法測試用例(續(xù))練習:有函數(shù)f(x,y,x),其中x∈[1900,2100],y∈[1,12],z∈[1,31]的。請寫出該函數(shù)采用邊界值分析法設(shè)計的測試用例。

{<2000,6,1>,<2000,6,2>,<2000,6,30>,<2000,6,31>,<2000,1,15>,<2000,2,15>,<2000,11,15>,<2000,12,15>,<1900,6,15>,<1901,6,15>,<2099,6,15>,<2100,6,15>,<2000,6,15>}1192023/2/7健壯性測試健壯性測試是作為邊界值分析的一個簡單的擴充,它除了對變量的5個邊界值分析取值外,還需要增加一個略大于最大值(max+)以及略小于最小值(min-)的取值,檢查超過極限值時系統(tǒng)的情況。因此,對于有n個變量的函數(shù)采用健壯性測試需要6n+1個測試用例。1202023/2/7健壯性測試前面例1中的程序F的健壯性測試如下圖所示:x1x2a

bcd1212023/2/7邊界值分析法測試舉例實例1三角形問題的邊界值分析測試用例在三角形問題描述中,除了要求邊長是整數(shù)外,沒有給出其它的限制條件。在此,我們將三角形每邊邊長的取范圍值設(shè)值為[1,100]。說明:如果程序規(guī)格說明中沒有顯式地給出邊界值,則可以在設(shè)計測試用例前先設(shè)定取值的下限值和上限值。1222023/2/7測試用例abc預期輸出Test1Test2Test3Test4Test560606050506060605050126099100等腰三角形等腰三角形等邊三角形等腰三角形非三角形Test6Test7Test8Test960605050129910060605050等腰三角形等腰三角形等腰三角形非三角形Test10Test11Test12Test1312991006060505060605050等腰三角形等腰三角形等腰三角形非三角形1232023/2/7邊界值分析法測試舉例實例2NextDate函數(shù)的邊界值分析測試用例在NextDate函數(shù)中,隱含規(guī)定了變量mouth和變量day的取值范圍為1≤mouth≤12和1≤day≤31,并設(shè)定變量year的取值范圍為1912≤year≤2050。1242023/2/7測試用例mouthdayyear預期輸出Test1Test2Test3Test4Test5Test6Test766666661515151515151519111912191319752049205020511911.6.161912.6.161913.6.161975.6.162049.6.162050.6.162051.6.16Test8Test9Test10Test11Test12Test13666666-112303132200120012001200120012001day超出[1…31]2001.6.22001.6.32001.7.1輸入日期超界day超出[1…31]Test14Test15Test16Test17Test18Test19-112111213151515151515200120012001200120012001Mouth超出[1…12]2001.1.162001.2.162001.11.162001.12.16Month超出[1…12]1252023/2/7習題找零錢最佳組合假設(shè)商店貨品價格(R)都不大于100元(且為整數(shù)),若顧客付款(P)在100元內(nèi),現(xiàn)有一個程序能在每位顧客付款后給出找零錢的最佳組合(找給顧客貨幣張數(shù)最少)。假定此商店的貨幣面值只包括:50元(N50)、10元(N10)、5元(N5)、1元(N1)四種。請結(jié)合等價類劃分法和邊界值分析法為上述程序設(shè)計出相應(yīng)的測試用例。1262023/2/7因果圖法因果圖法簡介因果圖因果圖法測試舉例1272023/2/7因果圖法的簡介等價類劃分法和邊界值分析方法都是著重考慮輸入條件,但沒有考慮輸入條件的各種組合、輸入條件之間的相互制約關(guān)系。這樣雖然各種輸入條件可能出錯的情況已經(jīng)測試到了,但多個輸入條件組合起來可能出錯的情況卻被忽視了。(回憶一下NASA的火星探測器,中俄2011.11.9日失敗案例)1282023/2/7因果圖法的簡介如果在測試時必須考慮輸入條件的各種組合,則可能的組合數(shù)目將是天文數(shù)字,因此必須考慮采用一種適合于描述多種條件的組合、相應(yīng)產(chǎn)生多個動作的形式來進行測試用例的設(shè)計,這就需要利用因果圖(邏輯模型)。1292023/2/7因果圖法的簡介因果圖法是基于這樣的一種思想:一些程序的功能可以用判定表(或稱決策表)的形式來表示,并根據(jù)輸入條件的組合情況規(guī)定相應(yīng)的操作。因果圖法的定義:是一種利用圖解法分析輸入的各種組合情況,從而設(shè)計測試用例的方法,它適合于檢查程序輸入條件的各種組合情況。1302023/2/7因果圖法的簡介采用因果圖法設(shè)計測試用例的步驟:根據(jù)程序規(guī)格說明書描述,分析并確定因(輸入條件)和果(輸出結(jié)果或程序狀態(tài)的改變),畫出因果圖。將得到的因果圖轉(zhuǎn)換為判定表。為判定表中每一列所表示的情況設(shè)計一個測試用例。1312023/2/7因果圖法的簡介使用因果圖法的優(yōu)點:考慮到了輸入情況的各種組合以及各個輸入情況之間的相互制約關(guān)系。能夠幫助測試人員按照一定的步驟,高效率的開發(fā)測試用例。因果圖法是將自然語言規(guī)格說明轉(zhuǎn)化成形式語言規(guī)格說明的一種嚴格的方法,可以指出規(guī)格說明存在的不完整性和二義性。1322023/2/7因果圖因果圖中用來表示4種因果關(guān)系的基本符號:c1e1恒等c1e1非~c1e1或c2c3∨c1e1與c2∧1332023/2/7因果圖因果圖中的4種基本關(guān)系:在因果圖的基本符號中,圖中的左結(jié)點ci表示輸入狀態(tài)(或稱原因),右結(jié)點ei表示輸出狀態(tài)(或稱結(jié)果)。ci與ei取值0或1,0表示某狀態(tài)不出現(xiàn),1則表示某狀態(tài)出現(xiàn)。恒等:若c1是1,則e1也為1,否則e1為0。非:若c1是1,則e1為0,否則e1為1?;颍喝鬰1或c2或c3是1,則e1為1,否則e1為0。與:若c1和c2都是1,則e1為1,否則e1為0。1342023/2/7因果圖因果圖中的約束在實際問題中輸入狀態(tài)相互之間、輸出狀態(tài)相互之間可能存在某些依賴關(guān)系,稱為“約束”。對于輸入條件的約束有E、I、O、R四種約束,對于輸出條件的約束只有M約束。1352023/2/7因果圖因果圖中的約束E約束(異):a和b中最多有一個可能為1,即a和b不能同時為1。I約束(或):a、b、c中至少有一個必須為1,即a、b、c不能同時為0。O約束(唯一):a和b必須有一個且僅有一個為1。R約束(要求):a是1時,b必須是1,即a為1時,b不能為0。M約束(強制):若結(jié)果a為1,則結(jié)果b強制為0。1362023/2/7因果圖因果圖中用來表示約束關(guān)系的約束符號:ab異Eab或Icab唯一ORab要求Mab強制1372023/2/7因果圖因果圖法最終生成的是決策表。利用因果圖生成測試用例的基本步驟如下:分析軟件規(guī)格說明中哪些是原因(即輸入條件或輸入條件的等價類),哪些是結(jié)果(即輸出條件),并給每個原因和結(jié)果賦予一個標識符。分析軟件規(guī)格說明中的語義,找出原因與結(jié)果之間、原因與原因之間對應(yīng)的關(guān)系,根據(jù)這些關(guān)系畫出因果圖。1382023/2/7因果圖利用因果圖生成測試用例的基本步驟如下:由于語法或環(huán)境的限制,有些原因與原因之間、原因與結(jié)果之間的組合情況不可能出現(xiàn)。為表明這些特殊情況,在因果圖上用一些記號表明約束或限制條件。把因果圖轉(zhuǎn)換為決策表。根據(jù)決策表中的每一列設(shè)計測試用例。1392023/2/7因果圖法舉例實例用因果圖法測試以下程序。程序的規(guī)格說明要求:輸入的第一個字符必須是#或*,第二個字符必須是一個數(shù)字,此情況下進行文件的修改;如果第一個字符不是#或*,則給出信息N,如果第二個字符不是數(shù)字,則給出信息M。1402023/2/7因果圖法舉例解題步驟:分析程序的規(guī)格說明,列出原因和結(jié)果。找出原因與結(jié)果之間的因果關(guān)系、原因與原因之間的約束關(guān)系,畫出因果圖。將因果圖轉(zhuǎn)換成決策表。根據(jù)上一步中的決策表,設(shè)計測試用例的輸入數(shù)據(jù)和預期輸出。1412023/2/7因果圖法舉例分析程序規(guī)格說明中的原因和結(jié)果:原因結(jié)果

c1:第一個字符是#

e1:給出信息N

c2:第一個字符是*

e2:修改文件

c3:第二個字符是一個數(shù)字

e3:給出信息M1422023/2/7因果圖法舉例畫出因果圖(編號為10的中間結(jié)點是導出結(jié)果的進一步原因):c1c2c3e110e2e3~∨E~∧1432023/2/7因果圖法舉例將因果圖轉(zhuǎn)換成如下所示的決策表:12345678條件:C1C2C310111110101110010111010100100000動作:e1e2e3不可能√√√√√√√√√測試用例#3#A*6*BA1GT1442023/2/7因果圖法舉例根據(jù)決策表中的每一列設(shè)計測試用例:測試用例編號輸入數(shù)據(jù)預期輸出1#3修改文件2#A給出信息M3*6修改文件4*B給出信息M5A1給出信息N6GT給出信息N和信息M1452023/2/7習題使用因果圖法為三角形問題設(shè)計測試用例。某軟件的一個模塊的需求規(guī)格說明書中描述:年薪制員工:嚴重過失,扣年終風險金的4%;過失,扣年終風險金的2%。非年薪制員工:嚴重過失,扣當月薪資的8%;過失,扣當月薪資的4%。請繪制出因果圖和判定表,并給出相應(yīng)的測試用例。1462023/2/7決策表法在所有的黑盒測試方法中,基于決策表(也稱判定表)的測試是最為嚴格、最具有邏輯性的測試方法。決策表的概念:決策表是分析和表達多邏輯條件下執(zhí)行不同操作的情況的工具。1472023/2/7決策表法決策表的優(yōu)點:能夠?qū)碗s的問題按照各種可能的情況全部列舉出來,簡明并避免遺漏。因此,利用決策表能夠設(shè)計出完整的測試用例集合。在一些數(shù)據(jù)處理問題當中,某些操作的實施依賴于多個邏輯條件的組合,即:針對不同邏輯條件的組合值,分別執(zhí)行不同的操作。決策表很適合于處理這類問題。1482023/2/7“閱讀指南”決策表12345678問題覺得疲倦?YYYYNNNN感興趣嗎?YYNNYYNN糊涂嗎?YNYNYNYN建議重讀√繼續(xù)√跳下一章√√休息√√√√1492023/2/7決策表的組成決策表通常由以下4部分組成:條件樁—列出問題的所有條件條件項—針對條件樁給出的條件列出所有可能的取值動作樁—列出問題規(guī)定的可能采取的操作動作項—指出在條件項各組取值情況下應(yīng)采取的動作1502023/2/7決策表的組成條件樁動作樁條件項動作項規(guī)則將任何一個條件組合的特定取值及相應(yīng)要執(zhí)行的動作稱為一條規(guī)則。在決策表中貫穿條件項和動作項的一列就是一條規(guī)則。1512023/2/7決策表的生成構(gòu)造決策表的5個步驟:確定規(guī)則的個數(shù)。有n個條件的決策表有2n個規(guī)則(每個條件取真、假值)。列出所有的條件樁和動作樁。填入條件項。填入動作項,得到初始決策表。簡化決策表,合并相似規(guī)則。1522023/2/7決策表的生成若表中有兩條以上規(guī)則具有相同的動作,并且在條件項之間存在極為相似的關(guān)系,便可以合并。合并后的條件項用符號“-”表示,說明執(zhí)行的動作與該條件的取值無關(guān),稱為無關(guān)條件。1532023/2/7三角形問題的決策表規(guī)則1-8規(guī)則9規(guī)則10規(guī)則11規(guī)則12規(guī)則13規(guī)則14規(guī)則15規(guī)則16條件:c1:a,b,c構(gòu)成三角形?c2:a=b?c3:a=c?c4:b=c?

N---

YYYY

YYYN

YYNY

YYNN

YNYY

YNYN

YNNY

YNNN動作:a1:非三角形a2:一般三角形a3:等腰三角形a4:等邊三角形a5:不可能

√√√√√√1542023/2/7決策表應(yīng)用NextDate函數(shù)的決策表測試用例設(shè)計問題分析:NextDate函數(shù)的三個變量之間在輸入定義域中存在一定的邏輯依賴關(guān)系,由于等價類劃分和邊界值分析測試都假設(shè)了變量是獨立的,如果采用上述兩種方法設(shè)計測試用例,那么這些依賴關(guān)系在機械的選取輸入值時可能會丟失。而采用決策表法則可以通過使用“不可能動作”的概念表示條件的不可能組合,來強調(diào)這種依賴關(guān)系。1552023/2/7決策表應(yīng)用說明:當決策表規(guī)模(指規(guī)則的數(shù)目,n個條件的決策表有2n個規(guī)則)較大時,可以通過擴展條目決策表(條件使用等價類)、代數(shù)簡化表、將大表“分解”為小表等方法。1562023/2/7決策表應(yīng)用為了獲得下一個日期,NextDate函數(shù)執(zhí)行如下操作如果輸入日期不是當月最后一天,則把day變量的值加1;如果輸入日期是1~11月份中某月的最后一天,則把day變量的值復位為1,month變量的值加1;如果輸入日期是12月的最后一天,則day變量和month變量的值都復位為1,year變量的值加1。1572023/2/7決策表應(yīng)用關(guān)于最后一天的判斷:如果是有31天的月份(1,3,5,7,8,10,12),day變量值為31;如果是有30天的月份(4,6,9,11),day變量值為30;如果是有29天的月份(閏年的2月),day變量值為29;如果是有28天的月份(非閏年的2月),day變量值為28。1582023/2/7決策表應(yīng)用根據(jù)所執(zhí)行的操作,可列出NextDate函數(shù)的動作樁:a1:不可能;a2:day加1;a3:day復位;a4:month加1;a5:month復位;a6:year加1考慮到?jīng)Q策表的規(guī)模,條件使用month、day、year變量的等價類,在以下等價類集合上建立決策表:1592023/2/7決策表應(yīng)用對于month變量的取值M1:{month:month有30天};M2:{month:month有31天,12月除外};M3:{month:month有12月};M4:{month:month是2月};對于day變量的取值D1:{day:1≤day≤27};D2:{day:day=28};D3:{day:day=29};D4:{day:day=30};D5:{day:day=31};對于year變量的取值Y1:{year:year是閏年};Y2:{year:year不是閏年}1602023/2/7決策表應(yīng)用決策表測試法適用于具有以下特征的應(yīng)用程序:if-then-else邏輯突出;輸入變量之間存在邏輯關(guān)系;涉及輸入變量子集的計算;輸入與輸出之間存在因果關(guān)系。1612023/2/7決策表應(yīng)用適用于使用決策表設(shè)計測試用例的條件:規(guī)格說明以決策表形式給出,或較容易轉(zhuǎn)換為決策表。條件的排列順序不會也不應(yīng)影響執(zhí)行的操作。規(guī)則的排列順序不會也不應(yīng)影響執(zhí)行的操作。當某一規(guī)則的條件已經(jīng)滿足,并確定要執(zhí)行的操作后,不必檢驗別的規(guī)則。如果某一規(guī)則的條件要執(zhí)行多個操作,這些操作的執(zhí)行順序無關(guān)緊要。1622023/2/7決策表測試應(yīng)用案例用決策表測試法測試以下程序:該程序有三個輸入變量month、day、year(month、day和year均為整數(shù)值,并且滿足:1≤month≤12和1≤day≤31),分別作為輸入日期的月份、日、年份,通過程序可以輸出該輸入日期在日歷上隔一天的日期例如,輸入為2004年11月29日,則該程序的輸出為2004年12月1日。1632023/2/7決策表測試應(yīng)用案例用決策表測試法測試分析各種輸入情況,列出為輸入變量month、day、year劃分的有效等價類。分析程序規(guī)格說明,結(jié)合以上等價類劃分的情況給出問題規(guī)定的可能采取的操作(即列出所有的動作樁)。根據(jù)(1)和(2),畫出簡化后的決策表。1642023/2/7決策表測試應(yīng)用案例month變量的有效等價類:M1:{month=4,6,9,11}M2:{month=1,3,5,7,8,10}M3:{month=12}M4:{month=2}day變量的有效等價類:D1:{1≤day≤26}D2:{day=27}D3:{day=28}D4:{day=29}D5:{day=30}D6:{day=31}year變量的有效等價類:Y1:{year是閏年}Y2:{year不是閏年}考慮各種有效的輸入情況,程序中可能采取的操作有以下六種:a1:day+2a2:day=2a3:day=1a4:month+1a5:month=1a6:year+11652023/2/7第三部分白盒測試方法白盒測試概述控制流測試邏輯覆蓋路徑測試謂詞測試數(shù)據(jù)流測試1662023/2/7白盒測試概述白盒測試也稱結(jié)構(gòu)測試或邏輯驅(qū)動測試,是針對被測單元內(nèi)部是如何進行工作的測試。它根據(jù)程序的控制結(jié)構(gòu)設(shè)計測試用例,主要用于軟件或程序驗證。白盒測試法檢查程序內(nèi)部邏輯結(jié)構(gòu),對所有邏輯路徑進行測試,是一種窮舉路徑的測試方法。1672023/2/7白盒測試概述但即使每條路徑都測試過了,仍然可能存在錯誤。因為:窮舉路徑測試無法檢查出程序本身是否違反了設(shè)計規(guī)范,即程序是否是一個錯誤的程序。窮舉路徑測試不可能查出程序因為遺漏路徑而出錯。窮舉路徑測試發(fā)現(xiàn)不了一些與數(shù)據(jù)相關(guān)的錯誤1682023/2/7白盒測試概述采用白盒測試方法必須遵循以下幾條原則,才能達到測試的目的:保證一個模塊中的所有獨立路徑至少被測試一次所有邏輯值均需測試真(true)和假(false)兩種情況檢查程序的內(nèi)部數(shù)據(jù)結(jié)構(gòu),保證其結(jié)構(gòu)的有效性在上下邊界及可操作范圍內(nèi)運行所有循環(huán)。1692023/2/7白盒測試概述白盒測試主要是檢查程序的內(nèi)部結(jié)構(gòu)、邏輯、循環(huán)和路徑。常用測試用例設(shè)計方法有:控制流測試邏輯覆蓋法(邏輯驅(qū)動測試)基本路徑測試方法謂詞測試法數(shù)據(jù)流測試1702023/2/7邏輯覆蓋測試根據(jù)覆蓋目標的不同,邏輯覆蓋又可分為語句覆蓋判定覆蓋條件覆蓋判定/條件覆蓋組合覆蓋路徑覆蓋。1712023/2/7語句覆蓋選擇足夠多的測試用例,使得程序中的每個可執(zhí)行語句至少執(zhí)行一次。1722023/2/7語句覆蓋為了使每個語句都執(zhí)行一次,程序的執(zhí)行路徑應(yīng)該是sacbed,為此只需要輸入下面的測試數(shù)據(jù)(實際上X可以是任意實數(shù)):A=2,B=0,X=41732023/2/7語句覆蓋語句覆蓋對程序的邏輯覆蓋很少例如上例中都只測試了條件為真的情況,如果條件為假時處理有錯誤,顯然不能發(fā)現(xiàn)。1742023/2/7語句覆蓋此外,語句覆蓋只關(guān)心判定表達式的值,而沒有分別測試判定表達式中每個條件取不同值時的情況。例如,如果把程序中第一個判定中的AND錯寫成OR,或把第二個判定表達式中的條件X>1誤寫成X<1,使用上面的測試數(shù)據(jù)并不能查出這些錯誤。1752023/2/7判定覆蓋通過執(zhí)行足夠的測試用例,使得程序中的每個判定至少都獲得一次“真”值和“假”值,也就是使程序中的每個取“真”分支和取“假”分支至少均經(jīng)歷一次,也稱為“分支覆蓋”。1762023/2/7判定覆蓋對于上述例子來說,能夠分別覆蓋路徑sacbed和sabd的兩組測試數(shù)據(jù),或者可以分別覆蓋路徑sacbd和sabed的兩組數(shù)據(jù),都滿足判定覆蓋標準。A=3,B=0,X=0(?)(覆蓋sacbd)A=2,B=1,X=1(覆蓋sabed)1772023/2/7判定覆蓋判定覆蓋比語句覆蓋強,但是對程序邏輯的覆蓋程度仍然不高,例如,上面的測試數(shù)據(jù)只覆蓋了程序全部路徑的一半。1782023/2/7條件覆蓋設(shè)計足夠多測試用例,使得程序中每個判定包含的每個條件的可能取值(真/假)都至少滿足一次。條件覆蓋的含義是:不僅每個語句至少執(zhí)行一次,而且使判定表達式中的每個條件都取到各種可能的結(jié)果(說到判定了嗎?)。1792023/2/7條件覆蓋例子中總共有兩個判定表達式,每個表達式中有兩個條件,為了做到條件覆蓋,應(yīng)該選取測試數(shù)據(jù)使得:在a點有下述各種結(jié)果出現(xiàn):A>1、A≤1、B=0、B≠0;在b點有下述各種結(jié)果出現(xiàn):A=2、A≠2、X>1、X≤11802023/2/7條件覆蓋只需要使用下面兩組測試數(shù)據(jù)就可以達到上述覆蓋標準:A=2,B=0,X=4(滿足A>1,B=0,A=2和X>1的條件,執(zhí)行路徑sacbed)A=1,B=1,X=1(滿足A≤1,B≠0,A≠2和X≤1的條件,執(zhí)行路徑sabd)1812023/2/7條件覆蓋條件覆蓋通常比判定覆蓋強,因為它使判定表達式中每個條件都取到了兩個不同的結(jié)果,判定覆蓋卻只關(guān)心整個判定表達式的值。例如,上面的兩組測試數(shù)據(jù)也同時滿足判定覆蓋標準。但是,也可能有相反的情況:雖然每個條件都取到了兩個不同的結(jié)果,判定表達式卻始終只取一個值。1822023/2/7條件覆蓋例如,如果使用下面兩組測試數(shù)據(jù),則只滿足條件覆蓋標準并不滿足判定覆蓋標準(第二個判定表達式的值總為真):A=2,B=0,X=1(滿足A>1,B=0,A=2和X≤1的條件,執(zhí)行路徑sacbed)A=1,B=1,X=2(滿足A≤1,B≠0,A≠2和X>1的條件,執(zhí)行路徑sabed)1832023/2/7判定/條件覆蓋設(shè)計足夠多的測試用例,使得程序中每個判定包含的每個條件的所有情況(真/假)至少出現(xiàn)一次,并且每個判定本身的判定結(jié)果(真/假)也至少出現(xiàn)一次。滿足判定/條件覆蓋的測試用例一定同時滿足判定覆蓋和條件覆蓋。1842023/2/7判定/條件覆蓋對于前面的例子,下述兩組測試數(shù)據(jù)滿足判定/覆蓋標準(同時也是為滿足條件覆蓋標準最初選取的測試數(shù)據(jù)):A=2,B=0,X=4(滿足A>1,B=0,A=2和X>1的條件,執(zhí)行路徑sacbed)A=1,B=1,X=1(滿足A≤1,B≠0,A≠2和X≤1的條件,執(zhí)行路徑sabd)1852023/2/7條件組合覆蓋通過執(zhí)行足夠的測試用例,使得程序中每個判定的所有可能的條件取值組合都至少出現(xiàn)一次。滿足組合覆蓋的測試用例一定滿足判定覆蓋、條件覆蓋和判定/條件覆蓋。1862023/2/7條件組合覆蓋對于前面的例子,共有8種可能的條件組合,分別是:1A>1B=02A>1B≠03A≤1B=04A≤1B≠05A=2X>16A=2X≤17A≠2X>18A≠2X≤11872023/2/7條件組合覆蓋下面4組測試數(shù)據(jù)可以使上面列出的8種條件組合每種至少出現(xiàn)一次:A=2,B=0,X=4(針對1和5兩種組合,執(zhí)行路徑sacbed)A=2,B=1,X=1(針對2和6兩種組合,執(zhí)行路徑sabed)A=1,B=0,X=2(針對3和7兩種組合,執(zhí)行路徑sabed)

A=1,B=1,X=1(針對4和8兩種組合,執(zhí)行路徑sabd)1A>1B=02A>1B≠03A≤1B=04A≤1B≠05A=2X>16A=2X≤17A≠2X>18A≠2X≤11882023/2/7條件組合覆蓋顯然,滿足條件組合覆蓋標準的測試數(shù)據(jù),也一定滿足判定覆蓋、條件覆蓋和判定/條件覆蓋標準。因此,條件組合覆蓋是前述幾種覆蓋標準中最強的。但是,滿足條件組合覆蓋標準的測試數(shù)據(jù)并不一定能使程序中的每條路徑都執(zhí)行到。1892023/2/7點覆蓋圖論中點覆蓋的概念定義如下:如果連通圖G的子圖G′是連通的,而且包含G的所有結(jié)點,則稱G′是G的點覆蓋。1902023/2/7點覆蓋在正常情況下流圖是連通的有向圖。滿足點覆蓋標準要求選取足夠多的測試數(shù)據(jù)

溫馨提示

  • 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

提交評論