freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

清華大學(xué)殷仁昆教授講授軟件工程講義-08(編輯修改稿)

2025-01-28 03:28 本頁面
 

【文章內(nèi)容簡介】 語句沒有全面檢查 write() 的返回值,無意中假設(shè)了只有數(shù)據(jù)被 完全寫入 和 沒有寫入 兩種情況。此測試還忽略了數(shù)據(jù) 部分寫入 的情況,就給程序遺留了隱患。 ? 按程序的設(shè)計(jì),使用函數(shù) strrchr() 查找最后的匹配字符,但程序中誤寫成了函數(shù) strchr(),使程序功能實(shí)現(xiàn)時(shí)查找的是第一個(gè)匹配字符。 ? 程序中將 if ( strncmp(str1, str2, strlen(str1)) ) 誤寫成了 if ( strncmp(str1, str2, strlen(str2)) )。如果測試用例中使用的數(shù)據(jù) str1 和 str2 長度相 33 軟件工程 同,就無法檢測出。 ? 因此,在設(shè)計(jì)測試用例時(shí),應(yīng)對 以函數(shù)返回值作為條件判斷 , 字符串操作 等情況特別注意。 ? 面向?qū)ο缶幊痰奶匦允沟脤Τ蓡T函數(shù)的測試,又不完全等同于傳統(tǒng)的函數(shù)或過程測試。尤其是繼承特性和多態(tài)特性, Brian Marick 提出 了兩點(diǎn): 1) 繼承的成員函數(shù)可能需要重新測試 ? 對父類中已經(jīng)測試過的成員函數(shù),兩種情況需要在子類中重新測試: a) 繼承的成員函數(shù)在子類中做了改動(dòng); b) 成員函數(shù)調(diào)用了改動(dòng)過的成員函數(shù)。 34 軟件工程 ? 例如:假設(shè)父類 Bass 有兩個(gè)成員函數(shù): Inherited() Redefined() ? 若子類 Derived 對 Redefined()做了改動(dòng),Derived::Redefined() 必 需重新測試。但如果 Derived::Inherited() 包含有調(diào)用 Redefined() 的語句(如: x = x / Redefined()),就需要重新測試;反之,則不必重新測試。 2) 對父類的測試用例不能照搬到子類 ? 根據(jù)以上的假設(shè), Base::Redefined() 和Derived::Redefined() 是不同的成員函數(shù),它們 35 軟件工程 有不同的說明和實(shí)現(xiàn)。對此,應(yīng)該對 Derived::Redefined() 重新設(shè)計(jì)測試用例。 ? 由于面向?qū)ο蟮睦^承性,使得兩個(gè)函數(shù)還是有相似之處,故只需在 Base::Redefined() 的測試用例基礎(chǔ)上添加對 Derived::Redfined() 的新測試用例。 例如: ? Base::Redefined() 含有如下語句 if ( value 0 ) message (less)。 else if ( value == 0 ) message (equal)。 else message (more)。 ? Derived::Redfined() 中定義為 36 軟件工程 if ( value 0 ) message (less)。 else if ( value == 0 ) message (“ It is equal)。 else { message (more)。 if ( value == 88 ) message(luck)。 } ? 在原有的測試上,對 Derived::Redfined() 的測試只需做如下改動(dòng):改動(dòng) value == 0 的預(yù)期測試結(jié)果,并增加 value == 88 的測試。 ? 多態(tài)有幾種不同的形式,如 參數(shù)多態(tài) , 包含多態(tài) ,重載多態(tài) 。 ? 包含多態(tài) 和 重載多態(tài) 在面向?qū)ο笳Z言程序中通常 37 軟件工程 ? 體現(xiàn)在 子類與父類的繼承關(guān)系 上,對這兩種多態(tài)的測試可參照對父類成員函數(shù)繼承和重載的情況處理。 ? 在測試對象時(shí),完全的覆蓋測試應(yīng)當(dāng)包括: ? 隔離對象中所有 操作 ,進(jìn)行獨(dú)立測試。 ? 測試對象中所有 屬性 的設(shè)置和訪問。 ? 測試對象的所有可能的 狀態(tài)轉(zhuǎn)換 。所有可能引起狀態(tài)改變的事件都要模擬到。 2. 對象類測試 38 軟件工程 ? 對象類 , 作為在語法上獨(dú)立的構(gòu)件 , 應(yīng)當(dāng)允許在不同應(yīng)用中使用 。 每個(gè)類都應(yīng)是可靠的且不需了解任何實(shí)現(xiàn)細(xì)節(jié)就能復(fù)用 。 因此對象類應(yīng)盡可能孤立地進(jìn)行測試 。 ? 設(shè)計(jì)操作的測試用例時(shí)的要點(diǎn): 1) 首先定義測試對象 各操作 的測試用例 。 2) 對于一個(gè)單獨(dú)的操作 , 可通過該操作的 前置條件 選擇測試用例 , 產(chǎn)生輸出 , 讓測試者能夠判斷 后置條件 是否能夠得到滿足 。 3) 各個(gè)操作的測試與傳統(tǒng)對函數(shù)過程定義的測試基本相同 。 39 軟件工程 4) 然后再把測試用例組擴(kuò)充 , 針對被測操作調(diào)用對象類中其他操作的情況 , 設(shè)計(jì)操作序列的測試用例組 。 5) 測試可以覆蓋每個(gè)操作的整個(gè)輸入域。但這不夠,還必須測試這些操作的相互作用,才能認(rèn)為測試是充分的。 6) 各個(gè)操作間的相互作用包括 類內(nèi)通信 和 類間通信 。 ? 設(shè)計(jì)對象類的規(guī)格說明測試時(shí)的要點(diǎn): 1) 把對象類當(dāng)做一個(gè)黑盒,確認(rèn)類的實(shí)現(xiàn)是否遵照它的定義。 40 軟件工程 putReferencePoint(Point) moveTo(Point) ReferencePoint area( ) draw( ) erase( ) getReferencePoint(Point) DisplayableShape(Point) DisplayableShape 類內(nèi)消息 類間消息 DisplayableShape( ) 41 軟件工程 例如,對于“?!钡臏y試應(yīng)當(dāng)確保 LIFO 原則得以實(shí)施。 2) 對于多數(shù)對象類,主要檢驗(yàn)在類聲明的 public 域 中的那些操作。 3) 對于子類,要檢查繼承父類的 public 域 和protected 域 的那些操作。 4) 檢查所有 public域 , protected域 及 private 域 中的操作以完全檢查對象中定義的操作。 5) 等價(jià)劃分的思想也可用到對象類上。將 使用對象相同屬性 的測試歸入同一個(gè)等價(jià)劃分集合中。這樣可以建立對對象類屬性進(jìn)行初始化、 42 軟件工程 訪問、更新等的等價(jià)劃分。 ? 在設(shè)計(jì)對象類的行為測試時(shí)需要注意: 1) 基于對象的 狀態(tài)模型 進(jìn)行測試時(shí),首先要識(shí)別需要測試的 狀態(tài)的變遷序列 ,并定義事件序列來強(qiáng)制執(zhí)行這些變遷。 2) 原則上應(yīng)當(dāng)測試每一個(gè)狀態(tài)變遷序列,當(dāng)然這樣做測試成本很高。 3) 完全的單元應(yīng)當(dāng)保證類的執(zhí)行必須 覆蓋它的一個(gè)有代表性的狀態(tài)集合 。 4) 構(gòu)造函數(shù)和消息序列(線程)的參數(shù)值的選擇應(yīng)當(dāng)滿足這個(gè)規(guī)則。 43 軟件工程 面向?qū)ο蟮募蓽y試 (OO Integrate Test) ? 當(dāng)開發(fā)面向?qū)ο笙到y(tǒng)時(shí),集成的層次并不明顯。而當(dāng)一組對象類通過組合行為提供一組服務(wù)時(shí),則需將它們一起測試,這就是簇測試。此時(shí)不存在自底向上和自頂向下的集成。 ? 面向?qū)ο蟪绦蛳嗷フ{(diào)用的功能是散布在程序的不同類中,類通過消息相互作用申請和提供服務(wù)。類的行為與它的狀態(tài)密切相關(guān),狀態(tài)不僅僅是體現(xiàn)在類數(shù)據(jù)成員的值,也許還包括其他類中的狀態(tài)信息。 44 軟件工程 ? 對象集成測試又稱 交互測試 ,目的是確保對象的消息傳遞能夠正確進(jìn)行。 ? 面向?qū)ο笙到y(tǒng)的集成測試有 3 種可用的方法: 1) 用例或基于場景的測試 用例或場景描述了對系統(tǒng)的使用模式。測試可以根據(jù)場景描述和對象簇來制定。這種測試 著眼于系統(tǒng)結(jié)構(gòu),首先測試幾乎不使用服務(wù)器類的獨(dú)立類,再測試那些使用了獨(dú)立類的下一層次的(依賴)類。這樣一層一層地持續(xù)下去,直到整個(gè)系統(tǒng)構(gòu)造完成。 2) 基于線程的測試
點(diǎn)擊復(fù)制文檔內(nèi)容
化學(xué)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1