随笔分类 -  单元测试

摘要:原文出自CSDN上的一篇文章,地址:http://www.csdn.net/article/2013-07-11/2816188-unit-test-tdd因看到这些建议,觉不错,故记录于此,以便日后查阅。1. 不要第一次就在真实项目中尝试TDD 这可能会让你的项目很难进展。在采用TDD之前,你必须要了解TDD的工作流程以及如何去模拟对象(mock objects)、如何去模拟框架内部、如何组织测试等方面知识。因此,如果你的团队还没有准备好,就采用TDD可能会拖慢你的项目,从而错过最终交付期限。2. 采用编程道场(Coding Dojo)方式学习TDD 我们发现编程道场是对新进入团队的开发.. 阅读全文
posted @ 2014-03-10 13:51 CandyZkn 阅读(360) 评论(0) 推荐(0)
摘要:Mock对象:真实对象在调试期的替代品。使用Mock对象进行测试的3个关键步骤:使用一个接口来描述这个对象为产品代码实现这个接口以测试为目的,在mock对象中实现这个接口mock对象:伪装出真实世界的某些部分,使你可以集中精力测试好自己编写的代码。一个可以面向任何一种.Net语言来创建mock对象的框架:DotNetMock框架它是一个框架,让你可以有组织的创建mock对象。它包含一小套预先定义的mock对象,让你可以拿来测试你的程序。它还有一套技术,动态mock,让你能够在不编写乱七八糟的代码的前提下,就可以创建mock对象。 阅读全文
posted @ 2014-01-08 14:12 CandyZkn 阅读(172) 评论(0) 推荐(0)
摘要:单元测试之道读书笔记(一)单元测试之道读书笔记(二)单元测试之道读书笔记(三)单元测试之道读书笔记(四)单元测试之道读书笔记(五)单元测试之道读书笔记(六)单元测试之道读书笔记(七)单元测试之道读书笔记(八)单元测试之道读书笔记(九) 阅读全文
posted @ 2014-01-07 18:23 CandyZkn 阅读(188) 评论(0) 推荐(0)
摘要:总结:一般原则:测试任何可能失败的地方。测试任何已经失败的地方。对于新加的代码,在被证明正确之前,都可能是有问题的。至少编写和产品代码一样多的测试代码。针对每次编译都做局部测试。签入代码之前做全局测试。要回答的问题:我如何知道代码运行是否正确呢?我要如何对它进行测试?还有那些方面可能会发生错误?这个问题是否会在其他的地方出现呢?测试哪些方面:使用Right-BICEP Right------结果是否正确(Right)? B----------是否所有的边界(Boundary)条件都是正确的? I-----------能查一下反向(Inverse)关联吗? C----------能用其他... 阅读全文
posted @ 2014-01-07 18:02 CandyZkn 阅读(225) 评论(0) 推荐(0)
摘要:没有单元测试的代码--或者没有通过单元测试代码--是不完整的代码。一个方法能够从头到尾的运行是远远不够的,真正的测试是要检查结果的,没有检查结果的测试只是在浪费时间而已。所有的测试必须能偶在所有的机器通过,否则的话,代码就可能存在着问题。”足够接近“有时候也是带有欺骗性的,例如,就精度而言,测试相比真实的要求来说可能还不够。当测试运行的时间太长了,已经妨碍日常编写测试和代码的速度的时候,需要重新检查测试,把那些运行时间比平均运行时间长的测试单独分离出来,并且把这些单独测试重新组合起来。之后,可以有选择地运行这一组测试。测试总是失败时,某些组的测试总是一次一次的失败,一些小的代码改动立刻就会令很 阅读全文
posted @ 2014-01-07 17:56 CandyZkn 阅读(154) 评论(0) 推荐(0)
摘要:1.通过使用面向测试的设计方法,更好地分离关注点 通过有意地设计出方便测试的代码,可以让代码具有更好的结构和可维护性。编写代码的时候要记住这个根本性问题:我要如何对代码进行测试呢?如果答案不是显而易见,代码编写的看起来很丑陋或者难以编写的话,就应该修改一些设计,直到易于测试为止。2.通过定义类不变形更好地产品设计意图 类的不变性是指一个或者几个针对类对象的断言。如果一个类对象有效的话,这些断言都必须为。这一点是不可改变的。例如:对一个实现的sorted list的类,它的不变性就是:他的内容必须是有序的。不管外面发生的任何事情,或者调用了该类的任何方法,这个list都必须是有序的--至少从.. 阅读全文
posted @ 2014-01-07 17:02 CandyZkn 阅读(177) 评论(0) 推荐(0)
摘要:1.测试代码该如何组织: 1.对于小型项目:组织测试代码的最优先也是最简单的方法就是把测试简单地包含在同一项目、同一程序集之中,紧挨着产品代码。这样的好处是可以访问internal和protected internal成员变量和函数,但是缺点是测试代码到处都是,堆积在产品代码的目录中。 2.使用单独的程序集,在一个独立于产品代码的程序集中创建测试代码。这样做可以清楚的分离测试代码与产品代码,但是缺点测试代码便不可以访问internal和protected internal成员变量和函数了,除非测试代码使用的产品代码的一个子类,并且该子类暴露了必要的成员。 正确的组织测试代码的方式:选中一... 阅读全文
posted @ 2014-01-07 16:29 CandyZkn 阅读(215) 评论(0) 推荐(0)
摘要:好的测试所具有的的品质(A-TRIP):自动化(Automatic).彻底的(Thorough).可重复(Repeatable).独立的(Independent).专业的(Professional).1.自动化:调用测试自动化和检查结果自动化。2.彻底的:测试所有可能出现问题的情况,代码覆盖工具:NCover。3.可重复:每个单元测试应独立于其他测试,独立于外部环境,可以以任意的顺序一次一次的执行,并产生相同的结果。这意味着测试不依赖与不受你直接控制的任何外部因素。4.独立的:每个测试应该是简洁和精炼的。每个测试应该有很强的针对性,并且独立于环境和其他测试。在编写测试时,确保一次只测试一个方法 阅读全文
posted @ 2014-01-07 15:48 CandyZkn 阅读(179) 评论(0) 推荐(0)
摘要:测试一个类,到底应该测试那些方面?哪些模块容易出问题? 对于经验丰富的大牛,可能很容易就会发现应该重点测试哪些内容,但是如果没有经验的话,想要发现一些深层次的bug,那是有一定的难度滴。因此在bug挖掘方面我们需要一些指导,指导我们哪些地方需要多做测试。 6个值得测试的部位,这6个方面统称为Right-BICEP: Right------结果是否正确? B----------是否所有的边界条件都是正确的? I-----------能查一下反向关联吗? C----------能用其他手段交叉检查一下结果吗? E----------你是否可以强制错误条件发生? P---------... 阅读全文
posted @ 2014-01-07 11:20 CandyZkn 阅读(186) 评论(0) 推荐(0)
摘要:编写单元测试要点:1.引用NUnit.DLL2.using NUnit.Framework3.声明Public类, 测试类添加[TestFixture]属性,此类必须有一个public的、没有参数的构造函数(默认构造函数就行)4.测试方法必须添加[Test]属性,测试方法必须是Public 没有返回类型(Void)CateGory: 单元测试中有个很好的东西,那就是分类(CateGory),Category可以将你想要测试的方法或者测试类组织到自定义的分类中,当运行此分类时便可以自动的执行依据包含的测试类和测试方法,当然它也可以排除自动执行某些分类,使用Explicit=true属性来指定是. 阅读全文
posted @ 2014-01-06 14:39 CandyZkn 阅读(251) 评论(0) 推荐(0)
摘要:测试代码必须要做的几件事情:1.准备测试所需要的各种条件(创建所有必须的对象,分配必要的资源等)。2.调用要测试的方法。3.验证被测试方法的行为和期望是否一致。4.完成后清理各种资源 当执行测试代码的时候,请记住你从来不直接运行产品代码;至少,并非像一个普通用户那样。而是借助于测试代码,让它根据小心控制的条件来执行产品代码。 断言时单元测试最基本的组成部分。 一般而言,一个测试方法会有多个断言,因为需要验证该方法的多个方面和内在的多种联系,当一个断言失败的时候,该测试方法将会被中指,这时应该做的就是在进行继续测试之前,先修复这个失败的测试。当有测试失败的时候,无论如何都不能给原有代码添加... 阅读全文
posted @ 2014-01-06 12:53 CandyZkn 阅读(237) 评论(0) 推荐(0)