軟件工程-測(cè)試課件_第1頁(yè)
軟件工程-測(cè)試課件_第2頁(yè)
軟件工程-測(cè)試課件_第3頁(yè)
軟件工程-測(cè)試課件_第4頁(yè)
軟件工程-測(cè)試課件_第5頁(yè)
已閱讀5頁(yè),還剩166頁(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)介

--測(cè)試軟件工程1謝謝觀賞2019-6-29內(nèi)容提要軟件測(cè)試的目的錯(cuò)誤分類基本任務(wù)、特點(diǎn)和原則軟件測(cè)試的信息流軟件測(cè)試的方法測(cè)試用例的設(shè)計(jì)軟件測(cè)試的過(guò)程及其相關(guān)的角色與職責(zé)測(cè)試層次測(cè)試的類型軟件測(cè)試與調(diào)試軟件可靠性2謝謝觀賞2019-6-29軟件測(cè)試是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過(guò)程。程序運(yùn)行需要數(shù)據(jù),為測(cè)試設(shè)計(jì)的數(shù)據(jù)稱測(cè)試用例。軟件測(cè)試是根據(jù)軟件開(kāi)發(fā)各階段的規(guī)格說(shuō)明和程序的內(nèi)部結(jié)構(gòu)而精心設(shè)計(jì)一批測(cè)試用例,并利用這些測(cè)試用例去運(yùn)行程序,以發(fā)現(xiàn)程序錯(cuò)誤的過(guò)程。3謝謝觀賞2019-6-29軟件測(cè)試在軟件生存期中橫跨兩個(gè)階段:通常在編寫(xiě)出每一個(gè)模塊之后就對(duì)它做必要的測(cè)試(稱為單元測(cè)試)。模塊的編寫(xiě)者與測(cè)試者是同一個(gè)人。編碼與單元測(cè)試屬于軟件生存期中的同一個(gè)階段。在這個(gè)階段結(jié)束之后,對(duì)軟件系統(tǒng)還要進(jìn)行各種綜合測(cè)試,這是軟件生存期的另一個(gè)獨(dú)立的階段,即測(cè)試階段,通常由專門(mén)的測(cè)試人員承擔(dān)這項(xiàng)工作。4謝謝觀賞2019-6-29軟件測(cè)試的目的GrenfordJ.Myers就軟件測(cè)試目的提出以下觀點(diǎn):測(cè)試是程序的執(zhí)行過(guò)程,目的在于發(fā)現(xiàn)錯(cuò)誤;一個(gè)好的測(cè)試用例很可能找到迄今為止尚未發(fā)現(xiàn)的錯(cuò)誤;一個(gè)成功的測(cè)試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試。E.W.Dijkstra指出:程序測(cè)試能證明錯(cuò)誤的存在,但不能證明錯(cuò)誤不存在。測(cè)試的目的是發(fā)現(xiàn)程序中的錯(cuò)誤,是為了證明程序有錯(cuò),而不是證明程序無(wú)錯(cuò)。5謝謝觀賞2019-6-29軟件測(cè)試的目的測(cè)試的目的是想以最少的時(shí)間和人力系統(tǒng)地找出軟件中潛在的各種錯(cuò)誤和缺陷。如果我們成功地實(shí)施了測(cè)試,就能夠發(fā)現(xiàn)軟件中的錯(cuò)誤。測(cè)試的附帶收獲是,它能夠證明軟件的功能和性能與需求說(shuō)明相符合。此外,實(shí)施測(cè)試收集到的測(cè)試結(jié)果數(shù)據(jù)為可靠性分析提供了依據(jù)。把證明程序無(wú)錯(cuò)當(dāng)作測(cè)試目的不僅是不正確的,完全做不到的,而且對(duì)做好測(cè)試沒(méi)有任何益處,甚至是十分有害的。能夠發(fā)現(xiàn)錯(cuò)誤的測(cè)試是成功的測(cè)試,否則是失敗的測(cè)試。6謝謝觀賞2019-6-29測(cè)試者知道軟件怎樣才能發(fā)生故障而導(dǎo)致失敗,并可記錄發(fā)生失敗的多種故障類型測(cè)試案例沒(méi)有冗余。每個(gè)測(cè)試案例都有不同的用途,不要重復(fù)相同意義的測(cè)試案例使用最具有代表性的案例,它能夠高效率揭示所有可能的錯(cuò)誤每個(gè)測(cè)試應(yīng)該能獨(dú)立執(zhí)行,不能太復(fù)雜,也不會(huì)太簡(jiǎn)單,它們能夠被組合用于一個(gè)測(cè)試案例中好的測(cè)試應(yīng)該具有的特性7謝謝觀賞2019-6-29軟件錯(cuò)誤的分類由于人們對(duì)錯(cuò)誤有不同的理解和認(rèn)識(shí),所以目前還沒(méi)有一個(gè)統(tǒng)一的錯(cuò)誤分類方法。錯(cuò)誤難于分類的原因,一方面是由于一個(gè)錯(cuò)誤有許多征兆,因而它可以被歸入不同的類。另一方面是因?yàn)榘岩粋€(gè)給定的錯(cuò)誤歸于哪一類,還與錯(cuò)誤的來(lái)源和程序員的心理狀態(tài)有關(guān)。Tobecontinue…8謝謝觀賞2019-6-29軟件錯(cuò)誤的分類按錯(cuò)誤的影響和后果分類較小錯(cuò)誤:只對(duì)系統(tǒng)輸出有一些非實(shí)質(zhì)性影響。如,輸出的數(shù)據(jù)格式不合要求等。中等錯(cuò)誤:對(duì)系統(tǒng)的運(yùn)行有局部影響。如輸出的某些數(shù)據(jù)有錯(cuò)誤或出現(xiàn)冗余。較嚴(yán)重錯(cuò)誤:系統(tǒng)的行為因錯(cuò)誤的干擾而出現(xiàn)明顯不合情理的現(xiàn)象。比如開(kāi)出了0.00元的支票,系統(tǒng)的輸出完全不可信賴。嚴(yán)重錯(cuò)誤:系統(tǒng)運(yùn)行不可跟蹤,一時(shí)不能掌握其規(guī)律,時(shí)好時(shí)壞。非常嚴(yán)重的錯(cuò)誤:系統(tǒng)運(yùn)行中突然停機(jī),其原因不明,無(wú)法軟啟動(dòng)。最嚴(yán)重的錯(cuò)誤:系統(tǒng)運(yùn)行導(dǎo)致環(huán)境破壞,或是造成事故,引起生命、財(cái)產(chǎn)的損失。Tobecontinue…9謝謝觀賞2019-6-29軟件錯(cuò)誤的分類按錯(cuò)誤的性質(zhì)和范圍分類

B.Beizer從軟件測(cè)試觀點(diǎn)出發(fā),把軟件錯(cuò)誤分為5類:功能錯(cuò)誤系統(tǒng)錯(cuò)誤加工錯(cuò)誤數(shù)據(jù)錯(cuò)誤代碼錯(cuò)誤Tobecontinue…10謝謝觀賞2019-6-29功能錯(cuò)誤規(guī)格說(shuō)明錯(cuò)誤:規(guī)格說(shuō)明可能不完全,有二義性或自身矛盾。功能錯(cuò)誤:程序?qū)崿F(xiàn)的功能與用戶要求的不一致。這常常是由于規(guī)格說(shuō)明中包含錯(cuò)誤的功能、多余的功能或遺漏的功能所致。測(cè)試錯(cuò)誤:軟件測(cè)試的設(shè)計(jì)與實(shí)施發(fā)生錯(cuò)誤。軟件測(cè)試自身也可能發(fā)生錯(cuò)誤。測(cè)試標(biāo)準(zhǔn)引起的錯(cuò)誤:對(duì)軟件測(cè)試的標(biāo)準(zhǔn)要選擇適當(dāng),若測(cè)試標(biāo)準(zhǔn)太復(fù)雜,則導(dǎo)致測(cè)試過(guò)程出錯(cuò)的可能就大。11謝謝觀賞2019-6-29系統(tǒng)錯(cuò)誤外部接口錯(cuò)誤:外部接口指如終端、打印機(jī)、通信線路等系統(tǒng)與外部環(huán)境通信的手段。所有外部接口之間,人與機(jī)器之間的通信都使用形式的或非形式的專門(mén)協(xié)議。如果協(xié)議有錯(cuò),或太復(fù)雜,難以理解,致使在使用中出錯(cuò)。此外還包括對(duì)輸入/輸出格式錯(cuò)誤理解,對(duì)輸入數(shù)據(jù)不合理的容錯(cuò)等等。內(nèi)部接口錯(cuò)誤:內(nèi)部接口指程序之間的聯(lián)系。它所發(fā)生的錯(cuò)誤與程序內(nèi)實(shí)現(xiàn)的細(xì)節(jié)有關(guān)。例如,設(shè)計(jì)協(xié)議錯(cuò)、輸入/輸出格式錯(cuò)、數(shù)據(jù)保護(hù)不可靠、子程序訪問(wèn)錯(cuò)等。硬件結(jié)構(gòu)錯(cuò)誤:這類錯(cuò)誤在于不能正確地理解硬件如何工作。例如,忽視或錯(cuò)誤地理解分頁(yè)機(jī)構(gòu)、地址生成、通道容量、I/O指令、中斷處理、設(shè)備初始化和啟動(dòng)等而導(dǎo)致的出錯(cuò)。Tobecontinue…12謝謝觀賞2019-6-29系統(tǒng)錯(cuò)誤操作系統(tǒng)錯(cuò)誤:這類錯(cuò)誤主要是由于不了解操作系統(tǒng)的工作機(jī)制而導(dǎo)致出錯(cuò)。當(dāng)然,操作系統(tǒng)本身也有錯(cuò)誤,但是一般用戶很難發(fā)現(xiàn)這種錯(cuò)誤。軟件結(jié)構(gòu)錯(cuò)誤:由于軟件結(jié)構(gòu)不合理或不清晰而引起的錯(cuò)誤。這種錯(cuò)誤通常與系統(tǒng)的負(fù)載有關(guān),而且往往在系統(tǒng)滿載時(shí)才出現(xiàn)。這是最難發(fā)現(xiàn)的一類錯(cuò)誤。例如,錯(cuò)誤地設(shè)置局部參數(shù)或全局參數(shù);錯(cuò)誤地假定寄存器與存儲(chǔ)器單元初始化了;錯(cuò)誤地假定不會(huì)發(fā)生中斷而導(dǎo)致不能封鎖或開(kāi)中斷;錯(cuò)誤地假定程序可以繞過(guò)數(shù)據(jù)的內(nèi)部鎖而導(dǎo)致不能關(guān)閉或打開(kāi)內(nèi)部鎖;錯(cuò)誤地假定被調(diào)用子程序常駐內(nèi)存或非常駐內(nèi)存等等,都將導(dǎo)致軟件出錯(cuò)。Tobecontinue…13謝謝觀賞2019-6-29系統(tǒng)錯(cuò)誤控制與順序錯(cuò)誤:包括:忽視了時(shí)間因素而破壞了事件的順序;猜測(cè)事件出現(xiàn)在指定的序列中;等待一個(gè)不可能發(fā)生的條件;漏掉先決條件;規(guī)定錯(cuò)誤的優(yōu)先級(jí)或程序狀態(tài);漏掉處理步驟;存在不正確的處理步驟或多余的處理步驟等。資源管理錯(cuò)誤:這類錯(cuò)誤是由于不正確地使用資源而產(chǎn)生的。例如,使用未經(jīng)獲準(zhǔn)的資源;使用后未釋放資源;資源死鎖;把資源鏈接在錯(cuò)誤的隊(duì)列中等等。14謝謝觀賞2019-6-29加工錯(cuò)誤算術(shù)與操作錯(cuò)誤:指在算術(shù)運(yùn)算、函數(shù)求值和一般操作過(guò)程中發(fā)生的錯(cuò)誤。包括:數(shù)據(jù)類型轉(zhuǎn)換錯(cuò);除法溢出;錯(cuò)誤地使用關(guān)系比較符;用整數(shù)與浮點(diǎn)數(shù)做比較等。初始化錯(cuò)誤:典型的錯(cuò)誤有:忘記初始化工作區(qū),忘記初始化寄存器和數(shù)據(jù)區(qū);錯(cuò)誤地對(duì)循環(huán)控制變量賦初值;用不正確的格式,數(shù)據(jù)或類型進(jìn)行初始化等等??刂坪痛涡蝈e(cuò)誤:這類錯(cuò)誤與系統(tǒng)級(jí)同名錯(cuò)誤類似,但它是局部錯(cuò)誤。包括:遺漏路徑;不可達(dá)到的代碼;不符合語(yǔ)法的循環(huán)嵌套;循環(huán)返回和終止的條件不正確;漏掉處理步驟或處理步驟有錯(cuò)等。靜態(tài)邏輯錯(cuò)誤:這類錯(cuò)誤主要包括:不正確地使用CASE語(yǔ)句;在表達(dá)式中使用不正確的否定(例如用“>”代替“<”的否定);對(duì)情況不適當(dāng)?shù)胤纸馀c組合;混淆“或”與“異或”等。15謝謝觀賞2019-6-29數(shù)據(jù)錯(cuò)誤動(dòng)態(tài)數(shù)據(jù)錯(cuò)誤:動(dòng)態(tài)數(shù)據(jù)是在程序執(zhí)行過(guò)程中暫時(shí)存在的數(shù)據(jù)。各種不同類型的動(dòng)態(tài)數(shù)據(jù)在程序執(zhí)行期間將共享一個(gè)共同的存儲(chǔ)區(qū)域,若程序啟動(dòng)時(shí)對(duì)這個(gè)區(qū)域未初始化,就會(huì)導(dǎo)致數(shù)據(jù)出錯(cuò)。由于動(dòng)態(tài)數(shù)據(jù)被破壞的位置可能與出錯(cuò)的位置在距離上相差很遠(yuǎn),因此要發(fā)現(xiàn)這類錯(cuò)誤比較困難。靜態(tài)數(shù)據(jù)錯(cuò)誤:靜態(tài)數(shù)據(jù)在內(nèi)容和格式上都是固定的。它們直接或間接地出現(xiàn)在程序或數(shù)據(jù)庫(kù)中,由編譯程序或其它專門(mén)程序?qū)λ鼈冏鲱A(yù)處理,這是在程序執(zhí)行前防止靜態(tài)錯(cuò)誤的好辦法,但預(yù)處理也會(huì)出錯(cuò)。數(shù)據(jù)內(nèi)容錯(cuò)誤:數(shù)據(jù)內(nèi)容是指存儲(chǔ)于存儲(chǔ)單元或數(shù)據(jù)結(jié)構(gòu)中的位串、字符串或數(shù)字。數(shù)據(jù)內(nèi)容本身沒(méi)有特定的含義,除非通過(guò)硬件或軟件給予解釋。數(shù)據(jù)內(nèi)容錯(cuò)誤就是由于內(nèi)容被破壞或被錯(cuò)誤地解釋而造成的錯(cuò)誤。Tobecontinue…16謝謝觀賞2019-6-29數(shù)據(jù)錯(cuò)誤數(shù)據(jù)結(jié)構(gòu)錯(cuò)誤:數(shù)據(jù)結(jié)構(gòu)是指數(shù)據(jù)元素的大小和組織形式。在同一存儲(chǔ)區(qū)域中可以定義不同的數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)結(jié)構(gòu)錯(cuò)誤主要包括結(jié)構(gòu)說(shuō)明錯(cuò)誤及把一個(gè)數(shù)據(jù)結(jié)構(gòu)誤當(dāng)做另一類數(shù)據(jù)結(jié)構(gòu)使用的錯(cuò)誤。這是更危險(xiǎn)的錯(cuò)誤。數(shù)據(jù)屬性錯(cuò)誤:數(shù)據(jù)屬性是指數(shù)據(jù)內(nèi)容的含義或語(yǔ)義。例如,整數(shù)、字符串、子程序等等。數(shù)據(jù)屬性錯(cuò)誤主要包括:對(duì)數(shù)據(jù)屬性不正確地解釋,比如錯(cuò)把整數(shù)當(dāng)實(shí)數(shù),允許不同類型數(shù)據(jù)混合運(yùn)算而導(dǎo)致的錯(cuò)誤等。17謝謝觀賞2019-6-29代碼錯(cuò)誤主要包括:語(yǔ)法錯(cuò)誤;打字錯(cuò)誤;對(duì)語(yǔ)句或指令不正確理解所產(chǎn)生的錯(cuò)誤。18謝謝觀賞2019-6-29程序錯(cuò)誤的分類Goodenough-Gerhart分類方法把軟件的邏輯錯(cuò)誤按生存期不同階段分為4類:問(wèn)題定義錯(cuò)誤規(guī)格說(shuō)明錯(cuò)誤設(shè)計(jì)錯(cuò)誤編碼錯(cuò)誤19謝謝觀賞2019-6-29問(wèn)題定義錯(cuò)誤它們是在軟件定義階段,分析員研究用戶的要求后所編寫(xiě)的文檔中出現(xiàn)的錯(cuò)誤。換句話說(shuō),這類錯(cuò)誤是由于問(wèn)題定義不滿足用戶的要求而導(dǎo)致的錯(cuò)誤。20謝謝觀賞2019-6-29規(guī)格說(shuō)明錯(cuò)誤這類錯(cuò)誤是指規(guī)格說(shuō)明與問(wèn)題定義不一致所產(chǎn)生的錯(cuò)誤。它們又可以細(xì)分成:不一致性錯(cuò)誤--規(guī)格說(shuō)明中功能說(shuō)明與問(wèn)題定義發(fā)生矛盾。冗余性錯(cuò)誤--規(guī)格說(shuō)明中某些功能說(shuō)明與問(wèn)題定義相比是多余的。不完整性錯(cuò)誤--規(guī)格說(shuō)明中缺少某些必要的功能說(shuō)明。不可行錯(cuò)誤--規(guī)格說(shuō)明中有些功能要求是不可行的。不可測(cè)試錯(cuò)誤--有些功能的測(cè)試要求是不現(xiàn)實(shí)的。21謝謝觀賞2019-6-29設(shè)計(jì)錯(cuò)誤這是在設(shè)計(jì)階段產(chǎn)生的錯(cuò)誤,它使系統(tǒng)的設(shè)計(jì)與需求規(guī)格說(shuō)明中的功能說(shuō)明不相符。它們又可以細(xì)分為:設(shè)計(jì)不完全錯(cuò)誤:某些功能沒(méi)有被設(shè)計(jì),或設(shè)計(jì)得不完全。算法錯(cuò)誤:算法選擇不合適。主要表現(xiàn)為算法的基本功能不滿足功能要求、算法不可行或者算法的效率不符合要求。模塊接口錯(cuò)誤:模塊結(jié)構(gòu)不合理;模塊與外部數(shù)據(jù)庫(kù)的界面不一致,模塊之間的界面不一致??刂七壿嬪e(cuò)誤:控制流程與規(guī)格說(shuō)明不一致;控制結(jié)構(gòu)不合理。數(shù)據(jù)結(jié)構(gòu)錯(cuò)誤:數(shù)據(jù)設(shè)計(jì)不合理;與算法不匹配;數(shù)據(jù)結(jié)構(gòu)不滿足規(guī)格說(shuō)明要求。22謝謝觀賞2019-6-29編碼錯(cuò)誤編碼過(guò)程中的錯(cuò)誤是多種多樣的,大體可歸為以下幾種:數(shù)據(jù)說(shuō)明錯(cuò)、數(shù)據(jù)使用錯(cuò)、計(jì)算錯(cuò)、比較錯(cuò)、控制流錯(cuò)、界面錯(cuò)、輸入/輸出錯(cuò),及其它的錯(cuò)誤。

在不同的開(kāi)發(fā)階段,錯(cuò)誤的類型和表現(xiàn)形式是不同的,故應(yīng)當(dāng)采用不同的方法和策略來(lái)進(jìn)行檢測(cè)。23謝謝觀賞2019-6-29軟件測(cè)試的基本任務(wù)測(cè)試階段的基本任務(wù)應(yīng)該是根據(jù)軟件開(kāi)發(fā)各階段的文檔資料和程序的內(nèi)部結(jié)構(gòu),精心設(shè)計(jì)一組“高產(chǎn)”的測(cè)試用例,利用這些用例執(zhí)行程序,找出軟件潛在的缺陷。24謝謝觀賞2019-6-29軟件測(cè)試的特點(diǎn)軟件測(cè)試的開(kāi)銷大按照Boehm的統(tǒng)計(jì),軟件測(cè)試的開(kāi)銷大約占總成本的30%-50%。例如:APPOLLO登月計(jì)劃,80%的經(jīng)費(fèi)用于軟件測(cè)試。不能進(jìn)行窮舉測(cè)試只有將所有可能的情況都測(cè)試到,才有可能檢查出所有的錯(cuò)誤。但這是不可能的。例如:程序P有兩個(gè)整型輸入量X、Y,輸出量為Z,在32位機(jī)上運(yùn)行。所有的測(cè)試數(shù)據(jù)組(Xi,Yi)的數(shù)目為:232×232=264。假設(shè)1毫秒執(zhí)行1次,如要進(jìn)行完全測(cè)試,共需5億年。25謝謝觀賞2019-6-29例:?Windows95有1000萬(wàn)行代碼

?Windows2000有5000萬(wàn)行代碼,

3000多個(gè)工程師,幾百個(gè)小團(tuán)隊(duì)。Exchange2000和Windows2000開(kāi)發(fā)人員結(jié)構(gòu)Exchange2000Windows2000項(xiàng)目經(jīng)理25人約250人開(kāi)發(fā)人員140人約1700人測(cè)試人員350人約3200人26謝謝觀賞2019-6-29軟件測(cè)試的原則測(cè)試是一項(xiàng)非常復(fù)雜的、創(chuàng)造性的和需要高度智慧的挑戰(zhàn)性的工作。測(cè)試一個(gè)大型程序所要求的創(chuàng)造力,事實(shí)上可能要超過(guò)設(shè)計(jì)那個(gè)程序所要求的創(chuàng)造力。軟件測(cè)試中一些直觀上看是很顯而易見(jiàn)的至關(guān)重要的原則,總是被人們忽視。應(yīng)當(dāng)把“盡早地和不斷地進(jìn)行軟件測(cè)試”作為軟件開(kāi)發(fā)者的座右銘。 不應(yīng)把軟件測(cè)試僅僅看作是軟件開(kāi)發(fā)的一個(gè)獨(dú)立階段,而應(yīng)當(dāng)把它貫穿到軟件開(kāi)發(fā)的各個(gè)階段中。堅(jiān)持在軟件開(kāi)發(fā)的各個(gè)階段的技術(shù)評(píng)審,這樣才能在開(kāi)發(fā)過(guò)程中盡早發(fā)現(xiàn)和預(yù)防錯(cuò)誤,把出現(xiàn)的錯(cuò)誤克服在早期,杜絕某些發(fā)生錯(cuò)誤的隱患。測(cè)試用例應(yīng)由測(cè)試輸入數(shù)據(jù)和與之對(duì)應(yīng)的預(yù)期輸出結(jié)果這兩部分組成。 測(cè)試之前應(yīng)當(dāng)根據(jù)測(cè)試的要求選擇測(cè)試用例(Testcase),用來(lái)檢驗(yàn)程序員編制的程序,因此不但需要測(cè)試的輸入數(shù)據(jù),而且需要針對(duì)這些輸入數(shù)據(jù)的預(yù)期輸出結(jié)果。Tobecontinue…27謝謝觀賞2019-6-29軟件測(cè)試的原則程序員應(yīng)避免檢查自己的程序。 程序員應(yīng)盡可能避免測(cè)試自己編寫(xiě)的程序,程序開(kāi)發(fā)小組也應(yīng)盡可能避免測(cè)試本小組開(kāi)發(fā)的程序。如果條件允許,最好建立獨(dú)立的軟件測(cè)試小組或測(cè)試機(jī)構(gòu)。這點(diǎn)不能與程序的調(diào)試(debuging)相混淆。調(diào)試由程序員自己來(lái)做可能更有效。Tobecontinue…28謝謝觀賞2019-6-29軟件測(cè)試的原則開(kāi)發(fā)者在測(cè)試自己的程序時(shí)存在一些弊?。洪_(kāi)發(fā)者對(duì)自己的程序印象深刻,并總以為是正確的。倘若在設(shè)計(jì)時(shí)就存在理解錯(cuò)誤,或因不良的編程習(xí)慣而留下隱患,那么他本人很難發(fā)現(xiàn)這類錯(cuò)誤。開(kāi)發(fā)者對(duì)程序的功能、接口十分熟悉,他自己幾乎不可能因?yàn)槭褂貌划?dāng)而引發(fā)錯(cuò)誤,這與大眾用戶的情況不太相似,所以自己測(cè)試程序難以具備典型性。程序設(shè)計(jì)猶如藝術(shù)設(shè)計(jì),開(kāi)發(fā)者總是喜歡欣賞程序的成功之處,而不愿看到失敗之處。讓開(kāi)發(fā)者去做“蓄意破壞”的測(cè)試,就像殺自己的孩子一樣難以接受。即便開(kāi)發(fā)者非常誠(chéng)實(shí),但“珍愛(ài)程序”的心理讓他在測(cè)試時(shí)不知不覺(jué)地帶入了虛假成分。29謝謝觀賞2019-6-29下面我們?cè)賮?lái)看看Microsoft公司關(guān)于測(cè)試的經(jīng)驗(yàn)教訓(xùn):IBMPC機(jī)一起推出的BASIC軟件,用戶在用“.1”(或者其他數(shù)字)除以10時(shí),就會(huì)出錯(cuò)。在FORTRAN軟件中也存在破壞數(shù)據(jù)的“Bug”。由此激起了許多采用Microsoft操作系統(tǒng)的PC廠商的極大不滿,而且很多個(gè)人用戶也紛紛投訴。Microsoft公司的經(jīng)理們發(fā)現(xiàn)很有必要引進(jìn)更好的內(nèi)部測(cè)試與質(zhì)量控制方法。但是遭到很多程序設(shè)計(jì)師甚至一些高級(jí)經(jīng)理的堅(jiān)決反對(duì),他們固執(zhí)地認(rèn)為在高校學(xué)生、秘書(shū)或者外界合作人士的協(xié)助下,開(kāi)發(fā)人員可以自己測(cè)試產(chǎn)品。在1984年推出Mac機(jī)Multiplan(電子表格軟件)之前,Microsoft曾特地請(qǐng)AuthurAnderson咨詢公司進(jìn)行測(cè)試。但是外界公司一般沒(méi)有能力執(zhí)行全面的軟件測(cè)試。結(jié)果,一種相當(dāng)厲害的破壞數(shù)據(jù)的“Bug”迫使Microsoft公司為它的2萬(wàn)多名用戶免費(fèi)提供更新版本,代價(jià)是每個(gè)版本10美元,一共花了20萬(wàn)美元,可謂損失慘重。痛定思痛后,Microsoft公司的經(jīng)理們得出一個(gè)結(jié)論:如果再不成立獨(dú)立的測(cè)試部門(mén),軟件產(chǎn)品就不可能達(dá)到更高的質(zhì)量標(biāo)準(zhǔn)。IBM和其他有著成功的軟件開(kāi)發(fā)歷史的公司便是效法的榜樣。但Microsoft公司并不照搬IBM的經(jīng)驗(yàn),而是有選擇地采用了一些看起來(lái)比較先進(jìn)的方法,如獨(dú)立的測(cè)試小組,自動(dòng)測(cè)試以及為關(guān)鍵性的構(gòu)件進(jìn)行代碼復(fù)查等。30謝謝觀賞2019-6-29Microsoft公司的一位開(kāi)發(fā)部門(mén)主管戴夫·穆?tīng)柣貞浾f(shuō):“我們清楚不能再讓開(kāi)發(fā)部門(mén)自己測(cè)試了。我們需要一個(gè)單獨(dú)的小組來(lái)設(shè)計(jì)測(cè)試,運(yùn)行測(cè)試,并把測(cè)試信息反饋給開(kāi)發(fā)部門(mén)。這是一個(gè)偉大的轉(zhuǎn)折點(diǎn)?!钡怯辛霜?dú)立的測(cè)試小組后,并不等于萬(wàn)事大吉了。自從Microsoft公司在1984年與1986年之間擴(kuò)大了測(cè)試小組后,開(kāi)發(fā)人員開(kāi)始“變懶”了。他們把代碼扔到一邊等著測(cè)試,忘了唯有開(kāi)發(fā)人員自己才能阻止錯(cuò)誤的發(fā)生、防患于未來(lái)。此時(shí),Microsoft公司歷史上第二次災(zāi)難降臨了。原定于1986年7月發(fā)行的Mac機(jī)的Word3.0,千呼萬(wàn)喚方于1987年2月問(wèn)世。這套軟件竟然有700多出錯(cuò)誤,有的錯(cuò)誤可以破壞數(shù)據(jù)甚至摧毀程序。一下子就使Microsoft名聲掃地。公司不得不為用戶提供升級(jí)版本,費(fèi)用超過(guò)了100萬(wàn)美元。從Microsoft公司的教訓(xùn)中可知,公司內(nèi)部對(duì)產(chǎn)品的測(cè)試需要開(kāi)發(fā)人員與獨(dú)立的測(cè)試小組共同參與。31謝謝觀賞2019-6-29軟件測(cè)試的原則在設(shè)計(jì)測(cè)試用例時(shí),應(yīng)當(dāng)包括合理的輸入條件和不合理的輸入條件。 合理的輸入條件是指能驗(yàn)證程序正確的輸入條件;不合理的輸入條件是指異常的,臨界的,可能引起問(wèn)題異變的輸入條件。軟件系統(tǒng)處理非法命令的能力必須在測(cè)試時(shí)受到檢驗(yàn)。用不合理的輸入條件測(cè)試程序時(shí),往往比用合理的輸入條件進(jìn)行測(cè)試能發(fā)現(xiàn)更多的錯(cuò)誤。Tobecontinue…32謝謝觀賞2019-6-29軟件測(cè)試的原則充分注意測(cè)試中的群集現(xiàn)象。 在被測(cè)程序段中,若發(fā)現(xiàn)錯(cuò)誤數(shù)目多,而殘存錯(cuò)誤數(shù)目也比較多,這種錯(cuò)誤群集現(xiàn)象。群集現(xiàn)象已為許多程序的測(cè)試實(shí)踐所證實(shí)。根據(jù)這個(gè)規(guī)律,應(yīng)當(dāng)對(duì)錯(cuò)誤群集的程序段進(jìn)行重點(diǎn)測(cè)試,以提高測(cè)試投資的效益。pareto原則:測(cè)試發(fā)現(xiàn)的錯(cuò)誤中80%很可能起源于20%的模塊中。應(yīng)孤立這些疑點(diǎn)模塊重點(diǎn)測(cè)試。嚴(yán)格執(zhí)行測(cè)試計(jì)劃,排除測(cè)試的隨意性。 測(cè)試之前應(yīng)仔細(xì)考慮測(cè)試的項(xiàng)目,對(duì)每一項(xiàng)測(cè)試做出周密的計(jì)劃,包括被測(cè)程序的功能、輸入和輸出、測(cè)試內(nèi)容、進(jìn)度安排、資源要求、測(cè)試用例的選擇、測(cè)試的控制方式和過(guò)程等,還要包括系統(tǒng)的組裝方式、跟蹤規(guī)程、調(diào)試規(guī)程,回歸測(cè)試的規(guī)定,以及評(píng)價(jià)標(biāo)準(zhǔn)等。對(duì)于測(cè)試計(jì)劃,要明確規(guī)定,不要隨意解釋。Tobecontinue…33謝謝觀賞2019-6-29軟件測(cè)試的原則應(yīng)當(dāng)對(duì)每一個(gè)測(cè)試結(jié)果做全面檢查。 有些錯(cuò)誤的征兆在輸出實(shí)測(cè)結(jié)果時(shí)已經(jīng)明顯地出現(xiàn)了,但是如果不仔細(xì)地全面地檢查測(cè)試結(jié)果,就會(huì)使這些錯(cuò)誤被遺漏掉。所以必須對(duì)預(yù)期的輸出結(jié)果明確定義,對(duì)實(shí)測(cè)的結(jié)果仔細(xì)分析檢查,以暴露錯(cuò)誤。妥善保存測(cè)試計(jì)劃,測(cè)試用例,出錯(cuò)統(tǒng)計(jì)和最終分析報(bào)告,為維護(hù)提供方便。34謝謝觀賞2019-6-29軟件測(cè)試階段的信息流測(cè)試結(jié)果分析可靠性分析排錯(cuò)軟件配置測(cè)試配置測(cè)試工具預(yù)期結(jié)果錯(cuò)誤率數(shù)據(jù)測(cè)試結(jié)果錯(cuò)誤改正的軟件需求規(guī)格說(shuō)明書(shū)軟件設(shè)計(jì)說(shuō)明書(shū)被測(cè)源程序測(cè)試計(jì)劃測(cè)試用例測(cè)試驅(qū)動(dòng)程序35謝謝觀賞2019-6-29軟件測(cè)試階段的信息流上圖中,測(cè)試過(guò)程需要三類輸入:軟件配置:包括軟件需求規(guī)格說(shuō)明、軟件設(shè)計(jì)規(guī)格說(shuō)明、源代碼等;測(cè)試配置:包括測(cè)試計(jì)劃、測(cè)試用例、測(cè)試驅(qū)動(dòng)程序等;測(cè)試工具:測(cè)試工具為測(cè)試的實(shí)施提供某種服務(wù)。例如,測(cè)試數(shù)據(jù)自動(dòng)生成程序、靜態(tài)分析程序、動(dòng)態(tài)分析程序、測(cè)試結(jié)果分析程序、以及驅(qū)動(dòng)測(cè)試的工作臺(tái)等。36謝謝觀賞2019-6-29軟件測(cè)試階段的信息流測(cè)試之后,用實(shí)測(cè)結(jié)果與預(yù)期結(jié)果進(jìn)行比較。如果發(fā)現(xiàn)出錯(cuò)的數(shù)據(jù),就要進(jìn)行調(diào)試。對(duì)已經(jīng)發(fā)現(xiàn)的錯(cuò)誤進(jìn)行錯(cuò)誤定位和確定出錯(cuò)性質(zhì),并改正這些錯(cuò)誤,同時(shí)修改相關(guān)的文檔。修正后的文檔一般都要經(jīng)過(guò)再次測(cè)試,直到通過(guò)測(cè)試為止。通過(guò)收集和分析測(cè)試結(jié)果數(shù)據(jù),對(duì)軟件建立可靠性模型。如果測(cè)試發(fā)現(xiàn)不了錯(cuò)誤,那么可以肯定,測(cè)試配置考慮得不夠細(xì)致充分,錯(cuò)誤仍然潛伏在軟件中。這些錯(cuò)誤最終不得不由用戶在使用中發(fā)現(xiàn),并在維護(hù)時(shí)由開(kāi)發(fā)者去改正。但那時(shí)改正錯(cuò)誤的費(fèi)用將比在開(kāi)發(fā)階段改正錯(cuò)誤的費(fèi)用要高出40倍到60倍。37謝謝觀賞2019-6-29軟件測(cè)試方法靜態(tài)測(cè)試方法動(dòng)態(tài)測(cè)試方法白盒測(cè)試方法黑盒測(cè)試方法38謝謝觀賞2019-6-29靜態(tài)和動(dòng)態(tài)測(cè)試汽車的檢查過(guò)程:踩油門(mén)看車漆打開(kāi)前蓋檢查發(fā)動(dòng)汽車聽(tīng)聽(tīng)發(fā)動(dòng)機(jī)聲音上路行使靜態(tài)測(cè)試動(dòng)態(tài)測(cè)試39謝謝觀賞2019-6-29靜態(tài)測(cè)試方法靜態(tài)測(cè)試方法的基本特征是在對(duì)軟件進(jìn)行分析、檢查和審閱,但并不實(shí)際運(yùn)行被測(cè)試的軟件。如: 對(duì)需求規(guī)格說(shuō)明書(shū)、軟件設(shè)計(jì)說(shuō)明書(shū)、源程序做檢查和審閱,包括:是否符合標(biāo)準(zhǔn)和規(guī)范;通過(guò)結(jié)構(gòu)分析、流圖分析、符號(hào)執(zhí)行指出軟件缺陷。Tobecontinue…40謝謝觀賞2019-6-29靜態(tài)測(cè)試方法人工測(cè)試:通過(guò)人工閱讀分析以及評(píng)審軟件的文檔、程序資料等。一些設(shè)計(jì)上的邏輯錯(cuò)誤在機(jī)器上不易發(fā)現(xiàn),需要人工復(fù)查。好的人工復(fù)查,可找出30~70%的編碼和邏輯設(shè)計(jì)錯(cuò)誤。計(jì)算機(jī)輔佐分析:設(shè)計(jì)一些分析工具對(duì)被測(cè)程序進(jìn)行靜態(tài)分析,從中提取信息。如檢查局部變量和全局變量、參數(shù)匹配、判斷與循環(huán)的嵌套匹配、潛在的死循環(huán)、不執(zhí)行的代碼、過(guò)程調(diào)用層次等。41謝謝觀賞2019-6-29動(dòng)態(tài)測(cè)試方法動(dòng)態(tài)測(cè)試:通過(guò)運(yùn)行軟件來(lái)檢驗(yàn)軟件的動(dòng)態(tài)行為和運(yùn)行結(jié)果的正確性動(dòng)態(tài)測(cè)試的兩個(gè)基本要素:被測(cè)試程序測(cè)試數(shù)據(jù)(測(cè)試用例)Tobecontinue…42謝謝觀賞2019-6-29動(dòng)態(tài)測(cè)試方法動(dòng)態(tài)測(cè)試方法的基本步驟:選取定義域有效值,或定義域外無(wú)效值;對(duì)已選取值決定預(yù)期的結(jié)果;用選取值執(zhí)行程序;執(zhí)行結(jié)果與預(yù)期的結(jié)果相比,不吻合程序有錯(cuò)。如果了解軟件產(chǎn)品的內(nèi)部邏輯結(jié)果,可針對(duì)某些特定條件設(shè)計(jì)測(cè)試用例,對(duì)軟件的邏輯路徑進(jìn)行測(cè)試,即白盒測(cè)試;如果完全不考慮程序的內(nèi)部結(jié)構(gòu)和處理過(guò)程,測(cè)試僅在程序界面上進(jìn)行,測(cè)試的目的是為了證實(shí)各個(gè)功能完全可執(zhí)行,并在各功能中查找錯(cuò)誤,則是黑盒測(cè)試。Tobecontinue…43謝謝觀賞2019-6-29黑盒測(cè)試與白盒測(cè)試的比較黑盒測(cè)試是從用戶觀點(diǎn),按規(guī)格說(shuō)明書(shū)要求的輸入數(shù)據(jù)與輸出數(shù)據(jù)的對(duì)應(yīng)關(guān)系設(shè)計(jì)測(cè)試用例,是根據(jù)程序外部特征進(jìn)行測(cè)試。白盒測(cè)試是根據(jù)程序內(nèi)部邏輯結(jié)構(gòu)進(jìn)行測(cè)試。值得指出的是,黑盒測(cè)試法與白盒測(cè)試法不能互相替代,相反兩者應(yīng)互為補(bǔ)充,在測(cè)試的不同階段為發(fā)現(xiàn)不同類型的錯(cuò)誤而靈活選用。44謝謝觀賞2019-6-29

黑盒測(cè)試與白盒測(cè)試比較黑盒測(cè)試

白盒測(cè)試優(yōu)點(diǎn)缺點(diǎn)性質(zhì)①適用于各階段測(cè)試②從產(chǎn)品功能角度測(cè)試③容易入手生成測(cè)試數(shù)據(jù)①可構(gòu)成測(cè)試數(shù)據(jù)使特定程序部分得到測(cè)試②有一定的充分性度量手段③可或較多工具支持①某些代碼得不到測(cè)試②如果規(guī)格說(shuō)明有誤,則無(wú)法發(fā)現(xiàn)③不易進(jìn)行充分性測(cè)試①不易生成測(cè)試數(shù)據(jù)(通常)②無(wú)法對(duì)未實(shí)現(xiàn)規(guī)格說(shuō)明的部分進(jìn)行測(cè)試③工作量大,通常只用于單元測(cè)試,有應(yīng)用局限是一種確認(rèn)技術(shù),回答“我們?cè)跇?gòu)造一個(gè)正確的系統(tǒng)嗎?”是一種驗(yàn)證技術(shù),回答“我們?cè)谡_地構(gòu)造一個(gè)系統(tǒng)嗎?”45謝謝觀賞2019-6-29測(cè)試用例的定義測(cè)試內(nèi)容的一系列情景和每個(gè)情景中必須依靠輸入和輸出,而對(duì)軟件的正確性進(jìn)行判斷的測(cè)試文檔,稱為測(cè)試用例。測(cè)試用例就是將軟件測(cè)試的行為活動(dòng),做一個(gè)科學(xué)化的組織歸納。測(cè)試用例的設(shè)計(jì)如何以最少的人力、資源投入,在最短的時(shí)間內(nèi)完成測(cè)試,發(fā)現(xiàn)軟件系統(tǒng)的缺陷,保證軟件的優(yōu)良品質(zhì),則是軟件公司探索和追求的目標(biāo)。測(cè)試用例是測(cè)試工作的指導(dǎo),是軟件測(cè)試的必須遵守的準(zhǔn)則。更是軟件測(cè)試質(zhì)量穩(wěn)定的根本保障。46謝謝觀賞2019-6-29測(cè)試用例的組成元素與范例測(cè)試用例編號(hào)ID測(cè)試用例標(biāo)題測(cè)試的模塊測(cè)試輸入條件期望的輸出結(jié)果其它說(shuō)明ID類型標(biāo)題測(cè)試步驟期望的結(jié)果說(shuō)明001登錄輸入正確密碼用戶在登錄界面輸入正確的密碼后,按回車鍵程序提示登錄成功002登錄輸入錯(cuò)誤密碼用戶在登錄界面輸入錯(cuò)誤的密碼后,按回車鍵程序提示輸入密碼錯(cuò)誤,請(qǐng)重新輸入003登錄不輸入的空密碼用戶在登錄界面沒(méi)有輸入任何密碼使密碼為空后,按回車鍵程序提示用戶沒(méi)有輸入密碼,請(qǐng)輸入程序應(yīng)該告知用戶沒(méi)有輸入密碼,而不是密碼錯(cuò)誤47謝謝觀賞2019-6-29測(cè)試用例的設(shè)計(jì)方法黑盒測(cè)試技術(shù)等價(jià)類劃分法邊界值分析法錯(cuò)誤推測(cè)法白盒測(cè)試技術(shù)邏輯覆蓋法基本路徑測(cè)試法48謝謝觀賞2019-6-29黑盒測(cè)試技術(shù)等價(jià)類劃分法邊界值分析法錯(cuò)誤推測(cè)法49謝謝觀賞2019-6-29等價(jià)類劃分法等價(jià)類劃分法是一種典型的黑盒測(cè)試方法,使用這一方法時(shí),完全不考慮程序的內(nèi)部結(jié)構(gòu),只依據(jù)程序的規(guī)格說(shuō)明來(lái)設(shè)計(jì)測(cè)試用例。等價(jià)類劃分法把所有可能的輸入數(shù)據(jù),即程序的輸入域劃分成若干部分,然后從每一部分中選取少數(shù)有代表性的數(shù)據(jù)做為測(cè)試用例。使用這一方法設(shè)計(jì)測(cè)試用例要經(jīng)歷劃分等價(jià)類(列出等價(jià)類表)和選取測(cè)試用例兩步。50謝謝觀賞2019-6-29劃分等價(jià)類等價(jià)類的劃分有兩種不同的情況:有效等價(jià)類:是指對(duì)于程序的規(guī)格說(shuō)明來(lái)說(shuō),是合理的,有意義的輸入數(shù)據(jù)構(gòu)成的集合。無(wú)效等價(jià)類:是指對(duì)于程序的規(guī)格說(shuō)明來(lái)說(shuō),是不合理的,無(wú)意義的輸入數(shù)據(jù)構(gòu)成的集合。在設(shè)計(jì)測(cè)試用例時(shí),要同時(shí)考慮有效等價(jià)類和無(wú)效等價(jià)類的設(shè)計(jì)。51謝謝觀賞2019-6-29劃分等價(jià)類的原則如果輸入條件規(guī)定了取值范圍,或值的個(gè)數(shù),則可以確立一個(gè)有效等價(jià)類和兩個(gè)無(wú)效等價(jià)類。例如,在規(guī)格說(shuō)明中,對(duì)輸入條件有一句話: “……

項(xiàng)數(shù)可以從1到999……”

則有效等價(jià)類是“1≤項(xiàng)數(shù)≤999”;

兩個(gè)無(wú)效等價(jià)類是“項(xiàng)數(shù)<1”或“項(xiàng)數(shù)>999”。在數(shù)軸上表示成:1999有效等價(jià)類無(wú)效等價(jià)類無(wú)效等價(jià)類Tobecontinue…52謝謝觀賞2019-6-29劃分等價(jià)類的原則如果輸入條件規(guī)定了輸入值的集合,或者是規(guī)定了“必須如何”的條件,這時(shí)可確立一個(gè)有效等價(jià)類和一個(gè)無(wú)效等價(jià)類。 例如,在編程語(yǔ)言中對(duì)變量標(biāo)識(shí)符規(guī)定為“以字母打頭的……串”。那么所有以字母打頭的構(gòu)成有效等價(jià)類,而不在此集合內(nèi)(不以字母打頭)的歸于無(wú)效等價(jià)類。Tobecontinue…53謝謝觀賞2019-6-29劃分等價(jià)類的原則如果輸入條件是一個(gè)布爾量,則可以確定一個(gè)有效等價(jià)類和一個(gè)無(wú)效等價(jià)類。如果規(guī)定了輸入數(shù)據(jù)的一組值,而且程序要對(duì)每個(gè)輸入值分別進(jìn)行處理。這時(shí)可為每一個(gè)輸入值確立一個(gè)有效等價(jià)類,此外針對(duì)這組值確立一個(gè)無(wú)效等價(jià)類,它是所有不允許的輸入值的集合。 例如,在教師上崗方案中規(guī)定對(duì)教授、副教授、講師和助教分別計(jì)算分?jǐn)?shù),做相應(yīng)的處理。因此可以確定4個(gè)有效等價(jià)類為教授、副教授、講師和助教,一個(gè)無(wú)效等價(jià)類,它是所有不符合以上身分的人員的輸入值的集合。Tobecontinue…54謝謝觀賞2019-6-29劃分等價(jià)類的原則如果規(guī)定了輸入數(shù)據(jù)必須遵守的規(guī)則,則可以確立一個(gè)有效等價(jià)類(符合規(guī)則)和若干個(gè)無(wú)效等價(jià)類(從不同角度違反規(guī)則)。 例如,Pascal語(yǔ)言規(guī)定“一個(gè)語(yǔ)句必須以分號(hào)‘;’結(jié)束”。這時(shí),可以確定一個(gè)有效等價(jià)類“以‘;’結(jié)束”,若干個(gè)無(wú)效等價(jià)類“以‘:’結(jié)束”、“以‘,’結(jié)束”、“以‘’結(jié)束”、“以LF結(jié)束”等。Tobecontinue…55謝謝觀賞2019-6-29以上列出的只是測(cè)試時(shí)可能遇到的情況的很小一部分,實(shí)際情況千變?nèi)f化,根本無(wú)法一一列出。如規(guī)定了輸入數(shù)據(jù)為整數(shù),可劃分出正整數(shù)、零和負(fù)整數(shù)三個(gè)有效類,如果程序處理對(duì)象是表格,則應(yīng)使用空表以及含一項(xiàng)或多項(xiàng)的表。要正確劃分等價(jià)類,必須要注意經(jīng)驗(yàn)的積累和正確分析被測(cè)試程序的功能。不需要設(shè)計(jì)測(cè)試數(shù)據(jù)來(lái)暴露編譯程序肯定能發(fā)現(xiàn)的錯(cuò)誤。劃分等價(jià)類的原則56謝謝觀賞2019-6-29用等價(jià)類劃分法設(shè)計(jì)測(cè)試用例步驟形成等價(jià)類表,每一等價(jià)類規(guī)定一個(gè)唯一的編號(hào);設(shè)計(jì)一測(cè)試用例,使其盡可能多地覆蓋尚未被覆蓋的有效等價(jià)類,重復(fù)這一步驟,直到所有有效等價(jià)類均被測(cè)試用例所覆蓋;設(shè)計(jì)一新測(cè)試用例,使其覆蓋一個(gè)且只覆蓋一個(gè)尚未被覆蓋的無(wú)效等價(jià)類,重復(fù)這一步驟直到所有無(wú)效等價(jià)類均被覆蓋。57謝謝觀賞2019-6-29例:某報(bào)表處理系統(tǒng)要求用戶輸入處理報(bào)表的日期,日期限制在2003年1月至2008年12月,即系統(tǒng)只能對(duì)該段期間內(nèi)的報(bào)表進(jìn)行處理,如日期不在此范圍內(nèi),則顯示輸入錯(cuò)誤信息。系統(tǒng)日期規(guī)定由年、月的6位數(shù)字字符組成,前四位代表年,后兩位代表月。如何用等價(jià)類劃分法設(shè)計(jì)測(cè)試用例,來(lái)測(cè)試程序的日期檢查功能?用等價(jià)類劃分法設(shè)計(jì)測(cè)試用例步驟58謝謝觀賞2019-6-29第一步:等價(jià)類劃分輸入條件有效等價(jià)類無(wú)效等價(jià)類報(bào)表日期的類型及長(zhǎng)度6位數(shù)字字符(1)有非數(shù)字字符

(4)少于6個(gè)數(shù)字字符

(5)多于6個(gè)數(shù)字字符

(6)年份范圍在2003~2008之間

(2)小于2003

(7)大于2008

(8)月份范圍在1~12之間(3)小于1

(9)大于12

(10)“報(bào)表日期”輸入條件的等價(jià)類表59謝謝觀賞2019-6-29第二步:為有效等價(jià)類設(shè)計(jì)測(cè)試用例對(duì)表中編號(hào)為1,2,3的3個(gè)有效等價(jià)類用一個(gè)測(cè)試用例覆蓋:測(cè)試數(shù)據(jù)期望結(jié)果覆蓋范圍200306輸入有效等價(jià)類(1)(2)(3)(1)

6位數(shù)字字符(2)

年在2003~2008之間(3)

月在1~12之間60謝謝觀賞2019-6-29第三步:為每一個(gè)無(wú)效等價(jià)類 至少設(shè)計(jì)一個(gè)測(cè)試用例測(cè)試數(shù)據(jù)期望結(jié)果覆蓋范圍003MAY輸入無(wú)效等價(jià)類(4)20035輸入無(wú)效等價(jià)類(5)2003005輸入無(wú)效等價(jià)類(6)200105輸入無(wú)效等價(jià)類(7)200905輸入無(wú)效等價(jià)類(8)200300輸入無(wú)效等價(jià)類(9)200313輸入無(wú)效等價(jià)類(10)不能出現(xiàn)相同的測(cè)試用例本例的10個(gè)等價(jià)類至少需要8個(gè)測(cè)試用例61謝謝觀賞2019-6-29邊界值分析法邊界值分析也是一種黑盒測(cè)試方法,是對(duì)等價(jià)類劃分方法的補(bǔ)充。邊界值分析不是從某等價(jià)類中隨便挑一個(gè)作為代表,而是使這個(gè)等價(jià)類的每個(gè)邊界都要作為測(cè)試條件。人們從長(zhǎng)期的測(cè)試工作經(jīng)驗(yàn)得知,大量的錯(cuò)誤是發(fā)生在輸入或輸出范圍的邊界上,而不是在輸入范圍的內(nèi)部。因此針對(duì)各種邊界情況設(shè)計(jì)測(cè)試用例,可以查出更多的錯(cuò)誤。被測(cè)試子域測(cè)試內(nèi)點(diǎn)測(cè)試外點(diǎn)62謝謝觀賞2019-6-29軟件邊界與懸崖很類似邊界值分析法如果在懸崖峭壁邊可以自信地安全行走,平地就不在話下。如果軟件在能力達(dá)到極限時(shí)能夠運(yùn)行,那么在正常情況下就不會(huì)出什么問(wèn)題。63謝謝觀賞2019-6-29確定邊界值的方式如果輸入條件規(guī)定了值的范圍,則應(yīng)取剛達(dá)到這個(gè)范圍的邊界的值,以及剛剛超越這個(gè)范圍邊界的值作為測(cè)試輸入數(shù)據(jù)。如果輸入條件規(guī)定了值的個(gè)數(shù),則用最大個(gè)數(shù)、最小個(gè)數(shù)、比最小個(gè)數(shù)少一、比最大個(gè)數(shù)多一的數(shù)作為測(cè)試數(shù)據(jù)。如果程序的規(guī)格說(shuō)明給出的輸入域或輸出域是有序集合,則應(yīng)選取集合的第一個(gè)元素和最后一個(gè)元素作為測(cè)試用例。如果程序中使用了一個(gè)內(nèi)部數(shù)據(jù)結(jié)構(gòu),則應(yīng)當(dāng)選擇這個(gè)內(nèi)部數(shù)據(jù)結(jié)構(gòu)的邊界上的值作為測(cè)試用例。分析規(guī)格說(shuō)明,找出其他可能的邊界條件。64謝謝觀賞2019-6-29“報(bào)表日期”邊界值分析法測(cè)試用例輸入條件測(cè)試用例說(shuō)明測(cè)試數(shù)據(jù)期望結(jié)果選取理由報(bào)表日期類型及長(zhǎng)度1個(gè)數(shù)字字符5顯示出錯(cuò)僅有1個(gè)合法字符6個(gè)數(shù)字字符200305輸入有效類型及長(zhǎng)度均有效5個(gè)數(shù)字字符20035顯示出錯(cuò)比有效長(zhǎng)度少17個(gè)數(shù)字字符2003005顯示出錯(cuò)比有效長(zhǎng)度多1有1個(gè)非數(shù)字字符2003.5顯示出錯(cuò)只有1個(gè)非法字符全是非數(shù)字字符MAY---顯示出錯(cuò)6個(gè)非法字符年份范圍年份為2003年200305輸入有效最小年份年份為2008年200805輸入有效最大年份年份<2003年200205顯示出錯(cuò)剛好小于最小年份年份>2008年200905顯示出錯(cuò)剛好大于最大年份月份范圍月份為1月200301輸入有效最小月份月份為12月200312輸入有效最大月份月份<1200300顯示出錯(cuò)剛好小于最小月份月份>12200313顯示出錯(cuò)剛好大于最大月份65謝謝觀賞2019-6-29錯(cuò)誤推測(cè)法基于經(jīng)驗(yàn)和直覺(jué)推測(cè)程序中所有可能存在的各種錯(cuò)誤,從而有針對(duì)性地設(shè)計(jì)測(cè)試用例。經(jīng)驗(yàn)表明,一段程序中已經(jīng)發(fā)現(xiàn)的錯(cuò)誤數(shù)往往和尚未發(fā)現(xiàn)的錯(cuò)誤數(shù)成正比。因此進(jìn)一步測(cè)試要著重測(cè)試發(fā)現(xiàn)錯(cuò)誤較多的程序段。66謝謝觀賞2019-6-29錯(cuò)誤推測(cè)法測(cè)試用例設(shè)計(jì)發(fā)現(xiàn)程序經(jīng)常出現(xiàn)的錯(cuò)誤的方法:?jiǎn)卧獪y(cè)試中發(fā)現(xiàn)的模塊錯(cuò)誤;產(chǎn)品的以前版本曾經(jīng)發(fā)現(xiàn)的錯(cuò)誤;輸入數(shù)據(jù)為0或字符為空;當(dāng)軟件要求輸入時(shí)(比如在文本框中),不是沒(méi)有輸入正確的信息,而是根本沒(méi)有輸入任何內(nèi)容,單單按了Enter鍵;這種情況在產(chǎn)品說(shuō)明書(shū)中常常忽視,程序員也可能經(jīng)常遺忘,但是在實(shí)際使用中卻時(shí)有發(fā)生。程序員總會(huì)習(xí)慣性的認(rèn)為用戶要么輸入信息,不管是看起來(lái)合法的或非法的信息,要不就會(huì)選擇Cancel鍵放棄輸入。67謝謝觀賞2019-6-29白盒測(cè)試技術(shù)邏輯覆蓋法法基本路徑測(cè)試法白盒測(cè)試應(yīng)該根據(jù)程序的控制結(jié)構(gòu)設(shè)計(jì)測(cè)試用例,原則是:保證模塊中每一獨(dú)立的路徑至少執(zhí)行一次;保證所有判斷的每一分枝至少執(zhí)行一次;保證每一循環(huán)都在邊界條件和一般條件下至少各執(zhí)行一次;驗(yàn)證所有內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性。68謝謝觀賞2019-6-29邏輯覆蓋邏輯覆蓋是以程序內(nèi)部的邏輯結(jié)構(gòu)為基礎(chǔ)的設(shè)計(jì)測(cè)試用例的技術(shù)。這一方法要求測(cè)試人員對(duì)程序的邏輯結(jié)構(gòu)有清楚的了解,甚至要能掌握源程序的所有細(xì)節(jié)。由于覆蓋測(cè)試的目標(biāo)不同,邏輯覆蓋又可分為:語(yǔ)句覆蓋判定覆蓋條件覆蓋判定/條件覆蓋條件組合覆蓋路徑覆蓋69謝謝觀賞2019-6-29語(yǔ)句覆蓋語(yǔ)句覆蓋就是設(shè)計(jì)若干個(gè)測(cè)試用例,運(yùn)行被測(cè)程序,使得每一可執(zhí)行語(yǔ)句至少執(zhí)行一次。這種覆蓋又稱為點(diǎn)覆蓋,它使得程序中每個(gè)可執(zhí)行語(yǔ)句都得到執(zhí)行,但它是最弱的邏輯覆蓋準(zhǔn),效果有限,必須與其它方法交互使用。Tobecontinue…70謝謝觀賞2019-6-29(A>1)

and

(B=0)(A=2)

or(X>1)X=X/AX=X+1TTFFbcea1sd234567PROCEDUREExample(A,B:real;X:real);BeginIF(A>1)AND(B=0)THENX:=X/A;IF(A=2)OR(X>1)THENX:=X+1END;I.A=2,B=0,X=4----sacbed語(yǔ)句覆蓋所有的語(yǔ)句至少執(zhí)行一次!是最弱的邏輯覆蓋71謝謝觀賞2019-6-29判定覆蓋判定覆蓋就是設(shè)計(jì)若干個(gè)測(cè)試用例,運(yùn)行被測(cè)程序,使得程序中每個(gè)判斷的取真分支和取假分支至少經(jīng)歷一次。判定覆蓋又稱為分支覆蓋。判定覆蓋只比語(yǔ)句覆蓋稍強(qiáng)一些,但實(shí)際效果表明,只是判定覆蓋,還不能保證一定能查出在判斷的條件中存在的錯(cuò)誤。因此,還需要更強(qiáng)的邏輯覆蓋準(zhǔn)則去檢驗(yàn)判斷內(nèi)部條件。

Tobecontinue…72謝謝觀賞2019-6-29(A>1)

and

(B=0)(A=2)

or

(X>1)X=X/AX=X+1TTFFbcea1sd234567每個(gè)語(yǔ)句至少執(zhí)行一次!每個(gè)判定的每種可能都至少執(zhí)行一次!即每個(gè)判定的真假分支都至少執(zhí)行一次!I:A=3,B=0,X=3:sacbdII:A=2,B=1,X=1:sabed滿足判定覆蓋的測(cè)試用例一定滿足語(yǔ)句覆蓋:判定覆蓋比語(yǔ)句覆蓋強(qiáng)。但仍是弱的邏輯覆蓋。73謝謝觀賞2019-6-29條件覆蓋條件覆蓋就是設(shè)計(jì)若干個(gè)測(cè)試用例,運(yùn)行被測(cè)程序,使得程序中每個(gè)判斷的每個(gè)條件的可能取值至少執(zhí)行一次。條件覆蓋深入到判定中的每個(gè)條件,但可能不能滿足判定覆蓋的要求。Tobecontinue…74謝謝觀賞2019-6-29每個(gè)語(yǔ)句至少執(zhí)行一次,而且判定表達(dá)式中的每個(gè)條件都要取得各種可能的結(jié)果。第一判定表達(dá)式:設(shè)條件A>1取真記為T(mén)1

假T1

條件B=0取真記為T(mén)2

假T2第二判定表達(dá)式:設(shè)條件A=2取真記為T(mén)3

假T3

條件X>1取真記為T(mén)4

假T4條件覆蓋要求這8種值都要取到(A>1)

and

(B=0)(A=2)

or

(X>1)X=X/AX=X+1TTFFbcea1sd23456775謝謝觀賞2019-6-29(A>1)

and

(B=0)(A=2)

or

(X>1)X=X/AX=X+1TTFFbcea1sd234567(A>1)(A≤1)(B=0)(B≠0)(A=2)(A≠2)(X>1)(X≤1)Ⅱ:A=1,B=1,X=1:sabdⅠ:A=2,B=0,X=4:sacbed測(cè)試用例通過(guò)路徑滿足的條件ABX204sacbedT1,T2,T3,T4111sabdT1,T2,T3,T4滿足判定覆蓋76謝謝觀賞2019-6-29(A>1)

and

(B=0)(A=2)

or

(X>1)X=X/AX=X+1TTFFbcea1sd234567(A>1)(A≤1)(B=0)(B≠0)(A=2)(A≠2)(X>1)(X≤1)Ⅳ:A=1,B=1,X=2:sabedⅢ:A=2,B=0,X=1:sacbed測(cè)試用例通過(guò)路徑滿足的條件ABX201sacbedT1,T2,T3,T4112sabedT1,T2,T3,T4不滿足判定覆蓋77謝謝觀賞2019-6-29(A>1)(A≤1)(B=0)(B≠0)(A=2)(A≠2)(X>1)(X≤1)Ⅵ:A=2,B=1,X=1:sabed測(cè)試用例通過(guò)路徑滿足的條件ABX103sabedT1,T2,T3,T4211sabedT1,T2,T3,T4Ⅴ:A=1,B=0,X=3:sabed(A>1)

and

(B=0)(A=2)

or

(X>1)X=X/AX=X+1TTFFbcea1sd234567既不滿足條件覆蓋又不滿足判定覆蓋78謝謝觀賞2019-6-29

條件覆蓋不一定包含判定覆蓋判定覆蓋也不一定包含條件覆蓋

條件覆蓋通常比判定覆蓋強(qiáng),因?yàn)樗古卸ū磉_(dá)式中每個(gè)條件都取到了兩個(gè)不同的結(jié)果,判定覆蓋卻關(guān)心整個(gè)判定表達(dá)式的值。但也可能有相反的情況:雖然每個(gè)條件都取到了不同值,但判定表達(dá)式卻始終只取一個(gè)值。79謝謝觀賞2019-6-29判定-條件覆蓋既然判定條件不一定包含條件覆蓋,條件覆蓋也不一定包含判定覆蓋,就自然會(huì)提出一種能同時(shí)滿足兩種覆蓋標(biāo)準(zhǔn)的邏輯覆蓋,這就是判定/條件覆蓋。判定-條件覆蓋就是設(shè)計(jì)足夠的測(cè)試用例,使得判斷中每個(gè)條件的所有可能取值至少執(zhí)行一次,同時(shí)每個(gè)判斷本身的所有可能判斷結(jié)果至少執(zhí)行一次。換言之,即是要求各個(gè)判斷的所有可能的條件取值組合至少執(zhí)行一次。Tobecontinue…80謝謝觀賞2019-6-29判定-條件覆蓋測(cè)試用例I,II既滿足判定覆蓋也滿足條件覆蓋的要求。嚴(yán)格來(lái)講,合適的條件覆蓋測(cè)試用例設(shè)計(jì)應(yīng)該做到滿足判定/條件覆蓋的標(biāo)準(zhǔn):判定/條件覆蓋并不比條件覆蓋更強(qiáng)。判定-條件覆蓋有缺陷。表面上,它測(cè)試了所有條件的取值,但事實(shí)并非如此,往往某些條件掩蓋了另一些條件,會(huì)遺漏某些條件取值錯(cuò)誤的情況。為徹底地檢查所有條件的取值,需要將判定語(yǔ)句中給出的復(fù)合條件表達(dá)式進(jìn)行分解,形成由多個(gè)基本判定嵌套的流程圖。這樣就可以有效地檢查所有的條件是否正確了。81謝謝觀賞2019-6-29判定-條件覆蓋復(fù)合判定的例子:Tobecontinue…(A>1)

and

(B=0)(A=2)

or

(X>1)X=X/AX=X+1TTFFbcea1sd23456782謝謝觀賞2019-6-29A>1X=X/AX=X+1TTFFsdB=0TA=2X>1TFF判定-條件覆蓋復(fù)合判定的例子:改為單個(gè)條件判定83謝謝觀賞2019-6-29條件組合覆蓋條件組合覆蓋就是設(shè)計(jì)足夠的測(cè)試用例,運(yùn)行被測(cè)程序,使得每個(gè)判斷的所有可能的條件取值組合至少執(zhí)行一次。這是一種相當(dāng)強(qiáng)的覆蓋準(zhǔn)則,可以有效地檢查各種可能的條件取值的組合是否正確。它不但可覆蓋所有條件的可能取值的組合,還可覆蓋所有判斷的可取分支,但可能有的路徑會(huì)遺漏掉。測(cè)試還不完全。84謝謝觀賞2019-6-29A>1,B=0A>1,B≠0A≯1,B=0A≯1,B≠0A=2,X>1A=2,X≯1A≠2,X>1A≠2,X≯1選取足夠多的測(cè)試數(shù)據(jù),使得每個(gè)判定表達(dá)式中條件的各種可能組合都至少出現(xiàn)一次。(A>1)

and

(B=0)(A=2)

or

(X>1)X=X/AX=X+1TTFFbcea1sd23456785謝謝觀賞2019-6-29(A>1)

and

(B=0)(A=2)

or

(X>1)X=X/AX=X+1TTFFbcea1sd234567(A>1)(A≤1)(B=0)(B≠0)(A=2)(A≠2)(X>1)(X≤1)I.A=2,B=0,X=4II.A=2,B=1,X=1III.A=1,B=0,X=2IV.A=1,B=1,X=1I:sacbedII:sabedIII:sabedIV:sabd覆蓋路徑滿足條件組合覆蓋標(biāo)準(zhǔn)的測(cè)試數(shù)據(jù),也一定滿足判定覆蓋、條件覆蓋和判定/條件覆蓋標(biāo)準(zhǔn)。86謝謝觀賞2019-6-29測(cè)試用例通過(guò)路徑滿足的條件條件組合覆蓋分支ABX204sacbedT1,T2,T3,T41,54563211sabedT1,T2,T3,T42,6263102sabedT1,T2,T3,T43,7263111sabdT1,T2,T3,T44,8234組測(cè)試數(shù)據(jù)可以使8種條件組合每種至少出現(xiàn)一次:顯然,滿足條件組合覆蓋的測(cè)試用例,也一定滿足判定覆蓋、條件覆蓋和判定/條件覆蓋。所以,條件組合覆蓋是前述幾種覆蓋中最強(qiáng)的。但滿足條件組合覆蓋的不一定能使程序中的每條路徑都執(zhí)行到,如sacbd。87謝謝觀賞2019-6-29如果連通圖G的子圖G′是連通的,而且包含G的所有節(jié)點(diǎn),則稱G′是G的點(diǎn)覆蓋。與語(yǔ)句覆蓋標(biāo)準(zhǔn)相同。點(diǎn)覆蓋88謝謝觀賞2019-6-29如果連通圖G的子圖G′是連通的,而且包含G的所有邊,則稱G′是G的邊覆蓋。通常與判定覆蓋標(biāo)準(zhǔn)相同。1234567Ⅰ:A=3,B=0,X=3(1-4-5-3);Ⅱ:A=2,B=1,X=1(1-2-6-7)Ⅲ:A=1,B=1,X=1(1-2-3);Ⅳ:A=2,B=0,X=4(1-4-5-6-7)或邊覆蓋89謝謝觀賞2019-6-29路徑覆蓋路徑測(cè)試就是設(shè)計(jì)足夠的測(cè)試用例,覆蓋程序中所有可能的路徑。這是最強(qiáng)的覆蓋準(zhǔn)則。但在路徑數(shù)目很大時(shí),真正做到完全覆蓋是很困難的,必須把覆蓋路徑數(shù)目壓縮到一定限度。90謝謝觀賞2019-6-29測(cè)試用例通過(guò)路徑滿足的條件ABX111sabdT1,T2,T3,T4112sabedT1,T2,T3,T4301sacbdT1,T2,T3,T4204sacbedT1,T2,T3,T4路徑覆蓋是相當(dāng)強(qiáng)的邏輯覆蓋,它保證程序中每條可能的路徑都至少執(zhí)行一次,因此更具代表性,暴露錯(cuò)誤的能力也比較強(qiáng)。但為了做到路徑覆蓋,只需考慮每個(gè)判定式的取值,并沒(méi)有檢驗(yàn)表達(dá)式中條件的各種可能組合。如果將路徑覆蓋和條件組合覆蓋結(jié)合起來(lái),可以設(shè)計(jì)出檢錯(cuò)能力更強(qiáng)的測(cè)試數(shù)據(jù)。路徑覆蓋91謝謝觀賞2019-6-29通過(guò)分析由控制構(gòu)造的環(huán)路的復(fù)雜性,導(dǎo)出基本路徑集合,從而設(shè)計(jì)測(cè)試用例,保證這些路徑至少通過(guò)一次。為了使用圖論的知識(shí)和術(shù)語(yǔ),引入流圖(亦即程序圖)的概念,流圖即把流程圖中結(jié)構(gòu)化構(gòu)件改用一般有向圖的表示形式。基本路徑測(cè)試法92謝謝觀賞2019-6-29流圖(flowgraph)在流圖中用圓表示節(jié)點(diǎn),一個(gè)圓代表一條或多條語(yǔ)句。程序流程圖中的一個(gè)處理框序列和一個(gè)菱形判定框,可以映射成流圖中的一個(gè)節(jié)點(diǎn)。流圖中的箭頭線稱為邊,它和程序流程圖中的箭頭線類似,代表控制流。在流圖中一條邊必須終止于一個(gè)節(jié)點(diǎn),即使這個(gè)節(jié)點(diǎn)并不代表任何語(yǔ)句(實(shí)際上相當(dāng)于一個(gè)空語(yǔ)句)。由邊和節(jié)點(diǎn)圍成的面積稱為區(qū)域,當(dāng)計(jì)算區(qū)域數(shù)時(shí)應(yīng)該包括圖外部未被圍起來(lái)的那個(gè)區(qū)域。93謝謝觀賞2019-6-29利用流圖表示控制邏輯順序結(jié)構(gòu)if結(jié)構(gòu)Case結(jié)構(gòu)while結(jié)構(gòu)until結(jié)構(gòu)流圖94謝謝觀賞2019-6-29(A>1)

and

(B=0)(A=2)

or

(X>1)X=X/AX=X+1TTFFbcea1sd2345671234567流圖95謝謝觀賞2019-6-29導(dǎo)出程序流程圖的拓?fù)浣Y(jié)構(gòu)-流圖計(jì)算流圖G的環(huán)路復(fù)雜度V(G)確定只包含獨(dú)立路徑的基本路徑集設(shè)計(jì)測(cè)試用例流程圖==>流圖==>基本路徑==>測(cè)試用例基本路徑測(cè)試步驟96謝謝觀賞2019-6-29Step1

根據(jù)程序的邏輯結(jié)構(gòu)畫(huà)出流程圖voidFunc(intnPosX,intnPosY){

while(nPosX>0) {

intnSum=nPosX+nPosY;

if(nSum>1) { nPosX--;nPosY--; }

else

{

if(nSum<

-1)nPosX-=2;

elsenPosX-=4; }//endofif }//endofwhile}762318451191097謝謝觀賞2019-6-29待測(cè)試程序1762,38910114,5節(jié)點(diǎn)邊區(qū)域區(qū)域:由邊和節(jié)點(diǎn)封閉起來(lái)的區(qū)域計(jì)算區(qū)域:不要忘記區(qū)域外的部分用流圖表示的待測(cè)試程序Step2根據(jù)流程圖畫(huà)出流圖762318451191098謝謝觀賞2019-6-29Step3確定基本路徑的集合流圖的環(huán)形復(fù)雜度正好是基本路徑的數(shù)目計(jì)算V(G)的不同方法(1)V(G)

=區(qū)域個(gè)數(shù)=4(2)V(G)

=邊的條數(shù)-節(jié)點(diǎn)個(gè)數(shù)+2=11-9+2=4(3)V(G)

=判定節(jié)點(diǎn)個(gè)數(shù)+1=3+1=4確定只包含獨(dú)立路徑的基本路徑集Path1:1-11Path2:1-2-3-4-5-10-1-11Path3:1-2-3-6-8-9-10-1-11Path4:1-2-3-6-7-9-10-1-11一條新路徑必須包含一條新邊99謝謝觀賞2019-6-29獨(dú)立路徑:至少沿一條新的邊移動(dòng)的路徑路徑1:1-11路徑2:1-2-3-4-5-10-1-11路徑3:1-2-3-6-8-9-10-1-11路徑4:1-2-3-6-7-9-10-1-111762,38910114,5對(duì)以上路徑的遍歷,就是至少一次地執(zhí)行了程序中的所有語(yǔ)句。Step3確定基本路徑的集合100謝謝觀賞2019-6-29Step4對(duì)每條基本路徑設(shè)計(jì)測(cè)試用例路徑1–11nPosX取-1,nPosY取任意值路徑1–2–3–4–5–10–1–11nPosX取1,nPosY取1路徑1–2–3–6–8–9–10–1–11

nPosX取1,nPosY取-3路徑1–2–3–6–7–9–10–1–11nPosX取1,nPosY取-1設(shè)計(jì)測(cè)試用例,保證基本路徑集中每條路徑的執(zhí)行101謝謝觀賞2019-6-29測(cè)試用例設(shè)計(jì)的步驟為測(cè)試需求確定測(cè)試用例為測(cè)試用例確定輸入輸出編寫(xiě)測(cè)試用例評(píng)審測(cè)試用例跟蹤測(cè)試用例102謝謝觀賞2019-6-29為測(cè)試需求確定測(cè)試用例測(cè)試需求:來(lái)源于需求規(guī)格說(shuō)明書(shū)(用例、補(bǔ)充規(guī)約),設(shè)計(jì)規(guī)格。需要我們?cè)跍y(cè)試計(jì)劃中明確。測(cè)試需求編號(hào):TR_XXXX_XX每一個(gè)測(cè)試需求至少確定兩個(gè)測(cè)試用例:正面,負(fù)面103謝謝觀賞2019-6-29為測(cè)試用例確定輸入和輸出輸入是指在執(zhí)行該測(cè)試用例時(shí),由用戶輸入的與之交互的對(duì)象、字段和特定數(shù)據(jù)值(或生成的對(duì)象狀態(tài))。輸出即預(yù)期結(jié)果,是指執(zhí)行該測(cè)試用例完畢后得到的狀態(tài)或數(shù)據(jù)。在確定輸入和輸出參數(shù)時(shí),我們采用以下原則:在任何情況下都必須使用邊界值分析方法。經(jīng)驗(yàn)表明用這種方法設(shè)計(jì)出測(cè)試用例發(fā)現(xiàn)程序錯(cuò)誤的能力最強(qiáng)。必要時(shí)用等價(jià)類劃分方法補(bǔ)充一些測(cè)試用例。對(duì)照程序邏輯,檢查已設(shè)計(jì)出的測(cè)試用例的邏輯覆蓋程度。如果沒(méi)有達(dá)到要求的覆蓋標(biāo)準(zhǔn),應(yīng)當(dāng)再補(bǔ)充足夠的測(cè)試用例。如果程序的功能說(shuō)明中含有輸入條件的組合情況,則一開(kāi)始就可選用因果圖法。104謝謝觀賞2019-6-29編寫(xiě)測(cè)試用例測(cè)試用例編號(hào)為

TC_測(cè)試需求標(biāo)識(shí)。測(cè)試需求標(biāo)識(shí) 測(cè)試計(jì)劃中的測(cè)試需求標(biāo)識(shí)。測(cè)試目標(biāo)狀態(tài)和測(cè)試數(shù)據(jù)狀態(tài) 執(zhí)行此用例前系統(tǒng)應(yīng)具備的狀態(tài)。輸入(操作)

為各輸入數(shù)據(jù)(操作)的組合。輸出(預(yù)期結(jié)果)

測(cè)試用例執(zhí)行后得到的狀態(tài)或數(shù)據(jù)。105謝謝觀賞2019-6-29評(píng)審測(cè)試用例測(cè)試用例檢查表是否每一個(gè)需求都有其對(duì)應(yīng)的測(cè)試用例來(lái)驗(yàn)證?是否每一個(gè)設(shè)計(jì)元素都有其對(duì)應(yīng)的測(cè)試用例來(lái)驗(yàn)證?或事件順序,它能夠產(chǎn)生唯一的測(cè)試目標(biāo)行為?是否每個(gè)測(cè)試用例都闡述了預(yù)期結(jié)果?是否每個(gè)測(cè)試用例(或每組相關(guān)的測(cè)試用例)都確定了初始的測(cè)試目標(biāo)狀態(tài)和測(cè)試數(shù)據(jù)狀態(tài)?測(cè)試用例是否包含了所有的單一邊界?測(cè)試用例是否包含了所有的業(yè)務(wù)數(shù)據(jù)流?是否所有的測(cè)試用例名稱,ID都與測(cè)試工件命名約定一致?參加人員項(xiàng)目經(jīng)理、系統(tǒng)分析員、測(cè)試設(shè)計(jì)員、測(cè)試員106謝謝觀賞2019-6-29跟蹤測(cè)試用例需求管理 需求-〉測(cè)試用例測(cè)試用例是否覆蓋了需求測(cè)試用例執(zhí)行率、通過(guò)率107謝謝觀賞2019-6-29軟件測(cè)試過(guò)程TestPlaningTestDesignTestImplementExec.Exec....Exec.BuildBuildRevisionEvaluationDefectTracking...Tobecontinue…108謝謝觀賞2019-6-29軟件測(cè)試過(guò)程制定測(cè)試計(jì)劃定義測(cè)試項(xiàng)目的階段,以便于對(duì)項(xiàng)目進(jìn)行適當(dāng)?shù)脑u(píng)估與控制,包括測(cè)試需求,測(cè)試策略,測(cè)試資源和測(cè)試進(jìn)度。測(cè)試設(shè)計(jì)設(shè)計(jì)測(cè)試用例及測(cè)試過(guò)程的階段,它是驗(yàn)證測(cè)試需求被測(cè)試到的最有效的方法。測(cè)試實(shí)施對(duì)測(cè)試設(shè)計(jì)階段已被定義的測(cè)試進(jìn)行創(chuàng)建或修正的階段,如腳本、驅(qū)動(dòng)、樁的實(shí)施。Tobecontinue…109謝謝觀賞2019-6-29軟件測(cè)試過(guò)程測(cè)試執(zhí)行對(duì)被測(cè)軟件進(jìn)行一系列的測(cè)試并記錄日志結(jié)果的階段。測(cè)試評(píng)估分析測(cè)試結(jié)果并判斷測(cè)試的標(biāo)準(zhǔn)是否被滿足的階段。缺陷跟蹤記錄測(cè)試發(fā)現(xiàn)的問(wèn)題,并且跟蹤其修改的階段。110謝謝觀賞2019-6-29軟件測(cè)試過(guò)程涉及的角色和職責(zé)測(cè)試設(shè)計(jì)員制定和維護(hù)測(cè)試計(jì)劃。設(shè)計(jì)測(cè)試用例及測(cè)試過(guò)程。評(píng)估測(cè)試,生成測(cè)試分析報(bào)告。測(cè)試人員執(zhí)行集成測(cè)試和系統(tǒng)測(cè)試。記錄測(cè)試結(jié)果。設(shè)計(jì)人員設(shè)計(jì)測(cè)試需要的驅(qū)動(dòng)程序和穩(wěn)定樁。編碼人員編寫(xiě)測(cè)試驅(qū)動(dòng)程序和穩(wěn)定樁。執(zhí)行單元測(cè)試。111謝謝觀賞2019-6-29軟件測(cè)試的層次單元測(cè)試集成測(cè)試確認(rèn)測(cè)試系統(tǒng)測(cè)試112謝謝觀賞2019-6-29軟件測(cè)試的層次與軟件開(kāi)發(fā)的關(guān)系需求分析設(shè)計(jì)編碼單元測(cè)試集成測(cè)試確認(rèn)測(cè)試系統(tǒng)測(cè)試113謝謝觀賞2019-6-29單元測(cè)試單元測(cè)試針對(duì)程序模塊,進(jìn)行正確性檢驗(yàn)的測(cè)試。其目的在于發(fā)現(xiàn)各模塊內(nèi)部可能存在的各種差錯(cuò)。單元測(cè)試需要從程序的內(nèi)部結(jié)構(gòu)出發(fā)設(shè)計(jì)測(cè)試用例。多個(gè)模塊可以平行地獨(dú)立進(jìn)行單元測(cè)試。114謝謝觀賞2019-6-29模塊錯(cuò)誤處理模塊接口局部數(shù)據(jù)結(jié)構(gòu)

重要的執(zhí)行路徑邊界條件主要對(duì)模塊的五個(gè)基本特性進(jìn)行評(píng)價(jià)在單元測(cè)試時(shí),測(cè)試者需要依據(jù)詳細(xì)設(shè)計(jì)說(shuō)明書(shū)和源程序清單,了解該模塊的I/O條件和模塊的邏輯結(jié)構(gòu),主要采用白盒測(cè)試的測(cè)試用例,輔之以黑盒測(cè)試的測(cè)試用例,使之對(duì)任何合理的輸入和不合理的輸入,都能鑒別和響應(yīng)。單元測(cè)試的內(nèi)容115謝謝觀賞2019-6-29模塊接口測(cè)試對(duì)被測(cè)模塊的數(shù)據(jù)流進(jìn)行測(cè)試。Tobecontinue…實(shí)際參數(shù)與形式參數(shù)的個(gè)數(shù)是否相同;實(shí)際參數(shù)與形式參數(shù)的屬性是否匹配;實(shí)際參數(shù)與形式參數(shù)的量綱是否一致;調(diào)用預(yù)定義函數(shù)時(shí)所用參數(shù)的個(gè)數(shù)、屬性和次序是否正確;是否存在與當(dāng)前入口點(diǎn)無(wú)關(guān)的參數(shù)引用;是否修改了只讀型參數(shù);對(duì)全程變量的定義各模塊是否一致;是否把某些約束作為參數(shù)傳遞。116謝謝觀賞2019-6-29如果模塊內(nèi)包括外部I/O,還應(yīng)該考慮下列因素:文件屬性是否正確;OPEN與CLOSE語(yǔ)句是否正確;緩沖區(qū)容量與記錄長(zhǎng)度是否匹配;在進(jìn)行讀寫(xiě)操作之前是否打開(kāi)了文件;在結(jié)束文件處理時(shí)是否關(guān)閉了文件;正文書(shū)寫(xiě)/輸入錯(cuò)誤;I/O錯(cuò)誤是否檢查并做了處理。模塊接口測(cè)試117謝謝觀賞2019-6-29局部數(shù)據(jù)結(jié)構(gòu)測(cè)試局部數(shù)據(jù)結(jié)構(gòu)往往是錯(cuò)誤的根源,應(yīng)仔細(xì)設(shè)計(jì)測(cè)試用例,力求發(fā)現(xiàn)下面幾類錯(cuò)誤:不合適或不相容的類型說(shuō)明;變量無(wú)初值;變量初始化或缺省值有錯(cuò);不正確的變量名(拚錯(cuò)或不正確地截?cái)?;出現(xiàn)上溢、下溢和地址異常。118謝謝觀賞2019-6-29路徑測(cè)試選擇適當(dāng)?shù)臏y(cè)試用例,對(duì)模塊中重要的執(zhí)行路徑進(jìn)行測(cè)試。應(yīng)當(dāng)設(shè)計(jì)測(cè)試用例查找由于錯(cuò)誤的計(jì)算、不正確的比較或不正常的控制流而導(dǎo)致的錯(cuò)誤。對(duì)基本執(zhí)行路徑和循環(huán)進(jìn)行測(cè)試可以發(fā)現(xiàn)大量的路徑錯(cuò)誤。119謝謝觀賞2019-6-29錯(cuò)誤處理測(cè)試檢查模塊的錯(cuò)誤處理功能是否包含有錯(cuò)誤或缺陷。出錯(cuò)的描述是否難以理解出錯(cuò)的描述是否能夠?qū)﹀e(cuò)誤定位顯示的錯(cuò)誤與實(shí)際的錯(cuò)誤是否相符對(duì)錯(cuò)誤條件的處理正確與否在對(duì)錯(cuò)誤進(jìn)行處理之前,錯(cuò)誤條件是否已經(jīng)引起系統(tǒng)的干預(yù)等120謝謝觀賞2019-6-29邊界測(cè)試注意數(shù)據(jù)流、控制流中剛好等于、大于或小于確定的比較值時(shí)出錯(cuò)的可能性。對(duì)這些地方要仔細(xì)地選擇測(cè)試用例,認(rèn)真加以測(cè)試。如果對(duì)模塊運(yùn)行時(shí)間有要求的話,還要專門(mén)進(jìn)行關(guān)鍵路徑測(cè)試,以確定最壞情況下和平均意義下影響模塊運(yùn)行時(shí)間的因素。這類信息對(duì)進(jìn)行性能評(píng)價(jià)是十分有用的。121謝謝觀賞2019-6-29單元測(cè)試的步驟通常單元測(cè)試在編碼階段進(jìn)行。在源程序代碼編制完成,經(jīng)過(guò)評(píng)審和驗(yàn)證,確認(rèn)沒(méi)有語(yǔ)法錯(cuò)誤之后,就開(kāi)始進(jìn)行單元測(cè)試的測(cè)試用例設(shè)計(jì)。利用設(shè)計(jì)文檔,設(shè)計(jì)可以驗(yàn)證程序功能、找出程序錯(cuò)誤的多個(gè)測(cè)試用例。對(duì)于每一組輸入,應(yīng)有預(yù)期的正確結(jié)果。Tobecontinue…122謝謝觀賞2019-6-29單元測(cè)試的方法模塊并不是一個(gè)獨(dú)立的程序,在考慮測(cè)試模塊時(shí),同時(shí)要考慮它和外界的聯(lián)系,用一些輔助模塊去模擬與被測(cè)模塊相聯(lián)系的其它模塊。這些輔助模塊分為兩種:驅(qū)動(dòng)模塊(Driver):相當(dāng)于被測(cè)模塊的主程序。它接收測(cè)試數(shù)據(jù),把這些數(shù)據(jù)傳送給被測(cè)模塊,最后輸出實(shí)測(cè)結(jié)果。樁模塊(Stub):用以代替被測(cè)模塊調(diào)用的子模塊。樁模塊可以做少量的數(shù)據(jù)操作,不需要把子模塊所有功能都帶進(jìn)來(lái),但不允許什么事情也不做。123謝謝觀賞2019-6-29單元測(cè)試的方法被測(cè)模塊,與它相關(guān)的驅(qū)動(dòng)模塊及樁模塊共同構(gòu)成了一個(gè)“測(cè)試環(huán)境”,如下圖:測(cè)試用例驅(qū)動(dòng)模塊測(cè)試結(jié)果被測(cè)模塊樁模塊樁模塊樁模塊124謝謝觀賞2019-6-29驅(qū)動(dòng)模塊和樁模塊是測(cè)試使用的軟件,而不是軟件產(chǎn)品的組成部分,它需要一定的開(kāi)發(fā)費(fèi)用。若驅(qū)動(dòng)模塊和樁模塊比較簡(jiǎn)單,實(shí)際開(kāi)銷相對(duì)低些。僅用簡(jiǎn)單的驅(qū)動(dòng)模塊和樁模塊不能完成某些模塊的測(cè)試任務(wù),這些模塊的單元測(cè)試只能采用下面討論的綜合測(cè)試方法。提高模塊的內(nèi)聚度可簡(jiǎn)化單元測(cè)試,如果每個(gè)模塊只完成一個(gè)功能,所需測(cè)試用例數(shù)目將顯著減少,模塊中的錯(cuò)誤也更容易發(fā)現(xiàn)。單元測(cè)試方法125謝謝觀賞2019-6-29集成測(cè)試在單元測(cè)試的基礎(chǔ)上,需要將所有模塊按照設(shè)計(jì)要求組裝成為系統(tǒng)。這時(shí)需要考慮:在把各個(gè)模塊連接起來(lái)的時(shí)侯,穿越模塊接口的數(shù)據(jù)是否會(huì)丟失;一個(gè)模塊的功能是否會(huì)對(duì)另一個(gè)模塊的功能產(chǎn)生不利的影響;各個(gè)子功能組合起來(lái),能否達(dá)到預(yù)期要求的父功能;全局?jǐn)?shù)據(jù)結(jié)構(gòu)是否有問(wèn)題;單個(gè)模塊的誤差累積起來(lái),是否會(huì)放大,從而達(dá)到不能接受的程度。單個(gè)模塊的錯(cuò)誤是否會(huì)導(dǎo)致數(shù)據(jù)庫(kù)錯(cuò)誤。Tobecontinue…126謝謝觀賞2019-6-29集成測(cè)試選擇什么方式把模塊組裝起來(lái)形成一個(gè)可運(yùn)行的系統(tǒng),直接影響到模塊測(cè)試用例的形式、所用測(cè)試工具的類型、模塊編號(hào)的次序和測(cè)試的次序、以及生成測(cè)試用例的費(fèi)用和調(diào)試的費(fèi)用。通常,把模塊組裝成為系統(tǒng)的方式有兩種方式:一次性集成方式增殖式集成方式自頂向下增值方式自底向上增值方式混合增值方式Tobecontinue…127謝謝觀賞2019-6-29一次性集成方式它是一種非增殖式集成方式。也叫做整體拼裝。使用這種方式,首先對(duì)每個(gè)模塊分別進(jìn)行模塊測(cè)試,然后再把所有模塊組裝在一起進(jìn)行測(cè)試,最終得到要求的軟件系統(tǒng)。缺點(diǎn):錯(cuò)誤難以診斷定位。Tobecontinue…ABCDEF系統(tǒng)結(jié)構(gòu)圖DCEFAs1s2d1d2d3d4d5s3s4s5B單元測(cè)試ABCDEF整體組裝128謝謝觀賞2019-6-29增殖式集成方式增殖式集成方式又稱漸增式集成方式。首先對(duì)一個(gè)個(gè)模塊進(jìn)行模塊測(cè)試,然后將這些模塊逐步組裝成較大的系統(tǒng),在組裝的過(guò)程中邊連接邊測(cè)試,以發(fā)現(xiàn)連接過(guò)程中產(chǎn)生的問(wèn)題。最后組裝成為要求的軟件系統(tǒng)。自頂向下的增殖方式自底向上的增殖方式混合增殖方式演變的自頂向下增值方式自頂向下-自底向上增值方式回歸測(cè)試129謝謝觀賞2019-6-29自頂向下的增殖方式將模塊按系統(tǒng)程序結(jié)構(gòu),沿控制層次自頂向下進(jìn)行集成。由于這種增殖方式在測(cè)試過(guò)程中較早地驗(yàn)證了主要的控制和判斷點(diǎn)。在一個(gè)功能劃分合理的程序結(jié)構(gòu)中,判斷常出現(xiàn)在較高的層次,較早就能遇到。如果主要控制有問(wèn)題,盡早發(fā)現(xiàn)它能夠減少以后的返工。可以采取深度優(yōu)先或廣度優(yōu)先策略;深度優(yōu)先策略首先把主控制路徑上的模塊集成在一起,至于選擇哪一條路徑作為主控制路徑多少帶點(diǎn)隨意性,一般根據(jù)問(wèn)題的特性確定。Tobecontinue…130謝謝觀賞2019-6-29步驟以主控模塊作為測(cè)試驅(qū)動(dòng)模塊,把對(duì)主控模塊進(jìn)行單元測(cè)試時(shí)引入的所有樁模塊用實(shí)際模塊替代;依據(jù)所選的集成策略(深度優(yōu)先或廣度優(yōu)先),每次只替代一個(gè)樁模塊;每集成一個(gè)模塊立即測(cè)試一遍;只有每組測(cè)試完成后,才著手替換下一個(gè)樁模塊;為避免引入新錯(cuò)誤,須不斷進(jìn)行回歸測(cè)試(即全部或部分地重復(fù)已做過(guò)的測(cè)試)。從第二步開(kāi)始,循環(huán)執(zhí)行上述步驟,直至整個(gè)程序結(jié)構(gòu)構(gòu)造完畢。131謝謝觀賞2019-6-29模塊測(cè)試結(jié)合順序ADBECF深度優(yōu)先:A、B、E、C、D、F廣度優(yōu)先:A、B、C、D、E、F舉例:132謝謝觀賞2019-6-29As1s2s3s2s3s4s2s3ECs3Ds5F測(cè)試A加入B加入E加入C加入D加入F深度優(yōu)先:ABEABABABCEABCDE133謝謝觀賞2019-6-29自底向上的增殖方式這種組裝的方式是從程序模塊結(jié)構(gòu)的最底層的模塊開(kāi)始組裝和測(cè)試。因?yàn)槟K是自底向上進(jìn)行組裝,對(duì)于一個(gè)給定層次的模塊,它的子模塊(包括子模塊的所有下屬模塊)已經(jīng)組裝并測(cè)試完成,所以不再需要樁模塊。在模塊的測(cè)試過(guò)程中需要從子模塊得到的信息可以直接運(yùn)行子模塊得到。Tobecontinue…134謝謝觀賞2019-6-29自底向上增值方式ABCDEFd1Ed2Cd3Fd4BEd5DF135謝謝觀賞2019-6-29自頂向下增殖方式的缺點(diǎn)是需要建立樁模塊。要使樁模塊能夠模擬實(shí)際子模塊的功能將是十分困難的。同時(shí)涉及復(fù)雜算法和真正輸入/輸出的模塊一般在底層,它們是最容易出問(wèn)題的模塊,到組裝和測(cè)試的后期才遇到這些模塊,一旦發(fā)現(xiàn)問(wèn)題,導(dǎo)致過(guò)多的回歸測(cè)試。而自頂向下增殖方式的優(yōu)點(diǎn)是能夠較早地發(fā)現(xiàn)在主要控制方面的問(wèn)題。自底向上增殖方式的缺點(diǎn)是“程序一直未能做為一個(gè)實(shí)體存在,直到最后一個(gè)模塊加上去后才形成一個(gè)實(shí)體”。就是說(shuō),在自底向上組裝和測(cè)試的過(guò)程中,對(duì)主要的控制直到最后才接觸到。而自底向上增殖方式的優(yōu)點(diǎn)是不需要樁模塊,而建立驅(qū)動(dòng)模塊一般比建立樁模塊容易,同時(shí)由于涉及到復(fù)雜算法和真正輸入/輸出的模塊最先得到組裝和測(cè)試,可以把最容易出問(wèn)題的部分在早期解決。此外自底向上增殖的方式可以實(shí)施多個(gè)模塊的并行測(cè)試。兩種增殖方式優(yōu)缺點(diǎn)比較136謝謝觀賞2019-6-29混合增值方式有鑒于此,通常是把以上兩種方式結(jié)合起來(lái)進(jìn)行組裝和測(cè)試。演變的自頂向下的增殖測(cè)試:它的基本思想是強(qiáng)化對(duì)輸入/輸出模塊和引入新算法模塊的測(cè)試,并自底向上組裝成為功能相當(dāng)完整且相對(duì)獨(dú)立的子系統(tǒng),然后由主模塊開(kāi)始自

溫馨提示

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