【刷题】面筋-测开-自动化测试原理与框架
目录
自动化测试
-
概述
- 自动化测试,就是把以人为驱动的测试行为转化为机器执行的过程。
- 自动化测试往往通过一些测试工具或框架,编写自动化测试用例,来模拟手工测试过程。
- 阶段:一般落后于新功能的手工测试阶段,可以在手工用例执行完成或功能上线后,再补充。
-
分类
- 自动化测试广义说法包括,白盒自动化测试,GUI自动化测试,性能自动化测试
- GUI自动化测试的原理:通过软件模拟用户实际的鼠标和键盘操作,实现自动化执行和操作的过程。
- 性能自动化测试的原理:通过客户端模拟多个虚拟用户并发请求,来检验服务器的性能行为是否满足系统要求。
-
自动化测试的优点:
- 1、通过录制,编写脚本执行测试,减少回归测试
- 2、执行手工测试困难,或不可能做得测试,(模拟多个用户并发测试)
- 3、更好的利用资源,(将繁琐的任务自动化,利用晚上或周末的时间进行执行自动化测试)
- 4、测试具有一致性和可重复性,(重复多次相同的测试,在不同配置下执行,可以在不同的操作系统测试)
- 5、测试的复用性
- 6、缩短测试的时间和周期
-
自动化测试局限:
- 1、不能取代手工测试:手工测试比自动化测试发现的bug要多;
- 2、自动化测试对测试人员的要求相对更高;
- 3、测试用例需要根据版本迭代进行更新,有一定维护成本;
- 4、工具本身不具有想象力
- 5、对测试质量的依赖性极大
-
希望借助自动化流程解决的问题
- 1、测试时间紧张,手工测试可能覆盖不全,容易错过某些边界情况;
- 2、模块间强耦合时,单纯从页面进行测试时,比较难深入发现问题;
- 3、回归测试时,需要投入较大的人力和工时;
- 4、实现手工测试无法达成的测试任务,如并发;
- 5、通过编写测试用例,加深对业务/数据的认知,有助于下阶段迭代中发现隐藏的问题。
-
引入自动化测试的前提条件
- 项目周期长,需求变动不频繁;
- 自动化测试脚本可重复使用;
- 测试任务手工测试难以实现;
-
做自动化测试需要具备的能力
- 编码能力;
- 熟悉被测系统;
- 掌握一个自动化测试框架/工具;
- 不断学习;
-
自动化测试用例设计原则
- 保持case的独立性;
- 保持case的可迁移性;
- 提升case的执行效率;
自动化框架
-
概述
- 定义:为解决某些特定问题而约束边界,支撑整个问题解决方案,配套了一些解决问题的组件而构成的工具。
- 特定问题:什么问题?——自动化测试
- 约束边界:为什么约束?——明确测试范围和目的
- 解决方案:用什么方案解决问题?——编程语言+工具+其他
- 构成工具的组件:哪些组件?—— 用例、脚本、数据、日志、报告、通知
- 工具:特点是什么?—— 灵活性、可扩展性、高内聚低耦合
-
图示
-
组件
- Log:日志记录和管理功能,针对不同的情况,设置不同的日志级别,方便定位问题;
- Report:测试报告生成和管理以及即时通知,测试结果快速响应;
- Source:配置文件、静态资源的管理,遵循高内聚低耦合原则;
- Common:公共函数、方法以及通用操作的管理,遵循高内聚低耦合原则;
- TestCase:测试用例管理功能,一个功能点对应一个或者多个case,尽可能的提高覆盖率;
- TestData:测试数据管理功能,数据与脚本分离,降低维护成本,提高可移植性;
- TestSuite:测试组件管理功能,针对不同场景不同需求,组装构建不同的测试框架,遵循框架的灵活性和扩展性;
- Statistics:测试结果统计管理功能,每次执行测试的结果统计、分析、对比以及反馈,数据驱动,为软件优化和流程改进,提供参考;
- Continuous:持续集成环境,即CI环境,包括测试文件提交、扫描编译、执行测试、生成报告及时通知等功能,持续集成是自动化测试的核心!
常见的自动化测试框架
-
1、接口自动化框架:
- ①、java+testNG/Junit+Maven/Ant/Gradle+Jenkins+MySQL+testlink/redmine
- ②、python+unittest/pytest+Git+Jenkins+MySQL+testlink/redmine
- ③、python+rebot framework+unittest/pytest+Git+Jenkins+MySQL+testlink/redmine
- ④、jmeter+Maven/Ant+Jenkins+MySQL+testlink/redmine
-
2、UI自动化测试框架
- ①、java+selenium/appium+testNG/Junit+Maven/Ant/Gradle+Jenkins+MySQL+testlink/redmine
- ②、python+selenium/appium+unittest/pytest+Git+Jenkins+MySQL+testlink/redmine
- ③、python+rebot framework+unittest/pytest+Git+Jenkins+MySQL+testlink/redmine
-
总结
- 它们都拥有共同特性:编程语言+单元测试框架+扫描编译工具+持续集成工具+数据库+项目管理工具。
- 编程语言:编写测试脚本、日志记录和输出;
- 单元测试框架:提供测试脚本运行、异常校验等一些列的配置;
- 扫描编译工具:测试文件扫描编译,一般配合持续集成工具使用效果更佳;
- 持续集成工具:Jenkins,经典的持续集成工具;
- 数据库:测试数据管理;
- 项目管理工具:测试结果统计管理;
-
面试总结
- 框架:6项 -- 编程语言+单元测试框架+扫描编译工具+持续集成工具+数据库+项目管理工具。
- 具体:10项
- 日志记录和管理功能;测试报告;配置文件、静态资源;公共函数、方法以及通用操作;测试用例;测试数据;测试组件;测试结果统计;持续集成环境。
自动化测试的流程
- 分析自动化测试需求,一般在手工测试之后开始;
- 根据项目的特点、选择合适的自动化测试工具,并搭建测试环境
- 测试用例设计和开发:设计测试用例;或提取手工测试的测试用例,转化为自动化测试用例
- 开发自动化软件测试框架和测试脚本
- 执行:通过工具、代码实现自动化的构造输入、自动检测输出结果是否满足预期
- 生成自动测试报告
- 持续改进、脚本优化
游戏自动化测试的思考
-
参考文章:
自动化测试工具脑图