
高性能、高并发、高可用。
听起来非常高大上,但是性能到底如何呢?又该如何评定呢?
这次我们谈一谈性能测试,看一看到底什么样才叫做高性能。
本文主要从以下几个方面进行讨论。
(1)性能测试是什么?
(2)为什么需要性能测试?
(3)性能测试如何做?
(4)有哪些性能测试的工具
老马曾经说过,你想理解一件事物,首先必须先定义它。
这里直接引用一下百科中的定义:
性能测试的定义也不难理解,往往定义本身阐述了性能测试的作用。
如果你是一名开发、测试,平时接手过不少需求,可能性能测试接触的也不多。
每一个需求,都有对应的功能性需求和肺功能性需求。
功能性需求是产品需求文档中最直接的,需要实现的功能目标。简称,能用就行。
非功能性需求则要宽泛的多,架构设计是否合理?是否便于后期拓展?是否便于监控?代码实现是否优雅?文档注释是否完整?
就像你写了弊谈一只鸟,鸟头做螺旋桨非能飞起来,但是在架构设计上可能是不合理的。
飞起来
一个查询功能,用户点击查询,10S 种才返回数据,功能上是满足的,但是性能上是不能接受的。
线上的交易功能平时各方面都很棒,节假日高峰期直接系统就瘫痪了。
那如何避免这些问题出现在生产上呢?
这就需要上线之前,首先做好对应的性能测试,避免再生产上出现问题,带来严重的生产事故。
性能要高,性能要硬,性能测试,又高又硬!
又高又硬
做一件事情之前,我们首先要确定好自己的目标。
性能测试,到底要测试什么?
有些类似于开发过程中的需求分析,常见的测试指标如下。
响应时间是指某个请求或 *** 作从发出到接收到反馈所消耗的时间,包括应用服务器(客户端)处理时间、网络传输时间以及数据库服务器处理时间。
作为用户而言,在页面点击查询,等待了多久才能获取结果,这个就是响应时间。
用户不关心你后端经过了多少个服务,慢就是原罪。
对于微服务系统,链路监控就显得比较重要。可以帮助我们快速定位到底慢在哪里。
TPS(Transaction Per Second)是指单位时间(每秒)系统处理的事务量。
我看网上还有很多类似的概念:点击量/点击率、吞吐量/吞吐率、PV/UV,这里不做赘述。
个人看来本质上 TPS/QPS 就是去压测你应用的极限,当访问量较大的时候,程序能否活下来?
这里主要涉及到两个概念:高性能和高可用。
我们后面会简单讨论下这两点。
明确了测试指标之后,就需要进行测试的准备。
环境准备:比如你想压测数据库,那就需要准备对应配置的数据库资源。
脚本的准备:数据初始化脚本,调用脚本等。
这个可以类比开发过程中的代码开发。
ps: 性能压测一般不是很常用,所以环境准备流程会比较长,这一点需要注意。
当进行测试之后,测试的结果一定要给出一份报告出来。
是否通过压测要求?
最高的 QPS 是多少?
这样开发可以根据这份报告进行相应的优化。
提升性能的内容写一本书也不为过,这里简单罗列一些最常用的几点:
(1)慢 SQL
一般程序如果响应时间较长,可以首先看一下慢 SQL。
看下是否需要增加索引,或者进行 SQL 优化。
(2)缓存
针对查询,性能提升最显著的就是引入缓存。
当然,引入缓存会使架构变得复杂,这一点要结合自己的实际业务。
(3)硬件升级
如果程行磨序优化的空间比较小,可以考虑升级一下硬件资源。租带碰
比如服务器配置翻倍,数据库配置翻倍。
什么?你说公司没钱升级?
没钱升级做什么压测?
这个时候测试报告的作用就显露了,直接用数据说话。
直接说 QPS 达不到生产要求,程序优化的空间很小,推荐硬件升级配置,升级到多少。
做人,要以德服人。
做测试,要用数据说话。
以德服人
测试最常用的工具当属 jmeter。
除此之外,还有一些其他的工具:
LoadRunner、QALoad、SilkPerformer和Rational Performance Tester。
下面对几个工具做下简单介绍
Apache JMeter 可以用于测试静态和动态资源(Web动态应用程序)的性能。
它可以用于模拟服务器、服务器组、网络或对象上的负载,以测试其强度或分析不同负载类型下的总体性能。
将负载测试集成到开发工具中:IDE、jUnit、nUnit、Jenkins、Selenium和Microsoft Visual Studio。
从12.55版本开始,您可以运行您的JMeter脚本,并在任何性能测试中集成JMeter和附加的脚本类型。
ps: 这个设计理念就非常好,可以和成熟的工具进行整合。站在巨人的肩膀上。
QALoad是客户/服务器系统、企业资源配置(ERP)和电子商务应用的自动化负载测试工具。
QALoad可以模拟成百上千的用户并发执行关键业务而完成对应用程序的测试,并针对所发现问题对系统性能进行优化,确保应用的成功部署。
ps: 这个工具本人没有接触过。
SilkPerformerV可以让你在使用前,就能够预测企业电子商务环境的行为—不受电子商务应用规模和复杂性影响。
可视化的用户化、负载条件下可视化的内容校验、实时的性能监视和强大的管理报告可以帮助您迅速将问题隔离,这样,通过最小化测试周期、优化性能以及确保可伸缩性,加快了投入市场的时间,并保证了系统的可靠性。
作为 DevOps 方法的一部分,IBM Rational Performance Tester 帮助软件测试团队更早、更频繁地进行测试。
它验证 Web 和服务器应用程序的可扩展性,确定系统性能瓶颈的存在和原因,并减少负载测试。
您的软件测试团队可以快速执行性能测试,分析负载对应用程序的影响。
ps: 这一款工具有 IBM 提供,质量值得信赖。
这么多工具可供使用,相信读到这里的小伙伴已经找到了自己心仪的测试工具。
别急,下面专门为做 java 开发的小伙伴们推荐一款性能测试工具。
男人有男人的浪漫,开发者当然也要有开发者的浪漫。
【男人的浪.jpg】
作为一名开发者,老马平时单元测试使用 junit 最多。
所以一直希望找到一款基于 junit 的性能压测工具,后来也确实找到了。
@JunitPerfConfig 指定测试时的属性配置。(必填项)
使用如下:
@JunitPerfRequire 指定测试时需要达到的要求。(选填项)
使用如下:
对应的测试报告生成方式也是多样的,也允许用户自定义。
基于控台日志:
或者基于 HTML:
junitperf
本文对性能测试做了最基本的介绍,让小伙伴们对性能压测有一个最基本的理解。
测试和开发一样,都是一件费时费力,而且需要认真做才能做好的事情,其中的学问不是一篇就能说清的。
性能测试工具也比较多,本文重点介绍了专门为 java 开发者打造的 junitperf 工具。
下一节我们将从源码角度,讲解一下 junitperf 的实现原理。
我是老马,期待与你的下次重逢。
开源地址:https://github.com/houbb/junitperf
JMeter负载测试是使用一个名为Apache JMeter的负载测试工具完成的测试过程,Apache JMeter是一个基于Java的开源桌面应用程序。它还有助于分析高负载下的整体服务器。
JMeter性能测试是使用Apache JMeter测试Web应用程序性能的测试方法。JMeter for Performance Testing有助于同时测试静态和动态资源,有助于发现并发用户JMeter性能测试,包括Web应用的负载测试和压力测试。
Apache JMeter测闭孝试工锋首具在性能测试方面提供以下好处
JMeter性能测试包括:
下图显示了JMeter负载测试如何模拟重负载:
在本教程中,我们将对1000名用户进行baidu.com的性能分析 。在测试目标Web应用程序的性能之前,我们应该确定-
以下是这个实际示例的路线图
右键单击“测试计划”,添加一个新的线程组:Add->Thread(Users)->Thread Group
在线程组控制面板中,输入线程属性,如下所示:
线程计数和循环计数不同。
启动周期告诉JMeter在启动下一个用户之前要延迟多长时间。例如,如果我们有100个用户和100秒的启动周期,那么启动用户之间的延迟将是1秒(100秒/100个用户)
现在我们确定此测试中的JMeter元素。这些元素包括
可以通过右键单击Thread Group并选择:Add->Config Element->HTTP request Defaults来添加此元素。
在Http request Defaults控制面板中,输入正在测试的网站名称( http://www.google.com )
右键单击Thread Group并选择:Add->Sampler->HTTP Request。
在HTTP求控制面板中,路径字段指示要将哪个URL求发送到Google服务器。
例如,如果在路径字段中输入“日历”。JMeter将创建指向谷歌服务器的URL求 http://www.google.com/calendar
如果保留路径字段 空白 jeter将创建指向谷歌服务器的url求 http://www.google.com 。 在此测试中,将路径字段保留为空,以使JMeter创建到Google服务器的 http://www.google.com 请求。
JMeter可以将测试结果以Graph格式显示。 右键单击“测试计划”,选择“添加”->“侦听器”->“绘制结果图银态数”
按工具栏上的Run(运行)按钮(Ctrl+R)开始软件测试过程。将看到测试结果实时显示在Graph上。 下图显示了一个测试计划的图表,其中我们模拟了访问 www.google.com 网站的100个用户。
在图片底部,有以下用颜色表示的统计数据:
让我们在下图中分析一下Google服务器的性能。
要分析被测Web服务器的性能,应该关注两个参数
吞吐量是最重要的参数。它表示吞吐量越高,服务器性能越好。 在本次测试中,Google服务器的吞吐量为1491.193/分钟。该值相当高,因此我们可以得出结论,Google服务器具有良好的性能 偏差用红色表示-它表示与平均值的偏差。越小越好。
让我们将Google服务器的性能与其他Web服务器进行比较。这是网站 http://www.yahoo.com/ 的性能测试结果(可以选择其他网站)
被测网站 http://www.yahoo.com 的吞吐量为867.326/分钟。这意味着该服务器每分钟处理867.326个求,低于谷歌。 偏差为2689,远高于谷歌(577) 。所以我们可以确定这个网站的性能低于谷歌服务器。
注意:上面的值取决于几个因素,比如Google当前的服务器负载,网速,CPU能力等等。所以不要惊慌!
如果在运行上述方案时遇到此问题.执行以下 *** 作
浏览网页: https://www.itxiaonv.com/ ,了解更多IT信息
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)