测试驱动威力不分国界

最近公司开始了一个新项目,在国外成立了一个开发组5个人

老板想让他们使用TDD来进行开发(Unit Test),于是我和另两个中国同事就应招过去了两个星期(主要是TDD,当然还顺带处理点别的事情)。

在这两星期时间里 我们把它主要分成了两部分 1.介绍TDD 2.手把手实验

在介绍TDD的阶段 我主要讲了TDD原理,我们中国组导入TDD的过程和导入前后的体验,老外听得还是很感兴趣的。

在手把手实验的开始阶段 我们是在一起用TDD实现了一些测试代码和production代码,在实现代码过程中 发现有个class很难测。

首先我们想到的当然是用Typemock, 那可是相当强大的测试工具,再烂的设计代码也可以是可以测试的(这次设计我们中国没有参与,所以设计不是非常的支持测试),当时在用Typemock进行测试时 我们发现测试代码那是相当的复杂,大大超过了真正的Production代码。

这是老外们对TDD失去了信心,觉得这东西太浪费时间了,大部分时间都在想怎么测,写测试代码,production代码嘛 其实很简单,只是一点点逻辑和对第三方库的调用。

就在我们纠结的时候,我同行的有个中国的同事提醒了我,是不是设计上有问题?这句话直接带来了革命的效果,把我们从埋头出馊点子解决问题的状态拉了回来 去思考问题的本质。后来我们讨论之后发现 这个类的责任太多了,不是高内聚的设计。经过一番讨论我们决定把功能拆分成“小的”“多个”“高内聚”的类来实现,做成Compsite的设计。奇迹发生了,测试变得比开始容易多了。

由于类的切得责任很小很清楚,我们于是就分成了两个小组同步工作,一个组负责service部分,一个组负责PLC部分的实现,也是按不同的层进行实现。

有些细节在两个组做代码实现时 是非常有意思的: *大家首先作为团队思考该怎么写测试代码 *当test case运行失败时,团队思考原因然后讨论该怎么实现代码 *单test case过掉,变成绿色时,大家都会很激动,高呼“Yeah!!”.

我深刻记得有一天项目经理 走进我们的会议室 说“我感觉你们现在的状态非常好,你们这种团队的工作状态非常的让我惊讶!”

4天之后 奇迹再次出现,当我们把两组的代码合起来做集成,然后做功能测试时,发现系统功能运行如预期的,而且粗略的测试是没有bug的。我们都觉得很开心,也觉得TDD真的很可怕,因为在用TDD以前,做集成测试时,总是会bug一堆。

另外要提到的是在去国外之前我刚好参加了一个Srum的聚会,其中强调说每个Sprint最好有可交付的产品。这次TDD培训我们也用到了这个,我们从各个层都挑了一些class做实现,目的是能搞出来一个可运行的系统,即使只有很少的一部分功能。

在离开前老板和我们聊了聊这次培训的效果,那可是绝对的高评价,看起来所有的利益相关方都很满意。我也开心的离开了,带着好心情去德国逛了一把~~

收获:

如果发现测试很难做时,不妨换个角度看看设计是否可以优化或改进。

每个迭代最好能出一个可运行的系统,这样客户和开发人员都很兴奋。

团队的力量是很可怕的。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏老九学堂

程序员学习需要攻克的8大障碍

作为一个时时关注小伙伴们学习情况的人,老九君看到过很多新手程序员满怀热情投入到学习中来,却总是处处碰壁。 大多数学习者同样碰到过相同的障碍,但是,一旦克服了这些...

36740
来自专栏大数据文摘

业界 | 成为CTO之前,我希望有人告诉我这些

11820
来自专栏云计算D1net

美国国防部正在试验软件定义网络 进展十分有限

软件定义网络(software-defined networking)有很大的希望提高设置和控制网络的效率,将引发信息技术的这一关键方面发生根本性的改变。虽然国...

38680
来自专栏BestSDK

APP创业者必知的7个API供应平台,任何数据需求都能满足

编辑导语 我们都知道一句话“巧妇难为无米之炊”,数据源就是让数据产生价值中的那些大米。那大数据时代企业需要哪些数据呢?其实大部分数据源可以大致分为以下几类。 先...

40270
来自专栏鹅厂网事

弹性服务器架构-连接一切的力量

一颗芯片,寄存器通过总线向运算器输送数据。一台服务器,内存通过DDR总线与处理器完成数据互动。一个数据中心,存储集群通过以太网与计算集群形成对数据流的处理和加工...

7.7K110
来自专栏云计算D1net

采用混合云策略时机已到的几大征兆

云的吸引力正在不断增加,但公有云提出了安全性方面的担忧。了解为什么混合云策略可以为业务发展带来更多的好处。 如果你和大部分的数据存储专业人士一样,你很可能面对的...

31350
来自专栏Python爬虫

目前最全的python的就业方向

Python是一门面向对象的编程语言,编译速度超快,从诞生到现在已经25个年头了。它具有丰富和强大的库,常被称为“胶水语言”,能够把用其他语言编写的各种模块(尤...

24400
来自专栏敏捷开发&项目管理

一些适合青少年编程学习的趣味编程工具

今天总结了一些适合青少年编程学习的趣味编程工具,感兴趣的可以了解了解,教教自家的小朋友。 趣味编程按照学生的年龄,兴趣和知识掌握程度由易到难。 Scratch符...

64680
来自专栏镁客网

AI时代下,用户隐私荡然无存,百度、腾讯、今日头条对得起用户吗?

20400
来自专栏云计算D1net

云安全管理:彻底远离黑客攻击

每一次发生众所瞩目的泄漏事件后,许多人都忙不迭的将矛头指向云。然而只要有可靠的云管理和安全策略,就没什么害怕的。 这阵子每隔几个礼拜就能听到某些大型有名的公司发...

36950

扫码关注云+社区

领取腾讯云代金券