自动化测试
测试的本源
![](https://i-blog.csdnimg.cn/blog_migrate/3e9d50d21972152bc1a0133e9bbb7be1.png)
- 直接目标
找出软件中潜在的各种缺陷和错误 - 商业目标
规避软件发布后由于各种潜在的缺陷和错误造成的隐患及带来的商业风险 - 投入产出比要求
投入最少的人力、物力和时间,找到尽可能多的问题
自动化测试
自动化测试的概述
自动化测试的定义
自动化测试就是把以人为驱动的测试行为转化为机器执行的一种过程,即模拟手工测试的步骤,通过执行测试脚本自动地测试软件;
通常,在设计了自动化测试用例并通过评审之后,由测试人员根据测试用例中描述的规程一步步编写脚本并执行测试,得到实际结果与期望结果的比较。在此过程中,为了节省人力、时间或者硬件资源,提高测试效率,便引入了自动化测试的概念。
总之一句话:自动化测试就是程序(脚本)测试程序
手工测试局限性
- 覆盖性:主要是无法覆盖所有的代码路径
- 时效性:短时间内无法完成大量测试用例的执行工作
- 重复性:回归测试具有一定的机械性、重复性,工作量往往比较大
自动化测试对比手工测试的优势
- 覆盖性:测试里面有一些是手工测试无法覆盖的,这时候用自动化测试来代替(压力测试,负载测试…)
- 时效性:使用自动化测试可以大大的提高测试效率
- 重复性:回归测试重复性的工作特别多,可以使用自动化测试解决这个问题。
适合自动化测试的场景
- 项目周期比较长的
- 需求比较稳定(不经常变更)
- 考虑企业自身的条件:
- 市面上有没有适合的工具
- 企业自身的资金情况
- 企业的测试团队技术能力
自动化测试的演变
![](https://i-blog.csdnimg.cn/blog_migrate/a5aa43512984b5a6849fdcbf6c402eca.png)
自动化测似乎的演变史其实就是测试人员和繁琐测试工作的长期斗争史,是许多代测试人员智慧的结晶。
萌芽期
出于对“偷懒”的想法,把一些重复性、简单、没有技术含量的工作交给代码完成
发展期
以商业测试为代表,自动化测试u模型4阶段进化出现
线性测试 --> 模块化驱动测试 --> 数据型驱动测试 --> 关键字驱动测试
爆发期
随着互联网技术、Devops、敏捷、Docker等新理念新技术的提出和运用,同时开源测试软件、开源测试框架也层出不穷,CD/CI闭环成为趋势。
未来
AI–测试终结者
自动化测试特点
自动化测试的优势
- 对回归测试方便
- 测试具有一致性和可重复性,自动化的一个明显的好处是可以在较少的时间内运行更多的测试
- 有效的利用人力物力资源,提高测试工作效率
- 将繁琐的重复任务自动化,可以提高准确性和测试人员的积极性,可以让测试人员专注于手工测试部分,提高手工测试的效率
自动化测试的劣势
- 自动化测试是工具执行,没有思维,无法进行主观判断,对界面色彩、布局和系统的崩溃现象无法发现,这些错误通过人眼很容易发现。
- 自动化测试工具本身是一个产品,在不同的系统平台或硬件平台可能会受到影响,在运行时可能影响被测程序的测试结果
- 对于需求更改频繁的软件,测试脚本的维护和设计比较困难
- 自动化测试是机器执行,发现的问题比手工测试要少很多,通过测试工具发现没有缺陷,并不能说明系统不存在缺陷,只能通过工具评判测试结果和预期效果之间的差距
- 自动化测试要编写测试脚本,设计场景,这些对测试人员的要求比较高,测试的设计直接影响测试的结果
自动化测试工具
根据所支持的系统架构分类
- 支持C/S和B/S架构 --uft
- 只支持B/S架构 --Selenium
根据收费模式分类
- 商业化工具
- 开源工具
- 自主开发工具
Web自动化测试工具主要采用Selenium + WebDriver为主,超过一半,其次也是自己开发的工具
![](https://i-blog.csdnimg.cn/blog_migrate/04addeeea2f452212994705c81740788.png)
自动化测试流程
- 需求分析和测试计划:分析自动化测试的可行性,提取可以进行自动化测试的需求点,制定测试计划
- 测试设计:测试环境搭建,设计自动化测试用例,开发自动化测试脚本
- 测试执行:执行测试脚本(无人值守),缺陷追踪
- 测试总结:总结测试结果和之后的脚本维护及版本的升级
自动化测试开展时机
在一个项目的测试周期内,什么阶段适合开展自动化测试?
- 在系统界面及系统相对稳定的情况下,开展自动化测试
- 系统测试完做为自动化测试的介入点
自动化测试前景
市场上自动化测试需求缺口要高于手工测试需求缺口,或者说市场上纯手工测试的需求越来越少,对测试人员更多的是复合型要求