首页 | 互联网 | IT动态 | Cisco | Windows | Linux | Java | .Net | Oracle | 华为 | 存储世界 | 服务器 | 网络设备 | IDC | 安全 | 求职招聘
IT培训 | 数字网校 | 技术专题 | 电子书下载 | 教学视频 | 网页设计 | 平面设计 | 解决方案 | 直播室 | 虚拟考场 | 搜索 | 博客 | 沙龙 | 论坛
中国IT实验室软件测试频道
IT教育热线
 
首页 资讯动态 测试技术 测试工具 行业软件测试 测试管理 测试下载 经验分享 软件质量 其他技术 RSS订阅 博客 论坛
您现在的位置: 中国IT实验室 >> 软件测试 >> 测试技术 >> 集成测试 >> 文章正文

一次简单的集成测试2

文章来源中国软件测试 作者佚名 更新时间2008-5-9 保存本文保存本文 推荐给好友推荐给好友 收藏本页收藏本页

集成测试在测试项目中加入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方法可能更加适合,因为该方法中并没有任何操作,不会对测试产生影响。下面的
[url=javascript:;][u][b]测试方法[/b][/u][/url]
会不会更好一些呢?
   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);
  }
[color=red]下面的例子中,测试了[/color]
Deck类的异常情况;在测试过程中测试出现异常(不是错误)。对于这个例子我们是否需要考虑这种特殊情况呢?在

  [NextPage]
[color=red]BJ[/color]
这个项目中会不会出现不增加牌而使用牌的情况呢?对于这种情况是否需要考虑程序的整体架构呢?(这种异常可能会由其他的代码来处理)
  public void
testGetCard3() throws Throwable {

   Deck deck=new Deck();

   Card card = null;

   card=deck.getCard();

   assertEquals(null,card);
  }
 测试getCards方法testGetCards1
[url=javascript:;][u][b]测试用例[/b][/u][/url]
判断返回长度是否正确;
   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());
[color=#3366ff]  }[/color]

 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

       card=(Card) carddeck.elementAt(
j);

 RET=false;

       for(int
i=0;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方法是否有更好的方法呢?类似这种情况在实际应用中可能会很多,有时可能无法使用穷举、边界值、分类等方法来进行测试,这时应该如何进行测试呢?
   [NextPage]
 由于测试代码的增多,提高了错误存在于测试代码中的风险,这时应该如何处理呢?

 考虑testBurnIt1测试,当toString方法改变时,可能会引起testBurnIt1测试失败,这样会增加测试代码的维护难度,应该如何解决这一问题呢?

【责编:Luzi】

中国IT教育

相关产品和培训
文章评论
 专题推荐

 ·关于Java框架技术专题
 ·XML全攻略技术专题
 ·企业网管如何部署你的网络监控系统?
 ·2008年软考官方指定教材及辅导书下载专题
 ·负载均衡技术方案攻略
 ·中国IT实验室2007年技术热点盘点
 ·利用路由实现VPN的配置方法
 ·JAVA开源技术介绍专题
 ·让你的局域网网速更上一层楼
 ·Linux Shell编程实用指南
 最近更新
 博客论点
 频道精选
 软件测试频道导航