文章

端到端测试 vs. 单元测试

最近两周一直跟公司里面的一些工程师讨论单元测试的价值,是不是只要有端到端的自动测试已经足够。很显然我的观点是都要有,而且要以单元测试为主,为基础。

持反对意见的工程师觉得因为我们已经有了从页面到数据库的端到端的测试,能够覆盖到系统中各个层次,因此就没有必要再去为每一层中的各个类去写单独的单元测试。我认为可以从几方面来考虑这个问题。

Read more

单元测试的7境界

1         以各种借口拒绝单元测试Unit Test,比较常用的是“你没有足够的时间(进行单元测试)”。

2         尝试单元测试并且立刻开始在自己的博客商鼓吹单元测试和测试驱动开发Test Driven Development的好处。

3         单元测试一切。为了能够完成单元测试,而将私有private的方法和属性修改为内部internal;为了达到单元测试覆盖率100%而测试getter() 和 setter() 属性(方法)。

4         无法忍受脆弱的单元测试,在没有弄明白是什么的时候,就匆忙转向“集成测试” integration test。

5         发现了一种模拟 mocking 框架,并且乐于使用强制语义(strict semantics)。

6         模拟mock所有可能模拟mocked的对象。

7         开始真正有效单元测试

三种单元测试工具介绍

一、JTEST

1、简介:

jtest是parasoft公司推出的一款针对java语言的自动化白盒测试工具,它通过自动实现java的单元测试和代码标准校验,来提高代码的可靠性。Jtest先分析每个java类,然后自动生成junit测试用例并执行用例,从而实现代码的最大覆盖,并将代码运行时未处理的异常暴露出来;另外,它还可以检查以DbC(Design by Contract)规范开发的代码的正确性。用户还可以通过扩展测试用例的自动生成器来添加更多的junit用例。Jtest还能按照现有的超过350个编码标准来检查并自动纠正大多数常见的编码规则上的偏差,用户可自定义这些标准,通过简单的几个点击,就能预防类似于未处理异常、函数错误、内存泄漏、性能问题、安全隐患这样的代码问题。 Read more

如何激励同事编写单元测试

摘要:从管理人员到开发者,每个人都在说单元测试,但是却很少有人执行。Lurkerbelow深知单元测试带来的好处,也积极提倡单元测试,但公司同仁却对此毫无兴趣。无奈之下,Lurkerbelow在Stack Exchange发出上“求救”,抛出《如何激励同事进行单元测试?》的话题。 Read more

矛盾:全部测试,除了Accessor类?

在Raikes学院的敏捷开发者技能课程上,我说我们通常不测试Accessor。但是我们不是可以测试所有的吗,这是不是很矛盾啊?
上周,我和切特, Cheezy参加内布拉斯加大学(林肯)Raikes学院的CSM 课程和一节敏捷开发者技能课。真是很有意思。在快结束的时候,大家提到一件关心的事,我决定提笔写写这个。 Read more

我的TDD经验

在我的职业生涯刚开始的时候,我曾经是一个编码人员,虽然我被叫做开发人员。我通常参与开发中小型项目和产品。在刚开始的几年,我把大部份时间都花在写代码和实现功能上面。虽然我尽了自己一切努力,但是我依然经常在项目上线或者交付给QA测试后,要经历一段十分艰苦的修BUG时期。结果,我开始和其他团队成员一起延长工作时间,然后挣扎着尝试把这些似乎永无止境的BUG修完。我们没日没夜地工作,甚至周末也需要加班,但是产出却总不尽如人意,可以说是非常糟糕。在每个版本发布后,开发团队总是会有很大的压力。 Read more