性能测试理论基础二:性能测试方案

性能测试方案(完整流程)

一、测试背景

由于面向社会进行推广,看小说的人日益增加,网站具备一定的访问量。

需要进行性能测试来评估读书屋性能、分析性能变化趋势、分析系统瓶颈风险、帮助规划系统容量、为硬件采购提供建议。

二、名词术语规定

1、并发量

模拟业务操作对服务器造成压力的过程

比如模拟100个虚拟用户同时进行操作

2、负载测试(Loading Testing)

在一定团硬件环境下,通过不断加大负载(不同虚拟用户数)来确定在满足性能指标情况下能够承受的最大用户数。简单说,可以帮我们对系统进行定容定量,找出系统性能拐点,给予生产环境规划建议。这里的性能指标包括TPS(每秒事务数)、RT(事务平均响应时间).

负载测试:一辆车能载多少货,不断加大并发量

一辆车,载100kg(正常),200kg(正常),500kg(正常),800kg(正常),1000kg(开不动了,性能拐点);

尽可能让系统出现问题

3、压力测试/强度测试

通过高负载的手段来使服务器资源(强调服务器资源,硬件资源)处于极限状态,测试系统长时间在系统高压下,是否能够稳定运行。

通过负载测试得到的拐点之前最近的一个可以正常运行的极限值,即前面提到的800kg。

找到这个系统在长时间运行的情况下,能够达到什么负载

4、响应时间(Response Time)

性能测试中的响应时间(Response Time)是一个关键指标,用于衡量系统对用户请求做出响应所需的时间。具体来说,响应时间是指从用户发送请求开始,到系统返回响应并被用户接收到的整个过程所消耗的时间。这个时间包括了网络传输时间、服务器处理时间、数据库查询时间以及客户端的解析和渲染时间等。

假设有一个在线购物网站,用户在该网站上浏览商品并下单购买。在这个过程中,用户会进行多次请求,如点击商品详情、加入购物车、提交订单等。每个请求都会有一个对应的响应时间。

  • 点击商品详情:用户点击商品详情页面时,系统会从数据库中查询该商品的信息,并将查询结果返回给客户端。这个过程的响应时间包括网络传输时间、服务器处理时间和数据库查询时间。如果响应时间很短(例如,小于1秒),用户会感觉页面加载迅速,体验良好。
  • 加入购物车:用户将商品加入购物车时,系统会更新购物车数据并返回新的购物车页面。这个过程的响应时间同样包括网络传输时间、服务器处理时间和数据库更新时间。如果响应时间过长(例如,超过3秒),用户可能会感到不耐烦,甚至放弃购买。
  • 提交订单:用户提交订单时,系统会进行一系列的操作,如验证用户信息、计算订单金额、生成订单号等,并最终返回订单提交成功的页面。这个过程的响应时间更长,因为它涉及更多的服务器处理和数据库操作。然而,即使如此,系统也应该尽量缩短响应时间,以提高用户满意度。
5、日均UV(unique visitor):每天的平均独立访客数

访客数就是指一天之内到底有多少不同的用户访问了你的网站。访客数要比IP数更能真实准确地反映用户数量。

6、日均PV(page view):每天的平均浏览量

用户访问网站时每打开一个页面,就记为1个PV。

三、测试范围

一般产品经理/架构师会直接给出测试范围,但当没有或不准确时也要有自己梳理的能力。

1、分析用户使用行为:

(1)打开首页->点击推荐的小说->看介绍

(2)阅读小说的章节->点击阅读

(3)登录>点击我的书架>点击阅读

(4)用户头像修改(上传图片)

2、寻找产品经理的帮助,确定用户行为
3、找架构师/技术负责人,提供数据支撑(数据埋点)
        性能测试角度 -- 思想 测试左移

        用户--产品--开发--测试--线上运维(测试左移 ,更早的关注测试)

4、抢资源占用行为(上传/下载)

四、性能需求分析

1、业务模型(预计 结合技术负责人所给信息)
(1)业务流程节点
(2)数据流程

        涉及到数据库表(如修改用户信息的业务流程,会涉及数据库数据修改)

(3)业务量

        首页

        日均UV(用户访问)(独立访问 Unique Visitor)--5000

        日均PV(页面浏览量)(浏览量 Page View)--100000

        5000个人总共访问首页了十万次

        其他页面...

(4)数据量

        表A 134w --每天新增多少

        表B 3000条 --每天新增多少条

2、性能目标
(1)业务指标来源
        (1-1)响应时间-竞品/产品设计
        (1-2)相对并发要求

        生产环境的数据统计(比较准);

        参考总访问PV,用户集中性(推理:2/8原则 20%的时间贡献了80%的访问量);

        性能测试要针对后续会增长的目标量

        技术负责人、项目经理共同审核

        (1-3)可靠性/错误率 --99.95% /0.05%

        0.05% 一万次操作中允许失败操作数5次

        99.9999%基本是业内最高的可靠性。即10万次操作允许失败一次。

(2)资源占用指标

        通常服务器的资源保持在85%左右是最好的,太低浪费资源,太高有崩溃风险。

五、性能测试用例

先做基准测试,再做负载测试,最后压力测试。

1、基准测试

基准测试能够提供性能指标衡量的一个参考数据

举例:并发为1,每秒吞吐量100/s,占用网络带宽1M

根据基准测试,生产环境服务器100M带宽,理论上吞吐量则为10000/s

测试用例:单用户访问首页性能基准测试

  • 测试目标:评估单个用户在无负载情况下访问系统首页的响应时间、吞吐量及资源占用情况。
  • 测试步骤
    1. 确保系统处于空闲状态,没有其他并发用户。
    2. 使用性能测试工具(如Jmeter)配置一个用户线程,模拟该用户访问首页。
    3. 记录请求发送时间、响应接收时间及页面加载时间(即响应时间)。
    4. 观察并记录系统吞吐量(在此场景下,吞吐量可能接近或等于每秒请求数,因为只有一个用户)。
    5. 使用系统监控工具(如Top、Vmstat等)记录CPU使用率、内存占用率及网络带宽使用情况。
  • 预期结果:响应时间应小于预设阈值(如2秒),吞吐量接近1请求/秒,系统资源占用率低且稳定。

2、负载测试

测试用例2:多用户并发访问首页负载测试

  • 测试目标:评估系统在2000个并发用户同时访问首页时的性能表现。
  • 测试步骤
    1. 使用性能测试工具(如Jmeter)配置2000个用户线程。
    2. 设定逐步加压策略,如初始线程数100,每隔5分钟增加200个线程,直至达到2000线程。
    3. 在每个加压点记录系统的响应时间、吞吐量、失败率及资源占用情况。
    4. 持续测试一段时间(如10分钟),观察系统性能是否稳定。
    5. 逐步减少线程数,直至测试结束,观察系统恢复能力。
  • 预期结果:在2000并发用户下,系统响应时间不超过3秒,吞吐量接近或达到预设目标(如1000请求/秒),失败率低于0.05%,系统资源占用率合理且未出现瓶颈。

3、压力测试

测试用例3:极限并发访问首页压力测试

  • 测试目标:评估系统在极限并发条件下的性能表现和稳定性。
  • 测试步骤
    1. 基于负载测试的结果,确定系统的最大承受能力(假设为5000并发用户)。
    2. 使用性能测试工具配置5000个或更高数量的用户线程,模拟极限并发访问。
    3. 持续测试较长时间(如1小时),记录系统的响应时间、吞吐量、失败率及资源占用情况。
    4. 观察并记录系统是否出现性能瓶颈、资源耗尽或崩溃等异常情况。
    5. 在测试过程中逐步增加或减少并发用户数,观察系统对负载变化的响应能力。
  • 预期结果:在极限并发条件下,系统可能无法保持最佳性能,但应能稳定运行,不出现崩溃或无法恢复的情况。响应时间和吞吐量可能有所下降,但应保持在可接受范围内。失败率应控制在较低水平,系统资源占用率应合理分布且未出现资源耗尽的情况。如果系统出现性能瓶颈或资源耗尽等问题,应记录并分析问题原因,为系统优化提供依据。
4、性能测试用例结构
(1)梳理流程节点-->访问的接口/资源
(2)结合测试需要,设定并发量,以及持续时间
(3)性能测试预期/判定标准

很多时候 性能测试有一个统一的判定标准

(4)疑惑:以接口作为单独的性能用例设计,还是以业务流程为用例设计标准?

在我们测试时,接口不是性能测试的标准,不可拆分的场景,多接口一起测试

最终仍然会针对流程进行测试

六、测试策略

1、执行策略

        基准测试开始时间-结束时间

        负载测试开始时间-结束时间

        压力测试开始时间-结束时间

2、指标监控策略

        业务指标 -通过性能测试工具自带的统计器进行查看(Jmeter汇总报告,其他插件)

        资源监控-(Linux命令、数据库系统数据、可视化集群监控...)

3、数据准备

        如何生成数据?

        要生成哪些数据

        如何生成

七、完成标准

        达到上面要求的性能目标

八、风险分析

        本次测试由于没有采用和生产环境相同的配置,可能和实际运行中的性能有一定差距。

        本次测试数据为人工生成,可能和实际的数据分布有一定的差异。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值