《重构》学习笔记(03)-- 构建测试体系

如果你想进行重构,首先的前提就是拥有一个可靠的测试环境。就算是自动进行重构的工具,也需要测试来保证代码的完整性与可靠性。

为什么需要单元测试?

  • 保证质量:随着迭代的过程,开发人员很难记清所有的功能点。功能点的新增和删除在代码改变后,进行回归测试时,依靠手工测试很容易出错遗漏。
  • 自动化:测试用例有一次编写,无限使用的特点。相对于人工测试,单元测试几乎无需交接,并在QA进行测试时可以反复使用。
  • 特性文档:单元测试可以作为描述和记录代码所实现的所有需求,有时候可以作为文档来使用,了解一个项目可以通过阅读测试用例比看需求文档更清晰。
  • 驱动开发,指导设计:代码被测试的前提是代码本身的可测试性,那么要保证代码的可测试性,就需要在开发中注意API的设计,TDD将测试前移就是起到这么一个作用。

怎样进行单元测试?

书中介绍的JUnit是针对JAVA开发的一款简洁高效的测试框架,但笔者目前从事前端开发工作,因此本段不做详细介绍。从事JQuery开发的同学可以使用QUnit进行单元测试,参考QUnit入门教程

要做什么单元测试?

单元测试任务包括:1 模块[接口测试];2 模块局部数据结构测试;3 模块边界条件测试;4 模块中所有独立执行通路测试;5 模块的各条错误处理通路测试。

正常输入。例如字符串的Trim函数,功能是将字符串前后的空格去除,那么正常的输入可以有四类:前面有空格;后面有空格;前后均有空格;前后均无空格。
边界输入。上例中空字符串可以看作是边界输入。再如一个表示年龄的参数,它的有效范围是0-100,那么边界输入有两个:0和100。
非法输入。非法输入是正常取值范围以外的数据,或使代码不能完成正常功能的输入,如上例中表示年龄的参数,小于0或大于100都是非法输入,再如一个进行文件操作的函数,非法输入有这么几类:文件不存在;目录不存在;文件正在被其他程序打开;权限错误。

但是“任何测试都不能证明一个程序没有bug”。因此单元测试不必做到大而全,应该集中在可能出错的地方。总之,引入测试的目的就是"花合理的时间抓出大多数bug",而不是"穷尽一生抓出所有的bug"。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、 软件测试基本概念 1 bug的概念 bug类型:defect、fault、problem、error… pr...
    三口一个瓜阅读 3,778评论 0 12
  • 1.问:你在测试中发现了一个 bug ,但是开发经理认为这不是一个 bug ,你应该怎样解决。 首先,将问题提...
    qianyewhy阅读 9,292评论 4 123
  • 测试计划和测试用例 1.测试计划及缺陷管理 1.1.测试计划 测试计划是在测试设计阶段,在需求规格说明书的基础上制...
    方步阅读 6,526评论 1 7
  • 软件的安装与卸载的常用测试点 1.不同的系统配置下,安装花费的时间。 2.使用系统工具为一些基本配置创建系统镜像。...
    小梨喵阅读 1,460评论 0 11
  • 34****、在C/C++****中static****有什么用途?(请至少说明两种)1)在函数体,一个被声明为静...
    一箭阅读 2,346评论 0 59