| 第七步:StandardDealerHand类测试 | |
| 作者: alanstone 发表日期: 2005-12-27 20:42 复制链接 | |
第七步:StandardDealerHand类测试StandardDealerHand类继承StandardBlackJackHand类,并完成了部分BlackJackHand部分,及对部分StandardBlackJackHand类的方法实现了重载。 在对StandardDealerHand类测试过程中考虑到了另外一个问题,一般开发过程中一个Java类方法的代码平均在400行左右(该数据来源于对公司内部开发人员的调查),在对400行的代码进行条件覆盖时需要对代码有一定的了解,这对白盒测试的实施有一定的难度,并且对白盒测试的实施进度也有一定的影响。 考虑采用新的测试策略,先保证代码覆盖,然后在代码覆盖的前提下根据功能设计相应的测试用例,这时将测试对象按黑盒处理。这个策略与第六步的策略刚好相反,在第六步当时考虑的策略是在熟悉代码的前提下设计测试,而在这一步则不需要熟悉代码只需要考虑实现的功能。 这两种策略各有优缺点,具体实现哪种策略,要根据实际工作情况确定。 例:takeTurn方法用来得到走法,当小于17分时返回结果为要牌,17至21分之间为停牌,大于21分为爆牌。对此考虑4种情况: · 小于17分,设置测试值16分; · 等于17分,设置测试值17分; · 等于21分,设置测试值21分; · 大于21分,设置测试值22分; 对以上四种情况分别设计测试用例,然后执行测试,分析takeTurn方法代码覆盖率,如果仍然有代码未覆盖则添加相应的测试用例。 public void testTakeTurn1() throws Throwable { StandardDealerHand THIS=new StandardDealerHand(); Card card; card=new Card(Suit.CLUB,'7'); THIS.addCard( card); card=new Card(Suit.CLUB,'T'); THIS.addCard( card); TurnResult RET=THIS.takeTurn(); assertSame(TurnResult.STAND,RET); } public void testTakeTurn2() throws Throwable { StandardDealerHand THIS=new StandardDealerHand(); Card card; card=new Card(Suit.CLUB,'6'); THIS.addCard( card); card=new Card(Suit.CLUB,'T'); THIS.addCard( card); TurnResult RET=THIS.takeTurn(); assertSame(TurnResult.HIT,RET); } public void testTakeTurn3() throws Throwable { StandardDealerHand THIS=new StandardDealerHand(); Card card; card=new Card(Suit.CLUB,'Q'); THIS.addCard( card); card=new Card(Suit.CLUB,'T'); THIS.addCard( card); card=new Card(Suit.CLUB,'J'); THIS.addCard( card); TurnResult RET=THIS.takeTurn(); assertSame(TurnResult.BUST,RET); } public void testTakeTurn4() throws Throwable { StandardDealerHand THIS=new StandardDealerHand(); Card card; card=new Card(Suit.CLUB,'A'); THIS.addCard( card); card=new Card(Suit.CLUB,'T'); THIS.addCard( card); TurnResult RET=THIS.takeTurn(); assertSame(TurnResult.STAND,RET); } draw方法实现的牌的显示功能,考虑到如何用白盒测试的方式实现界面测试,难度较高同时需要写大量的测试代码,当测试代码过于复杂时测试代码本身就有可能产生测试。决定不对draw方法设计白盒测试,而是黑盒测试完成界面的测试。 SimulatedPlayerHand类和PlayerHand类测试方法、策略与StandardDealerHand类相同,这里就不做更多的介绍。 思考问题:· 是否有必要对draw方法实现白盒测试呢? · 将代码覆盖与功能测试相结合会出现哪些问题?代码冗余?测试逃逸? |
|
|
阅读全文(21282) | 回复(1514) | 推送 |
欢迎到 alanstone 的个人主页看更多内容 |
| << 4 5 6 7 8 9 10 11 >> Pages: ( 7/101 total ) 共1514条回复 |