测试驱动开发
测试驱动开发
简介
测试驱动开发(Test-Driven Development,TDD)是一种软件开发方法,其核心理念是在编写实际代码之前先编写测试代码。通过迭代的方式,先编写测试用例,然后编写足以通过这些测试用例的最小量代码,最后进行重构,以确保代码的质量和稳定性。
应用场景
- 新功能开发。
- 代码需求重构
如何使用TDD
- 拿到需求时,从其输入与输出入手。
- 编写测试用例与断言,保证函数能够执行通过。
- 最后再编写业务代码。
- 执行测试用例。
- 重复:编写业务代码 -> 执行测试用例这两个步骤。
示例
- 需求1: 实现一个简单求和算法。首先先编写测试用例:
def get_sum(a,b):
pass
def test_get_sum():
assert get_sum(1, 2) == 3
assert get_sum(0, 1) == 1
assert get_sum(-1, 1) == 0
- 接下来则实现该被测函数
def get_sum(a,b):
return a+b
def test_get_sum():
assert get_sum(1, 2) == 3
assert get_sum(0, 1) == 1
assert get_sum(-1, 1) == 0
- 在需求1的基础之上,添加一个判断条件,如果输入的数据不为 int 类型则直接返回False。逻辑修改之后先补充测试用例
def get_sum(a,b):
return a+b
def test_get_sum():
assert get_sum(1, 2) == 3
assert get_sum(0, 1) == 1
assert get_sum(-1, 1) == 0
assert get_sum("a", 1) == False
assert get_sum(1, "b") == False
- 再实现该被测函数
def get_sum(a,b):
if isinstance(a, int) and isinstance(b, int):
return a+b
else:
return False
def test_get_sum():
assert get_sum(1, 2) == 3
assert get_sum(0, 1) == 1
assert get_sum(-1, 1) == 0
assert get_sum("a", 1) == False
assert get_sum(1, "b") == False
总结
由以上的几个小步骤可以看出,TDD 相比与直接开发的优点为:
- 更好的梳理开发思路。
- 更好的保障已有的代码的质量。