以下内容来自《Microsoft .NET企业级应用架构设计》 Bruce Eckel曾提出一句流行的口号,表明软件测试的重要性: 若软件没有经过测试,那么可定无法完成工作。 测试会位于不同的层次上,比如用单元测试来判断软件的各个独立单元是否符合功能性需求,用集成测试来判断软件能否适应运行环境和基础设施,以及多个组件能否正常协同工作。最后,验收测试用来判断完成的系统是否符合客户的需求。 单元测试和集成测试属于开发团队的工作,进而让团队对软件质量产生信心,测试结果会说明团队的开发状态是否朝着良好的方向发展。通常而言这些测试不会覆盖整个代码,代码的覆盖程度和代码的质量一般也没有清晰的关系。 而客户通常对但单元测试和集成测试的结果并不在意,他们所关心的仅仅只是验收测试而已。验收测试着眼于完成的系统,属于客户和开发团队合同的一部分。验收测试可以由客户书写,也可以由负责项目的团队和客户协助完成。在验收测试中你会发现如下的核对清单: 1. 使用如下数据(....)插入一个客户 2. 使用现有的ID修改该用户 3. 观察系统反应,得到期望的结果 另一个验收测试结果如下: 1. 在批处理过程中,关闭应用程序服务器的某个节点 2. 观察系统反应以及事务的结果 若验收测试顺利通过,那么项目也就宣告结束,产品也宣告成功。 单元测试实战 我们推荐用一个专门的程序集包含测试代码。此外,对每个类库都要提供测试。最好的实践是对程序集中每个xxx类,都有一个对应的xxxTestCase类用来测试。 我们可以使用伪对象(Fake)消除依赖 例子:public class FakeLogger: ILogger
{ Public void Log(string message)
{ Return; } }
软件可以正常工作的概率与它所需的代码行数成反比。 Bug出现的几率与正在查看该软件地人数及这些人的重要程度成正比。 任何人都可以写出计算机能够理解的代码,而只有优秀的程序员才能写出别人可以理解的代码。 --Martin Fowler
|