![軟件實(shí)現(xiàn)-軟件測試_第1頁](http://file4.renrendoc.com/view10/M02/22/04/wKhkGWWA2ESATFE5AACWq_rqZw4405.jpg)
![軟件實(shí)現(xiàn)-軟件測試_第2頁](http://file4.renrendoc.com/view10/M02/22/04/wKhkGWWA2ESATFE5AACWq_rqZw44052.jpg)
![軟件實(shí)現(xiàn)-軟件測試_第3頁](http://file4.renrendoc.com/view10/M02/22/04/wKhkGWWA2ESATFE5AACWq_rqZw44053.jpg)
![軟件實(shí)現(xiàn)-軟件測試_第4頁](http://file4.renrendoc.com/view10/M02/22/04/wKhkGWWA2ESATFE5AACWq_rqZw44054.jpg)
![軟件實(shí)現(xiàn)-軟件測試_第5頁](http://file4.renrendoc.com/view10/M02/22/04/wKhkGWWA2ESATFE5AACWq_rqZw44055.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
chapter__70
承上啟下編碼標(biāo)準(zhǔn)和規(guī)范關(guān)于編碼的一些理念(以容易讀懂為標(biāo)準(zhǔn))chapter__71軟件工程
第7章軟件實(shí)現(xiàn)--軟件測試chapter__72
教學(xué)目的及要求要求:掌握黑盒測試方法和測試用例的設(shè)計(jì);掌握白盒測試方法和測試用例的設(shè)計(jì);掌握單元測試方法和集成測試方法
目的:主要討論軟件的測試,重點(diǎn)放在測試的策略與技術(shù),糾錯的策略與技術(shù),以及多模塊的測試內(nèi)容與方法。chapter__73本章要點(diǎn)一、軟件測試基礎(chǔ)
二、單元測試三、集成測試四、確認(rèn)測試五、白盒測試技術(shù)六、黑盒測試技術(shù)七、調(diào)試八、軟件可靠性
chapter__74任何工業(yè)產(chǎn)品在出廠前都要經(jīng)過嚴(yán)格的質(zhì)量檢驗(yàn),軟件產(chǎn)品也不例外,在編碼和調(diào)試完成之后,還需要進(jìn)行嚴(yán)格的測試!為什么要測試?軟件開發(fā)的前面各階段都已經(jīng)采取了各種方法和技術(shù)進(jìn)行質(zhì)量保證,為什么還要進(jìn)行軟件測試?
由于軟件是一種高密集度的智力產(chǎn)品,比一般的硬件產(chǎn)品更復(fù)雜和難以控制。雖然在前階段的開發(fā)過程中,采取了相應(yīng)的措施,但仍然不可避免地會存在錯誤。還得提醒一下同學(xué)們:軟件測試是很困難的,必須要有一整套的方法和技術(shù)進(jìn)行指導(dǎo)。chapter__75軟件失敗的案例
因?yàn)殚_發(fā)工作的前期不可避免地會引入錯誤,測試的根本目的是為了發(fā)現(xiàn)和改正錯誤,這對于某些涉及人的生命安全或重要的軍事、經(jīng)濟(jì)目標(biāo)的項(xiàng)目顯得尤其重要。
1963年美國飛往火星的火箭爆炸,造成1000萬美元的損失。原因是FORTRAN程序:
DO5I=1,3
誤寫為:DO5I=1.
3
1967年蘇聯(lián)“聯(lián)盟一號”載人宇宙飛船在返航時,由于軟件忽略一個小數(shù)點(diǎn),在進(jìn)入大氣層時因打不開降落傘而燒毀。chapter__76測試的重要性從上述例子可以看出,即使在前面的開發(fā)過程中經(jīng)過嚴(yán)格的復(fù)審,軟件錯誤仍然存在。因此進(jìn)行嚴(yán)格的軟件測試,進(jìn)一步發(fā)現(xiàn)和改正軟件錯誤,是非常必要和重要的。chapter__77
軟件測試的工作量約占整個項(xiàng)目工作量的40%左右,對于要求極高的系統(tǒng)測試工作量還要成倍增加。
微軟Exchange2000和Windows
2000中的人員結(jié)構(gòu)
Exchange2000Windows2000
項(xiàng)目經(jīng)理25人約250人開發(fā)人員140人約1700人測試人員350人約3200人測試人員/開發(fā)人員2.51.9測試的重要性chapter__78為什么需要這么多人、花這么多代價進(jìn)行測試?目的何在?什么是測試“測試的目的是說明程序正確地執(zhí)行它應(yīng)有的功能”這種說法正確嗎?chapter__79什么是測試測試的英文單詞為Testing,即檢驗(yàn)或考試之意。【例】對嚴(yán)重智障人的測試。要初步測試一個人的智力是否存在嚴(yán)重障礙,可以出如下算術(shù)測試題:1+2=?2+2=?2×2=?如果他的回答全部正確,就可以初步斷定不是嚴(yán)重智力障礙,反之,可能是智力嚴(yán)重障礙。所謂測試,就是通過一定的方法或工具,對被測試對象進(jìn)行檢驗(yàn)或考試,目的是發(fā)現(xiàn)被測試對象具有某種屬性或者存在某些問題。
chapter__710若將上述設(shè)計(jì)過程寫成文檔就是測試計(jì)劃,上述回答問題的人就是被測試對象,出算術(shù)題就是測試方法,其中“1+2=?”、“2+2=?”等等就是測試用例,請他回答問題的過程就是測試過程,將測試結(jié)果和預(yù)期結(jié)果相比較就得出測試結(jié)論,將測試對象、測試目的、測試方法、測試用例、測試時間、測試場景和測試結(jié)論進(jìn)行記錄和分析就產(chǎn)生測試報告。什么是測試chapter__711軟件測試是測試中的特例,因?yàn)槠錅y試對象是軟件產(chǎn)品,它是人的智力產(chǎn)品,表現(xiàn)異常復(fù)雜,所以軟件測試有自身的特點(diǎn)與難度,并具有挑戰(zhàn)性?!径x】軟件測試是按照規(guī)定的測試規(guī)程發(fā)現(xiàn)軟件缺陷的過程。
軟件測試的目的是發(fā)現(xiàn)軟件缺陷,軟件測試的目標(biāo)是盡可能早的發(fā)現(xiàn)軟件陷,因?yàn)槿毕莅l(fā)現(xiàn)越早,其修復(fù)成本越低。軟件測試不僅僅局限于測試程序代碼,還可以測試軟件數(shù)據(jù)與軟件文檔。也就是說,軟件生命周期中所產(chǎn)生的軟件工作產(chǎn)品,都可以作為測試對象,因?yàn)樗鼈兌紩绊懽罱K的軟件產(chǎn)品質(zhì)量。
什么是軟件測試chapter__712基于不同的立場,存在著兩種完全不同的測試目的。從用戶的角度出發(fā),普遍希望通過軟件測試暴露軟件中隱藏的錯誤和缺陷,以考慮是否可接受該產(chǎn)品。從軟件開發(fā)者的角度出發(fā),則希望測試成為表明軟件產(chǎn)品中不存在錯誤的過程,驗(yàn)證該軟件已正確地實(shí)現(xiàn)了用戶的要求,確立人們對軟件質(zhì)量的信心。軟件測試的目的與任務(wù)chapter__713軟件測試要設(shè)法使軟件發(fā)生故障,暴露軟件錯誤測試的“成功”與“失敗”
能夠發(fā)現(xiàn)錯誤的測試是成功的測試,否則是失敗的測試。
軟件測試的目的與任務(wù)chapter__714G.J.Myers在<軟件測試技巧>中認(rèn)為:1.測試是為了尋找錯誤而運(yùn)行程序的過程。2.一個好的測試用例是指很可能找到迄今為止尚未發(fā)現(xiàn)的錯誤的測試。3.一個成功的測試是揭示了迄今為止尚未發(fā)現(xiàn)的錯誤的測試。
因此,測試階段的基本任務(wù)應(yīng)該是根據(jù)軟件開發(fā)各階段的文檔資料和軟件的結(jié)構(gòu),精心設(shè)計(jì)一組“高產(chǎn)”的測試用例,利用這些用例執(zhí)行程序,找出軟件中潛在的各種錯誤(Bug)和缺陷(Defect)。
軟件測試的目的與任務(wù)chapter__715什么是軟件缺陷?RonPatton在《SoftwareTesting》中定義如下:(1).軟件未實(shí)現(xiàn)產(chǎn)品說明書要求的功能;(2).軟件出現(xiàn)產(chǎn)品說明書指明不應(yīng)該出現(xiàn)的錯誤;(3).軟件實(shí)現(xiàn)了產(chǎn)品說明書未說明的功能;(4).軟件未實(shí)現(xiàn)產(chǎn)品說明書雖未明確提及但應(yīng)該實(shí)現(xiàn)的目標(biāo);(5).軟件難以理解,不易使用,運(yùn)行速度慢,或者軟件測試員、最終用戶認(rèn)為軟件不好。軟件缺陷的說法很多,例如錯誤、失敗等等.什么是軟件缺陷chapter__716缺陷、錯誤與失敗的關(guān)系有缺陷的軟件軟件系統(tǒng)錯誤軟件系統(tǒng)失敗chapter__717第一類稱為缺陷:它們都是軟件開發(fā)過程潛在的隱患,這些缺陷可能在軟件投入運(yùn)行后出現(xiàn),使得軟件的性能和可靠性等方面與系統(tǒng)的設(shè)計(jì)要求不符;有時這些問題可能不出現(xiàn),軟件的性能和可靠性并不會因?yàn)樗鼈兊拇嬖诙艿接绊?。第二類稱為錯誤:這類錯誤與軟件運(yùn)行狀態(tài)有關(guān),它們是在軟件運(yùn)行過程中可觀測到的軟件錯誤。這些問題出現(xiàn)的原因是軟件缺陷所致。第三類稱為失?。哼@是軟件運(yùn)行給用戶造成的損失的一類軟件故障,它強(qiáng)調(diào)軟件失敗的結(jié)果。失敗的直接原因是軟件系統(tǒng)存在軟件錯誤。并不是所有的軟件錯誤都會導(dǎo)致軟件失敗,如果對軟件錯誤加以適當(dāng)?shù)目刂?,軟件錯誤可以導(dǎo)致安全。缺陷、錯誤與失敗的關(guān)系chapter__718軟件測試減少軟件故障發(fā)生有缺陷的軟件正常軟件系統(tǒng)chapter__719例:程序Triangle,輸入三個整數(shù),表示一個三角形的三個邊長,該程序產(chǎn)生一個結(jié)果,指出該三角形是等邊三角形、等腰三角形還是不等邊三角形。為說明其能正確執(zhí)行它的功能,可使用“測試用例”(3,4,5),(5,5,6),(6,6,6),程序都能給出正確結(jié)果,是否就可認(rèn)為程序是正確的?討論chapter__720軟件驗(yàn)證與確認(rèn)軟件測試可以發(fā)現(xiàn)以下軟件缺陷:軟件實(shí)現(xiàn)的功能不正確“缺少”:軟件沒有實(shí)現(xiàn)某項(xiàng)功能“多余”,軟件實(shí)現(xiàn)的某項(xiàng)功能在需求中沒有定義發(fā)現(xiàn)第一類軟件缺陷的過程---“驗(yàn)證”發(fā)現(xiàn)后兩類軟件缺陷的過程---“確認(rèn)”chapter__721測試概念的總結(jié)什么是軟件測試?通常,軟件測試是發(fā)現(xiàn)并指出軟件系統(tǒng)缺陷的過程。或者說,軟件測試是根據(jù)軟件開發(fā)各階段的規(guī)格說明和程序的內(nèi)部結(jié)構(gòu)而精心設(shè)計(jì)一批測試用例(testcase),并利用這些測試用例去執(zhí)行檢查并發(fā)現(xiàn)軟件錯誤的過程。
chapter__722測試概念的總結(jié)好的測試方案是盡可能發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的錯誤的方案成功的測試是發(fā)現(xiàn)了至今為止未發(fā)現(xiàn)的錯誤的測試概況:chapter__723測試概念的總結(jié)為了尋找錯誤,并盡可能地為修正錯誤提供更多的信息為了證明軟件有錯誤,而不證明軟件沒有錯誤保證產(chǎn)品質(zhì)量!目的:chapter__724人們?yōu)榱颂岣邷y試的效率,在長期測試實(shí)驗(yàn)中積累了不少經(jīng)驗(yàn),下面列出了人們在實(shí)踐中總結(jié)的主要基本原則:
(1)盡早地并不斷地進(jìn)行軟件測試。
(2)程序員或程序設(shè)計(jì)機(jī)構(gòu)應(yīng)避免測試自己設(shè)計(jì)的程序。
(3)測試用例中不僅要有輸入數(shù)據(jù),還要有與之對應(yīng)的預(yù)期結(jié)果。
(4)測試用例的設(shè)計(jì)不僅要有合法的輸入數(shù)據(jù),還要有非法的輸入數(shù)據(jù)。
(5)完全測試是不可能的。
(6)在對程序修改之后要進(jìn)行回歸測試。測試的原則chapter__725
(7)程序中尚未發(fā)現(xiàn)的錯誤的數(shù)量通常與該程序中已發(fā)現(xiàn)的錯誤的數(shù)量成正比。
(8)妥善保留測試計(jì)劃、全部測試用例、出錯統(tǒng)計(jì)和最終分析報告,并把它們作為軟件的組成部分之一,為維護(hù)提供方便。
(9)應(yīng)當(dāng)對每一個測試結(jié)果做全面檢查。
(10)嚴(yán)格執(zhí)行測試計(jì)劃,排除測試的隨意性。測試計(jì)劃內(nèi)容應(yīng)包括:所測軟件的功能、輸入和輸出、測試內(nèi)容、各項(xiàng)測試的進(jìn)度安排、資源要求、測試資料、測試工具、測試用例的選擇、測試的控制方式和過程、系統(tǒng)組裝方式、跟蹤規(guī)程、調(diào)試規(guī)程、回歸測試的規(guī)定以及評價標(biāo)準(zhǔn)等。測試原則chapter__726例:測試計(jì)算器程序加法測試1+0=……1+99999999999999999999999999999999=2+0=……2+99999999999999999999999999999999=……3+99999999999999999999999999999999+99999999999999999999999999999999=1.0+0.1=1.0+0.2=……減法測試、乘法測試、除法測試、求平方根、百分?jǐn)?shù)、倒數(shù)chapter__727測試技術(shù)現(xiàn)狀軟件測試的實(shí)踐性大于理論性軟件測試?yán)碚擉w系尚不成熟軟件測試工具尚不成熟軟件測試效果對于個人的依賴性比較大現(xiàn)狀:chapter__728對軟件測試人才的需要
你們那兒缺什么人?隨便抓個IT企業(yè)的HR問,那人必然仰天長嘆一聲,百分百地回答:軟件測試人員!主要軟件測試人員有如下魅力元素:就業(yè)競爭小無性別歧視chapter__729聘測試工程師的招聘廣告職位描述:1、按照測試流程和計(jì)劃,構(gòu)建測試環(huán)境,設(shè)計(jì)測試腳本和用例,執(zhí)行測試腳本和測試用例,尋找Bug;2、分析問題所在并進(jìn)行準(zhǔn)確定位和驗(yàn)證,按照標(biāo)準(zhǔn)格式填寫并提交Bug報告;3、跟蹤并驗(yàn)證Bug,并確認(rèn)問題得以解決;4、按照標(biāo)準(zhǔn)格式填寫并提交測試報告,編寫其他相關(guān)文檔;5、完成軟件開發(fā)的集成測試工作。chapter__730軟件錯誤存在的地方chapter__731測試方法軟件測試的目的是以最少的測試用例集合測試出更多的程序中潛在錯誤。如何測試得徹底,怎樣設(shè)計(jì)測試用例是測試的關(guān)鍵技術(shù)。依據(jù)測試過程是否在實(shí)際應(yīng)用環(huán)境中來分,軟件測試技術(shù)分為靜態(tài)分析技術(shù)與動態(tài)測試技術(shù)兩種。測試方法有白盒法與稱黑盒法。chapter__732測試技術(shù)軟件測試技術(shù)動態(tài)測試靜態(tài)測試黑盒測試白盒測試在不知道程序內(nèi)部結(jié)構(gòu),只知道程序規(guī)格的情況下采用的測試技術(shù)或策略。在知道程序內(nèi)部結(jié)構(gòu)的情況下采用的測試技術(shù)或策略。黑盒測試方法和白盒測試方法綜合的策略。不實(shí)際運(yùn)行程序,而是通過檢查和閱讀等手段來發(fā)現(xiàn)錯誤并評估代碼質(zhì)量的軟件測試技術(shù)。也稱為靜態(tài)分析技術(shù)。實(shí)際運(yùn)行程序,并通過觀察程序運(yùn)行的實(shí)際結(jié)果來發(fā)現(xiàn)錯誤的軟件測試技術(shù)。白盒測試灰盒測試chapter__733動態(tài)測試靜態(tài)分析器分析代碼檢查白盒測試方法黑盒測試方法走查評審靜態(tài)分析軟件測試測試的種類灰盒測試方法審查chapter__734靜態(tài)和動態(tài)測試汽車的檢查過程:踩油門看車漆打開前蓋檢查發(fā)動汽車聽聽發(fā)動機(jī)聲音上路行使靜態(tài)測試動態(tài)測試靜態(tài)分析與動態(tài)測試chapter__735測試步驟及策略所有測試過程都應(yīng)采用綜合測試策略;即應(yīng)先作靜態(tài)分析,再作動態(tài)測試,并應(yīng)事先制訂測試計(jì)劃。測試過程通常可分4步進(jìn)行:集成測試單元測試單元測試單元測試被測模塊被測模塊設(shè)計(jì)信息已測試的模塊確認(rèn)測試已集成的模塊系統(tǒng)測試已確認(rèn)的軟件可交付的軟件軟件需求系統(tǒng)其他元素軟件測試的策略第一步第二步第三步第四步
測試步驟chapter__736靜態(tài)測試(分析)定義:不實(shí)際運(yùn)行程序,而是通過檢查和閱讀等手段來發(fā)現(xiàn)錯誤并評估代碼質(zhì)量的軟件測試技術(shù)。也稱為靜態(tài)測試技術(shù)。方法:走查:WalkThrough審查:Inspection評審:ReviewMichaelFaganIBM(1976)chapter__737
通常走查是讓與測試人員“充當(dāng)”計(jì)算機(jī),即首先由測試組成員為被測程序準(zhǔn)備一批有代表性的測試用例,提交給走查小組。走查小組開會,集體扮演計(jì)算機(jī)角色,讓測試用例沿程序的邏輯運(yùn)行一遍,隨時記錄程序的蹤跡,供分析和討論用。通常能查出30%--70%的邏輯設(shè)計(jì)錯誤和編碼錯誤。走查chapter__738靜態(tài)分析-走查WalkThrough走查是最常用的靜態(tài)分析方法,進(jìn)行走查時,還常使用以下分析方法:①調(diào)用圖從語義的角度考察程序的控制路線。②數(shù)據(jù)流分析圖檢查分析變量的定義和引用情況。chapter__739答案①調(diào)用圖是從語義的角度考察程序的控制路線,如下圖所示:主要通過對調(diào)用關(guān)系的分析找出程序段的問題?;卮饐栴}
無論Y為何值,都不能夠調(diào)用子程序,即執(zhí)行ABC后,是不可能執(zhí)行路徑CDE的。
READYY>0NX:=YX<0YN調(diào)用子程序ABCE
問題當(dāng)Y為何值時,能夠調(diào)用子程序?調(diào)用圖YDchapter__740結(jié)論②數(shù)據(jù)流分析圖節(jié)點(diǎn)—
表示單個語句,用矩形表示。有向邊—
表示控制結(jié)構(gòu),箭頭方向?yàn)閳?zhí)行順序。若用:d
—
表示定義u—表示未引
r
—表示引用
R:只定義不用S:未定義引用Y:連續(xù)定義123456R=0.5W=1/SY=A**WY=E*WZ=X+YC=Z*S
數(shù)據(jù)流分析圖主要用于檢查和分析變量的定義及引用情況,如圖所示是一個數(shù)據(jù)流分析圖應(yīng)用舉例,描述了一個具有六個節(jié)點(diǎn)的有向圖。其中:問題:考察變量R,S,Y的定義、引用情況,并從中找出問題??疾旖Y(jié)果R:duuuuuS:uruuurY:uuddruchapter__741舉例chargClass[3]={0801,0802,0803};intgnClassNum;//班級數(shù)目intFindClass(char*classname){inti;jfor(i=0;i<gnClassNum;i++){if(!strcmp(gClass[i],classname))returni;break;}return-1;}chapter__742靜態(tài)分析-審查Inspection定義:開發(fā)組內(nèi)部進(jìn)行的,分配了相關(guān)的角色,采用講解、提問并使用Checklist方式進(jìn)行的查找錯誤的活動。經(jīng)驗(yàn):以會議的形式,制定會議目標(biāo)、流程和規(guī)則,結(jié)束后要編寫報告參加人員經(jīng)驗(yàn)豐富的開發(fā)人員和本模塊相關(guān)的開發(fā)人員本項(xiàng)目組的新人由另外一名開發(fā)者進(jìn)行講解、其他開發(fā)者主要按照Checklist進(jìn)行提問并填表、本模塊開發(fā)者回答問題并記錄不要現(xiàn)場修改檢查要點(diǎn)編碼與設(shè)計(jì)需求的一致性代碼標(biāo)準(zhǔn)/規(guī)范/風(fēng)格chapter__743靜態(tài)分析-評審Review定義:開發(fā)組、測試組和相關(guān)人員(QA、產(chǎn)品經(jīng)理等)聯(lián)合進(jìn)行的,采用講解、提問并使用Checklist方式進(jìn)行的查找錯誤的活動。一般有正式的計(jì)劃、流程和結(jié)果報告。經(jīng)驗(yàn):以會議的形式,制定會議目標(biāo)、流程和規(guī)則,結(jié)束后要編寫報告。相關(guān)資料要在會議前下發(fā)并閱讀。參加人員經(jīng)驗(yàn)豐富的開發(fā)人員和本模塊相關(guān)的開發(fā)人員測試組和相關(guān)人員由另外一名開發(fā)者進(jìn)行講解、其他開發(fā)者主要按照Checklist進(jìn)行提問并填表、本模塊開發(fā)者回答問題并記錄不要現(xiàn)場修改檢查要點(diǎn)設(shè)計(jì)需求代碼標(biāo)準(zhǔn)/規(guī)范/風(fēng)格文檔的完整性和一致性chapter__744評審方法-----同行(對等)評審
(PeerReview)對等技術(shù)評審是由與工作產(chǎn)品開發(fā)人員具有同等背景和能力的人員對工作產(chǎn)品進(jìn)行的一種評審目的是早期和有效的消除軟件工作產(chǎn)品中的缺陷,并可對軟件工作產(chǎn)品和其中可預(yù)防的缺陷有更好的理解。chapter__745動態(tài)測試白盒測試:使用更細(xì)致的測試策略,檢查被測程序的內(nèi)部邏輯。主要用于單元測試黑盒測試:不考慮被測程序的內(nèi)部結(jié)構(gòu)和處理過程,只關(guān)心它的輸入和輸出是否能達(dá)到預(yù)期結(jié)果,因此也稱為功能性測試。黑盒測試法與白盒測試法互為補(bǔ)充,在測試的不同階段使用以發(fā)現(xiàn)不同類型的錯誤。chapter__746測試階段測試分單元測試和綜合測試,其中單元測試和編碼同處一個開發(fā)階段,由程序員完成;綜合測試是一個單獨(dú)的測試階段,分為集成測試、確認(rèn)測試等通常在編寫出每個模塊之后就對它做必要的測試,稱為單元測試,模塊的編寫者和測試者是同一個人,編碼和單元測試屬于軟件生命周期的同一個階段。在編程和單元測試階段結(jié)束之后,進(jìn)入生命周期的一個獨(dú)立的階段,稱為綜合測試,通常由專門的測試人員完成chapter__747測試活動貫穿開發(fā)周期全程需求&系統(tǒng)測試計(jì)劃概設(shè)&集成測試計(jì)劃詳設(shè)&單元測試計(jì)劃編碼確認(rèn)測試集成測試單元測試chapter__748測試的級別概要設(shè)計(jì)詳細(xì)設(shè)計(jì)編碼集成測試單元測試代碼審查需求分析確認(rèn)測試回歸測試驗(yàn)收測試chapter__749本章要點(diǎn)一、軟件測試基礎(chǔ)
二、單元測試三、集成測試四、確認(rèn)測試五、白盒測試技術(shù)六、黑盒測試技術(shù)七、調(diào)試八、軟件可靠性
chapter__750單元測試單元測試單元測試單元測試單元測試單元測試chapter__751單元測試定義:對軟件基本組成單元進(jìn)行的測試,檢驗(yàn)程序最小單位有無錯誤。單元:軟件開發(fā)中的最小的獨(dú)立部分C語言中的單元:函數(shù)或者是子過程C++語言中的單元:類chapter__752單元測試的依據(jù)及目標(biāo)測試對象編碼人員提交的已調(diào)試通過的單元代碼依據(jù)詳細(xì)設(shè)計(jì)目標(biāo)
1、檢查代碼實(shí)現(xiàn)是否符合詳細(xì)設(shè)計(jì)
2、盡早發(fā)現(xiàn)錯誤chapter__753模塊模塊接口測試局部數(shù)據(jù)結(jié)構(gòu)測試重要路徑測試錯誤處理測試邊界條件測試I/O參數(shù)值的個數(shù)、類型、次序、格式是否正確,I/O文件屬性、操作是否正確等。數(shù)據(jù)說明是否正確、一致,變量及其初值定義是否正確等。檢查“錯誤處理程序”本身的錯誤。邊界條件常包括循環(huán)邊界,最大最小值、控制流中等于、大于、小于的比較值等。重要路徑通常是指完成模塊功能的主要路徑,一般是控制結(jié)構(gòu)。單元測試的角度chapter__754單元測試技術(shù)傳統(tǒng)的測試設(shè)計(jì):依據(jù)模塊的內(nèi)部結(jié)構(gòu),設(shè)計(jì)測試用例的過程。主要采用白盒測試技術(shù),關(guān)注邏輯覆蓋原則:1、保證沒有死代碼保證一個模塊中的每個獨(dú)立路徑都可能被使用到2、保證對所有的邏輯值都測試true和false3、在上下邊界和合法的范圍內(nèi)運(yùn)行所有的循環(huán)4、確保內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性和完整性chapter__755單元測試步驟
考慮到被測模塊與其他模塊的聯(lián)系,需要對模塊進(jìn)行獨(dú)立測試,才能夠提高測試效率,因此測試時需要使用兩類輔助模塊來模擬其他模塊。
驅(qū)動模塊(driver)—
模擬主程序或者調(diào)用模塊的功能,用于向被測模塊傳遞數(shù)據(jù),接收、打印從被測模塊返回的數(shù)據(jù)。一般只設(shè)計(jì)一個驅(qū)動模塊。
樁模塊(stub)—
又稱為假模塊,用于模擬那些由被測模塊所調(diào)用的下屬模塊的功能。可以設(shè)計(jì)一個或者多個樁模塊,才能更好地對下屬模塊進(jìn)行模擬。
測試方法以白盒法為主,驅(qū)動模塊和樁模塊都是額外開銷。被測模塊驅(qū)動模塊樁模塊樁模塊樁模塊
思考題一般驅(qū)動模塊比樁模塊容易設(shè)計(jì),為什么?
驅(qū)動模塊與樁模塊答案chapter__756
思考題一般,驅(qū)動模塊比樁模塊容易設(shè)計(jì),為什么?
參考答案因?yàn)轵?qū)動模塊是模擬主程序或者調(diào)用模塊的功能,處于被測試模塊的上層,所以驅(qū)動模塊只需要模擬向被測模塊傳遞數(shù)據(jù),接收、打印從被測模塊返回的數(shù)據(jù)的功能,較容易實(shí)現(xiàn)。而樁模塊用于模擬那些由被測模塊所調(diào)用的下屬模塊的功能,由于下屬模塊往往不只一個,也不只一層,由于模塊接口的復(fù)雜性,樁模塊很難模擬各下層模塊之間的調(diào)用關(guān)系,同時為了模擬下層模塊的不同功能,需要編寫多個樁模塊,而這些樁模塊所模擬的功能是否正確,也很難進(jìn)行驗(yàn)證。綜上,驅(qū)動模塊的設(shè)計(jì)顯然比樁模塊容易。chapter__757單元測試策略由頂向下需要樁模塊由低到上需要驅(qū)動模塊孤立測試需要樁和驅(qū)動模塊chapter__758本章要點(diǎn)一、軟件測試基礎(chǔ)
二、單元測試三、集成測試四、確認(rèn)測試五、白盒測試技術(shù)六、黑盒測試技術(shù)七、調(diào)試八、軟件可靠性
chapter__759集成測試單元測試單元測試單元測試單元測試單元測試chapter__760集成測試定義在單元測試的基礎(chǔ)上,將所有的模塊按照概要設(shè)計(jì)要求組裝成子系統(tǒng)或者系統(tǒng)。用來發(fā)現(xiàn)模塊接口之間的錯誤采用灰盒測試技術(shù)chapter__761集成測試依據(jù)概要設(shè)計(jì)(總體設(shè)計(jì))chapter__762集成測試的層次子系統(tǒng)內(nèi)集成模塊內(nèi)集成子系統(tǒng)間集成chapter__763集成測試策略
如何將經(jīng)過單元測試的模塊連接為一個可運(yùn)行的系統(tǒng)呢?一種組裝方式是將所有的模塊一次連接起來,稱為非漸增式。另外一種方式則是將模塊一個一個的連入系統(tǒng),每連入一個模塊,都要對新系統(tǒng)進(jìn)行測試,這種組裝方式稱為漸增式。具體有如下幾種策略:大爆炸集成(非漸增式)自頂向下集成自底向上集成三明治集成漸增式chapter__764M1M2M3M4M5M6M8M7大爆炸集成
(非漸增式集成)一次性組裝或整體拼裝。chapter__765M1M2M3M4M5M6M8M7自頂向下集成----漸增式集成
chapter__766M3M1M2D3D1D2簇1簇2簇3自底向上集成chapter__767M3M1M2D3D1D2三明治集成chapter__768問題漸增式與非漸增式各有何優(yōu)、缺點(diǎn)?為什么通常采用漸增式?集成測試chapter__769
問題漸增式與非漸增式各有何優(yōu)、缺點(diǎn)?為什么通常采用漸增式?非漸增式是將所有的模塊一次連接起來,簡單、易行,節(jié)省機(jī)時,但測試過程中難于查錯,發(fā)現(xiàn)錯誤也很難定位,測試效率低。漸增式是將模塊一個一個地連入系統(tǒng),每連入一個模塊,都要對新系統(tǒng)進(jìn)行測試。這種組裝測試方案比較非漸增式,容易查出錯誤及進(jìn)行錯誤定位,有利于查出模塊接口部分的錯誤,因此測試效率高。但漸增式較費(fèi)機(jī)時。比較兩種組裝測試方案,顯然漸增式有利于實(shí)現(xiàn)測試的目標(biāo),故通常采用漸增式進(jìn)行集成測試。chapter__770程序模塊示意圖S5M1S1S1S1S2S2S2S3S3S3第一步,測試主控模塊M1,設(shè)計(jì)樁模塊S1、S2、S3,模擬被M1調(diào)用的模塊M2、M3、M4。M2M3M4第二步,依次用M2、M3、M4替代樁模塊S1、S2、S3,每替代一次進(jìn)行一次測試。S4S4S4S5S5第三步,對由主控模塊M1和模塊M2、M3、M4構(gòu)成的子系統(tǒng)進(jìn)行測試,設(shè)計(jì)樁模塊S4、S5。M5M6第四步,依次用模塊M5和M6替代樁模塊S4、S5,并同時進(jìn)行新的測試。集成測試完畢。7.4.2組裝測試自頂而下集成圖aM1M4M3M2M6M5圖b圖a描述了自頂而下集成的過程,圖b為最終完成的系統(tǒng)。chapter__771M3M6M5D1D2D3D1D1D2D2D3D3M2M4M1第三步,把已測試的子系統(tǒng)按程序結(jié)構(gòu)連接起來,構(gòu)成系統(tǒng)。D4D4D4程序模塊示意圖第一步,對最底層的模塊M3、M5、M6進(jìn)行測試,設(shè)計(jì)驅(qū)動模塊D1、D2、D3來模擬調(diào)用。第四步,設(shè)計(jì)驅(qū)動模塊D4,模擬,對系統(tǒng)調(diào)用,完成程序的集成測試。第二步,用實(shí)際模塊M2、M1和M4替換驅(qū)動模塊D1、D2、D3。自底而上集成圖aM1M4M3M2M6M5圖b圖a描述了自底而上增值的過程,圖b為最終完成的系統(tǒng)。chapter__772
無論是自頂而下集成還是自底而上集成,還可選擇深度優(yōu)先或者寬度優(yōu)先集成。舉例:按自頂而下集成法,寫出下圖中分別按照深度優(yōu)先或者寬度優(yōu)先增值的模塊組裝次序。A、B、E、J、K、C、F、L、G、D、H、M、N、IABCDHGJEFIKLMN問題自頂而下集成與自底而上集成各有何優(yōu)、缺點(diǎn)?答案深度優(yōu)先:A、B、C、D、E、F、G、H、I、J、K、L、M、N寬度優(yōu)先:深度優(yōu)先與寬度優(yōu)先chapter__773自頂而下集成優(yōu)點(diǎn):能夠盡早發(fā)現(xiàn)系統(tǒng)主控方面的問題。缺點(diǎn):無法驗(yàn)證樁模塊是否完全模擬了下屬模塊的功能。自底而上集成優(yōu)點(diǎn):驅(qū)動模塊較容易編寫樁模塊,能夠盡早查出底層涉及較復(fù)雜的算法和實(shí)際的I/O模塊中的錯誤。缺點(diǎn):最后才能發(fā)現(xiàn)系統(tǒng)主控方面的問題。答案問題自頂而下集成與自底而上集成各有何優(yōu)、缺點(diǎn)?chapter__774面向?qū)ο蟮募蓽y試策略1、基于線程的測試:即集成對
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代智能技術(shù)驅(qū)動的藥店轉(zhuǎn)型之路
- 現(xiàn)代企業(yè)知識產(chǎn)權(quán)培訓(xùn)體系建設(shè)
- 灌裝機(jī)技術(shù)的綠色轉(zhuǎn)型與創(chuàng)新探索
- 《動物與人類》(說課稿)安徽大學(xué)版三年級下冊綜合實(shí)踐活動
- 《我們?nèi)ソ加巍罚ㄕf課稿)粵教版三年級上冊綜合實(shí)踐活動
- 二零二五年度2025年度臨時代理門面出租合同轉(zhuǎn)讓及代理服務(wù)協(xié)議
- 2025年度人工智能產(chǎn)業(yè)投資基金股份合作協(xié)議書
- 2025年度簡易解除租賃合同協(xié)議書(藝術(shù)展覽館)
- 2025年度自動扶梯維保與用戶滿意度調(diào)查合同
- 2025年度房屋買賣合同簽訂中的合同條款變更與補(bǔ)充協(xié)議
- 《帶一本書去讀研:研究生關(guān)鍵學(xué)術(shù)技能快速入門》筆記
- 知識圖譜智慧樹知到答案2024年浙江大學(xué)
- 2024年吉林省吉林市中考一模物理試題(解析版)
- Unit 2 Last weekend C Story time (教學(xué)設(shè)計(jì))人教PEP版英語六年級下冊
- 2024年上海市普通高中學(xué)業(yè)水平等級性考試化學(xué)試卷(含答案)
- DZ∕T 0153-2014 物化探工程測量規(guī)范(正式版)
- 2024年度-美團(tuán)新騎手入門培訓(xùn)
- 化妝品祛痘功效評價
- 高一數(shù)學(xué)寒假講義(新人教A專用)【復(fù)習(xí)】第05講 三角函數(shù)(學(xué)生卷)
- 皮下注射的并發(fā)癥及預(yù)防
- 羅沙司他治療腎性貧血的療效與安全性評價演示稿件
評論
0/150
提交評論