版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、技術(shù)創(chuàng)新,變革未來軟件開發(fā)測試過程詳解2目錄軟件開發(fā)測試過程單元測試集成測試系統(tǒng)測試31 測試層次傳統(tǒng)觀點(diǎn) 測試層次與傳統(tǒng)開發(fā)V型瀑布模型的對應(yīng) 自頂向下,功能分解4ATM系統(tǒng)終端I/O管理會話引導(dǎo)事務(wù)卡輸入PIN輸入選擇事務(wù)瀑布模型應(yīng)用示例:ATM系統(tǒng)的部分功能分解概要設(shè)計(jì)的最終結(jié)果是將系統(tǒng)的功能分解為功能組件的樹型結(jié)構(gòu)瀑布模型與通過功能分解進(jìn)行的自頂向下開發(fā)和設(shè)計(jì)密切相關(guān);傳統(tǒng)集成測試的目標(biāo)是根據(jù)功能分解樹集成以前測過的單元。5產(chǎn)品開發(fā)測試基本過程6常見的軟件開發(fā)過程7需求分析階段軟件需求的檢視、評審系統(tǒng)測試計(jì)劃、方案設(shè)計(jì)系統(tǒng)測試計(jì)劃、方案的檢視和評審軟件系統(tǒng)測試用例設(shè)計(jì)軟件系統(tǒng)測試用例的
2、檢視和評審8SRS的定義是對在特定環(huán)境下要完成一定功能的軟件產(chǎn)品、程序或一組程序的說明。應(yīng)該從以下方面去描述需求:功能:軟件要做什么外部接口:如何與人、系統(tǒng)硬件、外部的硬件和軟件交互性能:速度、響應(yīng)時間、恢復(fù)時間等屬性:可移植性、可靠性、可維護(hù)性、可用性等實(shí)現(xiàn)的設(shè)計(jì)約束:標(biāo)準(zhǔn)、實(shí)現(xiàn)語言、資源限制、操作環(huán)境等9軟件需求規(guī)格說明書的目的在客戶和開發(fā)者之間達(dá)成一致為編制計(jì)劃和成本計(jì)價提供基礎(chǔ)為設(shè)計(jì)提供了基礎(chǔ)為確認(rèn)和驗(yàn)證提供一個基礎(chǔ)提高開發(fā)效率便于移植10軟件需求規(guī)格說明書的特點(diǎn)軟件需求的正確性軟件需求的無歧義性軟件需求的完整性軟件需求的一致性軟件需求的可驗(yàn)證性軟件需求的可追蹤性11實(shí)例一需求1:系統(tǒng)
3、應(yīng)在不少于每10秒的正常周期內(nèi)提供狀態(tài)信息;系統(tǒng)應(yīng)該以誤差上下不超過1秒的10秒間隔,在用戶界面的指定位置顯示狀態(tài)信息;顯示的狀態(tài)信息應(yīng)包括如下內(nèi)容:如果顯示狀態(tài)信息有誤,應(yīng)提示如下的錯誤信息:12實(shí)例二需求2:HTML分析器可以產(chǎn)生HTML標(biāo)記錯誤報(bào)告,幫助HTML入門者快速解決錯誤HTML分析器可以產(chǎn)生一個錯誤報(bào)告,錯誤報(bào)告包含有在被分析文件中出錯的HTML文本和行號以及錯誤的描述。如果沒有錯誤,就不會產(chǎn)生錯誤報(bào)告13需求分類需求分類是對很多的需求按照可以管理的方式分組。如:原始需求產(chǎn)品需求軟件需求測試需求14需求的屬性每個需求類型都有多個屬性:優(yōu)先級工作量風(fēng)險(xiǎn)可用于界定項(xiàng)目的范圍,估計(jì)工
4、作量,計(jì)劃和平衡資源等1.“必須的”如果該需求不能實(shí)現(xiàn),軟件產(chǎn)品功能不能成為特定類型的產(chǎn)品;2.“重要的”如果該需求不實(shí)現(xiàn),會影響其市場競爭力;3.“最好有的”可以選擇實(shí)現(xiàn),針對特定目標(biāo)客戶群的個性化需求,或?yàn)榱撕屯惍a(chǎn)品展開差異化競爭而實(shí)現(xiàn)的需求。15需求的表達(dá)表達(dá)需求的方法:通過輸入、輸出來說明(自然語言)使用規(guī)范化的模型方法(UML)使用電子表格使用代表性的例子16需求表達(dá)應(yīng)避免的問題需求描述過多涉及到具體的設(shè)計(jì)和實(shí)現(xiàn)超出規(guī)格:對需求描述大大超出用戶要求過度限制:對需求進(jìn)行不必要的限制不確定性:以相對的方式描述需求(無具體數(shù)據(jù))沒有結(jié)束的需求主觀或含糊的描述需求需求描述基于未經(jīng)確認(rèn)的假設(shè)
5、17需求階段的角色和職責(zé)(1)帶領(lǐng)項(xiàng)目組分析業(yè)務(wù)需求帶領(lǐng)項(xiàng)目組完成軟件需求規(guī)格說明書撰寫軟件SRS參加軟件SRS的評審根據(jù)評審意見,修改SRS參加系統(tǒng)測試計(jì)劃的評審18軟件經(jīng)理:在SRS評審結(jié)束后,批準(zhǔn)SRS文檔QA:監(jiān)督項(xiàng)目組遵循需求管理流程;參加相關(guān)文檔評審;保證相關(guān)組參加文檔評審CCB負(fù)責(zé)人:控制需求的變更(Change Control Broad)19需求階段的角色和職責(zé)(2)參與開發(fā)人員的軟件需求分析,提出可測試性需求組織人員參與SRS的評審工作軟件系統(tǒng)測試計(jì)劃、方案寫作組織軟件系統(tǒng)測試計(jì)劃的評審參與軟件需求規(guī)格的評審工作協(xié)助軟件測試項(xiàng)目經(jīng)理完成軟件系統(tǒng)測試計(jì)劃、方案寫作參加系統(tǒng)測試
6、計(jì)劃的評審20軟件系統(tǒng)測試設(shè)計(jì)的技能要求軟件開發(fā)相關(guān)軟件需求的相關(guān)知識可視化建模/UML相關(guān)知識軟件測試技術(shù)相關(guān)軟件系統(tǒng)測試方案的設(shè)計(jì)軟件系統(tǒng)測試用例設(shè)計(jì)產(chǎn)品質(zhì)量屬性相關(guān)知識軟件測試管理相關(guān)軟件測試的項(xiàng)目管理溝通能力執(zhí)行能力產(chǎn)品業(yè)務(wù)知識通訊的原理財(cái)會知識金融產(chǎn)品知識21概要設(shè)計(jì)階段軟件概要設(shè)計(jì)的檢視、評審軟件集成測試計(jì)劃、方案設(shè)計(jì)軟件集成測試計(jì)劃、方案的檢視和評審軟件集成測試用例設(shè)計(jì)軟件集成測試用例的檢視和評審22軟件集成測試設(shè)計(jì)的技能要求軟件開發(fā)相關(guān)軟件架構(gòu)設(shè)計(jì)的相關(guān)知識可視化建模/UML相關(guān)知識軟件測試技術(shù)相關(guān)軟件集成測試方案的設(shè)計(jì)軟件集成測試用例設(shè)計(jì)軟件測試管理相關(guān)軟件測試的項(xiàng)目管理溝通
7、能力執(zhí)行能力23概要設(shè)計(jì)階段的角色和職責(zé)(1)在項(xiàng)目計(jì)劃中標(biāo)識設(shè)計(jì)活動并確保有足夠的資源從項(xiàng)目成員中標(biāo)識出概要設(shè)計(jì)人員,負(fù)責(zé)設(shè)計(jì)工作確保設(shè)計(jì)人員按照本流程開發(fā)相應(yīng)的設(shè)計(jì)說明書確保按照評審規(guī)程進(jìn)行設(shè)計(jì)的評審?fù)瓿筛乓O(shè)計(jì)和接口文檔參加設(shè)計(jì)文檔評審根據(jù)評審專家意見,修改設(shè)計(jì)文檔24概要設(shè)計(jì)階段的角色和職責(zé)(2)組織所有的測試活動制定測試策略確保測試活動有合適的計(jì)劃撰寫集成測試用例25詳細(xì)設(shè)計(jì)階段軟件詳細(xì)設(shè)計(jì)的檢視、評審軟件單元測試計(jì)劃、方案設(shè)計(jì)軟件單元測試計(jì)劃、方案的檢視和評審軟件單元測試用例設(shè)計(jì)軟件單元測試用例的檢視和評審26軟件單元測試設(shè)計(jì)的技能要求軟件開發(fā)相關(guān)具有良好的編碼能力軟件詳細(xì)設(shè)計(jì)的評
8、審能力軟件測試技術(shù)相關(guān)代碼邏輯覆蓋率的相關(guān)知識單元測試用例設(shè)計(jì)的相關(guān)知識軟件測試管理相關(guān)軟件測試的項(xiàng)目管理溝通能力執(zhí)行能力27詳細(xì)設(shè)計(jì)階段的角色和職責(zé)(1)在項(xiàng)目計(jì)劃中標(biāo)識設(shè)計(jì)活動并確保有足夠的資源從項(xiàng)目成員中標(biāo)識出設(shè)計(jì)人員,負(fù)責(zé)設(shè)計(jì)工作確保設(shè)計(jì)人員按照本流程開發(fā)相應(yīng)的設(shè)計(jì)說明書確保按照評審規(guī)程進(jìn)行設(shè)計(jì)的評審?fù)瓿稍O(shè)計(jì)文檔參加設(shè)計(jì)文檔評審根據(jù)評審專家意見,修改設(shè)計(jì)文檔28詳細(xì)設(shè)計(jì)階段的角色和職責(zé)(2)組織所有的測試活動制定測試策略確保測試活動有合適的計(jì)劃撰寫單元測試用例29軟件編碼階段軟件代碼靜態(tài)檢查軟件代碼走讀30單元測試執(zhí)行階段軟件單元測試用例執(zhí)行軟件單元測試軟件缺陷記錄、跟蹤軟件單元測試日
9、報(bào)寫作軟件單元測試報(bào)告寫作軟件單元測試缺陷的回歸測試31軟件集成測試執(zhí)行階段軟件集成測試用例執(zhí)行軟件集成測試軟件缺陷記錄、跟蹤軟件集成測試日報(bào)寫作軟件集成測試報(bào)告寫作軟件集成測試缺陷的回歸測試32軟件系統(tǒng)測試執(zhí)行階段軟件系統(tǒng)測試用例執(zhí)行軟件系統(tǒng)測試軟件缺陷記錄、跟蹤軟件系統(tǒng)測試日報(bào)寫作軟件系統(tǒng)測試報(bào)告寫作軟件系統(tǒng)測試缺陷的回歸測試ST33測試執(zhí)行階段開發(fā)人員的角色和職責(zé)確保缺陷分發(fā)給相關(guān)軟件工程師并及時得到解決參與需求變更評審修正缺陷驗(yàn)證相關(guān)的缺陷已經(jīng)被修改34測試執(zhí)行階段開發(fā)人員的角色和職責(zé)組織所有的測試活動確保選擇適合的測試工具以及測試環(huán)境的建立確保測試活動的計(jì)劃得到執(zhí)行和獲得資源確保缺陷
10、分發(fā)給相關(guān)軟件工程師并及時得到解決審核并批準(zhǔn)測試報(bào)告搭建測試環(huán)境執(zhí)行測試用例將測試中發(fā)現(xiàn)的所有缺陷填寫在缺陷報(bào)告中回歸測試 E.準(zhǔn)備測試報(bào)告35軟件開發(fā)測試工作量分布36 2 軟件開發(fā)的其他生命周期模型 傳統(tǒng)V模型(瀑布模型)的缺陷: 各過程之間缺乏有效合成,相互獨(dú)立,只有系統(tǒng)被完全理解后才能進(jìn)行功能分解; 開發(fā)者與用戶缺乏有效交互。過于強(qiáng)調(diào)分析幾乎排除了綜合;系統(tǒng)完成時間長。一、瀑布模型的派生 合成更接近人們的工作方式:從已知和理解的東西開始,然后逐漸增加,可能還會刪除不需要的部分。37瀑布模型的三種主流派生模型:增量開發(fā):從均衡實(shí)際人員結(jié)構(gòu)出發(fā)構(gòu)建和劃分生命周期模型;(將系統(tǒng)劃分為現(xiàn)有人力
11、能夠支持的構(gòu)建)進(jìn)化開發(fā):從充分考慮和適應(yīng)用戶變化的需求角度來構(gòu)建和劃分生命周期模型;(根據(jù)第一個構(gòu)建標(biāo)識后續(xù)構(gòu)建,使系統(tǒng)發(fā)展)螺旋模型:快速原型與進(jìn)化開發(fā)的結(jié)合。38三種模型關(guān)系:優(yōu)點(diǎn):能產(chǎn)生比較早期的綜合,較早的得到客戶的反饋;缺點(diǎn):進(jìn)化開發(fā)和螺旋模型對集成測試會帶來消極影響。39 二、基于規(guī)格說明的生命周期模型快速原型法(圖12-4)通過快速定義初始規(guī)范(原型)客戶交流反饋反復(fù)形成正確的規(guī)范(原型)來急劇縮短規(guī)范到客戶的反饋周期,產(chǎn)生早期的綜合??焖僭头樾枨蠓治鲭A段引入用戶操作行為的觀點(diǎn)。使需求分析從關(guān)心系統(tǒng)的結(jié)構(gòu)到兼顧關(guān)心用戶的行為。40定義原型目標(biāo)構(gòu)建原型客戶反饋一系列原型概要設(shè)
12、計(jì)詳細(xì)設(shè)計(jì)編碼單元測試集成測試系統(tǒng)測試圖12-4 快速原型法生命周期41快速原型法擴(kuò)展可執(zhí)行規(guī)范說明需求以某種可執(zhí)行的格式(有限狀態(tài)機(jī),狀態(tài)圖,Petri網(wǎng))等描述,通過執(zhí)行該需求分析系統(tǒng)的行為,客戶提供反饋。需求規(guī)范文檔明確,可以直接導(dǎo)出測試用例。42開發(fā)可執(zhí)行規(guī)范執(zhí)行規(guī)范客戶反饋可執(zhí)行規(guī)范說明概要設(shè)計(jì)詳細(xì)設(shè)計(jì)編碼單元測試集成測試系統(tǒng)測試圖12-5 可執(zhí)行規(guī)范說明43 3 建模案例-簡單自動柜員機(jī)SATM系統(tǒng) 一、系統(tǒng)界面要求(圖12-6 15個屏幕) 二、系統(tǒng)人機(jī)接口要求(圖12-7 顯示屏幕,功能鍵和數(shù)字鍵) 三、需求分析:44歡迎請插入ATM卡請輸入PIN如果輸錯請按“取消”PIN有誤
13、,請重新輸入無效標(biāo)志,你的卡將被留下,請給銀行打電話請選擇交易類型:余額存款取款請選擇帳戶類型:支票儲蓄如果輸錯請按“取消”請輸入金額如果輸錯請按“取消”余額不足請重輸入一個金額如果輸錯請按“取消”無法支付該金額45暫時無法取款,進(jìn)行另一個交易嗎?是否正在更新余額,請取走現(xiàn)金暫時無法存款,進(jìn)行另一個交易嗎?是否請將信封放入存款槽中,余額將被更新新余額正打印在收據(jù)上,進(jìn)行另一個交易嗎?是否請取走收據(jù)和ATM卡謝謝圖12-6 SATM系統(tǒng)的15個屏幕46歡迎使用自動柜員機(jī),請插入ATM卡現(xiàn)金給付口存款信封口收據(jù)口插卡口B1B2B31234567890取消圖12-7 SATM終端47功能模型(數(shù)據(jù)流
14、圖):利用CASE工具生成數(shù)據(jù)流圖進(jìn)行系統(tǒng)功能劃分系統(tǒng)功能描述(圖12-8)例:PIN檢驗(yàn)部分功能模型(圖12-9)數(shù)據(jù)模型(實(shí)體/關(guān)系模型):通過實(shí)體/關(guān)系框圖描述SATM系統(tǒng)主要數(shù)據(jù)結(jié)構(gòu)的一個實(shí)體/關(guān)系框圖:客戶、帳戶、終端和事務(wù)(圖12-10)48e終端鍵盤d終端槽簡單ATM系統(tǒng)b終端屏幕c終端通道a中央銀行鍵盤輸入屏幕槽狀態(tài)槽命令通道命令通道狀態(tài)期望PIN,PAN圖12-8 SATM系統(tǒng)簡單語境圖描述系統(tǒng)外界關(guān)系491.1設(shè)備傳感與控制1.2中央銀行通訊1.3終端傳感與控制1.4管理會話設(shè)備命令設(shè)備狀態(tài)期望PIN接受信息請求屏幕鍵盤輸入槽命令槽狀態(tài)通道狀態(tài)通道命令終端槽終端槽終端通道終
15、端通道期望PINPAN中央銀行中央銀行屏幕鍵盤輸入終端屏幕終端鍵盤圖12-9 SATM系統(tǒng)的第一層數(shù)據(jù)流圖描述系統(tǒng)總體設(shè)計(jì)50客戶CustomerIDPAN:個人帳戶編號終端ATMidStatusCashOnHand帳戶AccNumberBalanceTypePIN:個人標(biāo)識編號交易TranTypeTimeOfDayAmountATMnumber會話擁有發(fā)生SATM系統(tǒng)客戶/帳戶/終端/事務(wù)圖12-10 實(shí)體/關(guān)系圖使用51控制模型測試用例關(guān)心的是行為,通過有限狀態(tài)機(jī)描述,表示結(jié)構(gòu)和行為的交叉,有助于測試。根據(jù)客戶使用階段的狀態(tài)劃分系統(tǒng)的上層有限狀態(tài)機(jī)示例(圖12-11),終端事件/數(shù)據(jù)條件作
16、為輸入,屏幕顯示作為輸出。52空閑等待PIN等待交易選擇存款結(jié)束會話余額取款壞卡取消或PIN失敗取消卡正常PIN無問題/顯示屏幕S5是否B1B2B3圖12-11 上層SATM有限狀態(tài)機(jī) Main Program53等待第一次PIN輸入嘗試等待第二次PIN輸入嘗試等待第三次PIN輸入嘗試等待交易選擇空閑屏幕S1卡正常,屏幕S2正確PIN,屏幕S5卡錯,屏幕S1PIN錯,屏幕S4PIN錯/屏幕S3、S2PIN錯/屏幕S3、S2正確PIN,屏幕S5正確PIN,屏幕S5圖12-12 PIN輸入有限狀態(tài)機(jī) validatePIN54收到0數(shù)字收到1數(shù)字收到2數(shù)字收到3數(shù)字收到4數(shù)字按下“取消”正確PIN
17、不正確PIN數(shù)字/回顯“X”數(shù)字/回顯“XX-”數(shù)字/回顯“XXX-”數(shù)字/回顯“XXXX”取消取消取消取消已取消圖14-7 PIN輸入嘗試有限狀態(tài)機(jī) GetPIN55STAM系統(tǒng)中央銀行通信管理會話設(shè)備傳感與控制通道傳感與控制槽傳感與控制終端傳感與控制屏幕驅(qū)動器鍵盤驅(qū)動器管理會話驗(yàn)證卡驗(yàn)證PIN管理事務(wù)結(jié)束會話取數(shù)字圖12-13 SATM的一種分解樹四、層次劃分后的功能分解結(jié)構(gòu)圖56功能分解描述(P181)五、根據(jù)有限狀態(tài)機(jī)得出偽代碼描述主程序偽代碼(P182):基于圖12-11 ;ValidatePIN偽代碼(P183):基于圖12-12;GetPIN偽代碼(P183):基于圖14-7 ;
18、 使用結(jié)構(gòu)圖(狀態(tài)機(jī),分解樹,實(shí)體關(guān)系模型等)設(shè)計(jì)集成測試用例忽略了模塊多次調(diào)用的問題(“調(diào)用”信息在詳細(xì)設(shè)計(jì)階段開發(fā))。574 區(qū)分集成測試與系統(tǒng)測試澄清不同層次的測試目標(biāo),理解在不同層次上如何標(biāo)識測試用例。集成測試所處的層次比系統(tǒng)測試細(xì)的多,集成測試假設(shè)已經(jīng)過單元測試,主要考慮的是單元之間的接口。結(jié)構(gòu)認(rèn)識系統(tǒng)端口事件為系統(tǒng)測試用例的“原語”,系統(tǒng)測試用例采用端口輸入和端口輸出事件的交替序列來描述。行為認(rèn)識585 單元測試 單元測試(模塊測試)是對軟件基本組成單元進(jìn)行的測試(如:函數(shù)/子過程或類/類的方法);單元具有一些基本屬性,如:明確的功能、規(guī)格定義,明確的與其他部分的接口定義等,可清晰
19、地與同一程序的其他單元劃分。59單元測試的目的單元測試的目的在于發(fā)現(xiàn)各模塊內(nèi)部可能存在的各種錯誤,主要是基于白盒測試驗(yàn)證代碼是與設(shè)計(jì)相符合的;發(fā)現(xiàn)設(shè)計(jì)和需求中存在的錯誤;發(fā)現(xiàn)在編碼過程中引入的錯誤。60特點(diǎn)多個模塊可以平行地獨(dú)立進(jìn)行單元測試;最早的基于代碼運(yùn)行的測試,是在軟件開發(fā)過程中要進(jìn)行的最低級別的測試活動,是非常重要的測試;能夠在改善應(yīng)用質(zhì)量的同時大量削減開發(fā)時間和成本;比如:單元級修改一個類只會影響到原始的類,而在較高的層次上修改一個類可能會改變多個程序部件的設(shè)計(jì)和功能性。 61單元測試的重要性時間方面:低級錯誤造成后續(xù)階段測試不順利測試效果:深層次問題,證明代碼做了什么、如何做,是否
20、做了該做的事情測試成本產(chǎn)品質(zhì)量單元測試是構(gòu)筑產(chǎn)品質(zhì)量的基石,不要因?yàn)楣?jié)約單元測試的時間不作單元測試而在后期浪費(fèi)太多的時間。62進(jìn)行單元測試的原因完成了單元測試工作,很多Bug將被糾正,開發(fā)人員能夠進(jìn)行更高效的系統(tǒng)集成工作;即完整計(jì)劃下的單元測試是對時間的更高效的利用;高質(zhì)量的測試需要高質(zhì)量的規(guī)格說明,能找到更多的編碼錯誤,甚至是一些規(guī)格說明中的錯誤;63進(jìn)行單元測試的原因(續(xù))每個人都會犯錯誤:一般軟件工程師平均缺陷引入率在100個/千行代碼(包括編譯錯誤);受過PSP訓(xùn)練的工程師缺陷引入率在50個/千行代碼;工程師在編寫代碼的時候,一般每小時引入68個缺陷;在設(shè)計(jì)階段,一般每小時引入13個缺
21、陷。64CMM、PSP和TSP簡介CMM是過程改善的第一步,它提供了評價組織的能力、識別優(yōu)先改善需求和跟蹤改善進(jìn)展的管理方式。PSP(Person Software Process)能夠指導(dǎo)軟件工程師如何保證自己的工作質(zhì)量,估計(jì)和規(guī)劃自身的工作,度量和追蹤個人的表現(xiàn),管理自身的軟件過程和產(chǎn)品質(zhì)量。TSP(Team Software Process)結(jié)合了CMM的管理方法和PSP的工程技能。65進(jìn)行單元測試的原因(續(xù))單元測試是一個在早期抓住Bug的機(jī)會,單元測試的創(chuàng)建更簡單,維護(hù)更容易,并且可以方便地進(jìn)行重復(fù),單元測試的費(fèi)用很低。3.25小時6.25小時11.5小時11小時單元測試集成測試系統(tǒng)
22、測試外場測試各種測試的時間效率66單元測試和集成測試的區(qū)別測試對象:單元測試模塊下實(shí)現(xiàn)具體功能的單元(詳細(xì)設(shè)計(jì))集成測試模塊以及模塊間的組合(概要設(shè)計(jì))趨勢:單元測試和集成測試間的界限變得模糊了,如:單元測試方法中也引入了集成概念。67單元測試和系統(tǒng)測試的區(qū)別單元測試早期測試;白盒測試;單元的具體實(shí)現(xiàn)、內(nèi)部邏輯結(jié)構(gòu)、數(shù)據(jù)流向;允許多個單元的測試同時開展。系統(tǒng)測試后期測試,錯誤定位困難;黑盒測試;基于需求規(guī)格說明書;站在用戶角度。68兩個問題測什么?怎么測?69測什么?70單元測試分析在單元測試時,測試者需要依據(jù)詳細(xì)設(shè)計(jì)說明書和源程序清單,了解該模塊的I/O條件和模塊的邏輯結(jié)構(gòu)。從5個方面進(jìn)行考
23、慮:71模塊接口對被測的模塊,信息能否正常無誤地流入和流出。局部數(shù)據(jù)結(jié)構(gòu)在模塊工作過程中,其內(nèi)部的數(shù)據(jù)能否保持其完整性,包括內(nèi)部數(shù)據(jù)的內(nèi)容、形式及相互關(guān)系不發(fā)生錯誤。路徑測試發(fā)現(xiàn)由于計(jì)算錯誤、不正確的判定或不正常的控制流而產(chǎn)生的錯誤。出錯處理模塊工作中發(fā)生了錯誤,其中的出錯處理設(shè)施是否有效。邊界條件在為限制數(shù)據(jù)處理而設(shè)置的邊界處,模塊是否能夠正常工作。72模塊接口調(diào)用所測模塊時的輸入?yún)?shù)與模塊的形式參數(shù)在個數(shù)、屬性、順序上是否匹配;所測模塊調(diào)用子模塊時,它輸入個子模塊的參數(shù)與子模塊的形式參數(shù)在個數(shù)、屬性、順序上是否匹配;是否修改了只做輸入用的形式參數(shù);全局變量的定義在各模塊中是否一致。73局部
24、數(shù)據(jù)結(jié)構(gòu)不正確的數(shù)據(jù)說明。置初值錯誤或錯誤的缺省值。使用尚未賦值或尚未初始化的變量。變量名拼寫錯誤或書寫錯誤。 不相容的數(shù)據(jù)類型。上溢、下溢或地址異常。74重要的邏輯路徑(1)計(jì)算中的錯誤算術(shù)運(yùn)算次序不正確和理解錯誤。運(yùn)算方式不正確:邏輯值的算術(shù)運(yùn)算。初始化不正確。算法錯誤。精度不夠。表達(dá)式符號表示不正確。75重要的邏輯路徑(2)控制流向(邏輯路徑的選擇)不同數(shù)據(jù)類型的數(shù)的比較。邏輯運(yùn)算符的不正確或優(yōu)先次序不正確。因浮點(diǎn)運(yùn)算精度問題造成的不等,而又用相等條件進(jìn)行控制轉(zhuǎn)向?!安?錯”,即不正確地多循環(huán)或少循環(huán)一次。錯誤的的循環(huán)終止條件。當(dāng)遇到發(fā)散的迭代時不能終止循環(huán)。不正確地修改循環(huán)變量。76錯
25、誤處理有意識地不合理輸入,檢查錯誤處理能力。錯誤說明不可理解(錯誤信息難理解)。指示的錯誤與實(shí)際錯誤不符。在錯誤處理之前,錯誤條件已引起系統(tǒng)干預(yù)。對錯誤條件的處理不對。錯誤描述所提供的信息不足以幫助確定錯誤定位。77邊界測試在n次循環(huán)的第0次、1次、n次是否有錯誤;運(yùn)算或判斷中取最大最小值時是否有錯誤;數(shù)據(jù)流、控制流中剛好等于、大于、小于確定的比較值時是否出現(xiàn)錯誤。78例IF a=123 THEN b=2ENDIF邊界值測試用例應(yīng)至少包括a的以下值:122、123、124。當(dāng)a=123時,b=1還是2?(找出邏輯判斷的矛盾)79怎么測?模塊并不是一個獨(dú)立的程序,在考慮測試模塊時,同時要考慮它和
26、外界的聯(lián)系在測試過程中使用一些輔助模塊去模擬與被測模塊相聯(lián)系的其它模塊80單元測試環(huán)境提供必要數(shù)據(jù)模擬下屬模塊81驅(qū)動模塊接收測試數(shù)據(jù),包含測試用例輸入和預(yù)期輸出把測試用例輸入傳送給要測試的單元將被測單元的實(shí)際輸出和預(yù)期輸出進(jìn)行比較,得到測試結(jié)果將測試結(jié)果輸出到指定位置82樁模塊樁模塊的功能是模擬替代那些隸屬于本單元的模塊樁模塊需要針對不同的輸入,返回不同的期望值,模擬所替代模塊的不同的功能樁模塊返回的期望值根據(jù)輸入和被模擬模塊的詳細(xì)設(shè)計(jì)來確定83編寫GetPINforPAN樁的實(shí)例:Procedure GetPINforPAN(PAN,ExpectedPIN)If PAN=1123Then
27、ExpectedPIN:=8876If PAN=1234Then ExpectedPIN:=8765If PAN=8746Then ExpectedPIN:=1253End84單元測試環(huán)境(續(xù)) 驅(qū)動模塊和樁模塊都是額外的開銷,都屬于必須開發(fā)但又不能和最終軟件一起提交的軟件; 必須小心地設(shè)計(jì)樁和驅(qū)動所有的隱性輸入(系統(tǒng)時鐘、文件狀態(tài)、單元加載地點(diǎn))必須被考慮;實(shí)際環(huán)境的代表物(相同的編譯器、加載者、操作系統(tǒng)、計(jì)算機(jī)、輸入分布)也是測試環(huán)境必須考慮的。85常用單元測試用例設(shè)計(jì)方法針對單元接口規(guī)格的用例設(shè)計(jì)方法等價類分析法(內(nèi)部)邊界值分析法錯誤猜測法針對單元內(nèi)部邏輯控制流程的用例設(shè)計(jì)方法語句覆蓋
28、判定覆蓋條件覆蓋判定條件覆蓋路徑覆蓋基本路徑測試方法數(shù)據(jù)流測試法(定義使用路徑)86在單元測試的基礎(chǔ)上,需要將所有模塊按照設(shè)計(jì)要求組裝成為系統(tǒng)。這時需要考慮的問題是:6 集成測試(Integrated Testing) 在把各個模塊連接起來的時侯,穿越模塊接口的數(shù)據(jù)是否會丟失; 一個模塊的功能是否會對另一個模塊的功能產(chǎn)生不利的影響; 各個子功能組合起來,能否達(dá)到預(yù)期要求的父功能; 單個模塊的誤差累積起來,是否會放大,從而達(dá)到不能接受的程度。 全局?jǐn)?shù)據(jù)結(jié)構(gòu)是否有問題; 87簡介集成測試的目的是確保各單元組合在一起后能夠按既定意圖協(xié)作運(yùn)行,并確保增量的行為正確。測試的內(nèi)容包括單元間的接口以及集成后
29、的功能。對以前的集成進(jìn)行回歸測試。88集成測試舉例現(xiàn)在有一個模塊包含以下三個函數(shù):函數(shù)A:主控函數(shù)int ctr(int x,int y),當(dāng)xy時,調(diào)用add函數(shù),否則調(diào)用sub函數(shù)函數(shù)B:加法函數(shù)int add(int x,int y),返回x和y的和函數(shù)C:減法函數(shù)int sub(int x,int y),返回x和y的差需要對這三個函數(shù)進(jìn)行集成,步驟如下:先對函數(shù)A和B進(jìn)行集成,函數(shù)C用樁替代然后將集成的函數(shù)A、B和C進(jìn)行集成集成測試考慮的是ctr輸入1,1;add是否可以輸出成功不考慮add如何計(jì)算;單元測試考慮的是add中的計(jì)算是否正確輸出289集成測試的對象(1)從最低層的單元測試
30、到最終的產(chǎn)品,其中所有各層測試都要通過集成測試來完成,一般可把集成測試劃分成三個層次:模塊內(nèi)集成測試;子系統(tǒng)內(nèi)集成測試;子系統(tǒng)間集成測試90子系統(tǒng)內(nèi)集成測試模塊內(nèi)集成測試子系統(tǒng)間集成測試集成測試的對象(2)A產(chǎn)品子系統(tǒng)1子系統(tǒng)2軟件模塊1軟件模塊2軟件模塊2軟件模塊3軟件模塊491集成測試用例設(shè)計(jì)步驟劃分測試層次和范圍確定每個層次的集成測試策略根據(jù)策略確定該層次的測試子項(xiàng)針對每個測試子項(xiàng)設(shè)計(jì)測試用例92劃分測試層次和范圍分析被測對象HLD的0層設(shè)計(jì)、1層設(shè)計(jì)、2層設(shè)計(jì);根據(jù)每層設(shè)計(jì)中各子系統(tǒng)、模塊、子模塊及其接口的優(yōu)先級、測試人力資源狀況、測試進(jìn)度要求等確定集成測試的層次,并確定每層的測試范圍
31、模塊內(nèi)集成測試;子系統(tǒng)內(nèi)集成測試;子系統(tǒng)間集成測試93確定每個層次的集成測試策略分析每層設(shè)計(jì)中模塊間的層次、接口關(guān)系,確定該層的測試策略:被測系統(tǒng)比較小,并且它的每個組件都經(jīng)過了充分的單元測試,可以考慮用大爆炸集成;該層模塊間層次關(guān)系非常清楚,可以考慮用自底向上、自頂向下集成、三明治集成、分層集成等;關(guān)注關(guān)鍵功能驗(yàn)證的時候,可以考慮基于功能的集成;關(guān)注關(guān)鍵消息處理過程的驗(yàn)證的時候,可以考慮基于消息的集成;94根據(jù)策略確定該層次的測試子項(xiàng)根據(jù)各層確定的測試策略,進(jìn)一步細(xì)分該層測試項(xiàng)為測試子項(xiàng):如果采用大爆炸策略,可以分析整個測試項(xiàng)涉及到對象的對外接口,根據(jù)接口細(xì)分成不同測試子項(xiàng);如果采用自底向上
32、、自頂向下集成、三明治集成、分層集成等,則可根據(jù)各集成步驟來劃分測試子項(xiàng);如果采用基于功能的集成,則可以根據(jù)各功能來劃分測試子項(xiàng);如果采用基于消息的集成,則可以根據(jù)各消息來劃分測試子項(xiàng);95針對每個測試子項(xiàng)設(shè)計(jì)測試用例分析每個測試子項(xiàng)涉及的接口選擇合適測試用例設(shè)計(jì)方法設(shè)計(jì)用例覆蓋相關(guān)接口等價類分析邊界值分析錯誤猜測法96主要的集成測試策略基于分解的集成大爆炸集成(非增量式集成)自頂向下增量式集成自底向上增量式集成三明治集成基于調(diào)用圖的集成成對集成相鄰集成基于路徑的集成97以SATM為例詳細(xì)分析集成測試的方法一、功能的分解表示功能分解描述(表131)功能分解的圖示分解樹表示(圖131)981AD
33、B2345678910111213B1415C1617F22181920212324252627C圖13-1 STAM的功能分解樹99 從功能分解樹進(jìn)一步細(xì)化出單元調(diào)用圖111171819232241325272624682314155720219101216圖13-2 STAM的調(diào)用圖100由單元調(diào)用圖得出鄰接矩陣(表132)二、基于功能分解集成測試 1.大爆炸集成(Big Bang Integration)屬于非增量式集成的一種方法又名一次性組裝或整體拼裝先分別測試每個模塊,再把所有模塊組裝在一起進(jìn)行測試,最終得到要求的軟件系統(tǒng) 101實(shí)例102非增量式測試方法的優(yōu)點(diǎn):可迅速完成集成測試;
34、需要的測試用例最少;該方法比較簡單;多個測試人員可以并行工作,對資源利用較高。103非增量式測試方法的缺點(diǎn):一次試運(yùn)行成功的可能性并不大;在發(fā)現(xiàn)錯誤時,問題定位和修改都比較困難;即使被測系統(tǒng)能夠被一次性集成,但還是會有許多接口錯誤很容易躲過測試而進(jìn)入到系統(tǒng)范圍測試內(nèi)。104非增量式與增量式集成測試比較非增量式測試的做法是先分散測試,然后集中起來一次完成集成測試如果在模塊的接口處存在錯誤,只會在最后的集成測試時一下子暴露出來增量式測試使用逐步集成和逐步測試的辦法,把可能出現(xiàn)的差錯分散出來,便于找出問題和修改一些模塊在逐步集成的測試中,得到了較為頻繁的考驗(yàn),因而可能取得較好的測試效果增量式測試與非
35、增量式測試相比,具有一定的優(yōu)越性105增量式集成測試將單元測試與集成測試交替進(jìn)行在組裝的過程中邊連接邊測試,以發(fā)現(xiàn)連接過程中產(chǎn)生的問題通過逐步組裝成為要求的軟件系統(tǒng)兩種基本方法自頂向下增量式集成自底向上增量式集成1062.自頂向下增量式集成測試集成是逐步實(shí)現(xiàn)的,集成測試是逐步完成的最上面的模塊最先測試測試由樁模塊控制樁模塊逐步由實(shí)際模塊代替整個過程一直重復(fù)直到最底層模塊得到測試包含樹的深度優(yōu)先(Depth First Search)或廣度優(yōu)先(Breadth First Search)遍歷過程107自頂向下增量式集成測試的步驟主控模塊作為測試驅(qū)動器;根據(jù)集成的方式(深度或廣度),下層的樁模塊一
36、次一次地被替換為真正的模塊;在每個模塊被集成時,都必須進(jìn)行單元測試。重復(fù)第2步,直到整個系統(tǒng)被測試完成。108自頂向下集成示意圖深度優(yōu)先組裝方式109As1s2s3ABs2s3s4ABCs3s4ABCDs4s5ABCDEs5ABCDEF測試A加入B加入C加入D加入E加入F廣度優(yōu)先組裝方式110模塊測試結(jié)合順序深度優(yōu)先:A、B、E、C、D、F廣度優(yōu)先:A、B、C、D、E、FADBECF111頂層子樹第二層子樹底層子樹自頂向下集成圖13-3112特點(diǎn):可以較早發(fā)現(xiàn)較高層次或主控路徑的問題??梢暂^早實(shí)現(xiàn)軟件部分功能,從心理上要增強(qiáng)信心。選用按深度方向組裝的方式,可以首先實(shí)現(xiàn)和驗(yàn)證一個完整的軟件功能。
37、不需驅(qū)動模塊。需要樁模塊。測試和設(shè)計(jì)可并行進(jìn)行(和設(shè)計(jì)順序一致)。支持故障隔離。樁的開發(fā)和維護(hù)成本大。隨著底層模塊的不斷增加,整個系統(tǒng)越來越復(fù)雜,導(dǎo)致底層模塊的測試不充分。1133.自底向上增量式集成測試最下面的模塊先得到測試測試由測試驅(qū)動控制不需要樁模塊父單元用測試過的子單元測試整個過程重復(fù)到最上面的模塊測試結(jié)束114自底向上集成示意圖115頂層子樹第二層子樹底層子樹圖134 自底向上集成116特點(diǎn)可以在任何一個葉子節(jié)點(diǎn)已經(jīng)就緒的情況下進(jìn)行集成測試;不需樁模塊;支持故障隔離;對高層的驗(yàn)證被推遲到了最后,設(shè)計(jì)上的錯誤不能被及時發(fā)現(xiàn);隨著集成到了頂層,整個系統(tǒng)將變得越來越復(fù)雜,并且對于底層的一些
38、異常將很難覆蓋。117自頂向下測試與自底向上測試方法的比較 集成測試方法 測試推進(jìn)方法 優(yōu)點(diǎn) 缺點(diǎn) 自底向上測試要準(zhǔn)備替代上層模塊的測試驅(qū)動模塊。 能夠并行測試作業(yè),同時對多個模塊進(jìn)行測試。 測試作業(yè)較分散,往往在測試的后期才能發(fā)現(xiàn)系統(tǒng)的重要缺陷。 自頂向下測試要準(zhǔn)備替代下層模塊的測試樁模塊。 能夠在早期檢測出接口界面的錯誤等重大缺陷??蓪ι蠈幽K進(jìn)行反復(fù)測試,提高其可靠性。 僅由部分人員擔(dān)任測試,測試期間較長。 測試驅(qū)動模塊模塊D模塊A測試樁模塊118三明治集成測試有時也被稱為混合式集成一種綜合自頂向下集成和自底向上集成測試策略的優(yōu)點(diǎn)的方法,提高測試效率把系統(tǒng)劃分成三層,中間一層為目標(biāo)層對目
39、標(biāo)層上面的一層使用由頂向下的集成策略對目標(biāo)層下面的一層使用自底向上的集成策略把目標(biāo)層下面的一層與目標(biāo)層集成最后測試在目標(biāo)層會合119三明治測試策略示例測試E測試F測試B、E測試D、F測試A測試ABCDEFABCDEF底層測試頂層測試120三明治集成測試優(yōu)缺點(diǎn)集合了自頂向下和自底向上的兩種集成策略的優(yōu)點(diǎn);樁和驅(qū)動器的開發(fā)工作比較?。恢虚g層在被集成前測試不充分;在一定程度上增加了定位缺陷的難度。121除了大爆炸集成,基于功能分解的集成測試:缺陷定位清晰。只要發(fā)現(xiàn)失效,就懷疑最新加入的單元。人工操作,需要開發(fā)大量的樁和驅(qū)動模塊自頂向下集成需要的樁為節(jié)點(diǎn)-1個自底向上集成的驅(qū)動模塊為節(jié)點(diǎn)-葉個重復(fù)測試
40、帶來工作量總結(jié)122 三、基于調(diào)用圖的測試單元調(diào)用圖是有向圖,節(jié)點(diǎn)表示程序單元,邊對應(yīng)程序調(diào)用。對入度和出度很高的節(jié)點(diǎn),集成測試很重要。成對集成(圖136)對調(diào)用圖中的每條邊設(shè)計(jì)一個測試用例;最終對調(diào)用圖中每條邊有一個集成測試會話;大大降低了樁和驅(qū)動模塊的開發(fā)工作;123157202191012111718192322413252726246823141516圖136 成對集成40個集成測試過程124相鄰集成節(jié)點(diǎn)鄰居是給定節(jié)點(diǎn)的所有前驅(qū)節(jié)點(diǎn)和后繼節(jié)點(diǎn)的集合(圖137);每個內(nèi)部節(jié)點(diǎn)有一個鄰居;給定調(diào)用圖的所有內(nèi)部節(jié)點(diǎn)鄰居總數(shù): 節(jié)點(diǎn)數(shù)-匯節(jié)點(diǎn)數(shù);相鄰集成即對調(diào)用圖中每一組內(nèi)部節(jié)點(diǎn)鄰居設(shè)計(jì)一個測
41、試用例。大大降低集成測試會話數(shù)量,避免樁和驅(qū)動的開發(fā)。125157202191012111718192322413252726246823141516圖137 相鄰集成11個集成測試過程126基于調(diào)用圖的集成測試技術(shù)特點(diǎn)以行為為基礎(chǔ);相鄰集成降低了測試用例數(shù),避免了樁和驅(qū)動模塊的開發(fā)工作;存在缺陷隔離困難的問題,尤其是對有大量鄰居的情況。127 四、基于路徑的集成測試 集成測試的目標(biāo)從測試單元的接口轉(zhuǎn)為測試單元之間的交互性上。程序圖概念的擴(kuò)展源節(jié)點(diǎn):程序執(zhí)行開始/重新開始的語句片段匯節(jié)點(diǎn):程序執(zhí)行結(jié)束處的語句片段模塊執(zhí)行路徑:以源節(jié)點(diǎn)開始,到匯節(jié)點(diǎn)結(jié)束的一組語句,中間沒有插入?yún)R節(jié)點(diǎn)128消息:
42、是一種程序設(shè)計(jì)語言機(jī)制,通過這種機(jī)制一個單元將控制轉(zhuǎn)移給另一個單元(子程序調(diào)用,過程調(diào)用,函數(shù)引用)MM-路徑:穿插出現(xiàn)模塊執(zhí)行路徑和消息的序列通過消息邊完成單元的跨越例: (圖138)129ABC123456123412345圖13-8 跨3個單元的MM-路徑130上圖給出了7條模塊執(zhí)行路徑:MEP(A,1)=MEP(A,2)=MEP(A,3)=MEP(B,1)=MEP(B,2)=MEP(C,1)=MEP(C,2)=131 MM-路徑圖:用節(jié)點(diǎn)表示模塊執(zhí)行路徑,邊表示消息和單元之間的返回的有向圖MEP(A,2)MEP(B,1)MEP(C,1)MEP(B,2)MEP(A,3)MEP(C,2)M
43、EP(A,1)圖13-9 由圖13-8導(dǎo)出的MM-路徑圖132程序圖是DD-路徑序列, MM-路徑是模塊執(zhí)行路徑序列模塊執(zhí)行路徑和DD-路徑的關(guān)系:可能互相包容和部分重疊MM-路徑的末端點(diǎn)的特點(diǎn):消息靜止不發(fā)送消息的節(jié)點(diǎn)數(shù)據(jù)靜止處理不立即使用的存儲數(shù)據(jù)的序列結(jié)束(圖13-10)。模塊執(zhí)行路徑、程序圖、DD-路徑、MM-路徑關(guān)系133F1F2F1F2A因果數(shù)據(jù)流非因果數(shù)據(jù)流圖13-10 數(shù)據(jù)靜止A134SATM系統(tǒng)中的MM-路徑MM-路徑舉例描述(P202)第一次嘗試正確PIN輸入的MM-路徑,模塊執(zhí)行路徑由單元名后接語句片段編號序列描述。Main(1,2,3,17,18) ValidatePI
44、N(PINok,PAN)msg 7MM-路徑序列圖(圖13-11)135MainValidatPINGetPINforPANScreenDriverGetPINKeySensor時間msg7msg15msg16msg17msg25msg26msg25msg27msg25msg25msg29圖13-11 示例MM-路徑的UML序列圖msg281363.MM-路徑復(fù)雜度以圖13-8與圖13-11比較計(jì)算(圖13-12 )137圖13-12 MM-路徑圖ABCMainValidatePINGetPINforPANScreenDriverGetPINKeySensor138MM-路徑是功能性測試和結(jié)構(gòu)
45、性測試的混合,與實(shí)際系統(tǒng)的行為密切匹配,克服結(jié)構(gòu)性測試的缺點(diǎn),使集成測試和系統(tǒng)測試無縫連接輸入/輸出行動的表達(dá)上為功能性測試MM-路徑圖的標(biāo)識方式上為結(jié)構(gòu)性測試標(biāo)識MM-路徑需要更多的工作量。特點(diǎn):139五、案例研究重新編寫NextDate,主程序功能分解為過程和函數(shù)(P205)單元程序圖(圖13-13,13-14)基于分解的集成(圖13-15)自頂向下集成自底向上集成140圖13-13 主程序和第一層單元Main V(G)=1123456GetDate V(G)=2345657、656667IncrementDate V(G)=33434343434343434343434PrintDate
46、 V(G)=1798081141圖13-15 功能分解MainisLeaplastDayOfMonthGetDateIncremnetDateprintDateValidateDate142MainisLeaplastDayOfMonthGetDateIncremnetDateprintDateValidateDate圖13-16 集成版本的調(diào)用圖143基于調(diào)用圖的集成(圖13-16)成對集成相鄰集成基于MM-路徑的集成MM-路徑要從主程序開始,回到主程序MM-路徑集合要覆蓋單元集合中所有從源到匯節(jié)點(diǎn)的路徑144一條MM-路徑(2002.5.27)Main(1,2) msg1 GetDate(
47、34,56,57,58,59,60,61,62,63,64,65,66) msg7 ValidDate(35,36,37,39,40,41,42) msg6 lastDayOfMonth(21,22,23,24,32,33) ValidDate(43,45,46,47,48,50,51,52,54,55) GetDate(67)Main(3) 145系統(tǒng)測試,是將已經(jīng)集成好的軟件系統(tǒng),作為整個基于計(jì)算機(jī)系統(tǒng)的一個元素,與計(jì)算機(jī)硬件、外設(shè)、某些支持軟件、數(shù)據(jù)和人員等其它系統(tǒng)元素結(jié)合在一起,在實(shí)際運(yùn)行環(huán)境下,對計(jì)算機(jī)系統(tǒng)進(jìn)行一系列的測試活動。7 系統(tǒng)測試(System Testing)146系統(tǒng)測
48、試的目的通過與系統(tǒng)的需求定義做比較,發(fā)現(xiàn)軟件與系統(tǒng)定義不符合或與之矛盾的地方驗(yàn)證系統(tǒng)功能是否符合需求規(guī)格定義驗(yàn)證系統(tǒng)的可靠性、可維護(hù)性、可用性、穩(wěn)定性、容錯性等其他屬性系統(tǒng)測試的測試用例應(yīng)根據(jù)需求分析說明書來設(shè)計(jì),并在實(shí)際使用環(huán)境下運(yùn)行。147系統(tǒng)測試的對象系統(tǒng)測試的對象是軟硬件集合在一起的系統(tǒng),不應(yīng)是獨(dú)立的軟件與硬件環(huán)境。驗(yàn)證時應(yīng)盡可能模擬實(shí)際的運(yùn)行環(huán)境與條件。148單元、集成、系統(tǒng)測試比較考察范圍不同單元測試主要測試單元內(nèi)部的數(shù)據(jù)結(jié)構(gòu)、邏輯控制、異常處理等集成測試主要測試模塊之間的接口和接口數(shù)據(jù)傳遞關(guān)系,以及模塊組合后的整體功能系統(tǒng)測試主要測試整個系統(tǒng)相對于需求的符合度評估基準(zhǔn)不同系統(tǒng)測試
49、的評估基準(zhǔn)是測試用例對需求規(guī)格的覆蓋率單元測試評估的主要是邏輯覆蓋率集成測試評估的主要是接口覆蓋率149配置主測試環(huán)境遵循的原則主測試環(huán)境是測試軟件功能、安全可靠性、性能、易用性等大多數(shù)指標(biāo)的主要環(huán)境。符合軟件運(yùn)行的最低要求。測試環(huán)境首先要保證能支撐軟件正常運(yùn)行。選用比較普及的OS和軟件平臺例如:一個軟件若聲稱支持“Windows9X/ME/NT/2000 professional”和“MS Office97/2000/XP”,一般我們會采用如“Windows2000 professionalMS Office2000”的流行環(huán)境營造相對簡單、獨(dú)立的測試環(huán)境。除了OS,測試機(jī)上只安裝軟件運(yùn)行和
50、測試必需的軟件,以免不相關(guān)的軟件影響測試實(shí)施。無毒的環(huán)境利用有效的正版殺毒軟件檢測軟件環(huán)境,保證測試環(huán)境中沒有病毒。150配置輔測試環(huán)境遵循的原則兼容性測試在滿足軟件運(yùn)行要求的范圍內(nèi),可選擇一些典型的OS和常用應(yīng)用軟件對其安裝卸載和主要功能進(jìn)行驗(yàn)證。模擬真實(shí)環(huán)境測試有些軟件,特別是面向大眾的商品化軟件,在測試時常常需要考察在真實(shí)環(huán)境中的表現(xiàn)。橫向?qū)Ρ葴y試?yán)幂o測試環(huán)境“克隆”出完全一致的測試環(huán)境,從而保證各個被測軟件平等對比。151軟件特性和常用系統(tǒng)測試類型的對應(yīng)關(guān)系:功能性:功能測試、安全性測試、互連測試可靠性:可靠性測試、啟動/停止測試、恢復(fù)測試、健壯性測試、備份測試易用性:可用性測試、文
51、檔測試、安裝測試效率:強(qiáng)度測試、性能測試、指標(biāo)測試、內(nèi)存泄漏測試、容量測試、壓力測試維護(hù)性:可維護(hù)性測試可移植性:配置測試、兼容測試、安裝測試152系統(tǒng)測試用例編寫原則系統(tǒng)測試用例的設(shè)計(jì)根據(jù)是系統(tǒng)的需求規(guī)格說明書、各種規(guī)范系統(tǒng)測試用例的依據(jù)不是軟件本身系統(tǒng)測試用例不僅僅包括功能測試用例,同時還應(yīng)該包含屬性測試用例153系統(tǒng)測試用例編寫思路(1)為系統(tǒng)功能性設(shè)計(jì)用例為系統(tǒng)可靠性設(shè)計(jì)用例為系統(tǒng)易用性設(shè)計(jì)用例為系統(tǒng)可移植性設(shè)計(jì)用例為系統(tǒng)可維護(hù)性設(shè)計(jì)用例為系統(tǒng)效率設(shè)計(jì)用例為系統(tǒng)異常設(shè)計(jì)用例154系統(tǒng)測試用例編寫思路(2)一、根據(jù)ISO9126質(zhì)量模型分析需求規(guī)格說明書,將需測試的需求項(xiàng)歸納到各特性、子
52、特性下質(zhì)量特性質(zhì)量子特性測試項(xiàng)功能性適合性準(zhǔn)確性互操作性安全性功能依從性效率時間特性資源利用性155系統(tǒng)測試用例編寫思路(3)二、對分析出來的測試需求項(xiàng)進(jìn)行歸納、總結(jié),確定需要進(jìn)行何種類型的測試,并把各測試項(xiàng)歸類到各測試類型下:功能測試性能測試壓力測試容量測試安全性測試GUI測試可用性測試安裝測試配置測試異常測試(恢復(fù)性測試)備份測試健壯性測試文檔測試在線幫助測試網(wǎng)絡(luò)測試系統(tǒng)測試用例編寫思路(4)三、對各測試類型下的測試項(xiàng)細(xì)分,形成為測試子項(xiàng):需求標(biāo)識需求描述系統(tǒng)測試項(xiàng)標(biāo)識系統(tǒng)測試項(xiàng)描述系統(tǒng)測試子項(xiàng)標(biāo)識系統(tǒng)測試子項(xiàng)描述Router_V100_SRS_001路由管理Router_V100_ST_
53、AddRoute路由增加Router_V100_ST_AddRoute_HostRoute_增加主機(jī)路由Router_V100_ST_AddRoute_NetRoute_增加網(wǎng)絡(luò)路由Router_V100_ST_AddRoute_SpecRoute_增加特殊路由Router_V100_ST_DelRoute路由刪除Router_V100_ST_InqRoute路由查詢Router_V100_SRS_002路由協(xié)議Router_V100_ST_OSPFOSPF協(xié)議測試Router_V100_ST_RIPRIP協(xié)議測試157系統(tǒng)測試用例編寫思路(5)四、對各測試子項(xiàng)對應(yīng)的具體需求規(guī)格進(jìn)行分析,利用
54、各種系統(tǒng)測試用例設(shè)計(jì)方法,從各角度設(shè)計(jì)用例去對需求規(guī)格進(jìn)行覆蓋,從而達(dá)到對需求的充分覆蓋:等價類劃分法邊值分析法狀態(tài)遷移圖法決策表正交試驗(yàn)法錯誤猜測法158系統(tǒng)測試過程測試過程計(jì)劃設(shè)計(jì)實(shí)現(xiàn)執(zhí)行;測試過程體現(xiàn)了測試設(shè)計(jì)和實(shí)現(xiàn)的分離測試實(shí)現(xiàn)測試執(zhí)行系統(tǒng)測試計(jì)劃階段:完成系統(tǒng)測試計(jì)劃系統(tǒng)測試設(shè)計(jì)階段:完成系統(tǒng)測試方案系統(tǒng)測試實(shí)現(xiàn)階段:完成系統(tǒng)測試用例和腳本、系統(tǒng)測試規(guī)程、系統(tǒng)測試預(yù)測試項(xiàng)系統(tǒng)測試執(zhí)行階段:執(zhí)行系統(tǒng)測試預(yù)測試項(xiàng)、提交系統(tǒng)預(yù)測試報(bào)告;執(zhí)行系統(tǒng)測試用例,提交測試日報(bào),發(fā)現(xiàn)問題并提交缺陷報(bào)告、系統(tǒng)測試報(bào)告;進(jìn)行回歸測試159系統(tǒng)測試執(zhí)行的概念按一定的系統(tǒng)測試計(jì)劃,依據(jù)系統(tǒng)測試用例,完成測試的
55、各項(xiàng)操作任務(wù);系統(tǒng)測試執(zhí)行階段應(yīng)完成:環(huán)境準(zhǔn)備、測試操作、測試記錄、測試報(bào)告160系統(tǒng)測試預(yù)測試目的:驗(yàn)證軟件系統(tǒng)基本功能或預(yù)測主要的系統(tǒng)功能,以確保其后的系統(tǒng)測試執(zhí)行能順利進(jìn)行161系統(tǒng)測試日報(bào)的寫作目的測試人員總結(jié)每天的測試工作,便于了解自己的測試進(jìn)度和測試情況,用以調(diào)整下一天的工作計(jì)劃測試人員對被測對象每天給出評估結(jié)果,用以調(diào)整后續(xù)工作中的測試策略測試人員向測試經(jīng)理反映測試中的困難,保證測試的順利進(jìn)行測試經(jīng)理通過測試日報(bào),了解每個測試人員的工作進(jìn)度,把握測試的整體進(jìn)度,發(fā)現(xiàn)進(jìn)度上的風(fēng)險(xiǎn)及時調(diào)整計(jì)劃162測試經(jīng)理通過測試日報(bào),了解各模塊缺陷發(fā)展趨勢,判斷測試是否可以退出開發(fā)經(jīng)理可以通過軟件
56、測試日報(bào)了解當(dāng)前被測試軟件的質(zhì)量情況,并可以調(diào)整缺陷修改的人力資源如果產(chǎn)品有多個測試組并行測試,測試日報(bào)可以提供彼此測試交流的手段項(xiàng)目ID標(biāo)題版本執(zhí)行者測試階段日期概述執(zhí)行用例數(shù)總用例數(shù)計(jì)劃執(zhí)行用例數(shù)累計(jì)已執(zhí)行用例數(shù)本日發(fā)現(xiàn)問題數(shù)累計(jì)發(fā)現(xiàn)問題數(shù)致命問題數(shù)問題單號嚴(yán)重問題數(shù)問題單號一般問題數(shù)問題單號困難系統(tǒng)測試日報(bào)的格式164測試報(bào)告的寫作目的軟件測試人員完成對上一個測試階段的總結(jié),完成對被測試對象的評估,并對下一階段的測試工作給出建議測試經(jīng)理通過測試報(bào)告了解被測試產(chǎn)品的質(zhì)量情況、測試過程的質(zhì)量軟件開發(fā)項(xiàng)目經(jīng)理通過軟件測試報(bào)告了解開發(fā)產(chǎn)品的質(zhì)量情況,并在下階段的開發(fā)工作中采取應(yīng)對措施在軟件測試報(bào)
57、告中,軟件測試人員做出的軟件產(chǎn)品質(zhì)量評估,可以作為產(chǎn)品是否商用發(fā)布的重要參考依據(jù)。165系統(tǒng)測試報(bào)告寫作要點(diǎn)概述測試時間、地點(diǎn)、人員環(huán)境描述總結(jié)和評價測試結(jié)果統(tǒng)計(jì)測試評估測試總結(jié)和改進(jìn)建議遺留問題報(bào)告附件166系統(tǒng)測試結(jié)果統(tǒng)計(jì)工作量數(shù)據(jù)統(tǒng)計(jì)(規(guī)模:KLOC、測試執(zhí)行:人時、工作量投入比例:人時/KLOC)缺陷統(tǒng)計(jì)(致命、嚴(yán)重、一般、提示)版本缺陷統(tǒng)計(jì)(V1、V2、V3、V4)累計(jì)遺留問題統(tǒng)計(jì)(V1、V2、V3、V4)167系統(tǒng)測試評估(1)靜態(tài)分析:效率分析測試活動持續(xù)時間:X人時執(zhí)行用例數(shù):Y個發(fā)現(xiàn)缺陷總數(shù):Z個平均每小時用例數(shù)執(zhí)行用例數(shù)/測試活動持續(xù)時間Y/X平均每小時發(fā)現(xiàn)缺陷數(shù)發(fā)現(xiàn)缺陷總
58、數(shù)/測試活動持續(xù)時間Z/X影響測試效率的原因分析:對影響測試的各種因素進(jìn)行分析,如:測試環(huán)境,物料,突發(fā)任務(wù)等。168系統(tǒng)測試評估(2)靜態(tài)分析:充分性分析千行代碼用例數(shù):根據(jù)用例統(tǒng)計(jì)對測試充分性進(jìn)行點(diǎn)評分析執(zhí)行結(jié)果統(tǒng)計(jì)根據(jù)結(jié)果統(tǒng)計(jì)對系統(tǒng)質(zhì)量和測試過程進(jìn)行點(diǎn)評169系統(tǒng)測試評估(3)測試對象的整體質(zhì)量:質(zhì)量穩(wěn)定,適合大規(guī)模應(yīng)用;存在少數(shù)嚴(yán)重問題,但有規(guī)避措施,可以使用;基本功能可用,但問題較多;基本功能不可用。也可采用打分方式。170系統(tǒng)測試總結(jié)和改進(jìn)建議總結(jié)本次測試活動的經(jīng)驗(yàn)教訓(xùn),總結(jié)主要的測試活動和事件總結(jié)資源消耗數(shù)據(jù),如總?cè)藛T、總機(jī)時,每個主要測試活動花費(fèi)的時間提供對本次測試過程活動的測
59、試設(shè)計(jì)和操作的改進(jìn)建議在測試過程中形成的對測試方案、測試用例的修改和補(bǔ)充的具體改進(jìn)內(nèi)容可列在本測試報(bào)告文檔的附錄中171系統(tǒng)測試遺留問題報(bào)告遺留問題是指測試過程中發(fā)生的并且在測試報(bào)告時仍沒有得到解決的測試問題。測試報(bào)告時已經(jīng)得到解決,并已經(jīng)過回歸驗(yàn)證的測試問題不記入其中可對遺留問題數(shù)和級別進(jìn)行統(tǒng)計(jì)要列出每個遺留問題的詳細(xì)情況,包括問題單號、問題級別、詳細(xì)描述、問題分析與對策等1727.1 線索(Thread)的概念一、線索的看法和層次線索的看法:使用場景;系統(tǒng)級測試用例;激勵/響應(yīng)對;系統(tǒng)級輸入序列產(chǎn)生的行為;端口輸入/輸出事件交替序列(系統(tǒng)級);機(jī)器指令序列 ;MM-路徑序列(集成級);源指
60、令序列(單元級);原子系統(tǒng)功能序列(系統(tǒng)級);173線索的層次:單元級:DD-路徑集成級:MM-路徑/模塊執(zhí)行和消息交替序列系統(tǒng)級:ASF序列(端口輸入/輸出事件的交替序列)線索提供三層測試的統(tǒng)一視圖:單元測試:單個函數(shù)測試;集成測試:單元之間的交互;系統(tǒng)測試:檢查原子系統(tǒng)功能之間的交互。174四個侯選線索數(shù)字輸入(激勵/響應(yīng)對,最小原子系統(tǒng)功能,集成測試)PIN輸入(激勵/響應(yīng)對,原子系統(tǒng)功能,系統(tǒng)測試起點(diǎn))簡單事務(wù)處理(多個原子系統(tǒng)功能交互,系統(tǒng)級線索)ATM卡輸入、PIN輸入、選擇事務(wù)處理類型、提供帳戶細(xì)節(jié)、引導(dǎo)操作、報(bào)告結(jié)果ATM會話(一系列線索之間的交互)二、系統(tǒng)級線索的例子-SAT
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 寫字樓衛(wèi)生間管理制度
- 水廠二泵房衛(wèi)生管理制度
- x鄉(xiāng)鎮(zhèn)衛(wèi)生院管理制度
- 村衛(wèi)生所防保工作制度
- 冰淇淋衛(wèi)生管理制度
- 建筑工地場環(huán)境衛(wèi)生制度
- 糧油衛(wèi)生監(jiān)測站規(guī)章制度
- 臨夏縣衛(wèi)生系統(tǒng)產(chǎn)假制度
- 蓓蕾幼兒園衛(wèi)生制度
- 客棧消毒間衛(wèi)生管理制度
- 2026屆廣東省江門市普通高中化學(xué)高二第一學(xué)期期末調(diào)研模擬試題含答案
- 園林綠化施工工藝及注意事項(xiàng)
- 2025年高中語文必修上冊《登泰山記》文言文對比閱讀訓(xùn)練(含答案)
- 2025年金蝶AI蒼穹平臺新一代企業(yè)級AI平臺報(bào)告-
- 2026屆山東菏澤一中高三化學(xué)第一學(xué)期期末達(dá)標(biāo)測試試題含解析
- 2025中國機(jī)械工業(yè)集團(tuán)有限公司(國機(jī)集團(tuán))社會招聘19人筆試參考題庫附答案
- 二年級上冊100以內(nèi)的數(shù)學(xué)加減混合口算題500道-A4直接打印
- 2025年二級造價師《土建工程實(shí)務(wù)》真題卷(附解析)
- 智慧農(nóng)業(yè)管理中的信息安全對策
- 港口安全生產(chǎn)知識培訓(xùn)課件
- 通信凝凍期間安全培訓(xùn)課件
評論
0/150
提交評論