自动化测试框架
一、自动化测试
1、为什么要做自动化测试?
- 自动化测试就是把以人为驱动的测试行为转化为机器执行的一种过程,即模拟手工测试的步骤,通过执行测试脚本自动地测试软件
- 自动化测试就是程序(脚本)测试程序,使用自动化工具编写、执行测试人员测试脚本和案例的技术
- 自动化测试的主要目标是减少手动运行的测试用例数量,而不是完全取消手动测试
2、自动化测试的适用场景
- 自动化测试基于投资回报率,自动化测试适用于需求比较稳定,也就是不经常变更的场景
- 比如一些重复性任务、冒烟测试、使用多个数据集进行测试、回归测试用例等
- 如果是被测系统频繁更改,临时加的需求,或者是随机测试,就不适用于自动化
3、自动化测试的缺陷
- 不稳定
- 可靠性不强
- 不易维护,维护需要很大的成本
- 成本与收益可能不对等
二、自动化测试框架
1、你用过哪些自动化框架?
python+selenium+RobotFramework
2、介绍一下RobotFramework?
RF是基于可扩展关键字驱动的自动化测试框架
- 可扩展意味着可以自己开发,也可以调用第三方的关键字库
- 关键字驱动意味着测试用例都是围绕着关键字运行的
3、RF的原理是什么?
测试数据和关键字库都是自己准备的
编写测试用例后,rf解析测试数据,执行测试用例,最终生成测试报告
rf只是一个工具,并没有和被测系统发生真实交互
4、介绍一下pytest?
pytest是python的第三方单元测试框架,比自带unittest更简洁和高效,支持非常丰富的插件,同时兼容unittest框架。
pytest特点:
- 非常容易上手,入门简单,文档丰富,文档中有很多实例可以参考
- 能够支持简单的单元测试和复杂的功能测试
- 支持参数化
- 执行测试过程中可以将某些测试跳过(skip),或者对某些预期失败的case标记成失败
- 支持重复执行rerun失败的case
- 支持运行由nose、unittest编写的测试case
- 可生成html报告
- 方便和持续集成工具jenkins集成
- 可支持执行部分用例
- 具有很多第三方插件,并且可以自定义扩展
5、unittest有了解过么?
unittest是python内置的单元测试框架,具备编写用例、组织用例、执行用例、输出报告等自动化框架的条件
unittest框架大概有五个概念:
- test case:一个完整的测试单元
- test suite:多个测试用例的集合、测试套件或测试计划
- test loader:加载test case到test suite中的
- test runner:执行测试用例,并将测试结果保存到test result中
- test fixture: 一个测试用例的初始化准备及环境还原,主要是setup() 和setdown() 方法
unittest的工作原理:
通过unittest类调用分析,可将框架的工作流程概述为:编写TestCase,然后由TestLoader加载TestCase到TestSuite,然后由TestRunner来运行TestSuite,最后将运行的结果保存在TestResult中。通过命令行或者unittest.main() 执行时,main会调用TestRunner中的run来执行,或者可以直接通过TestRunner来执行用例,在Runner执行时,默认将执行结果输出到控制台,可以设置其输出到文件,在文件中查看报告。