您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > Nunit
Nunit單元測試演練
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時間:[ 2013/3/29 16:13:15 ] 推薦標(biāo)簽:

      原來雖然是索引超出范圍,但是泛型集合拋的卻是ArgumentOutOfRangeException;鹦橇,MS為什么不和數(shù)組一樣拋IndexOutOfRangeException異常呢?其實(shí)List中的元素也是存儲在數(shù)組中的,我想MS是畫蛇添足了。把catch語句改下異常類型,測試通過了,其他和預(yù)想的都一樣。

      第一個測試方法完成了。寫測試看來還是有點(diǎn)麻煩,NUnit的工作只是將你測試類里的方法一起運(yùn)行并顯示結(jié)果。但測試用例和邏輯,都得自己寫,只是參數(shù)驗(yàn)證還好說。下面要驗(yàn)證正常輸出結(jié)果的隨機(jī)性,費(fèi)了點(diǎn)功夫。

      正常輸出,應(yīng)該驗(yàn)證這些:個數(shù)、范圍、元素不重復(fù)、運(yùn)行不重復(fù)、隨機(jī)分布。

      第二個測試方法只比較了一下兩次運(yùn)行不重復(fù),這里不把這個小算法抽象成機(jī)關(guān)重重的黑盒了,那應(yīng)該測試個幾百幾千次,甚至更多,看結(jié)果的重復(fù)率。還有怎么高效地比較N個集合中,每個集合都很長很長,是否有元素完全相同的呢,我想可以對集合生成一個MD5簽名再比較。

      驗(yàn)證隨機(jī)寫在第三個驗(yàn)證方法里,和驗(yàn)證結(jié)果元素個數(shù)和范圍在一起。關(guān)鍵來了,自己覺得它是隨機(jī)的不行,怎么判斷這些數(shù)是隨機(jī)的?憑什么標(biāo)準(zhǔn)判斷呢?要把判斷的依據(jù)用編程語言告訴計算機(jī)。

      隨機(jī)數(shù)有什么特征,我思索著,終于總結(jié)出:隨機(jī)是不均勻又均勻。一個隨機(jī)數(shù),可以是在指定范圍內(nèi)任意值,此謂不均勻。但一次生成的一組隨機(jī)數(shù)總體來看,若把總范圍分成若干跨度相同的子范圍,每個子范圍內(nèi)應(yīng)有差不多數(shù)量的隨機(jī)數(shù)。隨機(jī)數(shù)總數(shù)越多,在各范圍內(nèi)分布的比例越接近,此謂均勻。說到分布,想起來了,我們中學(xué)學(xué)過一個描述分布的數(shù)學(xué)概念:方差。我們生成的隨機(jī)數(shù),應(yīng)對范圍的中間值有一定的方差。而這個方差,應(yīng)該接近于均勻分布情況下的方差。我估計平均每次浮動在10%內(nèi),如果通不過,再調(diào)整一下。

      這里采用循環(huán)生成測試參數(shù),以后應(yīng)該會經(jīng)常用到這種方式。寫完,生成項目,NUnit加載,Run,大紅條!看來浮動范圍限制得太小,但是一看NUnit Text OutPut欄,發(fā)現(xiàn)有的結(jié)果浮動值過于懸殊,達(dá)數(shù)倍之多。結(jié)果之間差別也很大,不對勁!

      在項目里調(diào)試,一下子發(fā)現(xiàn),不,應(yīng)該說是想起來:生成隨機(jī)數(shù)的種子應(yīng)該在循環(huán)外初始化。不然,生成的全是連續(xù)的“隨機(jī)數(shù)”。

      做修改,NUnit重新Run一下,通過!這才是真正的隨機(jī)數(shù),隨機(jī)得很暴力,平均方差浮動不到1%!

  單元測試也是程序開發(fā)的一部分,希望與大家一起學(xué)習(xí)交流,成為軟件開發(fā)的現(xiàn)代化正規(guī)軍。

上一頁12下一頁
軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd