基本概念
本章其余页面所使用术语的定义与前提。未接触过性能测试的读者请先阅读本页。
一、性能测试的定位
功能测试验证的是正确性:操作的结果是否符合预期。 性能测试验证的是在压力下的表现:响应时间、吞吐能力、错误率、以及长时间运行的稳定性。
两者不可互相替代。功能完全正确的系统,在并发场景下仍可能不可用。
私有部署场景下,同一版本的 ONES 运行在不同硬件规格、不同数据量级的环境中, 性能表现可能相差数十倍。因此性能测试是交付环节的必要组成部分, 用于回答四类问题:
| 类型 | 典型诉求 |
|---|---|
| 验收 | 合同约定「工作项列表 2 秒内打开」,当前环境是否达标 |
| 容量 | 用户规模扩至 3000 人后,现有配置是否够用,需要扩容哪一部分 |
| 风险 | 早高峰集中登录的十分钟内,系统是否会不可用 |
| 稳定 | 连续运行一周后,性能是否会持续劣化 |
二、造数与压测的关系
性能测试由两个阶段构成:
- 造数:向测试环境写入规模化业务数据,使其数据量级接近客户实际环境;
- 压测:在该环境上模拟并发操作,采集并判定性能指标。
造数不可省略。空环境上得到的性能数据不成立—— 无数据时查询无需扫描,响应时间与真实场景不具可比性。 客户环境中工作项数量可达百万级,查询代价与空环境相差数个数量级。
压测必须在独立的测试环境进行
压测会产生大量真实读写,可能影响正在使用的系统,并写入无效数据。 测试环境的硬件规格应与客户实际规格对齐,否则测得的数据对客户没有参考价值。
三、术语定义
以下定义贯穿本章。示例统一采用「打开需求列表」这一操作。