Appearance
性能方案需包含:被测系统分析、性能测试指标、测试环境、数据准备、风险点、压测工具选型、指标监控、设计场景(包含:基准测试、并发测试、疲劳测试)
1.被测系统分析
描述被测系统架构以及它的业务模块
架构如下:
XXX系统是由平台开发的一款电商应用软件,后台应用了Oracle 11g数据库。
该系统主要围绕用户注册、登录、商品加购、支付等核心业务流程展开,涵盖了用户管理、商品信息管理、订单处理、支付管理等多个功能模块。
在实际业务场景中,系统需要支持多用户同时操作,处理大量的用户注册、登录请求,以及频繁的商品加购和支付操作。同时,系统还需具备强大的数据处理能力,以应对日常的订单生成、库存更新、交易记录等大数据量操作,并能生成日报、周报、年报等统计报表,为运营决策提供数据支持。
在本次测试中,我们将针对这些业务场景中的多用户操作、大数据量查询和统计功能,进行预期性能、用户并发、大数据量、疲劳强度和负载等方面的性能测试。通过模拟真实业务场景,检查并评估系统在不同用户连接情况下的吞吐能力和响应能力,以及在预计的数据容量中系统能够容忍的最大用户数,从而全面评估系统对负载的承受能力。
业务模块如下:
业务 | 步骤 |
---|---|
用户注册 | 1. 进入注册页,填手机号、邮箱等信息。 2. 完成验证,提交注册。 |
用户登录 | 1. 进入登录页,输账号密码或选第三方登录。 2. 点击登录,完成验证进入应用。 |
用户加购 | 1. 浏览商品,进详情页选规格。 2. 点击加购,可继续添加其他商品。 |
用户支付 | 1. 购物车选商品,去结算确认信息。 2. 选支付方式,提交订单完成支付。 |
2.性能测试指标
参考 性能测试指标
3.风险点
主要描述性能压测过程中可能遇到的问题,用户加购下单场景中,需考虑以下风险:
- 短信模块是外接第三方模块,考虑费用以及网络层面因素,这里需要做代码桩,确保短信不受限制发送。
- 支付模块是核心模块,若需要评估性能,需要mock一些服务以及测试数据来验证并且需要隔离生产环境。
- 进行疲劳验证时需要考虑jvm这些指标如何监控,如何告警便于快速发现问题。
4.测试环境
环境 | 说明 |
---|---|
压力机 | 4台,4c8G配置200G盘,千兆带宽,windows10/安装Jmeter |
被测系统 | 4台, 8c16G配置500G机械硬盘,万兆带宽,分布式部署服务 |
数据库 | 1台,Oracle 11g RAC |
中间件 | 1台,zookeeper |
5.数据准备
- 通过系统自带的Excel导入工具构造数据,如有问题,考虑通过API工具(如Postman、JMeter)或编程语言(Java、Python)模拟HTTP请求构造数据。
- 确保数据构造的完整性和准确性,避免脏数据。
6.性能测试工具选型
参考 性能测试工具
7.指标监控
参考 性能测试指标 的 《Linux服务器性能指标》章节
8.设计场景
8.1 基准测试
基准测试时验证压力恒定情况下及系统未调优情况下,系统最初的表现。
目的:
- 验证系统初始性能表现。
- 后续持续增加压力看系统是否能阶梯式增长TPS.
8.2 并发测试
并发测试方法通过模拟用户并发访问,测试多用户并发访问同一个应用、同一个模块或者数据记录时是否存在死锁或其者他性能问题。
目的:
- 主要目的是发现系统中可能隐藏的并发访问时的问题。
- 主要关注系统可能存在的并发问题,例如系统中的内存泄漏、线程锁和资源争用方面的问题。
- 可以在开发的各个阶段使用需要相关的测试工具的配合和支持。
8.3 疲劳测试
即压力测试,测试系统在一定饱和状态下,例如cpu、内存在饱和使用情况下,系统能够处理的会话能力,以及系统是否会出现错误。
目的:
- 主要目的是检查系统处于压力性能下时,应用的表现。
- 一般通过模拟负载等方法,使得系统的资源使用达到较高的水平。
- 一般用于测试系统的稳定性。