单元测试自动化介绍
所谓的单元测试(Unit Test)是根据特定的输入数据,针对程序代码中的最小实体单元的输入输出的正确性进行验证测试的过程。所谓的最小实体单元就是组织项目代码的最基本代码结构:函数,类,模块等。在Python中比较知名的单元测试模块:
- unittest
- pytest
- doctest
- nose
测试用例
所谓的测试用例(Test Case),就是执行测试的依据和记录,把测试应用程序的操作步骤用文档的形式描述出来的一份文档。文档的格式可以是Excel、markdown、html、xmind网页。
一份合格的测试用例,应该包含测试时间、测试人员、测试模块名、功能点名称、用例ID、用例说明(测试目的)、前置条件、输入数据、预期结果、测试结果(输出结果、实际结果)等。注意:加粗内容为必备的测试用例八要素。
设计方法
- 等价类划分法:根据输入数据的有效性与无效性设计测试用例。
- 边界值分析法:对等价类划分法的一个补充,从等价类的边缘值(临界点)去寻找错误,基于这些错误来设计测试用例。
- 判定表法:把输入数据的各种可能情况进行组合罗列成一个判断表,以判断表来设计测试用例。
判定表的表结构一般有如下2种:横向判断表与纵向判定表。
横向判断表:
条件桩 | 条件项 |
---|---|
动作桩 | 动作项 |
纵向判定表:
条件桩 | 动作桩 |
---|---|
条件项 | 动作项 |
例子,测试一个功能是否能修改文件。
如果使用纵向判定表: | |||
---|---|---|---|
条件1:是否有权限 | 条件2:是否存在 | 结果1:可以修改 | 结果2:不能修改 |
√ | √ | √ | ✖ |
√ | ✖ | ✖ | √ |
✖ | √ | ✖ | √ |
✖ | ✖ | ✖ | √ |
如果使用横向判断表: | ||||
---|---|---|---|---|
条件桩:是否有权限 | ✔ | ✔ | ✖ | ✖ |
条件桩:是否存在 | ✔ | ✖ | ✔ | ✖ |
动作桩:可以修改 | ✔ | ✖ | ✖ | ✖ |
动作桩:不能修改 | ✖ | ✔ | ✔ | ✔ |
- 因果图法:用图解的方式表示输入数据的各种组合关系,以此写出判定表,从而设计相应的测试用例。
- 正交表法:基于正交表来设计测试用例。
- 场景法:基于流程图展示业务流程或功能的调用流程,对流程图的走向路径设计测试用例。
- 错误推测法:基于经验和直觉,找出程序中认为可能出现的错误来设计测试用例。