一次簡單的集成測試

發表于:2011-11-10來源:未知作者:領測軟件測試網采編點擊數: 標簽:集成測試
一次簡單的集成測試測試Card類,Card類需要使用Suit類和Cfg類,這兩個類在這之前已經完成了測試。在這一步需要將三者集成在一起進行測試。在測試Card類時將不再考慮對Suti和Cfg類的測試,而僅僅是考慮Card類本身的測試,針對Card類的每一個方法進行測試。

  一次簡單的集成測試測試Card類,Card類需要使用Suit類和Cfg類,這兩個類在這之前已經完成了測試。在這一步需要將三者集成在一起進行測試。在測試Card類時將不再考慮對Suti和Cfg類的測試,而僅僅是考慮Card類本身的測試,針對Card類的每一個方法進行測試。

  使用Jtest自動生成測試代碼,查看測試代碼后發現,僅自動生成了部分測試代碼,并且沒有根據需要輸入適合的值,我們需要手工完成部分測試代碼。

  從最復雜的一個方法開始入手。(當時我從最復雜的方法入手是因為有部分技術問題需要解決);getIcon方法返回某張紙牌所對應的圖片文件,這里需要使用Cfg類,過程是根據牌的花色和分值計算出所對應的數組位置,因為返回的結果是一個Image類,所以在對比測試結果時有一些難度,而該數組并沒有進行初始化,所以對比時不管測試結果如何對比的結果總是正確的。對此先對Cfg中的數組cardIcons進行初始化,這里僅始化正確結果的數組,最后進行與預期結果進行對比;代碼示例如下:

  Card card; //建立card類

  Suit suit; //建立suit類

  suit=Suit.CLUB; //suit引用

  card=new Card(suit,'A'); //初始化card類

  int ER=1; //預期位置是數組1

  byte buffer[] = new byte[ER];

  Cfg.cardIcons[ER]= Toolkit.getDefaultToolkit()。createImage(buffer);; //初始化數組1

  Image RETVAL=card.getIcon();

  assertEquals(Cfg.cardIcons[ER],RETVAL); //對比測試結果

  注:如果不對Cfg中的數組進行初始化,則對比結果永遠是正確的。

  接下來對每一個方法進行測試,這些方法可以分為幾類。

  構造方法:

  Card()

  Card(final Card card)

  Card(Suit suit, char value)

  賦值的方法:

  void assign (final Card rhs)

  boolean setSuit(Suit newSuit)

  boolean setType(char newType)

  取值的方法

  char cardType()

  Suit getSuit()

  String toString()

  有效性判斷

  final boolean isAce()

  final boolean isFaceCard()

  final boolean isValid()

  final boolean isValueCard()

  運算

  boolean equals (Object obj)

  boolean lessThan(Card rhs)

  char suitAsChar()

  Image getIcon()

  在這里發現當對某一個方法進行測試時可能會調用另一個方法?;蛘呤窃跍y試過程中需要借用另外的方法。那么這些方法本身是否有一個測試的先后順序呢?例如:getIcon方法中調用了suitAsChar、isAce、isValueCard三個方法,先測試這三個方法是否正確,再測試getIcon方法是否正確,這樣當getIcon方法出現錯誤時,可以確認是由于getIcon方法本身的錯誤還是由于suitAsChar、isAce、isValueCard三個方法中出現了錯誤。

  手工完成每一個類的測試代碼??梢允褂肑uint實現對已經完成的三個類的一次性完整測試。

  集成測試在測試項目中加入Deck類,使用Jtest自動生測試代碼。檢查自動生成的測試代碼發現有部分沒有判斷結果。對些需要手工改寫測試代碼。

  測試AddDeck方法在測試過程中需要調用toString方法對結果進行判斷。預期的結果是"Card nums=52 [AH, 2H, 3H, 4H, 5H, 6H, 7H, 8H, 9H, TH, JH, QH, KH, AD, 2D, 3D, 4D, 5D, 6D, 7D, 8D, 9D, TD, JD, QD, KD, AS, 2S, 3S, 4S, 5S, 6S, 7S, 8S, 9S, TS, JS, QS, KS, AC, 2C, 3C, 4C, 5C, 6C, 7C, 8C, 9C, TC, JC, QC, KC]" 在測試AddDeck方法的同時也對toString方法進行了測試;

  測試burnIt方法

  public void testBurnIt1() throws Throwable

  {

  Deck deck=new

  Deck();

  deck.addDeck(1);

  deck.burnIt();

  String RET=deck.toString() ;

  String Exp="Card nums=0 []";

  assertEquals(Exp, RET);

  }

  先增加一幅牌然后調用burnIt方法清除,使用toString方法取得返回結果,對返回結果進行判斷。也可以使用getCards方法對測試結果進行判斷。個人覺得getCards方法可能更加適合,因為該方法中并沒有任何操作,不會對測試產生影響。下面的測試方法

  會不會更好一些呢?

  public void testBurnIt1() throws Throwable

  {

  Deck deck=new Deck();

  deck.addDeck(1);

  deck.burnIt();

  Vector RET=deck.getCards();

  assertEquals(0, RET.size());

  }

  測試getCard方法testGetCard1測試使用取邊界值與預期值進行比較判斷測試正確性的測試策略。下例為取第一個值;

  public void testGetCard1() throws Throwable

  {

  Deck deck=new Deck();

  deck.addDeck( 1);

  Card card=deck.getCard();

  Card card2=new Card();

  boolean RET1=card.equals( card2);

  assertEquals(true,RET1);

  }

  下面的例子中,測試了Deck類的異常情況;在測試過程中測試出現異常(不是錯誤)。對于這個例子我們是否需要考慮這種特殊情況呢?在BJ 這個項目中會不會出現不增加牌而使用牌的情況呢?對于這種情況是否需要考慮程序的整體架構呢?(這種異??赡軙善渌拇a來處理)

  public void testGetCard3() throws Throwable

  {

  Deck deck=new Deck();

  Card card = null;

  card=deck.getCard();

  assertEquals(null,card);

  }

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97