简介
性能测试是软件测试的一种类型,旨在评估系统、应用程序或服务在特定负载条件下的性能表现。
它涉及模拟真实世界中的用户行为、请求和负载,以便测量系统在不同条件下的响应时间、吞吐量、并发用户数和资源利用率等性能指标。
性能测试相关概念
- 并发:并发是指虚拟并发用户数,从业务角度,也可以理解为同时在线的用户数。
- 响应时间(Response Time,RT):响应时间是系统处理用户请求的时间。
- 吞吐量(Throughput):系统在单位时间内处理的请求数量,通常以每秒请求数(Requests Per Second,RPS)或每分钟请求数(Requests Per Minute,RPM)来衡量。
- 每秒事务数(Transaction per Second,TPS):系统每秒处理事务数,单位为 事务数/秒。
- 每秒查询数(Query per Second,QPS):系统每秒处理查询次数,单位为 查询数/秒。
| 简写 | 英文全称 | 含义 |
|---|---|---|
| RT | Response Time | 响应时间。通常响应时间,都是包括了 Request Time 和 Response Time |
| HPS | Hits Per Second | 每秒点击数 |
| TPS | Transactions Per Second | 每秒事务数,事务可以是数据库事务、网络请求、交易等,取决于具体系统的性质。 |
| QPS | Queries Per Second | 每秒钟处理的查询数量。查询可以是网络请求、API 调用、HTTP 请求等。 |
| RPS | Requests Per Second | 每秒请求数 |
| CPS | Codes Per Second | 在 HTTP 协议中,CPS 偶有提及,指的是 HTTP 返回每秒 |
| PV | Page View | 页面浏览量 |
| UV | Unique Visitor | 独立访问者 |
| IP | Internet Protocol | 本意是 IP 地址,在性能中一般指独立 IP 数 |
| Throughput | 吞吐量 | |
| IPOS | Input/Output Operations Per Second | 通常描述磁盘 |
对于互联网业务中,如果某些业务有且仅有一个请求连接,那么 TPS=QPS, 一般情况下用 TPS 来衡量整个业务流程,用 QPS 来衡量接口查询次数。
并发数 = QPS * 平均响应时间
技术上提升压力的方式
- 多进程:启动多个进程,每个进程虽然只有一个线程,但是多个进程可以一起执行多个任务。
- 多线程:启动一个进程,在一个进程的内部启动多个线程,这样多个线程也可以一起执行多个任务。
- 多进程+多线程:启动多个进程,每个进程再启动多个线程。
| 维度 | 多进程 | 多线程 | 优劣 |
|---|---|---|---|
| 数据共享、同步 | 数据是分开的:共享复杂,需要用 IPC;同步简单 | 多线程共享进程数据: 共享简单,同步复杂 | 各有优势 |
| 内存、CPU | 占用内存多,切换复杂,CPU 利用率低 | 占用内存少,切换简单,CPU 利用率高 | 线程占优 |
| 创建销毁、切换 | 创建销毁、切换复杂,速度慢 | 创建销毁、切换简单,速度快 | 线程占优 |
| 编程调试 | 编程简单,调试简单 | 编程复杂,调试复杂 | 进程占优 |
| 可靠性 | 进程间不会相互影响 | 一个线程挂掉将导致整个进程挂掉 | 进程占优 |
| 分布式 | 适应于多核、多机分布 ;如果一台机器不够,扩展到多台机器比较简单 | 适应于多核分布 | 进程占优 |
性能指标分位值
在性能指标中,Mean(均值)、P90、P95 和 P99 是常见的描述性分位数,用于衡量数据分布的不同方面。
- Mean(均值):也称为平均值,是将所有观测值相加并除以观测值的数量得出的结果。它表示数据的集中趋势,但容易受到离群值的影响。均值特别在数据分布对称时很有用,因为它与分布的中心位置相对应。
- P90:表示第 90 分位数,也称为百分之九十分位数。它表示 90%的观测值低于该值,仅有 10%的观测值高于该值。P90 给出了一个较高的观察到的值,可以用来评估系统在高运行负载条件下的性能。
- P95:表示第 95 分位数,也称为百分之九十五分位数。它表示 95%的观测值低于该值,仅有 5%的观测值高于该值。P95 用于衡量系统在绝大部分情况下的性能,它可以反映典型的性能水平。
- P99:表示第 99 分位数,也称为百分之九十九分位数。它表示 99%的观测值低于该值,仅有 1%的观测值高于该值。P99 用于衡量系统在高负荷或异常情况下的性能,它通常代表较高的延迟或较差的响应时间。
总之,这些分位数可用于衡量系统性能的不同方面,包括典型情况下的性能、高负载情况下的性能以及极端情况下的性能。选择使用哪些分位数取决于具体的需求和关注的性能指标。
总结
- 性能测试相关概念
- 性能指标分位值
推荐学习
【霍格沃兹测试开发】7天软件测试快速入门带你从零基础/转行/小白/就业/测试用例设计实战
【霍格沃兹测试开发】最新版!Web 自动化测试从入门到精通/ 电子商务产品实战/Selenium (上集)
【霍格沃兹测试开发】最新版!Web 自动化测试从入门到精通/ 电子商务产品实战/Selenium (下集)
【霍格沃兹测试开发】明星讲师精心打造最新Python 教程软件测试开发从业者必学(上集)
【霍格沃兹测试开发】明星讲师精心打造最新Python 教程软件测试开发从业者必学(下集)
【霍格沃兹测试开发】精品课合集/ 自动化测试/ 性能测试/ 精准测试/ 测试左移/ 测试右移/ 人工智能测试
【霍格沃兹测试开发】腾讯/ 百度/ 阿里/ 字节测试专家技术沙龙分享合集/ 精准化测试/ 流量回放/Diff
【霍格沃兹测试开发】Pytest 用例结构/ 编写规范 / 免费分享
【霍格沃兹测试开发】JMeter 实时性能监控平台/ 数据分析展示系统Grafana/Docker 安装
【霍格沃兹测试开发】接口自动化测试的场景有哪些?为什么要做接口自动化测试?如何一键生成测试报告?
【霍格沃兹测试开发】面试技巧指导/ 测试开发能力评级/1V1 模拟面试实战/ 冲刺年薪百万!
【霍格沃兹测试开发】腾讯软件测试能力评级标准/ 要评级表格的联系我
【霍格沃兹测试开发】Pytest 与Allure2 一键生成测试报告/ 测试用例断言/ 数据驱动/ 参数化
【霍格沃兹测试开发】App 功能测试实战快速入门/adb 常用命令/adb 压力测试
【霍格沃兹测试开发】阿里/ 百度/ 腾讯/ 滴滴/ 字节/ 一线大厂面试真题讲解,卷完拿高薪Offer !
【霍格沃兹测试开发】App自动化测试零基础快速入门/Appium/自动化用例录制/参数配置