《java测试新技术TestNG和高级概念》读书笔记

[align=center][img]http://images.china-pub.com/ebook300001-305000/301668/shupi.jpg[/img][/align]

这本书大概是07, 08年的时候出来的吧, 当印成中文版的时候已经是09年的事儿了. 而我却在10年才开始翻它.
虽然作者是TestNG开源测试框架的发起人和主要贡献者, 但是作者写这本书的目的貌似并没有鼓吹让大家用他的这个框架来做单元测试, 很大的篇幅在讲一些与测试相关的事儿. 因为很多的场景本人并没有遇到, 或者有些问题可能对本人来说不是问题, 比如测试需要依赖执行顺序, 需要再次运行一个测试套件执行之后失败的测试用例, 一些并发测试等.

另外TestGN的很多很先进的思想已经在最新版的JUnit中有所体现, 比如注解, DataProvider等, 因此看的比较粗糙一些.

我觉得作者在某些方面的观念是非常新意的, 比如在敏捷当道的今天.作者对敏捷的某些"极端做法"提出了质疑.

对于测试覆盖率, 作者认为测试覆盖率并不是越高越好, 应该有一定的限度, 而决定覆盖率的因素与时间期限有关, 并且遵循8/2原则.

对于模拟和桩这一节, 让我明白了二者的区别, 而市面上貌似对着两个概念都混淆了, 连极为流行的spring也不例外, 比如spring-mock这个包里面更确切的说应该是stub(桩)的东西, 简单来说模拟真实对象的类就是stub, 用来临时模拟真实对象的部分行为的应该是mock, 比如easymock, jmock.都是用来录制期望真实对象的行为并在测试的过程中加以回放, 并在执行测试的结束加以检查.

作者对TDD的两点反对意见:
它注重微观设计超过宏观设计
它在实践中难以应用.

在说到TDD难以使用, 作者毫不客气的说到, 市面上列举的TDD的case都是一些小儿科的应用: 比如一个保龄球记分牌(bob大叔的敏捷实践中的例子), money例子(kent back的测试驱动开发中的例子)等等.
作者认为TDD对这些例子来说工作的很好, 这一点没有疑问, 而没有告诉程序员如何对非常复杂的代码进行测试驱动开发.
对于TestNG这样的开源测试框架也只有10~15%的测试是以TDD的方式来编写的.
用TDD方式编写的代码不一定就比"后测试"提交的代码具有更好的品质, 采用TDD方式 就一定能得到更好的设计也不一定.

作者对"如果编写了测试, 就不在需要调试"的观点进行了驳斥, 这个主要是针对某些人通过在代码中植入System.out.print()的方式来避免使用调试器的做法. 本人也觉得想象中的代码执行逻辑有时候与代码实际的执行逻辑之间有时候并不一致, 这时就应该祭起调试器这把屠龙大刀.

对xp作者也没有手下留情, 认为沉迷于xp的都是一些咨询公司用来赚取咨询费的伎俩, 认为对于结对编程的1+1>2的效果仅限于初学者, 而对于专家+专家抑或专家+菜鸟的结对未必会达到理想的效果

最后作者道出的是一个老生常谈的道理: 测试应该时常写, 应该作为开发的一部分, 是一个持续渐进的过程, 当达到一定阶段的时候, 测试的威力就会逐渐显现.

虽然我们没有采用tdd, 我们的结对方式也很山寨(开发人员主要写代码, 配备的测试人员主要写测试, 人员配备比例3:1), 但是我们的测试已经对整个代码形成了一道强有力的防护网, 一些改动带来的bug会很容易被揪出来. 对自己的重构也越来越有信心, 也许这就是所谓的勇气吧.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值