惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Help Net Security
博客园 - Franky
GbyAI
GbyAI
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
爱范儿
爱范儿
IT之家
IT之家
酷 壳 – CoolShell
酷 壳 – CoolShell
aimingoo的专栏
aimingoo的专栏
博客园_首页
MongoDB | Blog
MongoDB | Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Recent Announcements
Recent Announcements
Scott Helme
Scott Helme
有赞技术团队
有赞技术团队
M
MIT News - Artificial intelligence
C
CERT Recently Published Vulnerability Notes
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Jina AI
Jina AI
F
Fortinet All Blogs
N
Netflix TechBlog - Medium
L
LangChain Blog
L
LINUX DO - 最新话题
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
H
Hacker News: Front Page
MyScale Blog
MyScale Blog
P
Palo Alto Networks Blog
G
Google Developers Blog
Google DeepMind News
Google DeepMind News
AI
AI
T
Troy Hunt's Blog
Microsoft Azure Blog
Microsoft Azure Blog
阮一峰的网络日志
阮一峰的网络日志
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Vercel News
Vercel News
Microsoft Security Blog
Microsoft Security Blog
罗磊的独立博客
S
Secure Thoughts
大猫的无限游戏
大猫的无限游戏
博客园 - 叶小钗
人人都是产品经理
人人都是产品经理
Blog — PlanetScale
Blog — PlanetScale
博客园 - 司徒正美
Apple Machine Learning Research
Apple Machine Learning Research
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 三生石上(FineUI控件)
S
Security @ Cisco Blogs
Cloudbric
Cloudbric
E
Exploit-DB.com RSS Feed
Attack and Defense Labs
Attack and Defense Labs

博客园 - 枫

2015半年记 再写一帖~就《离开上海》一文再说明 再见,上海~非主流码农在上海的9年心路历程 Mac下配置mysql-python 《Rework》摘录读后随感 Event Sourcing与大数据 无题(1) 在Mac上安装Hadoop [原创]一步一步用C#编写三国杀(三):设计流程 [原创]一步一步用C#编写三国杀(二):牌堆的设计 [原创]一步一步用C#编写三国杀(一):规则和需求描述 走进单元测试(3):消灭HttpContext的依赖,兼谈单元测试的设计辅助性 走进单元测试(2):必须要自动化 我也想对广大程序员说一些话 高级语言发展之回归人类思维——听老赵的Session有感 缺乏自信怎么办? 梦话对象之三:三要素的差异与统一 梦话对象之二:事件之无限扩展 梦话对象之一:逃不开的生死问题
走进单元测试(1):为什么难以广泛应用?
· 2010-04-25 · via 博客园 - 枫

这几天在北京参加Qcon,觉得Scrum和敏捷在这里提到的比较多,而单元测试作为敏捷方法的一个重要配套工具,了解和真正进入实施的却并不是很多。

这里并不想告诉你如何做单元测试,这样的文章园子里已经一搜一大把,我没有再写这种的必要。开这个系列,首先是因为我进入了公司的技术创新组,目前主要负责单元测试这块,以期记录自己的成长;二是希望借这个系列,能够为大家带来一些真实的单元测试用例的设计方法和在设计用例中遇到的问题,以及解决问题的方法。

在我6年的技术工作中,如果问我什么技术对我的影响最大,我会毫不犹豫的说是单元测试。我比大多数人幸运的地方就是我的第一份写代码的工作就是编写单元测试;没错,是单元测试,尽管不是TDD的实践。但至少为我理解TDD打下了一个坚实的基础。而6年来,我一直希望能够有一个地方可以真正的将这些东西用起来,现在来看暂时算是等到了希望。

我辗转过很多公司,也曾经提过很多次关于单元测试的问题。然而每每提及的时候会得到支持,但最终实施都不了了之。我一直在思索为什么?为什么一个明明觉得很好的东西大家都嘴上说好而就一直不肯去实践?下面是我认为的几个原因:

1、开发成本的高昂。单元测试会加重开发人员的负担,因为有了更多的代码需要编写。而这种成本的增加在小作坊是一个很重的负担,毕竟对于他们生存是第一要务。即使是在大公司,鉴于很多人没有这样的经验,因此培训和指导如何编写单元测试也是一块很大的成本。

2、时间上的紧迫。从一个软件项目的角度来看,尽管编码所占的时间并不多。但如果是一个小的软件作坊形式的公司,其生存的要点在于能够短平快的做完项目,实施单元测试会延长项目的交付时间。即使是在一个比较规范性的公司,由于客户或者内部需求的时间压力,也很多时候只能选择放弃采用这样的过程,毕竟满足客户需求才是项目的最终目标。

3、开发人员的素质。为什么会有这一条,是因为接触过很多人开发人员,他们仅仅把完成任务当做目标,他们希望的就是尽量以自己熟悉的方式来尽快完成任务,剩下的时间就可以做自己的事了。而这部分人恰恰却是推动过程中的最大阻力。如何说服他们,采取什么措施,后面的系列可能会有这方面的思考。

鉴于中国的软件公司多数还处于小作坊时代以及开发人员的素养还有待提高,我一直比较悲观的认为,就不说敏捷了,就是单元测试的普及,在中国还有很长的路要走。我也希望自己的这个系列,能够为这个事情的推动尽自己的绵薄之力!