Skip to content

Test #18

@eziceice

Description

@eziceice

测试驱动编程

  • 在Java这种编译型语言中, 通常的代码构建流程是编辑, 编译和运行. 有许多问题可以再编译过程中被发现. 而Python是没有编译步骤的, 所以只需要编辑和运行即可. 运行程序就是测试的过程.

  • 单元测试是指对程序的各个部分依次建立测试, 这是非常重要的. 现在有许多开发团队推崇测试驱动编程, 也就是所谓的先测试, 后开发. 测试驱动编程的理念是从编写测试程序开始, 然后编写可以通过测试的程序. 测试程序就是程序的需求说明, 它帮助程序员在开发程序的时候不偏离需求. 这种思想不仅在初始开发程序时非常有用, 在以后扩展和维护代码的时候也很有用.

  • 自动化测试除了在编写程序上给予巨大的帮助外, 还可以避免在修改过程中引入错误. 代码的一部分改变的时候, 很有可能会引入几个不可预料的错误. 如果程序设计的足够好(使用大量的抽象和封装), 改变产生的影响就应该是局部的, 并且只影响一小部分代码.

  • Coverage(覆盖度)是测试中一个非常重要的概念. 保证你可以尽量多的提供测试代码以及测试数据, 可以对程序有着更高的覆盖度. 事实上遵守测试驱动编程的原则就是确保拥有好的测试覆盖度的方法之一. 如果能保证在写函数之前就编写了测试代码, 那么就可以肯定每个函数都被测试过了.

测试的四个步骤

  1. 指出需要的新特性, 可以记录下来, 然后为其编写一个测试.

  2. 编写特性的骨架代码, 这样程序就可以运行, 不存在任何语法等方面的错误, 但是测试会失败. 看到测试失败是很重要的, 这样就可以确定所编写的测试代码是正常运行的. 在试图让测试成功之前, 先要看到它失败.

  3. 为特性的骨架编写dummy code, 能够满足测试的要求就行. 不用准确地实现功能, 只要保证测试可以通过即可.

  4. 重构代码, 使它完成自己应该做的事.

  • Python标准库中的测试工具分为unittest(通用测试框架)和doctest(检查文档用的, 但也可以用来编写单元测试).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions