自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

三默的专栏 - SaaS,敏捷开发方法,最佳实践

单元测试 自动测试 测试驱动开发

  • 博客(31)
  • 收藏
  • 关注

原创 关于公司要不要设立测试的讨论

>> 不久前关于测试的讨论帖子上的发言   第一个问题,要不要专职测试员。如果推崇把质量作为企业的核心价值,我认为专职的测试是必须的,无论团队规模大小。这是质量和专业分工的关系决定的。做事情的人不能和监督的人是同一个人,打个不恰当的比方就是运动员不能是裁判员。可能有人会说,某某项目没有测试也做得不错,我相信,有这种情况。通常是开发员特别强,同时项目也不太大。但这就把质量押宝

2009-03-05 21:08:00 3838 4

原创 代码审查的对话

最近一个朋友和我在雅虎上讨论关于代码审查( Code Review),摘要贴出来: 朋友 : 你们对于代码也review么?朋友 : 呵呵。summerfang : 很密集summerfang : 我每个星期自己做3-4次朋友 : 现在我碰到的问题是,有些新手的注释不规范。朋友 : 这是要强制要求的是么?summerfang : 代码review是个好办法

2007-01-19 18:44:00 6603 2

原创 十条减少软件缺陷的真经

1、在项目发布后发现和修复Bug的成本是需求和设计阶段所需的一百倍!2、在时下的软件项目中大约有40-50%的人力都是花在可以避免的重复劳动中,避免重复劳动可以显著提高劳动生产率。3、80%可避免的重复劳动源自于20%的缺陷,其中两大主要来源包括草率的需求定制和象征性的案例设计和开发。4、大约80%的缺陷来自20%的模块,而约半数的模块是几乎没有缺陷。5、90%的软件的停工期最多来自于10%的缺陷

2007-01-18 00:29:00 12829 7

原创 SourceMonitor: 代码重构的小工具,大用场

我们在做代码重构时,最麻烦的问题是什么?各人有各人的答案。对我来说,找到哪一段代码需要重构是最大的麻烦。产品写好了,程序怎么样?怎么判断?我的标准是,最复杂的代码就是最需要重构的代码。对于由整个团队写的代码,全面阅读是不太现实的。开会?程序员最最不喜欢开会了!那可是个技术活。:)最近,我用了一个小工具,SourceMonitor,取得了意想不到的好效果。推荐大家使用。 Source

2006-09-04 20:58:00 23020 5

翻译 PHPUnit袖珍指南 第十二章 测试的其他用途

 一旦你开始写自动测试,你就会想要发掘更多用途。以下是一些例子。 12-1. 敏捷文档通常来说,在采用敏捷方法作为开发流程的项目中,如极限编程,文档很难和迅速变化的项目设计和代码同步。极限编程要求集体拥有代码,应此,每个开发人员都熟悉整个系统。如果你严格按照规定,编写的类具有自说明能力,你就可以用PHPUnit的TextDox功能根据测试来自动生成文档。这种文档给开发人员对每个类的

2006-08-08 23:07:00 5966 3

翻译 PHPUnit袖珍指南 第十一章 残根

 第十一章残根相比有多个错误来源的测试,只测试一件事情的测试提供了更好的信息。如何隔离测试的外部影响呢?用来自简单的PHP对象的残根替代昂贵, 杂乱, 不可靠, 缓慢, 复杂的资源。例如,为了单项测试的目的,你可以通过返回常数的方法来代表实际上很复杂的计算。 残根很好的解决了分配昂贵的外部资源的问题。例如,共享资源,在测试之间可以使用PHPUnit2 _ Extensions_Te

2006-08-05 19:02:00 5425

原创 开发和测试的两大难题:Regression Bug和Late Discovery Bug

什么是RegressionBug?Regression Bug,就是由于开发新特性或Fix Bug导致以前正常工作的特性罢工了。这种情况,通常出现在产品的开发中。 为了便于分析,Regression Bug又分为Release Regression和Build Regression。Release Regression指的是和上一个产品版本相比,出现的Bug。Build Regre

2006-07-12 07:52:00 9924

原创 Bill Gates计划退二线感想

今天一大早上网,发现Yahoo英文财务板块得头条就是Bill Gates计划退居二线得新闻。见http://biz.yahoo.com/ap/060615/microsoft.html?.v=10。大概内容是Bill Gates准备在两年后放弃微软的日常工作,集中精力在他的慈善事业上。他会把他的工作转交给他的三个CTO,特别是Ray Ozzie,另一个和他同年的技术传奇人物。微软,

2006-06-16 08:08:00 5805 4

原创 Sftp和ftp over ssh2的区别

最近使用SecureFx,涉及了两个不同的安全文件传输协议:-sftp-ftp over SSH2这两种协议是不同的。sftp是ssh内含的协议,只要sshd服务器启动了,它就可用,它本身不需要ftp服务器启动。ftp over SSH2则象一个二传手。 1、SFTP的工作模式:图1显示了SFTP的工作模式,它是作为SSH2的一个子服务工作的。图 1 SFTP工作模

2006-06-08 21:19:00 11245

原创 使用gFTP进行安全文件传输

 我有两台Linux工作机,一台(A)下载了很多软件,另一台(B)没有。今天,我突然需要在B上安装一大堆A上已经下载过的软件。因此,我需要将它们拷贝过来。A和B都有些安全设置,只允许通过ssh客户端访问。 如果重新设置两台机器是很麻烦的,因此,我用gFTP来解决这个问题。gFTP是开源的ftp客户端,安装Redhat9.0时如果选择全部安装,它就会出现在图1所示位置中。图 1 

2006-06-08 21:18:00 8678 1

原创 中国首届敏捷大会纪行

谁也没想到,周三会停电。公司调整了工作日,也就是周六上班,以补周三损失的一天,这打乱了我参加首届敏捷大会的计划。不过我还是请了假。本来我请办公室帮我买好火车的往返票,结果办公室跑来告诉我,只能买到去的票。这可让我犯了难。我不想在北京过夜。我翻箱倒柜找出了一张Ctrip的卡,结果上了Ctrip的网站,转了半天也没发现可以帮助买火车票的! 算了吧,还是下火车就买回程票吧!我就这样有点忐忑不安的

2006-06-05 00:57:00 4545

翻译 PHPUnit袖珍指南 第十章 代码覆盖率分析

 第十章 代码覆盖率分析你已经学会了怎么使用单元测试代码,但你怎么测试你的测试呢?你怎么发现没被测试的代码,换句话说,没被测试覆盖的代码?怎么衡量测试的完整性?所有这些问题的答案就是代码覆盖率分析。代码覆盖率分析告诉你当测试进行时,那些产品代码执行过了。 PHPUnit的代码覆盖率分析应用了Xdebug[6]扩展提供的语句覆盖率功能。 什么时语句覆盖率?举个例子来说,如果有一个方法

2006-05-31 21:05:00 9852 6

原创 CSDN博客工具配置部分存在Bug,导致不能加载Google搜索

一直想给博客主页加上一个搜索功能,方便搜索功能。于是注意到CSDN的配置板块可以输入公告。公告内容可以是HTML和Javascript,应该说,这应该具备了在博客主页加载Google搜索功能的基本条件。于是,按照以下步骤,企图实现不果,发现了CSDN的一个Bug。 步骤1. 登录CSDN的Blog书写工具,点击配置选项卡步骤2. 在公告中按照Google的指示输入如下内容:

2006-05-28 23:32:00 5490 2

翻译 PHPUnit袖珍指南 第九章 测试优先编程

第九章 测试优先编程单元测试是几种软件开发实践和过程至关重要的部份,譬如测试优先编程,极限编程[3],测试驱动开发[4]。 单元测试也允许在结构上不支持的编程语言中支持契约式设计[5]。 [3] http://en.wikipedia.org/wiki/Extreme_Programming[4] http://en.wikipedia.org/wiki/Test-driven_d

2006-05-25 21:07:00 5516

翻译 PHPUnit袖珍指南 第八章 未完成测试

第八章 未完成测试当开始书写新的测试用例类时,你也许想要从空的测试方法开始,譬如:       public function testSomething( ) {       }我们必须跟踪书写的每个测试。空测试方法的问题是,它们被PHPUnit 框架解释作执行成功。这样产生的测试报告是没有用的。您不能区分测试实际上是成功了或是未完成。在未完成的测试方法中调用$this->fai

2006-05-25 21:06:00 5506

翻译 PHPUnit袖珍指南 第七章 测试异常和性能回归

第七章 测试异常和性能回归PHPUnit提供了二个扩展,基于测试类的标准基类PHPUnit2_Framework_TestCase,协助为书写异常和性能回归测试。7-1 异常怎么测试异常?当异常抛出时,无法直接使用断言。相反,必须使用PHP 的异常处理机制来书写测试。以下例子示范了入阁测试异常:require_once PHPUnit2/Framework/TestCase.

2006-05-25 21:05:00 7986

翻译 PHPUnit袖珍指南 第六章 装置器

第六章 装置器编写测试最耗时的部分是边编写设置整个程序到达一个已知状态,而后在测试结束后返回到原始状态。这个已知状态叫做测试的装置器。在例5中,装置器很简单,只是存储在变量$fixture中的数组。多数情况下,装置器会比简单数组复杂,设置代码也会相应增长。当你写几个类似的装置器时这个问题变得更糟糕。没有测试框架的帮助,我们不得不重复很多代码,为每个测试设置装置器。PHPUnit支持共享

2006-05-25 21:04:00 6166

翻译 PHPUnit袖珍指南-第五章 命令行测试工具

第五章 命令行测试工具PHPUnit命令行测试工具是通过phpunit命令调用的。如下代码显示如何通过PHPUnit命令行测试工具运行测试。phpunit ArrayTestPHPUnit 2.3.0 by Sebastian Bergmann. Time: 0.067288 OK (2 tests) 对每个测试,PHPUnit命令行测试工具打印一个字符表示进程

2006-05-22 12:33:00 8390 1

原创 发现CSDN的一个Bug

今天上论坛,发现一个可能的Bug: 步骤:1、点击发表文章2、输入标题、正文和摘引等3、在高级选项中选中“仅在索引页显示摘要”4、发表并进入summerfang的专栏5、点击新文章 期望:出现刚才写的文章。 实际:出现一个出错页面显示: .Text - 应用程序错误!详细情况没有可用的错误信息。 返回站点

2006-05-21 21:14:00 4355

翻译 PHPUnit袖珍指南-第四章 安装PHPUnit

第4章 安装PHPUnitPHPUnit可以通过PHP扩展和程序库(PEAE)获得。PEAR是可重用PHP组件的框架和分发系统。安装PHPUnit可以通过PEAR安装程序命令获得: pear install PHPUnit2 根据PEAR的版本命名标准,适用于PHP5的PHPUnit包称为PHPUnit2。PHPUnit是适用于PHP4的包,这在本书后面关于“在PHP4中使用P

2006-05-21 00:27:00 8877

翻译 PHPUnit袖珍指南-第三章 PHPUnit的目的

第三章PHPUnit的目的到此为止,我们只有两个对Array和内建函数sizeof()的测试。当我们开始测试大量的array_*()函数时,每个都需要一个测试。我们可以每个都从头写起。但是,更好的方法是一次性写好一个测试基础构架,以后就只用写每个测试不同的部分。PHPUnit就是这样一个基础构架。例5展示了如何用PHPUnit重写例4中的两个测试。 例5. 用PHPUnit测试 A

2006-05-21 00:21:00 6302

翻译 PHPUnit袖珍指南-第二章 自动测试

第二章 自动测试最好的程序员也会犯错误。好程序员和差程序员的区别在于:好程序员能通过测试尽可能的发现错误。你越快测试错误,你就越快发现它们,发现和修正的成本就越低。这解释了为什么只在软件发布前才测试的做法为什么问题那么多。大多数错误根本就没有发现过,修正发现的错误是那么的高,以至于你不得不根据优先级来决定只修正那些错误,因为你根本就承受不起全部修正的费用。相比你正在使用的方法,采用PHPU

2006-05-20 01:28:00 4965

翻译 PHPUnit袖珍指南-第一章 简介

第一章 简介很长时间里,我对“你什么时候会为PHPUnit写一个文档”这个问题的回答是:“你不需要PHPUnit文档,去读读JUnit文档或买一本Junit的书,试一试用PHP和PHPUnit来重写Java和Junit的例子”。当我和O’Reilly德国办公室的Barbara Weiss和Alexandra Follenius这样说的时候,他们鼓励我想想是不是可以写一本书来作为PHPUnit的

2006-05-20 01:22:00 6609

翻译 PHPUnit袖珍指南-概述

概述聪明的Web开发人员会告诉你,越快找到代码的错误,你就能越快修正它,长期而言,项目成本越低。好了,能最有效的检测PHP代码中的错误的工具是PHPUnit,一个开发源代码的框架,它在你不在的时候,自动进行成套的单元测试。使用PHPUnit的好处是显而易见的:l         减少用于测试代码的工作量l         减少总体软件缺陷l         增加对代码的信心l 

2006-05-20 01:18:00 5230 2

转载 SaaS的蓬勃动力

 以服务方式提供软件的方式最近越来越有诱惑力了,因为它承诺了更低的维护与运行成本。这种方式的流行也促使传统软件厂商做出快速响应,托管应用服务模型开始涌现。软件即是服务(Software-as-a-service,简称SaaS)、是一种通过Internet提供软件的模式,它消除了企业购买、构建和维护基础设施和应用程序的需要。这一概念来源于90年代末遭受失败的应用服务提供商(ASP)的革命

2006-05-10 12:07:00 2981 1

转载 2006,SaaS渠道争夺的关键期

 SaaS(软件即是服务)风潮正在向渠道涌动。当越来越多的增值经销商(VAR)以服务的方式向客户提供软件时,中小企业正在从这种变革中获得真实的利益。最近,微软又一次遭到了竞争对手们的嘲笑。这些总是和微软唱对台戏的人们认为,微软推出的CRM 3.0只能证明它在进入SaaS市场的过程中根本就不认真。很多人认为:“微软推出的这个东西根本算不上是SaaS。微软所做的只是将自己的解决方案卖给那些增值经销

2006-05-10 12:00:00 1838

转载 Get Ready for SaaS 2.0

Get Ready for SaaS 2.0A new study reveals seven key trends as software-as-a-service evolves beyond its current focus on cost-effective software application delivery toward an integrated business ser

2006-05-10 11:57:00 2563

转载 SAAS风潮和传统企业软件消失?

2006年2月的最后一周,德国人史蒂芬·沙姆巴赫(Stephan Schambach)的心情格外愉快。因为就在几天前,他于2004年一手创建并担任CEO的Demandware公司,又拿到了一笔1200万美元的风险投资,投资方仍然是之前已经给他投了1000万美元的两家风险投资公司GCP和NBVP。在越来越多的软件公司都在用各种方式,或迟疑或雀跃的奔向“按需时代”的背景下看,这样的消息格外引人注意。

2006-05-10 11:49:00 2089

转载 软件托管的神话

软件托管的神话2006/04/21  多年来,一些企业在购买、实施、维护传统企业管理软件时历尽坎坷。现在新一代的软件在线服务(软件托管或叫软件租用)正在冲击这些传统软件,并最终给企业带来他们寻求已久的效率和商业利润。  中小企业要花费大量的时间、精力和金钱进行管理。他们不得不继续扩大应用管理软件以提高公司的运营效率。而新型的软件作为服务(Software as a Service,SaaS

2006-05-10 11:47:00 2675

原创 awk应用2:列出本目录下所有的隐藏文件和目录

想要实现一个小功能,显示本目录下所有的隐藏文件和目录。[root@localhost root]# ll -a|awk $9~/^/./ {print}drwxr-x---   14 root     root         4096 Apr 21 18:32 .drwxr-xr-x   19 root     root         4096 Mar 22 12:20

2006-04-30 09:27:00 1713

原创 awk应用1:列出本目录下的全部目录

在dos下,如果要列出本目录下文件可以用如下命令: C:/study/test>dir/ad 驱动器 C 中的卷没有标签。 卷的序列号是 2B32-C62C  C:/study/test 的目录 2003-12-30  08:15              .2003-12-30  08:15              ..2003-12-30  08:05

2006-04-30 09:09:00 1998

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除