【刷题】面筋-测开-自动化测试原理与框架

目录

自动化测试

  • 概述

    • 自动化测试,就是把以人为驱动的测试行为转化为机器执行的过程。
    • 自动化测试每每经过一些测试工具或框架,编写自动化测试用例,来模拟手工测试过程。
    • 阶段:通常落后于新功能的手工测试阶段,能够在手工用例执行完成或功能上线后,再补充。
  • 分类

    • 自动化测试广义说法包括,白盒自动化测试,GUI自动化测试,性能自动化测试
    • GUI自动化测试的原理:经过软件模拟用户实际的鼠标和键盘操做,实现自动化执行和操做的过程。
    • 性能自动化测试的原理:经过客户端模拟多个虚拟用户并发请求,来检验服务器的性能行为是否知足系统要求。
  • 自动化测试的优势:

    • 一、经过录制,编写脚本执行测试,减小回归测试
    • 二、执行手工测试困难,或不可能作得测试,(模拟多个用户并发测试)
    • 三、更好的利用资源,(将繁琐的任务自动化,利用晚上或周末的时间进行执行自动化测试)
    • 四、测试具备一致性和可重复性,(重复屡次相同的测试,在不一样配置下执行,能够在不一样的操做系统测试)
    • 五、测试的复用性
    • 六、缩短测试的时间和周期
  • 自动化测试局限:

    • 一、不能取代手工测试:手工测试比自动化测试发现的bug要多;
    • 二、自动化测试对测试人员的要求相对更高;
    • 三、测试用例须要根据版本迭代进行更新,有必定维护成本;
    • 四、工具自己不具备想象力
    • 五、对测试质量的依赖性极大
  • 但愿借助自动化流程解决的问题

    • 一、测试时间紧张,手工测试可能覆盖不全,容易错过某些边界状况;
    • 二、模块间强耦合时,单纯从页面进行测试时,比较难深刻发现问题;
    • 三、回归测试时,须要投入较大的人力和工时;
    • 四、实现手工测试没法达成的测试任务,如并发;
    • 五、经过编写测试用例,加深对业务/数据的认知,有助于下阶段迭代中发现隐藏的问题。
  • 引入自动化测试的前提条件

    • 项目周期长,需求变更不频繁;
    • 自动化测试脚本可重复使用;
    • 测试任务手工测试难以实现;
  • 作自动化测试须要具有的能力

    • 编码能力;
    • 熟悉被测系统;
    • 掌握一个自动化测试框架/工具;
    • 不断学习;
  • 自动化测试用例设计原则

    • 保持case的独立性;
    • 保持case的可迁移性;
    • 提高case的执行效率;

自动化框架

  • 概述

    • 定义:为解决某些特定问题而约束边界,支撑整个问题解决方案,配套了一些解决问题的组件而构成的工具。
    • 特定问题:什么问题?——自动化测试
    • 约束边界:为何约束?——明确测试范围和目的
    • 解决方案:用什么方案解决问题?——编程语言+工具+其余
    • 构成工具的组件:哪些组件?—— 用例、脚本、数据、日志、报告、通知
    • 工具:特色是什么?—— 灵活性、可扩展性、高内聚低耦合
  • 图示

  • 组件

    • Log:日志记录和管理功能,针对不一样的状况,设置不一样的日志级别,方便定位问题;
    • Report:测试报告生成和管理以及即时通知,测试结果快速响应;
    • Source:配置文件、静态资源的管理,遵循高内聚低耦合原则;
    • Common:公共函数、方法以及通用操做的管理,遵循高内聚低耦合原则;
    • TestCase:测试用例管理功能,一个功能点对应一个或者多个case,尽量的提升覆盖率;
    • TestData:测试数据管理功能,数据与脚本分离,下降维护成本,提升可移植性;
    • TestSuite:测试组件管理功能,针对不一样场景不一样需求,组装构建不一样的测试框架,遵循框架的灵活性和扩展性;
    • Statistics:测试结果统计管理功能,每次执行测试的结果统计、分析、对比以及反馈,数据驱动,为软件优化和流程改进,提供参考;
    • Continuous:持续集成环境,即CI环境,包括测试文件提交、扫描编译、执行测试、生成报告及时通知等功能,持续集成是自动化测试的核心!

常见的自动化测试框架

  • 一、接口自动化框架:

    • ①、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
  • 二、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项
      • 日志记录和管理功能;测试报告;配置文件、静态资源;公共函数、方法以及通用操做;测试用例;测试数据;测试组件;测试结果统计;持续集成环境。

自动化测试的流程

  • 分析自动化测试需求,通常在手工测试以后开始;
  • 根据项目的特色、选择合适的自动化测试工具,并搭建测试环境
  • 测试用例设计和开发:设计测试用例;或提取手工测试的测试用例,转化为自动化测试用例
  • 开发自动化软件测试框架和测试脚本
  • 执行:经过工具、代码实现自动化的构造输入、自动检测输出结果是否知足预期
  • 生成自动测试报告
  • 持续改进、脚本优化

游戏自动化测试的思考

自动化测试工具脑图






参考连接

END