测试开发体系介绍——测试体系介绍-L2

发布时间:2023年12月22日

目录:

  1. 被测系统架构与数据流分析
    1. 开源项目 LiteMall 系统架构:
    2. 开源项目 Mall 的系统架构:
    3. 如何快速了解一家公司的架构
    4. 统一建模语言 UML
    5. 推荐工具
    6. 梳理业务流程:
    7. 使用思维导图分析功能点:
    8. 使用时序图分析数据流:
    9. 使用活动图分析测试用例:
    10. 测试用例设计总结
  2. 测试体系与测试方案设计
    1. 了解被测系统架构
    2. 智能家居技术架构:
    3. 阿里云经典业务架构:
    4. 阿里云物联网平台技术架构:
    5. 企业服务钉钉技术架构:
    6. 企业服务飞书技术架构:
    7. 电子商城 Mall 开源项目技术架构:
    8. 经典技术架构:
    9. 腾讯与阿里的质量保证服务参考:
    10. 测试开发技术体系:
    11. 测试能力架构图:
  3. 被测需求理解
    1. 需求文档
    2. 需求评审
    3. 需求分析
  4. 常用测试策略与测试手段
    1. 测试策略概念
    2. 测试策略的关注重点
    3. 测试手段
    4. 测试策略模版:
  5. bug定位方法
    1. 常见 Bug 分类:
    2. 为什么需要掌握 Bug 定位
    3. Bug 展现层:
    4. 技术架构层次
    5. MVC 三层分析方法
    6. View 层常用分析方法
    7. Controller 层常用分析方法
    8. Model 层常用分析方法
    9. Web Bug分析方法
      1. Web UI View 层 Bug 分析方法
      2. Web Controller 层分析方法
      3. Web Model 层分析方法-分析数据传递方式与结构
    10. App Bug 分析方法
      1. App View 层 Bug 分析:
      2. App Controller 层分析
      3. App Model 层分析方法
      4. Andorid Profiler 网络分析
      5. 使用代理工具分析
      6. 网络协议层分析
    11. 性能Bug分析方法:
      1. H5 性能分析方法:
      2. 利用 Chrome 分析 Web 性能
      3. 分析性能瓶颈 使用 Profile 进行代码剖析
    12. 代码覆盖率分析方法
    13. 总结
  6. 分层测试策略
    1. 分层测试策略的初衷 质量保证
    2. 分层测试策略的初衷 效率提升
    3. 测试金字塔
    4. UI 组件的分层测试
    5. 金字塔模型与沙漏模型:
    6. 微服务测试模型
    7. 微服务测试策略
  7. 自动化测试策略
    1. 用户端测试体系:
    2. 工具体系参考:
    3. 智能遍历工具:
    4. 稳定性测试体系案例:
    5. 服务端测试体系
    6. 后端链路调用架构图
    7. 使用 Mock 技术解耦与提高测试覆盖
    8. 接口测试框架:
    9. 测试用例自动生成技术例子 Swagger
    10. JVM-Sandbox-Repeater 录制回放工具:
    11. 接口重构与 diff 测试
    12. 流量回放
    13. 更多质量保证
    14. 自动化测试策略总结
  8. 测试环境搭建
    1. 被测系统 AUT(Application Under Test)
    2. 常见的被测系统类型
    3. 部署方法
    4. 打包部署
    5. 打包命令
    6. 自动化脚本部署
    7. 容器部署

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

开源项目 LiteMall 系统架构:?
  • 角色与数据
  • 用户产品
  • 前端技术栈
  • 后端技术栈
  • 数据存储

开源项目 Mall 的系统架构:
  • 角色与数据
  • 用户产品
  • 前端技术栈
  • 后端技术栈
  • 服务治理技术栈
  • 监控技术栈
  • 大数据处理技术栈
  • 数据存储
  • 持续集成/持续交付/DevOps

?

?如何快速了解一家公司的架构
  • 业务架构
    • 领域模型:角色、行为、数据
    • 业务流程:角色之间的集成关系
  • 系统架构:
    • 架构角色与技术栈:
      • 网关:apache/nginx/f5/
      • 应用开发:spring boot/spring cloud/
      • 通讯协议:dubbo/http/pb
      • 数据处理:hadoop/spark/flink
      • 数据存储:redis/mysql/oracle/redis/es
      • 文档存储:mongodb/hbase/neo4j
    • 部署架构:架构角色之间的集成关系
统一建模语言 UML
  • 用例图:商业模式、业务角色
  • 时序图:业务流程、调用关系
  • 部署图:系统架构与集成关系
  • 活动图:业务逻辑分析
推荐工具
  • plantuml
  • yed
  • draw.io
  • processon
  • visio
梳理业务流程:
@startuml
skin rose
scale 800 height
left to right direction
actor User as user
actor Admin as admin
package 商品 {
  usecase "发布商品"
  usecase "浏览商品"
  usecase "购买商品"
  usecase "下架商品"
}

package 订单 {
  usecase "结算订单"
  usecase "查询订单"
  usecase "退款"
  usecase "管理订单"
}
admin -up-> 发布商品
admin -up-> 下架商品
admin -up-> 管理订单
user --> 浏览商品
user --> 购买商品
user --> 结算订单

user --> 结算订单
user --> 查询订单
user --> 退款
@enduml

使用思维导图分析功能点:
@startmindmap
skin rose
caption figure 1
title My super title

* <&flag>Debian
** <&globe>Ubuntu
*** Linux Mint
*** Kubuntu
*** Lubuntu
*** KDE Neon
** <&graph>LMDE
** <&pulse>SolydXK
** <&people>SteamOS
** <&star>Raspbian with a very long name
*** <s>Raspmbc</s> => OSMC
*** <s>Raspyfi</s> => Volumio

header
My super header
endheader

center footer My super footer

legend right
  Short
  legend
endlegend
@endmindmap

使用时序图分析数据流:
scale 800 height
skin rose
用户 -> 认证中心: 登录操作
认证中心 -> 缓存: 存放(key=token+ip,value=token)token

用户 <- 认证中心 : 认证成功返回token
用户 -> 认证中心: 下次访问头部携带token认证
认证中心 <- 缓存: key=token+ip获取token
其他服务 <- 认证中心: 存在且校验成功则跳转到用户请求的其他服务
其他服务 -> 用户: 信息

使用活动图分析测试用例:
@startuml
skin rose
scale 1000 height
start
repeat
  :Test something;
    if (Something went wrong?) then (no)
      #palegreen:OK;
      break
    endif
    ->NOK;
    :Alert "Error with long text";
repeat while (Something went wrong with long text?) is (yes) not (no)
->//merged step//;
:Alert "Success";
stop
@enduml

?

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

2.测试体系与测试方案设计

了解被测系统架构
  • 业务架构:业务模型分析
  • 技术架构:技术组件、通讯协议分析
  • 数据架构:数据模型、数据存储引擎分析
智能家居技术架构:

阿里云经典业务架构:?

阿里云物联网平台技术架构:

企业服务钉钉技术架构:

企业服务飞书技术架构:

电子商城 Mall 开源项目技术架构:?

经典技术架构:?
  • 网关产品 Nginx Apache Httpd
  • Web 应用开发 Vue?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
腾讯与阿里的质量保证服务参考:

阿里云效测试能力与架构:

腾讯 WeTest 测试能力全景图:

测试开发技术体系:
  • 用户端测试
    • Web/App 测试
    • Web/App 自动化测试
    • 用户端专项测试
    • 用户端安全测试
  • 服务端测试
    • 接口协议与 Mock
    • 接口自动化测试
    • 服务端性能测试
    • 服务端安全测试
  • 持续交付
    • 容器技术 Docker
    • 自动化系统 Jenkins
    • 持续集成
    • 持续交付
  • 测试开发
    • 持续部署 DevOps
    • 测试框架 测试平台
    • 测试左移 精准测试
    • 测试右移 质量监控
测试能力架构图:

?

3.被测需求理解

需求文档
  • 查看需求需求文档范例
  • 模拟需求宣讲
  • 产品需求文档范例:https://docs.qq.com/doc/DV2ZMWUxFWE9XaEVk
需求评审

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

4.常用测试策略与测试手段

测试策略概念

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

测试策略的关注重点
  • 测试的目标是什么?
  • 测试可能存在的风险是什么?
  • 测试的对象和范围是什么?
  • 如何安排各种测试活动?
  • 如何评价测试的效果?
测试手段
  • 黑盒测试
  • 白盒测试
  • 动态测试
  • 静态测试
  • 手工测试
  • 自动化测试
测试策略模版:

https://docs.qq.com/doc/DV0Z6VEZHSUlwTXhC

5.bug定位方法

常见 Bug 分类:
维度介绍
功能业务流程是否正确
性能业务流程是否顺畅
安全是否符合安全标准与规范
专项质量用户体验 UX 兼容性 稳定性 可靠性
为什么需要掌握 Bug 定位
  • 提交 Bug 时候追加更多有用信息,方便研发更快的解决问题
  • 分析 Bug 形成原因,进行溯源并建立特征进行批量追踪
Bug 展现层:
  • 条件:测试数据
  • 过程:测试步骤
  • 结果:测试结果

?

技术架构层次
  • 视图层 View:
    • Web UI html css
    • App activity view
  • 控制器层 Controller:
    • Web:chrome、devtool
    • App:dalvik art objectc-runtime
  • 模型层 Model:
    • 模型的传递方式 http tcp rpc 串口
    • 模型的形式 json xml binary
    • 模型定义 schema

?

MVC 三层分析方法
  • View 层:运行平台、应用调试机制、链路分析
  • Controller 层:运行平台、应用调试机制、链路分析
  • Model 层:运行平台、应用调试机制、链路分析
?View 层常用分析方法
  • UI 人工测试 自动化测试
  • UE 人工测试 自动化测试
  • UI Diff 自动化分析
Controller 层常用分析方法
  • 运行平台日志:log
  • 应用调试日志:debug trace hook profile
?Model 层常用分析方法
  • 运行平台 log
  • app 调试机制
  • 链路分析:代理抓包 嗅探抓包
Web Bug分析方法?
Web UI View 层 Bug 分析方法
  • 主要依赖于 html css js
  • 可以使用 chrome 开发者工具 elements 与 style

?

Web Controller 层分析方法?
  • console 可以了解 js 的输出与报错信息
  • source 模块可以对 js 进行 debug

?

Web Model 层分析方法-分析数据传递方式与结构
  • 运行平台 log
    • chrome network
  • 链路分析
    • 代理 proxy: fiddler charles mitmproxy
    • 网络层协议 network: tcpdump wireshark
App Bug 分析方法?
App View 层 Bug 分析:
  • UI 界面交互
  • UX/UE 用户体验
  • UI Diff:uiautomator dump

?

App Controller 层分析?

通过 logcat 分析 app runtime 日志:

?

App Model 层分析方法
  • 运行平台 log
  • 应用:应用日志
  • 链路分析:
    • 代理抓包:charles fiddler mitmproxy
    • 嗅探抓包:wireshark tcpdump
?Andorid Profiler 网络分析

使用代理工具分析?

网络协议层分析?

?

性能Bug分析方法:
H5 性能分析方法:

利用 Chrome 分析 Web 性能
分析性能瓶颈 使用 Profile 进行代码剖析

代码覆盖率分析方法

?

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

6.分层测试策略

分层测试策略的初衷 质量保证
  • 需求分析
  • 测试标准确立
  • 测试用例 review
  • 界面覆盖率
  • 接口覆盖率
  • 代码覆盖率
分层测试策略的初衷 效率提升
  • 人工测试:招人 加人 培训,无论横向扩容还是纵向扩容,成本都很大
  • 自动化测试:自动化测试 自动遍历测试 录制回放测试
  • 尽早测试尽快反馈:单元测试 集成测试
  • 流水线:持续集成 持续交付 DevOps
测试金字塔?

UI 组件的分层测试

金字塔模型与沙漏模型:

微服务测试模型
  • Resources?通过特定协议暴露能力
  • Service?负责领域模型的协作
  • Domain?包含行为和数据的领域对象模型
  • Repositories?作用于域实体的集合,并且通常是持久性支持的
  • Gateway?与远程服务进行通讯
  • Data Mappers?模型的序列化方案

?

?微服务测试策略
  • 单元测试?检验应用程序中最小的可测试软件,以确定它们的行为是否符合预期
  • 集成测试?验证组件之间的通信路径和交互以检测接口缺陷
  • 组件测试?将运行软件的范围限制在被测系统的一部分,通过内部代码接口操纵系统,并使用测试替身将被测代码与其他组件隔离开来
  • 端到端测试?: 验证系统是否满足外部要求并实现其目标,从头到尾测试整个系统

?

7.自动化测试策略

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

?

工具体系参考:

?

智能遍历工具:
  • 百度 SmartMonkey
  • 腾讯 NewMonkey
  • 头条 fastbot
  • 支付宝 Macaca 的 NoSmoke
  • Android Monkey、Android App Crawler
  • OWASP-ZAP Web 漏洞自动探测

?

稳定性测试体系案例:
  • Fastbot 已广泛应用于字节客户端类产品的稳定性测试与兼容性测试。每日启动任务数超过 1 万次,每月平均发现 5 万个以上的崩溃。借助 Fastbot 的能力,我们在发版前就可以修复大部分的 crash,确保线上用户的使用体验。同时,Fastbot 在整个 DevOps 流程扮演重要的基础服务角色 {style=“width: 100%”}

字节跳动:?

?

服务端测试体系
  • 手工测试
  • 自动化测试
  • DIFF 测试、流量回放
  • Mock
后端链路调用架构图

淘宝

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

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

?

?

测试用例自动生成技术例子 Swagger?

JVM-Sandbox-Repeater 录制回放工具:

接口重构与 diff 测试?

Twitter diffy diff 测试算法

流量回放?

GoRplay 技术架构

更多质量保证
  • 性能
  • 安全
  • 兼容性
  • 健壮性
  • 易用性
?自动化测试策略总结
  • 分层测试策略
    • 系统测试
    • 集成测试
    • 单元测试
  • 测试手段
    • 手工测试
    • 自动化测试
    • 测试框架

8.测试环境搭建

被测系统 AUT(Application Under Test)

常见的被测系统类型
  • UI:Web App IOT
  • Service:
    • RESTful:sprint boot
    • webservice
    • rpc:dubbo pb
  • code: SDK lib
部署方法
  • 打包部署:apk app ipa jar war
  • 脚本部署:自动化脚本与自动化平台
  • 容器部署:基于容器镜像 Docker K8S
?打包部署
  • Android:Gradle
  • iOS:XCode XCodeBuild
  • 自动化构建工具
  • Web:NodeJS npm
  • Service:Maven Gradle
打包命令?
# web
npm run build

# app
gradlew tasks
gradlew assembleDebug
gradlew assembleRelease

# spring boot
mvn clean package

?

自动化脚本部署
  • 通过 bash python 等脚本实现自动化的构建与部署
  • 通过持续集成平台比如 jenkins 完成流程管理

?

?

容器部署
  • 自动化构建 bash
  • 容器构建 docker
  • 容器编排 k8s
  • 持续集成 jenkins

?

文章来源:https://blog.csdn.net/qq_56444564/article/details/135160625
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。