


下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、測(cè)試什么? - “Right-BICEP”Right - 結(jié)果是否正確B - 是否所有的邊界條件都是正確的?I - 能查一下反向關(guān)聯(lián)嗎?C - 能用其他交叉檢查一下結(jié)果嗎?E - 你是否可以強(qiáng)制錯(cuò)誤條件發(fā)生?P - 是否滿足性能要求?參考單元測(cè)試之道 C#版使用 Nunit結(jié)果是否正確這個(gè)最簡(jiǎn)單不過(guò)了,就是看程序運(yùn)行之后的結(jié)構(gòu)和文檔是否一致。當(dāng)然可能很多的時(shí)候一個(gè)方法沒(méi)有很完整的文檔描述它,那至少也應(yīng)該有簡(jiǎn)單的文字描述,否則沒(méi)有判斷是否正確的依據(jù)了。一個(gè)原則是:對(duì)于驗(yàn)證被測(cè)方法是否正確的這件事情,如果某些做法能夠使它變得更加容易,那么就采納它吧。測(cè)試邊界條件(CORRECT)一致性(Confo
2、rmance)- 值是否符合預(yù)期的格式?有序性(Ordering)-一組值是該有序的,還是該無(wú)序的?區(qū)間性(Range)- 值是否在一個(gè)合理的最大值和最小值的范圍之內(nèi)?,耦合性(Reference) - 代碼是否素?了一些不受代碼本身直接控制的外部因存在性(Existence) - 值是否存在(例如,非 NULL,非零,包含于某個(gè)集合等)?基數(shù)性(Cardinality) - 是否恰好有足夠的值?或者相對(duì)的(Time) - 所有事情是否都是按順序發(fā)生的?是否在正時(shí)間性,確的時(shí)間?是否及時(shí)?CORRECT 一致性(Conformance)地址,例如:如果沒(méi)有會(huì)怎樣?假設(shè)要讀入某一類數(shù)據(jù),其中包括
3、一個(gè)頭部,一些數(shù)據(jù),最后是尾部。需要測(cè)試多少種情況?地址,如果沒(méi)有這個(gè)標(biāo)志,你的代碼將會(huì)怎樣處理?代碼還能工作嗎?拋出一個(gè)異常嗎?這是否也是一個(gè)你需要考慮的邊界條件呢?如果沒(méi)有頭部如果沒(méi)有數(shù)據(jù)如果沒(méi)有尾部,只有數(shù)據(jù),只有頭部,只有頭部和尾部和尾部和數(shù)據(jù),要怎樣處理?,要怎樣處理?,要怎樣處理?如果只有一個(gè)尾部如果只有一個(gè)頭部如果只有一個(gè)數(shù)據(jù),要怎樣處理?,要怎樣處理?,要怎樣處理?CORRECT 有序性(Ordering)Testpublic void KitchenOrder()Order order = new Order();FoodItem dessert = new Dessert(
4、Chocolate Decadence ); FoodItem entree = new Entree(Beef Oscar );FoodItem salad = new Salad(Parmesan Peppercorn );/ 沒(méi)有按固定的順序來(lái)點(diǎn)菜 order.AddFoodItem(dessert); order.AddFoodItem(entree); order.AddFoodItem(salad);/ 但是還是應(yīng)該按照上菜的順序送到客人桌面IEnumerator itr = order.GetEnumerator();Assert.t(salad, Is.EqualTo(itr.
5、Current);itr.MoveNext();Assert.t(entree, Is.EqualTo(itr.Current);itr.MoveNext();Assert.t(dessert, Is.EqualTo(itr.Current);itr.MoveNext();/ 如果菜都上完了Assert.t(itr.MoveNext(), Is.False);假設(shè)有一個(gè)方法屬于 GUI 的一部分,負(fù)責(zé)把點(diǎn)餐菜單發(fā)送到廚房,那么就應(yīng)該建一個(gè)測(cè)試來(lái)確保菜單上的菜目順序符合正確的上菜順序。CORRECT 區(qū)間性(Range)public constMAX_DIST = 100;sic public
6、void AssertPairInRange( Poone,Potwo,String message )Assert.t( Mabs(one.X - two.X),Is.AtMost(MAX_DIST), message);Assert.t( Mabs(one.Y - two.Y),Is.AtMost(MAX_DIST), message);MyStack.cs:using System;using System.Collections.Generic; using System.Text;namespace MyStackpublic class MyStackprivatenextInde
7、x;private String stack;public MyStack()stack = new String100;nextIndex = 0;public String Pop()return stack-nextIndex;public void Delete(n)nextIndex -= n;public void Push(String aString)stacknextIndex+ = aString;public String Top()return stacknextIndex - 1;public void CheckInvariant()if (!(nextIndex
8、= 0 & nextIndex logout()PrepareSement() - ExecuteSement() Connect() - Read() - Close()絕對(duì)時(shí)間(消耗的時(shí)間和秒表上的時(shí)間)并發(fā)問(wèn)題(要是有多個(gè)線程同時(shí)使用一個(gè)對(duì)象會(huì)出現(xiàn)什么問(wèn)題?)反向關(guān)聯(lián)對(duì)于一些方法,可以使用反向的邏輯關(guān)系來(lái)驗(yàn)證它們,例如,可以用對(duì)結(jié)果進(jìn)行平方的方式來(lái)檢查一個(gè)計(jì)算平方根的函數(shù),然后Testpublic void SquareRootUsingInverse()double x = MyMath.SquareRoot (4.0) ; Assert.AreEqual (4.0 , x*x , 0
9、.0001) ;類似地,為了檢查某條是否成功地是否和原數(shù)據(jù)很接近:了數(shù)據(jù)庫(kù),你可以通過(guò)查詢這條來(lái)驗(yàn)證。用其他交叉檢查結(jié)果例如可以利用一些比較弱的版本來(lái)檢查新寫(xiě)的超級(jí)漂亮的版本,看它們是否產(chǎn)生了相同的結(jié)果:TestPublic void SquareRootUsingStddouble number = 3880900.0;double root1 = MyMath.SquareRoot (number); double root2 = Math.Sqrt (number); Assert.AreEqual (root2 , root1 , 0.0001);另一種辦法是:使用類本身不同組成部分的數(shù)據(jù),并且確信它們能“合起來(lái)”。例如,假設(shè)我們正在做一個(gè)館的數(shù)據(jù)系統(tǒng)。在這個(gè)系統(tǒng)中,對(duì)于每一本具體的書(shū),它的數(shù)量是平衡的。也就是說(shuō),借出數(shù)加上躺在架子上的庫(kù)存數(shù)應(yīng)該等于總共所藏的書(shū)籍?dāng)?shù)量。它們甚至可以由不同類的對(duì)象來(lái)匯報(bào)它們,但是它們?nèi)匀槐仨氉裱厦娴募s束(即平衡,總數(shù)恒定)。因而,可以在它們之間進(jìn)行交叉檢
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 IEC 60335-2-78:2021+AMD1:2025 CSV EN Household and similar electrical appliances - Safety - Part 2-78: Particular requirements for outdoor barbecues
- 個(gè)人股份轉(zhuǎn)讓協(xié)議書(shū)
- 勞務(wù)合同到期不續(xù)簽
- 信息管理系統(tǒng)建設(shè)及維護(hù)合同
- 石油鉆井服務(wù)合同
- 房屋委托租賃居間服務(wù)合同
- 大型挖掘機(jī)買(mǎi)賣合同
- 綜合辦公服務(wù)合同
- 雙11策劃活動(dòng)方案模板
- 公司內(nèi)部借款協(xié)議
- 貴州省教育科學(xué)規(guī)劃課題申請(qǐng)書(shū)
- 火針療法課件
- 學(xué)校行政領(lǐng)導(dǎo)夜間值班制度
- 托萊西單抗注射液 (CXSS2200059)說(shuō)明書(shū)
- 合同移交登記表
- 南方醫(yī)科大學(xué)深圳醫(yī)院核技術(shù)利用擴(kuò)建項(xiàng)目項(xiàng)目環(huán)境影響報(bào)告表
- C++面向?qū)ο蟮某绦蛟O(shè)計(jì)課件
- 保險(xiǎn)產(chǎn)說(shuō)會(huì)(養(yǎng)老主題)課件
- 風(fēng)景園林工程初步設(shè)計(jì)文件編制深度規(guī)定
- 六年級(jí)心理健康導(dǎo)學(xué)案-10真正的朋友 |大象版
- 大專建筑工程畢業(yè)論文6000字
評(píng)論
0/150
提交評(píng)論