很多敌人接触性能测试是从工具开始的,比方风行的 JMeter、Loadrunner 等。相熟一个测试工具,有助于对性能测试的运作机制、指标采集和统计分析等过程和机制,有个直观的了解。
咱们晓得,工具始终是为解决特定问题而服务的。无论是什么类型的测试,其指标不外乎两个,一是为了证实零碎满足当初的构想(Requirement);二是尽可能早、尽可能多地发现潜在的问题(Defect)。为了更好地实现这两个指标,工具的应用是绝对容易和可控的,而性能测试计划、过程的优劣和有效性则显得尤为重要。
通常,咱们在做性能测试方案设计时,会从以下几个角度来思考问题。
编号 | 名称 | 形容 |
---|---|---|
1 | 性能指标 | 零碎在惯例的工作负荷下,各项 性能指标 是否满足当初设计要求。 |
2 | 数据容量 | 可预期的将来业务增长状况下,大数据量 可能引发的性能瓶颈。 |
3 | 能力评估 | 单位资源、工夫内,零碎可解决的 业务量。可用于仿真环境到生产环境的软硬件资源估算。 |
4 | 压力测试 | 验证零碎在 超出失常负载 状况下的性能体现。可据此评估生存环境中,不同类型软件硬件资源的配比。 |
5 | 疲劳测试 | 长时间 施加一定量的负载,验证零碎是否会呈现诸如内存透露、网络拥挤等方面的问题。 |
6 | 强度测试 | 验证零碎在 高强度、资源匮乏 的状况下,仍然能够失常工作,未产生零碎解体、重启,解决能力急剧下降,以及数据不统一等问题。 |
以上列出的性能测试中的一些着眼点,之间的通常会有穿插,界线也并不那么显著。所以笔者并没有像一些软件工程实际(如 RUP)中的那样,称之为不同的性能”测试类型“。
讲到性能测试场景的设计,就离不开业务上的剖析,个别能够思考:
- 零碎的用户规模有多大?
- 在可预期的将来某个工夫点,数据量会达到多少?
- 各个子系统、功能模块,别离需接受多大访问量?
- 在特定的日期或工夫,是否存在某个业务的峰值?
- 依照现有的架构设计和资源配比,可能的瓶颈在哪?
倡议和市场、产品和开发等相干人员一起,预估将来规模、开展业务剖析、确认性能需求。而后,开始性能测试场景的设计。通常包含以下的几个方面:
- 确定测试零碎中的注册用户和同时在线用户数;
- 抉择测试的接口,确定所须要反对的每秒访问量;
- 设计综合业务场景,包含其中各个接口申请量的占比;
- 针对资源耗费大的,如 AI 训练、文件读写、网络传输,重点进行测试;
- 评估容易出问题的中央,独自设计测试场景;
- 确定各场景下的测试参数,如思考工夫、运行时长、加压策略;
- 确定服务环境,如硬件资源、网络带宽、(微)服务配比、负载平衡;
- 确定测试工具和环境,如加压节点数量、测试工具配置等。
测试中须要度量的性能指标包含:
- 吞吐量(Throughput)
- 每秒查问率(QPS)
- 响应工夫(RT),包含均匀、最大、最小、正态分布
- 申请失败或业务错误率
- 零碎指标,如 CPU、内存、网络的方面