[前端测试] TDD和BDD
什么是 TDD
Test Driven Development, 测试驱动开发
TDD 的开发流程
TDD 的开发流程 Red-Green Development
- 编写测试用例
知道一个功能什么样子, 先不写代码, 先编写测试用例
- 运行测试, 测试用例都是无法通过测试
因为没编写代码
- 编写代码, 使测试用例通过测试
一个个的通过测试后, 完成代码
优化代码, 完成开发
重复上述步骤
TDD 的优势
- 长期会减少回归 bug
因为一开始就编写了足够多的测试用例, 所以当我们改变项目代码的时候, 所有之前写的测试用例都会重新运行. 一旦发现新代码导致之前项目中的测试用例没通过, 就能及时知道项目中的代码出了问题. 及时解决, 就可以避免回归 bug
- 代码质量更好(组织, 可维护性)
因为当使用 TDD 开发模式的时候, 首先要编写测试用例, 如果测试用例想写得好, 一定是代码写的结构很合理, 模块拆分很合理, 所以在编写测试用例的时候就会思考之后的代码如何设计. 才会让测试更加方便的进行, 因为有了对代码的思考, 所以往往意味着可以写出更好的代码
- 测试覆盖率高
因为先写测试用例, 然后让我们的代码去实现测试用例要实现的功能, 所以测试覆盖率要比平时先写代码再写测试用例要高
- 错误测试代码不容易出现
举例来说, 先写代码再写用例的话, 有可能是测试用例写错了导致用例通过, 但是实际上代码本身是有 bug 的. 但是 TDD 不存在这个问题, 因为一开始所有用例都是不通过的, 只有写好代码后才通过, 所以有效的减少错误代码出现频率.
什么是 BDD
Behavior Driven Development 行为驱动开发
按照用户的行为去开发. 我们考虑用户如何测试, 用户怎么测试就按照用户的行为去编写测试用例.