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

目录:

  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> => Volumioheader
My super header
endheadercenter footer My super footerlegend rightShortlegend
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;breakendif->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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/293745.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Deployment Controller详解(上)

上一篇在《Kubectl 部署无状态应用》中介绍了如何使用 Deployment 部署五个 hello world 实例时&#xff0c;我们并没有详细探讨 Deployment Controller 的各项功能。因此&#xff0c;本文将深入介绍 Deployment Controller 的作用以及它能够完成的任务。 本文来自官方文档梳理…

Go语言基础:深入理解结构体

Go语言基础&#xff1a;深入理解结构体 引言&#xff1a;Go语言与结构体的重要性结构体的定义与声明结构体与方法结构体的嵌入与匿名字段结构体的继承与多态性结构体与性能优化结论&#xff1a;结构体在Go中的应用场景 引言&#xff1a;Go语言与结构体的重要性 在当今迅速发展…

效果图云渲染是什么意思?如何渲染出照片级别的效果图?

​在当前的建筑规划、室内装修以及电影视效制作等行业内&#xff0c;制作高质量的效果图起着至关重要的作用&#xff0c;因为它能够给予观众或客户极为逼真和吸引人的视觉体验。在此篇文章中&#xff0c;我们将深入了解什么是云端效果图渲染&#xff0c;并探讨如何运用Renderbu…

【Java JMM】编译和优化

1 前端编译 在 Java 技术下, “编译期” 是一个比较含糊的表述, 因为它可能指的是 前端编译器 (“编译器的前端” 更准确一些) 把 *.java 文件转变成 *.class 文件的过程Java 虚拟机的即时编译器 (常称 JIT 编译器, Just In Time Compiler) 运行期把字节码转变成本地机器码的过…

心有暖阳,笃定前行,2024考研加油

2024考研学子&#xff0c;所有的付出终有收获&#xff0c;阳光终将穿透阴霾&#xff0c;终将上岸。 当曙光破晓的时候&#xff0c;你可曾记得那些星月为伴&#xff0c;孤独为友&#xff0c;理想为灯来指引前行之路的日子&#xff0c;那些默默扎根的日子终将化作星星在未来闪闪发…

Prometheus-JVM

一. JVM监控 通过 jmx_exporter 启动端口来实现JVM的监控 Github Kubernetes Deployment Java 服务&#xff0c;修改 wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.19.0/jmx_prometheus_javaagent-0.19.0.jar# 编写配置文件&#xff0…

swing快速入门(二十四)绘画板-可调色

注释很详细&#xff0c;直接上代码 上一篇 Look here~ 听我说完再继续看更容易理解&#xff1a; 如果说用之前的绘图方法写一个绘画板你会怎么做&#xff1f;重绘会让之前的内容消失呀&#xff0c;用各种数据结构记录每个像素点的位置或颜色&#xff1f;嘶&#xff0c;感觉很麻…

如何选择出最适合的backbone模型?图像分类模型性能大摸底

到2023年图像分类backbone模型已经拓展到了几十个系列&#xff0c;而有的新算法还在采样vgg、resnet做backbone&#xff0c;比如2022年提出的GDIP-YOLO还在用VGG16做IA参数预测&#xff0c;那是在浪费计算资源并限制了模型性能的提升&#xff0c;应该将目光放到现在的最新模型中…

Mac使用Vmware Fusion虚拟机配置静态ip地址

一、设置虚拟机的网络为NAT 二、修改虚拟机的网络适配器网络 1、查看虚拟机的网卡 cd /etc/sysconfig/network-scripts#有些系统显示的是ens33&#xff0c;ens160等等 #不同的系统和版本&#xff0c;都会有所不同 #Centos8中默认是ens160,在RedHat/Centos7则为ens33 2、查看网…

绩效面谈-大公司提高绩效的必杀技

绩效面谈是一种人力资源管理工具&#xff0c;旨在评估员工绩效并为其提供反馈。其意义包括&#xff1a; 为提高绩效制定具体的目标和计划。通过与员工讨论绩效表现&#xff0c;管理人员和员工可以确定明确的目标和方向&#xff0c;以实现更高的绩效水平。 帮助员工理解工作环…

企业级“RAS”的数据平台如何炼成?

从“看报表”到“数据分析结果直接投入运营”&#xff0c;数字化正在深入企业经营&#xff0c;数据系统正在成为核心生产系统。相应的&#xff0c;企业对“作业挂了”、“系统崩了”、“算不出来”的容忍度越来越低——只有足够稳定、可靠、专业的数据系统&#xff0c;才能及时…

广州华锐互动:船舶安全事故3D虚拟还原系统模拟海上事故发生,帮助员工提高安全意识

随着科技的不断发展&#xff0c;人们对于安全问题的关注度越来越高。在船舶行业中&#xff0c;由于船舶的特殊性和复杂性&#xff0c;船舶事故的发生往往会造成严重的人员伤亡和财产损失。为此&#xff0c;船舶安全事故3D虚拟还原系统应运而生&#xff0c;为船舶安全管理和培训…