測試getCards方法testGetCards1測試用例判斷返回長度是否正確;
public void testGetCards1() throws Throwable
{
Deck deck=new Deck();
deck.addDeck(1);
Vector deckcard=deck.getCards();
assertEquals(52,deckcard.size());
}
testGetCards2測試用例從返回的結果中取任意值判斷內容是否正確;
public void testGetCards2() throws Throwable
{
Deck deck=new Deck();
deck.addDeck(1);
Vector deckcard=deck.getCards();
Card card=(Card) deckcard.elementAt(1);
String RET=card.toString();
assertEquals("2H",RET);
}
測試shuffle方法testShuffle1用例測試在未增加牌時shuffle方法是否會出錯;
public void testShuffle1() throws Throwable
{
Deck deck=new Deck();
deck.shuffle();
Vector RET=deck.getCards();
assertEquals(0, RET.size());
}
testShuffle2用例測試洗牌后紙牌的內容有沒有丟失或改變;代碼中使用了窮舉的方法,驗證每一張牌是否真實存在。是否有更好的測試方法呢?
public void testShuffle2() throws Throwable
{
Deck deck=new Deck();
Deck deck2=new Deck();
deck.addDeck( 1);
deck2.addDeck( 1);
Vector carddeck= deck.getCards();
Vector carddeck2= deck2.getCards();
deck.shuffle();
Card card,card2;
boolean RET;
for(int j=0;j<52;j++){
card=(Card) carddeck.elementAt( j);
RET=false;
for(int i=0;i<52;i++){
card2=(Card) carddeck2.elementAt(i);
if(card2.toString().equals( card.toString()))
RET=true;
}
assertEquals(true,RET);
}
}
testShuffle3用例測試洗牌后牌的數量是否錯誤。
public void testShuffle3() throws Throwable
{
Deck deck=new Deck();
deck.addDeck( 1);
deck.shuffle();
Vector RET=deck.getCards();
assertEquals(52, RET.size());
}
注:由于在源代碼中已經注明只使用一幅牌,所以測試過程中未考慮牌多于一幅的情況;
思考問題:
是否考慮異常情況?在本次的例子中,當不增加紙牌而取某一張牌時會出現錯誤,但是否有必要進行這種測試?
在getCard方法中如果測試者不知道Card類如何使用,那么將無法對測試結果進行判斷。當設計文檔編寫的不夠細致時會不會對白盒測試阻礙,這個阻礙會有多大呢?
測試shuffle方法是否有更好的方法呢?類似這種情況在實際應用中可能會很多,有時可能無法使用窮舉、邊界值、分類等方法來進行測試,這時應該如何進行測試呢?
由于測試代碼的增多,提高了錯誤存在于測試代碼中的風險,這時應該如何處理呢?
考慮testBurnIt1測試,當toString方法改變時,可能會引起testBurnIt1測試失敗,這樣會增加測試代碼的維護難度,應該如何解決這一問題呢?
原文轉自:http://www.anti-gravitydesign.com