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

news2025/1/21 9:41:29

目录:

  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

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何使用 NFTScan NFT API 在 Base 网络上开发 Web3 应用

Base 是 Coinbase 使用 OP Stack 开发的最新以太坊第 2 层&#xff08;L2&#xff09;网络&#xff0c;用于解决以太坊等主要区块链面临的可扩展性和成本挑战。Coinbase 将其描述为“安全、低成本、对开发人员友好的以太坊 L2&#xff0c;旨在将下一个 10 亿用户带入 Web3”。B…

MFC 自定义压缩,解压缩工具

界面效果如下&#xff1a; 对外提供的接口如下&#xff1a; public: void setCallback(zp::Callback callback, void* param); bool open(const zp::String& path, bool readonly false); bool create(const zp::String& path, const zp::String& inputPath)…

医保购药小程序:智能合约引领医疗数字革新

在医疗领域&#xff0c;医保购药小程序通过引入智能合约技术&#xff0c;为用户提供更为高效、安全的购药体验。本文将通过简单的智能合约代码示例&#xff0c;深入探讨医保购药小程序如何利用区块链技术中的智能合约&#xff0c;实现医保结算、购药监控等功能&#xff0c;为医…

mysql索引合并index-merge

1.简单创建表并创建Index age sid CREATE TABLE st (id bigint(20) NOT NULL AUTO_INCREMENT,age int(11) DEFAULT NULL,name varchar(100) DEFAULT NULL,sid bigint(20) DEFAULT NULL,PRIMARY KEY (id),KEY idx_age (age),KEY idx_sid (sid) ) ENGINEInnoDB AUTO_INCREMENT8 …

关于“Python”的核心知识点整理大全34

目录 第&#xff11;3 章 外星人 13.1 回顾项目 game_functions.py 13.2 创建第一个外星人 13.2.1 创建 Alien 类 alien.py 13.2.2 创建 Alien 实例 alien_invasion.py 13.2.3 让外星人出现在屏幕上 game_functions.py 13.3 创建一群外星人 13.3.1 确定一行可容纳…

KubePi JWT 默认密钥权限绕过漏洞复现(CVE-2023-22463)

0x01 产品简介 KubePi 是一款简单易用的开源 Kubernetes 可视化管理面板。 0x02 漏洞概述 KubePi 存在权限绕过漏洞,攻击者可通过默认 JWT 密钥获取管理员权限控制整个平台,使用管理员权限操作核心的功能。 0x03 影响范围 KubePi <= 1.6.2 0x04 复现环境 FOFA: ti…

Ubuntu 常用命令之 ifconfig 命令用法介绍

&#x1f4d1;Linux/Ubuntu 常用命令归类整理 ifconfig 是一个用于配置和显示 Linux 内核中网络接口的系统管理命令。它用于配置&#xff0c;管理和查询 TCP/IP 网络接口参数。 ifconfig 命令的参数有很多&#xff0c;以下是一些常见的参数 up&#xff1a;激活指定的网络接口…

基于Javaweb的线上招聘问答系统的设计与实现论文

摘 要 计算机网络发展到现在已经好几十年了&#xff0c;在理论上面已经有了很丰富的基础&#xff0c;并且在现实生活中也到处都在使用&#xff0c;可以说&#xff0c;经过几十年的发展&#xff0c;互联网技术已经把地域信息的隔阂给消除了&#xff0c;让整个世界都可以即时通话…

MSVC,cin,后一个输入影响前一个输入的情况

现象&#xff1a; 这是由于输入的name超过了她的最大长度,超过的那部分覆盖了operation中的内容

leecode题解Golang版本-300-最长递增子序列

前言 开设专栏主要是为了能够记录自己刷题过程中的所思所想&#xff0c;以便能够在未来开发工作中能够快速温习并应用。如果文章能够带给大家一些启发&#xff0c;那便是意外之喜了。 题目描述 leecode-300 最长递增子串 给你一个整数数组 nums &#xff0c;找到其中最长严格…

C++11并发与多线程

C11并发与多线程 1. 线程是进程中的实际运作单位 并发&#xff1a;两个或者更多的任务&#xff08;独立的活动&#xff09;同时发生&#xff08;进行&#xff09;&#xff1a;一个程序同时执行多个独立的任务 进程&#xff1a;一个可执行程序运行起来了&#xff0c;就叫创建了…

RocketMQ系统性学习-RocketMQ高级特性之消息大量堆积处理、部署架构和高可用机制

&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308; 【11来了】文章导读地址&#xff1a;点击查看文章导读&#xff01; &#x1f341;&#x1f341;&#x1f341;&#x1f341;&#x1f341;&#x1f341;&#x1f3…

MATLAB遗传算法工具箱的三种使用方法

MATLAB中有三种调用遗传算法的方式&#xff1a; 一、遗传算法的开源文件 下载“gatbx”压缩包文件&#xff0c;解压后&#xff0c;里面有多个.m文件&#xff0c;可以看到这些文件的编辑日期都是1998年&#xff0c;很古老了。 这些文件包含了遗传算法的基础操作&#xff0c;包含…

TrustZone之与非安全虚拟化交互

到目前为止&#xff0c;我们在示例中忽略了非安全状态中可能存在的虚拟化程序。当存在虚拟化程序时&#xff0c;虚拟机与安全状态之间的许多通信将通过虚拟化程序进行。 例如&#xff0c;在虚拟化环境中&#xff0c;SMC用于访问固件功能和可信服务。固件功能包括诸如电源管理之…

C语言数据结构-----常用七种排序介绍、分类、实现及性能比较

前言 ①排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 ②稳定性&#xff1a;假定在待排序的记录序列中&#xff0c;存在多个具有相同的关键字的记录&#xff0c;若经过排序&#…

Guava的TypeToken在泛型编程中的应用

第1章&#xff1a;引言 在Java世界里&#xff0c;泛型是个相当棒的概念&#xff0c;能让代码更加灵活和类型安全。但是&#xff0c;泛型也带来了一些挑战&#xff0c;特别是当涉及到类型擦除时。这就是TypeToken大显身手的时候&#xff01; 作为Java程序员的咱们&#xff0c;…

前端-如何用echarts绘制含有多个分层的波形图

一、效果图展示 先展示一下实际的效果图 用户选择完需要的波形参数字段之后&#xff0c;页面开始渲染图表&#xff0c;有几个参数就要渲染几个grid&#xff0c;也就是几行波形。 二、绘制逻辑 拿到所选的参数数据之后 1.首先是给横坐标轴的里程-数据注入 2.修改tooltip&am…

鸿蒙开发者工具安装及入门程序

下载工具DevEco Studio IDE 官网下载&#xff1a;HUAWEI DevEco Studio和SDK下载和升级 | HarmonyOS开发者 开发工具的安装 解压下载好的压缩包&#xff0c;一路无脑安装即可&#xff0c;安装完的使用方法类似于IDEA、WebStorm的使用&#xff0c;快捷键一致&#xff0c;默认黑…

运算符号、算术运算符、赋值运算符、比较(关系)运算符、逻辑运算符、位运算符、条件运算符

运算符是一种特殊的符号&#xff0c;用以表示数据的运算、赋值和比较等。 运算符的分类&#xff1a;按照功能分为&#xff1a;算术运算符、赋值运算符、比较&#xff08;或关系&#xff09;运算符、逻辑运算符、位运算符、条件运算符、Lambda运算符。 按照操作数的个数分为&am…

el-select如何去掉placeholder属性

功能要求是&#xff1a;当el-select的disabled属性为true的时候不展示“请选择”字样 1、要去掉 el-select 元素的 placeholder 属性&#xff0c;可以在代码中将其设置为空字符串。 <el-select placeholder"" ...></el-select> 注意&#xff1a;这种方…