Skip to main content

[前端测试] TDD和BDD

什么是 TDD

Test Driven Development, 测试驱动开发

TDD 的开发流程

TDD 的开发流程 Red-Green Development

  1. 编写测试用例

知道一个功能什么样子, 先不写代码, 先编写测试用例

  1. 运行测试, 测试用例都是无法通过测试

因为没编写代码

  1. 编写代码, 使测试用例通过测试

一个个的通过测试后, 完成代码

  1. 优化代码, 完成开发

  2. 重复上述步骤

TDD 的优势

  1. 长期会减少回归 bug

因为一开始就编写了足够多的测试用例, 所以当我们改变项目代码的时候, 所有之前写的测试用例都会重新运行. 一旦发现新代码导致之前项目中的测试用例没通过, 就能及时知道项目中的代码出了问题. 及时解决, 就可以避免回归 bug

  1. 代码质量更好(组织, 可维护性)

因为当使用 TDD 开发模式的时候, 首先要编写测试用例, 如果测试用例想写得好, 一定是代码写的结构很合理, 模块拆分很合理, 所以在编写测试用例的时候就会思考之后的代码如何设计. 才会让测试更加方便的进行, 因为有了对代码的思考, 所以往往意味着可以写出更好的代码

  1. 测试覆盖率高

因为先写测试用例, 然后让我们的代码去实现测试用例要实现的功能, 所以测试覆盖率要比平时先写代码再写测试用例要高

  1. 错误测试代码不容易出现

举例来说, 先写代码再写用例的话, 有可能是测试用例写错了导致用例通过, 但是实际上代码本身是有 bug 的. 但是 TDD 不存在这个问题, 因为一开始所有用例都是不通过的, 只有写好代码后才通过, 所以有效的减少错误代码出现频率.

什么是 BDD

Behavior Driven Development 行为驱动开发

按照用户的行为去开发. 我们考虑用户如何测试, 用户怎么测试就按照用户的行为去编写测试用例.