测试分为 单元测试
、组件测试
、系统测试
、性能测试
,逐级上升。
所谓的测试驱动开发(TDD:Test-Driven Development)
,就是说每写完一个小功能,就要做一个完整的单元测试,每次进行改动以后都要进行一次单元测试,以确保功能正常。
每个单元测试都通过以后就可以进行组件测试,所有组件测试都通过就可以进行系统测试,系统测试通过就可以进行性能测试,性能测试类似于“烤机”,测试系统的最大承受能力,承受峰值等等。
单元测试
单元测试就是对一个模块、一个函数或者一个类进行正确性检验的检测工作
举个栗子:
对一个求绝对值函数 abs(num)
,可以编写一下几个测试用例:
- 输入正数 如
1
、4.1
、5.9
,期待返回正整数1
、4.1
、5.9
- 输入负数 如
-1.5
、-3.7
、20
,期待返回正整数1.5
、3.7
、20
- 输入
0
,期待返回0
- 输入非数值类型 如
None
、[]
、{}
,期待抛出TypeError
。
将上面4个测试用例放到一个测试模块里,就是一个完整单元测试。
单元测试能通过了,说明这个函数功能正常,如果不通过,要么函数有问题,要么测试用例有问题。
所以要修复直到单元测试能够通过。
这样做的好处是,如果我们对abs()
做了修改,只要再进行一次单元测试,可以通过,就说明修改没有影响函数的功能。如果不通过则要找出问题,修改到通过单元测试为止。极大程度上确保该模块行为仍然是正确的。
文档测试
一个函数、模块、类的第一个匿名字符串,就是文档。如
def func():
'''
这里是文档
'''
pass
class cls: