领导力大挑战
在实施Scrum项目的过程中,Scrum Master的角色是相当关键的,因为他是团队的推动者。本文围绕什么是仆人式领导、仆人式领导的起源、如何将领导力传达给团队、Scrum Master作为仆人式领导者的角色展开叙述,同时重点阐述仆人式领导者应有的基本内外特征。
该内容已经被标记书签!
标记书签错误,请重试!
作者 Jonathan Allen 译者 王速瑜 发布于 2008年11月11日
PDC大会上进行了关于“单元测试的未来”的小组讨论,大部分的谈话内容聚焦于Mock测试,人们对于Mock 框架(Mock frameworks)的过度使用取得了普遍共识。
共识如下:通常,实现所有必要的接口非常无聊,而且消耗时间。为了更方便,人们选择了Mock 框架。但这遮盖了更本质的问题:API被设计得过于复杂。
关于“开发人员测试”与其他人员的测试之间的区别,有一个热门的话题。一直以来的讨论中,人们都认为开发人员只需要做单元测试,而需求测试、验收测试、集成测试,以及所有其他形式的测试都是其他人的工作。
这里强调了在单元测试社区中存在的一个普遍误解。具体来说,就是假设所有开发人员都配备了QA团队,以处理所有其他类型的测试。不幸的是,即使是拥有数百万资金的公司也往往根本没有QA资源,所有的测试都留给了开发人员和最终用户。
开发人员无法进行更多类型测试的主要原因是速度。 单元测试已经太慢了,因此没有更多时间去进行那些更慢的测试了,比如包括网络通信的测试。 遗憾的是,并没有人考虑其他变通之策。
举个例子,单元测试框架其实可以更加智能,它们可以使用代码覆盖率的结果,只对发生变化的代码进行二次测试。一个类的变化,不应该触发重新运行所有的测试集合。所谓“单元测试”意味着你只需测试一个小的子集即可。
另外一种没有被提及的改进是利用分布式编程。代码和测试可以被快速上传到各个服务器并且得到执行。通过引入持续集成,我们已经拥有了所有需要的技术。
早些的讨论普遍觉得数据库方面被忽视了,大部分的数据库开发人员很少或几乎没有单元测试的概念,也缺乏相关支持工具。更可怕的是,他们甚至都没有被邀请来参加讨论。遗憾的是这就是目前的现状。讨论中也没有提供方法改善这些现实问题。
从好的方面看,已经有一些人在讨论使用建模工具来让单元测试更加简单。他们提供了很多可选的办法,例如从定义契约级别开始。这些契约可以被代码生成器用来编写实际的测试代码。显然,这并非一个100%完美的解决方案,但它能够减少经常遇到的困难。
另一个被看好的办法是采用delta状态管理。设想测试“取钱”这个功能,很多人会假设被测试帐户最开始有100美元,经过交易后,剩下80美元。这个方法就是首先查询一下账号余额,然后再看是否减少了20美元。这样一来,就不必在每次运行测试时都重新设置测试环境了。
查看英文原文:Testing: What Developers Are Expected To Do Versus What They Actually Do
译者简介:王速瑜,毕业于华中科技大学,就职于腾讯科技(深圳)有限公司,担任R&D研发总监,现负责腾讯敏捷产品开发技术的实践和推广及研发基础平台的管理工作。熟悉Java、Microsoft.net、Lamp等技术。对互联网大规模应用技术、高性能网格技术,SOA等有非常浓厚的兴趣和深入的实践,喜欢Open Source,关注Ruby、Erlang的发展并积极实践,愿意为技术而挥洒激情,为让更多人了解精彩技术而付出努力!志愿参与InfoQ中文站内容建设,请邮件至editors@cn.infoq.com。也欢迎大家到InfoQ中文站用户讨论组参与我们的线上讨论。
多名敏捷社区最有影响力人物将出席Scrum Gathering上海站大会
大众点评网诚聘:Java、架构/性能优化、Hadoop等职位
笔者已经提到的持续集成可以将一部分测试转移到集成机器上实行
单元测试也是可以分组的啊,TestSuite就是这样的概念,看来单元测试也已经到了需要专门对它进行组织的阶段了。
关于数据库的单元测试, 我想推荐AnyDbTest, 官网是www.AnyDbTest.com, 它的Express版软件是免费的.
在以前的项目中, 我尝试了很多的单元测试框架, 比如NUnit和DbUnit, 在很大程度上讲, 它们其实是编程平台, 而不是即插即用的工具, 它们需要你编写Java或.Net程序. 它们适合App developer, 但并不适合DB developer和DBA.
AnyDbTest专为DBA和DB developer设计, 你只需要编写一个简单的Xml文件, 在Xml文件中, 告诉AnyDbTest你要测试什么, 你期望的结果应该是什么就可以了. 在测试完成之后, AnyDbTest会呈现出一排红绿灯, 显式红的测试Case是没有满足你期望的, 而绿色的测试Case符合你期望的Case.
Feature:
1. 使用Xml编写测试用例, 不需要懂Java或其他编程语言.
2. 不需要在Db Server端安装任何package或软件.
3. 支持多种数据库 (目前支持Oracle/Sql Server/MySQL/Excel数据库, 将来会支持更多的数据库)
4. 支持多达21种测试断言(Assertion), 比如两个记录集合相等, 两个记录集合严格相等, 一个是另一个的子集, 超集等
5. 可以使用Excel作为测试用例的数据源. 这样你准备测试数据将非常容易
6. 支持分布式数据库单元测试, 也就是说你不仅仅可以测试单一的数据库上的脚本, 而且可以利用一个数据库的数据, 来测试另一个数据库脚本.
7. 支持沙箱模型. 只要你的数据库本身支持事务, 你可以将测试用例设置为沙箱测试模式, 等测试完毕之后, 所有的数据库语句将会自动被会滚.
8. 提供专有的记录集的比较功能. 比如当我们发现某个测试用例不通过的时候, 可以使用这些记录集比较功能, 看看期望的记录集与实际的记录集相比, 到底多一些什么, 或少了一些什么.
在实施Scrum项目的过程中,Scrum Master的角色是相当关键的,因为他是团队的推动者。本文围绕什么是仆人式领导、仆人式领导的起源、如何将领导力传达给团队、Scrum Master作为仆人式领导者的角色展开叙述,同时重点阐述仆人式领导者应有的基本内外特征。
论道WP第三篇专栏,以应用程序栏的使用为中心,包括了软键盘带来的问题、应用程序栏介绍、如何绑定应用程序栏的属性等几个方面的具体话题,为开发者顺利使用应用程序栏开发提供了具体指导。
在多线程并发编程中Synchronized一直是元老级角色,很多人都会称呼它为重量级锁,但是随着Java SE1.6对Synchronized进行了各种优化之后,有些情况下它并不那么重了,本文详细介绍了Java SE1.6中对于锁的性能优化,以及锁的存储结构及升级过程。
本次分享将首先介绍现代富文本编辑器的组成和实现,然后结合UEditor的开发过程,与参会者分享UEditor在设计和实现的过程中,所涉及到的核心功能的细节实现。
本次演讲视频录制于百度技术沙龙。
我们所开发的应用程序大多都需要提供一个图形用户界面(GUI)。关于GUI应用的架构设计,已经有了Form & Control、MVC,、MVP、 Passive View等多种模式。模式可以帮助我们建立优雅的架构,但前提是弄清楚模式的应用场景。弄清楚GUI应用面临的设计上的问题,有助于我们正确的挑选设计方案。
MongoDB是一种非常易用的NoSQL方案,Brian C. Dilley在这篇文章里介绍了MongoDB的优劣势,并介绍了MJORM项目。MJORM用于MongoDB,是一个没有注解的Java ORM库。
随着网络基础设施的逐步成熟,从RPC进化到Web Service,并在业界开始普遍推行SOA,再到后来的RESTful平台以及云计算中的PaaS与SaaS概念的推广,分布式架构在企业应用中开始呈现出不同的风貌,然而殊途同归,这些分布式架构的目标仍然是希望回到建造巴别塔的时代,系统之间的交流不再为不同语言与平台的隔阂而产生障碍。
2 条回复
关注此讨论 回复