美文网首页《重构》读书笔记
《重构》学习笔记(03)-- 构建测试体系

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

作者: 若隐爱读书 | 来源:发表于2019-05-26 13:14 被阅读0次

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

    为什么需要单元测试?

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

    怎样进行单元测试?

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

    要做什么单元测试?

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

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

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

    相关文章

      网友评论

        本文标题:《重构》学习笔记(03)-- 构建测试体系

        本文链接:https://www.haomeiwen.com/subject/ofpxtctx.html