测试体系介绍(L2)-数据结构、系统架构、需求理解、测试介入

二、测试体系介绍(L2)-数据结构、系统架构、需求理解、测试介入

目录

2.1 被测系统架构与数据流分析
2.2 测试体系与测试方案设计
2.3 被测需求理解
2.4 常用测试策略与测试手段
2.5 bug定位方法
2.6 分层测试策略
2.7 自动化测试策略

2.1 被测系统架构与数据流分析

系统架构:

  • 角色与数据
  • 用户产品
  • 前端技术栈
  • 后端技术栈
  • 数据存储

快速了解一家公司的架构:

  • 业务架构:领域模型:角色、行为、数据;业务流程:角色之间的集成关系
  • 系统架构:
    • 架构角色与技术栈:
      • 网关:apache/nginx/f5/
      • 应用开发:spring boot/spring cloud/
      • 通讯协议:dubbo/http/pb
      • 数据处理:hadoop/spark/flink
      • 数据存储:redis/mysql/oracle/redis/es
      • 文档存储:mongodb/hbase/neo4j
    • 部署架构:架构角色之间的集成关系

统一建模语言 UML
梳理业务流程、使用思维导图分析功能点、使用时序图分析数据流、使用活动图分析测试用例

  • 用例图:商业模式、业务角色
  • 时序图:业务流程、调用关系
  • 部署图:系统架构与集成关系
  • 活动图:业务逻辑分析

测试用例设计总结

  • 使用用例图分析角色与资源
  • 使用思维导图分析功能点
  • 使用时序图分析数据流
  • 使用活动图分析业务逻辑

2.2 测试体系与测试方案设计

了解被测系统架构

  • 业务架构:业务模型分析
  • 技术架构:技术组件、通讯协议分析
  • 数据架构:数据模型、数据存储引擎分析

经典技术架构

  • 网关产品 Nginx Apache Httpd
  • Web 应用开发 Vue.js React
  • 移动应用开发 Android iOS RN Flutter
  • 后端应用开发 Java(Spring Boot)
  • 底层引擎:C/C++ Go Rust
  • 消息管道 Kafka RabbitMQ
  • 缓存系统 Redis MemCached
  • 数据监控 Logstash ElasticSearch Kibana
  • 性能监控 Prometheus Grafana
  • 大数据处理 Hadoop Spark Flink
  • 人工智能深度学习 TensorFlow Pytorch

测试开发技术体系:
image

2.3 被测需求理解

需求文档

需求评审:

  • 业务场景角度
    • 用户故事
    • 业务流程图
  • 功能点角度
    • 数据约束是否全面、合理
    • 存在分支的逻辑、描述是否覆盖所有路径
    • 多状态流程,状态流转描述是否合理且完整
    • 权限描述是否明确

需求分析

  • 明确测试范围
  • 明确功能点
  • 明确业务流程
  • 明确输出结果
  • 分析异常流程
  • 预估测试需要的时间和资源

2.4 常用测试策略与测试手段

**测试策略概念 :**在特定环境约束之下,描述软件开发周期中关于测试原则、方法、方式的纲要,并阐述了它们之间如何配合,以高效地减少缺陷、提升质量。

测试策略的关注重点:

  • 测试的目标是什么?
  • 测试可能存在的风险是什么?
  • 测试的对象和范围是什么?
  • 如何安排各种测试活动?
  • 如何评价测试的效果?

测试手段:

  • 黑盒测试
  • 白盒测试
  • 动态测试
  • 静态测试
  • 手工测试
  • 自动化测试

测试策略模版:测试策略

需求 - 开发 - 冒烟测试 - 测试 - 跟踪测试 - 版本质量评估 - 后续版本测试策略(如回归) - 发布质量评估;

2.5 bug定位方法

常见bug分类
image

为什么需要掌握 Bug 定位:

  • 提交 Bug 时候追加更多有用信息,方便研发更快的解决问题
  • 分析 Bug 形成原因,进行溯源并建立特征进行批量追踪、

Bug展现层(BUG复现):

总结:

  • 明确 Bug 问题的现象与复现步骤
  • 分层分析关键过程的数据与问题特征
  • 积累 Bug 特征与问题根源特征,丰富测试经验,提高 Bug 发现的能力

2.6 分层测试策略

image

用户端自动化测试分层测试阶段

  • 功能测试:

    • 研发单元测试:JUnit、Robolectric 不依赖真机或者模拟器
    • SDK 测试:Instrumentation 依赖真机或者模拟器
    • 集成测试:Espresso 单应用快速集成测试
    • 验收测试:Appium、ATX/AirTest、Calabash 跨应用测试
  • 非功能测试

    • 健壮性测试:Monkey Maxim AppCrawler
    • 兼容性测试:多设备分布式测试
    • 专项测试:性能测试、弱网测试、耗电量测试、卡顿测试、内存泄漏测试、安全测试

测试金字塔
image

UI组件的分层测试:
分层:单元测试 → 集成测试 → UI测试

金字塔模型与沙漏模型

微服务测试


2.7 自动化测试策略

2.7.1 用户端测试体系

  • 研发单元测试:JUnit、Robolectric 不依赖真机或者模拟器
  • 集成测试:Espresso 单应用快速集成测试
  • 验收测试:Appium、ATX/AirTest、Calabash 跨应用测试

智能遍历测试(快速回归、兼容测试)

  • 通过智能探索业务路径尝试发现问题
  • 可以弥补现有自动化手段的不足
  • 已经成为测试过程中的关键一环

智能遍历工具

  • 百度 SmartMonkey
  • 腾讯 NewMonkey
  • 头条 fastbot
  • 支付宝 Macaca 的 NoSmoke
  • Android Monkey、Android App Crawler
  • 霍格沃兹测试开发学社 AppCrawler
  • OWASP-ZAP Web 漏洞自动探测

自动遍历的价值

  • 用例维护成本低 code-less。
  • 具备新功能探索能力,可以对未提测产品进行测试实现左移。
  • 具备回归能力,可以实现较高的界面与控件覆盖。
  • 应用场景多,回归测试、健壮性测试、兼容测试、自动化专项测试。

**稳定测试体系:**如Fastbot(for 稳定性、兼容性)

UI 自动化加速策略

  • 并行并发:利用多进程、多线程
  • 分布式:分布式执行机制

自动化测试脚本管理

  • 版本化管理:YAML Python
  • 测试套件管理定制:测试套件的组合、继承管理、模型驱动
  • 平台化管理调度:自研平台、Jenkins 平台

2.7.2 服务端测试体系

  • 手工测试
  • 自动化测试
  • DIFF 测试、流量回放
  • Mock

使用 Mock 技术解耦与提高测试覆盖

接口测试框架

  • Python:Requests
  • Java:RestAssured
  • 简约的接口测试 DSL
  • 支持结构化解析 XML JSON 等

接口自动化测试用例自动生成

  • 静态生成:
  • 基于文档 Swagger YAPI
  • 基于代码分析语法树
  • 动态生成、录制、生成、回放:
  • 基于 Proxy 生成用例
  • 基于插桩框架生成用例 JVM-SandBox ByteBuddy

2.7.3 自动化测试策略总结

分层测试策略

  • 系统测试
  • 集成测试
  • 单元测试

测试手段

  • 手工测试
  • 自动化测试
  • 测试框架