摘要:
单元测试之道读书笔记(一)单元测试之道读书笔记(二)单元测试之道读书笔记(三)单元测试之道读书笔记(四)单元测试之道读书笔记(五)单元测试之道读书笔记(六)单元测试之道读书笔记(七)单元测试之道读书笔记(八)单元测试之道读书笔记(九) 阅读全文
摘要:
总结:一般原则:测试任何可能失败的地方。测试任何已经失败的地方。对于新加的代码,在被证明正确之前,都可能是有问题的。至少编写和产品代码一样多的测试代码。针对每次编译都做局部测试。签入代码之前做全局测试。要回答的问题:我如何知道代码运行是否正确呢?我要如何对它进行测试?还有那些方面可能会发生错误?这个问题是否会在其他的地方出现呢?测试哪些方面:使用Right-BICEP Right------结果是否正确(Right)? B----------是否所有的边界(Boundary)条件都是正确的? I-----------能查一下反向(Inverse)关联吗? C----------能用其他... 阅读全文
摘要:
没有单元测试的代码--或者没有通过单元测试代码--是不完整的代码。一个方法能够从头到尾的运行是远远不够的,真正的测试是要检查结果的,没有检查结果的测试只是在浪费时间而已。所有的测试必须能偶在所有的机器通过,否则的话,代码就可能存在着问题。”足够接近“有时候也是带有欺骗性的,例如,就精度而言,测试相比真实的要求来说可能还不够。当测试运行的时间太长了,已经妨碍日常编写测试和代码的速度的时候,需要重新检查测试,把那些运行时间比平均运行时间长的测试单独分离出来,并且把这些单独测试重新组合起来。之后,可以有选择地运行这一组测试。测试总是失败时,某些组的测试总是一次一次的失败,一些小的代码改动立刻就会令很 阅读全文
摘要:
1.通过使用面向测试的设计方法,更好地分离关注点 通过有意地设计出方便测试的代码,可以让代码具有更好的结构和可维护性。编写代码的时候要记住这个根本性问题:我要如何对代码进行测试呢?如果答案不是显而易见,代码编写的看起来很丑陋或者难以编写的话,就应该修改一些设计,直到易于测试为止。2.通过定义类不变形更好地产品设计意图 类的不变性是指一个或者几个针对类对象的断言。如果一个类对象有效的话,这些断言都必须为。这一点是不可改变的。例如:对一个实现的sorted list的类,它的不变性就是:他的内容必须是有序的。不管外面发生的任何事情,或者调用了该类的任何方法,这个list都必须是有序的--至少从.. 阅读全文
摘要:
1.测试代码该如何组织: 1.对于小型项目:组织测试代码的最优先也是最简单的方法就是把测试简单地包含在同一项目、同一程序集之中,紧挨着产品代码。这样的好处是可以访问internal和protected internal成员变量和函数,但是缺点是测试代码到处都是,堆积在产品代码的目录中。 2.使用单独的程序集,在一个独立于产品代码的程序集中创建测试代码。这样做可以清楚的分离测试代码与产品代码,但是缺点测试代码便不可以访问internal和protected internal成员变量和函数了,除非测试代码使用的产品代码的一个子类,并且该子类暴露了必要的成员。 正确的组织测试代码的方式:选中一... 阅读全文
摘要:
好的测试所具有的的品质(A-TRIP):自动化(Automatic).彻底的(Thorough).可重复(Repeatable).独立的(Independent).专业的(Professional).1.自动化:调用测试自动化和检查结果自动化。2.彻底的:测试所有可能出现问题的情况,代码覆盖工具:NCover。3.可重复:每个单元测试应独立于其他测试,独立于外部环境,可以以任意的顺序一次一次的执行,并产生相同的结果。这意味着测试不依赖与不受你直接控制的任何外部因素。4.独立的:每个测试应该是简洁和精炼的。每个测试应该有很强的针对性,并且独立于环境和其他测试。在编写测试时,确保一次只测试一个方法 阅读全文
摘要:
测试一个类,到底应该测试那些方面?哪些模块容易出问题? 对于经验丰富的大牛,可能很容易就会发现应该重点测试哪些内容,但是如果没有经验的话,想要发现一些深层次的bug,那是有一定的难度滴。因此在bug挖掘方面我们需要一些指导,指导我们哪些地方需要多做测试。 6个值得测试的部位,这6个方面统称为Right-BICEP: Right------结果是否正确? B----------是否所有的边界条件都是正确的? I-----------能查一下反向关联吗? C----------能用其他手段交叉检查一下结果吗? E----------你是否可以强制错误条件发生? P---------... 阅读全文
摘要:
开源托管平台 1. github : http://github.com/ GitHub可以托管各种git库,并提供一 个web界面,但与其它像SourceForge或Google Code这 样的服务不同,GitHub的独特卖点在于从另外一个项目进行分支的简易性。为一个项目贡献代码非常简单:首先点击项目站点的 “fork”的按 钮,然后将代码检出并将修改加入到刚才分出的代码库中,最后通过内建的“pull request”机制向项目负责人申请代码合并。 2.Sourceforge : http://www.... 阅读全文