什么是自动化测试?
不想说话
为什么要进行自动化测试?自动化测试的好处
不想说话
自动化测试的类型
常规分类
通常我们听到最多的分类方式是:
- 单元测试 unit testing
- 接口测试 API testing
- 界面测试 user interface testing
这个分类法很合理,也容易理解,唯一的问题是在实际实施的时候,所写的有些用例很难区分是单元测试还是接口测试。
按大小分类
下面是 腾讯新闻产品组提出的分类方式,我认为具有很好的可操作性:
- 小型测试,针对单个函数的测试,关注其内部逻辑,mock 所有需要的服务。小型测试带来优秀的代码质量、良好的异常处理、优雅的错误报告
- 中型测试,验证两个或多个制定的模块应用之间的交互
- 大型测试,也被称为“系统测试”或“端到端测试”。大型测试在一个较高层次上运行,验证系统作为一个整体是如何工作的。
资源 | 小型测试 | 中型测试 | 大型测试 |
---|---|---|---|
网络访问 | 否 | 仅访问 localhost | 是 |
数据库访问 | 否 | 是 | 是 |
访问文件 | 否 | 是 | 是 |
访问用户界面 | 否 | 否 | 是 |
使用外部服务 | 否 | 不鼓励,可 mock | 是 |
多线程 | 否 | 是 | 是 |
使用 sleep 语句 | 否 | 是 | 是 |
使用系统属性设置 | 否 | 是 | 是 |
运行时间限制(毫秒) | 60 | 300 | 900+ |
强制时间限制(分钟) | 1 | 5 | 15 |
- | 小型测试 | 中型测试 | 大型测试 |
---|---|---|---|
对应测试类型 | 单元测试 | 单元测试+逻辑层测试(泛单元或分层测试) | UI 测试或接口测试 |
我的做法
- 遵守“金字塔”理论,UI 层用例做薄,UT 用例做厚
- MVC 后端项目分层测试,每层的用例对其下层调用时尽量打桩,即,mock 它的下层、mock 它所调用的函数,达到隔离所测类、实现只测当前类方法的目的
- 单元测试尽量不依赖数据库、外部服务、网络等等
- 以上 3 条只是尽量做到,视实际情况允许存在特例