走進單元測試:測試需要從哪些方面著手
前言
籠統(tǒng)的來說測試條件無非就是兩個方面:① 正向測試,② 反向測試!
如果單從這兩個方面來思考,肯定出現(xiàn)丟三落四的情況,也就是說不全面,所以應(yīng)該在上面兩種情況的基礎(chǔ)上再進行具體劃分,那么只要我們能夠遵循這些條件基本上就能做到全面(如果能做到,大約80%的問題應(yīng)該都解決了),于是就出現(xiàn)了下面要說的六個方面內(nèi)容!
前輩們把這些測試條件總結(jié)為:Right – BICEP
1、Right - 做正確的事,可以說是“正向測試”
這種測試前期任務(wù)是要準備足夠的正確數(shù)據(jù)(前提是要保證數(shù)據(jù)的正確性,這個很重要),運行代碼后返回的值或產(chǎn)生的影響是要跟自己的預(yù)期是一致的!
注意:如果準備的數(shù)據(jù)太大或容易丟失,建議把它放在數(shù)據(jù)文件中,然后讓單元測試讀取這個文件,這種方法會在下一篇會說到!
2、B - 邊界條件(Boundary)
邊界條件是測試里面的重中之重,必須要有足夠的認識和重視!
而它又被分為七個方面的子條件,下面就讓我們來一一熟悉它!
① 一致性(Conformance)
數(shù)據(jù)是否符合我規(guī)定的格式(也可以說是非法字符吧)!
案例:比如我傳入的參數(shù)文件名需要的格式是:文件名 + 日期(yy-mm-dd) + 擴展名,那么我就要寫一個測試傳入的文件名為 :“sa#$#$#$#”這樣的格式!
② 有序性(Ordering)
這方面主要是對涉及到數(shù)組和集合的數(shù)據(jù),而且對數(shù)據(jù)的順序有嚴格要求的函數(shù),需要對它們里面數(shù)據(jù)的順序進行測試!
比如:點菜系統(tǒng)菜譜中每道菜的順序,或者去銀行辦理業(yè)務(wù)的排隊系統(tǒng)等等!
③ 范圍,區(qū)間性(Range)
值是否存在于一個最大值和一個最小值之間,主要是對值類型的數(shù)據(jù)做的測試!
這里面還有一個重要的測試點是 → 對數(shù)組,集合,以及Table,DataSet中的索引值進行測試,比如索引值不能為負,不能超出索引的范圍等等情況!
比如:一個通過ID來搜索信息的函數(shù),應(yīng)該對這個ID進行最大值和最小值的測試!
④ 引用,耦合性(Reference)
這方面主要是:代碼是否引用了一些不受本身代碼控制的外部因素(比如:調(diào)用第三方接口,調(diào)用其它模塊的接口等等)!
對于這些情況我們是沒有辦法控制的,所以在測試的時候只能模擬,而在模擬時我們會用到“Mole”技術(shù),讓它來幫助我們創(chuàng)建一個模擬環(huán)境(下一篇會介紹)!
比如:有的項目會調(diào)用銀行接口,這種情況下只能先創(chuàng)造一個虛擬銀行接口,然后再進行測試!
⑤ 存在性(Exist)
固定的測試,如Null,Empty,非零等等,這些都是必須考慮的!
⑥ 基數(shù)性(Cardinality)
對于這個測試說起來還是蠻難理解,這個測試只有在特定的場合下才會去考慮它!
它遵循一個原則:“0-1-N”!
⑦ 時間性(Timer)
對時間比較有依賴的軟件或系統(tǒng)應(yīng)該在這個方面著重測試!
主要考慮:事情是否按時間的順序執(zhí)行,是否在正確的時間執(zhí)行,是否出現(xiàn)執(zhí)行事情延誤了!
相對時間:網(wǎng)站超時,數(shù)據(jù)更新超時等等!
絕對時間:不同的client間的時間是否同步!
并發(fā)問題在時間性測試中比較重要!
3、I - 反向關(guān)聯(lián)(Inversion)
在準備數(shù)據(jù)或者驗證數(shù)據(jù)時的一種反向思維,涉及到個人的思維方式問題了!
比如:有個函數(shù)對數(shù)據(jù)庫進行了操作,但是它沒任何返回值也沒有任何提示,如果你是對正確的數(shù)據(jù)進行了測試,那么你要怎么知道測試結(jié)果跟你的預(yù)期一致呢,這里你就應(yīng)該去查找數(shù)據(jù)庫,看數(shù)據(jù)庫里面的數(shù)據(jù)是否有真的改動,這就是一種反向的思維方式!
4、C - 交叉檢查(Cross)
用一種數(shù)量檢查另一種數(shù)量(需要考慮的情況不是很多)!
5、E - 強制產(chǎn)生錯誤(Error)
通過代碼強制產(chǎn)生軟件在運行過程中出現(xiàn)的特殊情況!
可以參考下面幾種測試方面:內(nèi)存耗光,磁盤用滿,斷電,正在執(zhí)行更新數(shù)據(jù)時出現(xiàn)斷網(wǎng)現(xiàn)象,網(wǎng)絡(luò)負載嚴重導致癱瘓,系統(tǒng)時間出現(xiàn)導致和國際時間不一致等等一些情況!
6、P - 性能特性(Property)
性能測試工具的使用,沒具體研究過性能測試工具,知道的朋友可以說下你們的經(jīng)驗!
進行壓力測試,一點一點的加大數(shù)據(jù)量,10000條,100000條,1000000條這樣進行壓力測試!
總結(jié):本人對反向關(guān)聯(lián)和交叉檢查這兩個測試條件不是很理解,知道的朋友可以留言給我,我會把它補充到文章中去!
最后:下面是我對測試條件的小小總結(jié),比較簡陋!
posted on 2012-07-09 10:19 順其自然EVO 閱讀(304) 評論(0) 編輯 收藏 所屬分類: 測試學習專欄