zoukankan      html  css  js  c++  java
  • 【刷题】面筋-测开-自动化测试原理与框架

    目录

    自动化测试

    • 概述

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

      • 自动化测试广义说法包括,白盒自动化测试,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项
        • 日志记录和管理功能;测试报告;配置文件、静态资源;公共函数、方法以及通用操作;测试用例;测试数据;测试组件;测试结果统计;持续集成环境。

    自动化测试的流程

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

    游戏自动化测试的思考

    自动化测试工具脑图






    参考链接

    END

  • 相关阅读:
    C#学习笔记---基础入门(二)
    微软Hololens设备 浅分析
    phpstorm 破解方法
    iOS 审核被拒,日志中找不到苹果返回的creashlog的解决办法
    flutter学习之添加第三方应用
    MAC flutter初步学习
    python Django 连接数据库失败的解决方法
    Python之学习菜鸟教程踩的坑
    Python学习之环境搭建
    tableView reload 不闪动方法
  • 原文地址:https://www.cnblogs.com/anliux/p/12715546.html
Copyright © 2011-2022 走看看