性能测试该怎么做,终于找到方法了

目录

开头

分类

服务器与场景设计

计算TPS

设计场景

 场景运用

单交易最大压力:

单交易稳定性:

混合场景稳定性:

业务指标:

数据库

中间件

负载均衡:

最后:


开头

性能测试的工具有很多,但是总体还是思路和设计主导,再带入工具。此次我将依据工作中的实际场景,总结一下性能测试怎么入手

分类

性能测试主要分为几个大块

1. 服务器

2. 数据库

3. 中间件

4. 负载均衡

以上是需要测试到的地方

服务器与场景设计

计算TPS

任何系统都是需要人来使用的,那么有一个比较通用的公式能够很好的依据系统的预计使用压力,来设计我们的场景

系统的压力指标最直接的也就是TPS(系统吞吐量),按照二八原则,公式如下:

TPS=日交易次数*80%/(日开放的交易时间秒*20%)

举个例子:一个系统每天业务请求有2百万次,24小时开放。 那么对应的TPS为:2000000*80%/(24*3600*20%)= 3.7 次/秒

如果对系统性能需求较为严苛,则可以遵循一九原则

        

 

设计场景

在知道系统吞吐量以后,可以开始设计实际使用场景

1)单交易目标TPS=脚本配置占比*总目标TPS
2)单交易并发用户数=单交易目标TPS*ART
3)实际并发用户数=单交易并发用户数上取整
4)交易间隔时间=实际并发用户数/单交易目标TPS

由此设计出单业务TPS,单交易并发用户数,交易间隔时间。

 场景运用

单交易最大压力:

上面我们已经获得了单业务的吞吐量,按照单业务的并发量开始加压,压力不能小于单业务的吞吐量,并试探服务器的最大承受极限

服务器最大资源阈值达到系统最大处理能力时,为最大承受极限,最大tps和最大并发数依据最大处理能力填写,运行时间为半小时到一小时

单交易稳定性:

单个请求保持最大压力,持续12小时,测试系统稳定性

混合场景稳定性:

混合场景则按照计算的实际最大总吞吐量,按照百分比分配的单场景混合脚本运行,服务器指标和单交易稳定性一致

业务指标:

其中业务指标也需要考虑,如服务器硬性指标和业务指标任何一项未达到,则不合格

至此,场景设计完成。

数据库

数据库压力在性能测试中也至关重要,比如MySQL连接数,表的大小,insert和查询时间速度等

就用MySQL为例

通过分析,在一定数据量下,针对数据库的基本操作的时间不能超过上图范围

至于数据库工具,大家可以用Jmeter提供的现成的JDBC来进行测试

当然如果基于python技术栈,也可以自己写个时间方法,查询方法来的更快更灵活,并且可通过matpoltlib绘制直观的趋势图

同样数据库服务器的系统资源同样重要

中间件

中间件此处以Tomcat为例

其中JDBC连接等待数,线程繁忙率比较重要

JDBC连接等待数和繁忙率:

通过tomcat的probe工具,放入webapp下,输入对应的ip地址,对性能进行监控(此处不详细介绍probe,自行查资料)

负载均衡:

负载均衡有很多工具,用的比较多的应该有nginx反向代理。

此处我们要关注的不是nginx怎么配置与怎么工作,很简单,此处我们只需要知道输入和输出,并且对比

在最大TPS下,使用服务器性能监控工具(nmon等工具,自行查资料),对比多服务器之间的cpu使用差异率即可

最后:

大体的性能测试入手与思路介绍完成,具体应该根据实际业务情况,使用环境和工具做进一步的详细设计。

locust,sql性能等,完全可以自行写适合公司的框架来进行性能测试(个人建议)

感谢每一个认真阅读我文章的人!!!

我个人整理了我这几年软件测试生涯整理的一些技术资料,包含:电子书,简历模块,各种工作模板,面试宝典,自学项目等。欢迎大家点击下方名片免费领取,千万不要错过哦。

                                                       

内容: 这个合成医疗保健数据集的创建是为了作为数据科学、机器学习和数据分析爱好者的宝贵资源。 灵感: 医疗保健数据通常很敏感,并受隐私法规的约束,因此难以访问以进行学习和实验。为了解决这一差距,我利用 Python 的 Faker 库生成了一个数据集,该数据集反映了医疗保健记录中常见的结构和属性。通过提供这些合成数据,我希望促进医疗保健分析领域的创新、学习和知识共享。 表格信息: 每列都提供有关患者、其入院情况和提供的医疗保健服务的特定信息,使此数据集适用于医疗保健领域的各种数据分析和建模任务。以下是数据集中每一列的简要说明 - 名字:此列表示与医疗保健记录关联的患者的姓名。 年龄:患者入院时的年龄,以年表示。 性:指示患者的性别,“男性”或“女性”。 血型:患者的血型,可以是常见的血型之一(例如,“A+”、“O-”等)。 医疗状况:此列指定了与患者相关的主要医疗状况或诊断,例如“糖尿病”、“高血压”、“哮喘”等。 入学日期:患者入住医疗机构的日期。 医生:在患者入院期间负责护理的医生的姓名。 医院:标识患者收治的医疗机构或医院。 保险提供商:此列指示患者的保险提供商,可以是多个选项之一,包括“Aetna”、“Blue Cross”、“Cigna”、“UnitedHealthcare”和“Medicare”。 账金额:患者在入院期间为他们的医疗保健服务开具的账金额。这表示为浮点数。 房间号:患者入院期间入住的房间号。 入场类型:指定入院类型,可以是“紧急”、“选择性”或“紧急”,以反映入院的情况。 出院日期:患者从医疗机构出院的日期,基于入院日期和实际范围内的随机天数。 药物:确定患者在入院期间开具或服用的药物。例子包括“阿司匹林”、“布洛芬”、“青霉素”、“扑热息痛”和“立普妥”。
### 支付接口性能测试方法和步骤 支付接口的性能测试是一项复杂的任务,涉及到多种技术和工具的选择与应用。以下是关于支付接口性能测试的具体方法、工具以及流程的内容。 #### 方法概述 性能测试的核心在于模拟真实的用户行为并对系统的响应时间、吞吐量和其他关键指标进行测量。对于支付接口而言,由于其涉及金融交易的安全性和可靠性,因此需要特别关注以下几个方面: - **并发处理能力**:评估系统在高负载下的表现。 - **延迟容忍度**:衡量不同网络条件下的请求延迟情况。 - **稳定性**:长时间运行下保持一致的服务质量[^1]。 #### 使用的工具 目前市场上存在许多优秀的性能测试工具可供选择,其中JMeter因其强大的功能和支持广泛的协议而被广泛应用于实际项目当中。例如,在支付宝的实际案例中就采用了Apache JMeter作为主要的压力加载工具来执行各类性能测试任务,包括但不限于HTTP(S)通信、数据库查询等方面的工作[^2]。 #### 实施流程 为了确保整个过程科学有序地推进,可按照如下几个阶段依次展开工作: ##### 准备阶段 定义清晰的目标范围非常重要,这一步骤决定了后续所有活动的方向性。具体来说就是要明确待测对象是什么?预期达成怎样的服务水平协定(SLA)等等基本信息。此外还需要准备好必要的环境搭建如服务器部署位置确认等事项[^4]。 ##### 脚本编写 根据之前确立好的需求文档开始构建相应的测试脚本。这里需要注意的是要充分考虑到业务逻辑之间的关联关系,比如在一个典型的订提交过程中可能会连续触发多个相互依存的操作序列,则应当通过事务控制器等方式把这些动作组合起来形成整体性的考量元以便获得更加贴近实际情况的数据反馈结果[^1]。 ##### 执行监控 启动正式的压测之后密切跟踪各项实时变化趋势图谱的变化规律,并及时调整参数设置直到找到最佳平衡点为止。期间可以利用图形界面直观展示出来的曲线图表帮助快速定位瓶颈所在之处进而优化改进方案设计思路方向[^2]。 ##### 数据分析报告撰写 最后整理汇总所有的实验记录制成详尽的技术文档供相关人员审阅学习之用。除了常规统计数值之外还应该深入挖掘隐藏背后的原因剖析影响因素构成比例分布特征等问题根源所在提出切实可行解决办法建议清列表形式呈现出来便于后期维护升级参考借鉴使用[^3]。 ```python import jmeter from 'jmeter' def runPerformanceTest(): testPlan = new TestPlan() threadGroup = ThreadGroup(threads=50, rampUpPeriodInSeconds=60) sampler = HttpSampler(domain="example.com", path="/api/payment") transactionController = TransactionController(name="Order Submission Process") transactionController.addSubElement(sampler) listener = SummaryReportListener() testPlan.addNode(threadGroup) threadGroup.addNode(transactionController) testPlan.addNode(listener) results = jmeter.run(testPlan) return results ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值