【全栈性能测试宝典jmeter实战阅读笔记】-1.性能测试是什么?

前言

性能测试是什么?

    早些年,把录制脚本、制造负载当成是性能测试。近几年,我们把定位、分析问题当成是性能测试的核心技术。现在,我们希望性能测试不仅能够定位,分析问题,还要把握系统性能变化趋势;性能测试工程师能够帮助解决性能问题,搞定测试过程中的各种不合理的配置,给出专业的优化建议。

性能测试的方法是什么?

性能测试的原理是什么?

性能测试的流程是什么?

性能测试的思想是什么?工具是手段,重要的是思想。

为什么要做性能测试?为了系统更快,更稳定,更安全。

性能分析的思路有哪些?

性能调优的原理有什么?

什么是性能测试自动化?

如何写性能测试用例?

都有哪些性能测试策略?

使用思维导图去梳理会事半功倍。

做好性能测试需要的知识体系:性能分析知识理论,网络协议,前端页面分析,database,Linux,计算机语言,测试框架和性能测试工具的使用

性能测试基本概念,测试工具,测试方法,测试结果分析,系统性能调优

初级性能测试工程师需要做的:对系统进行分析,定位瓶颈,提出优化方案

性能测试的全过程:性能立项-》性能建模-》测试脚本开发-》资源监控-》采样数据分析-》定位瓶颈-》提出优化方案-》报告总结

性能测试方案制定-》测试脚本开发与增强-》场景执行与监控-》结果分析定位与瓶颈的优化

当前的开源的负载工具:JMeter,Grinder,还有哪些?

多研读JMeter源码。

技术路线:自动化测试工程师,性能测试工程师,软件开发工程师,安全测试工程师,系统分析师,测试总监,研发总监。

全栈一般是技术方面的领导者,需要涉猎广,懂得如何解决问题以及对应所需的技术和工具。但具体的细节掌握比不上某个学科精专的。但是他们有强大的学习能力,会较多依赖搜索或即时学习,会根据需求,依托自己扎实的基础功底,把某一项或者两项技能达到接近于专科人员的能力。全栈是学习能力强,总结能力强,不断总结和融会贯通提高实战能力,善于分析因果并找到原因和解决方案的复合人才;

目前是复合人才,跨界人才当家的年代。

测试需要掌握的基本功有哪些?1.需求:没有需求分析就没有方向   2.代码:在测试过程中懂程序的人更能能够深入地把程序测试好,通过走读代码发现逻辑上的缺陷,写法上你的繁琐带来的性能问题等,达到事半功倍。系统难免会与数据库打交道,数据库知识也不可少;程序部署在中间件上,中间件知识也是必备的;中间件运行在操作系统上,操作系统及硬件的知识也不可少。   3.运维:测试自动化是一个趋势,不仅包括功能测试自动化,也包括性能测试自动化及测试环境自动化(持续集成),掌握运维手段也变成必要。另外,对于系统涉及的中间件,数据库,缓存等产品也要熟练运维。所以想要在测试行业汇总脱颖而出的关键还是 技术,流行一句话:测试人员懂开发最好,开发人员懂测试最好。

 

性能测试相关术语:

1.负载:模拟业务操作对服务器造成压力的过程,比如模拟100个用户进行发帖;

2.性能测试(Performance Testing):模拟用户负载来测试系统在负载情况下,系统的响应时间,吞吐量等指标是否满足性能要求。

3.负载测试(Load Testing):在一定的软硬件环境下,通过不断加大负载(不同虚拟用户数)来确定满足性能指标情况下能够承受的最大用户数。

4.配置测试(Configuration Testing):为了合理的调配资源,提高系统运行效率,通过测试手段来获取、验证、调整配置信息的过程。通过这个过程,我们可以收集到不同配置反映出来的不同性能,从而为设备选择、设备配置提供参考。

5.压力/强度测试(Stress Testing):在一定的软硬件环境下,通过高负载的手段来使服务器资源(强调服务器资源,硬件资源)处于极限状态,测试系统在极限状态下长时间运行是否稳定,确定是否稳定的指示包括RPS,RT,CPU Using,Mem Using等。

6.稳定性测试(Endurance Testing):在一定软硬件环境下,长时间运行一定负载,确定系统在满足性能指标的前提下是否运行稳定。与上面的压力/强度测试区别在于负载并不强调是在极限状态下(很多测试人员会保守观念,在测试时会验证极限状态下的稳定性),着重的是满足性能要求的情况下,系统的稳定性,比如响应时间是否稳定,TPS是否稳定。一般我们会在满足性能要求的负载情况下加大1.5-2倍的负载量进行测试。

7.TPS:每秒完成的事务数,通常指每秒成功的事务数,性能测试过程中重要的综合性性能指标。一个事务是一个业务度量单位,有时候一个事务会包括多个子操作。

8.RT/ART(Response Time/average Response Time):响应时间/平均响应时间,指一个事务花费多长时间完成(多长时间响应客户请求),为了使这个响应时间更具有代表性,会统计更多的响应时间来取平均值,即得到了事务平均响应时间(ART),为了方便大家通常会会直接用RT来代替ART,ART和RT是代表同一个意思。

9.PV(Page View):每秒用户访问页面的次数,此参数用来分析平均每秒有多少用户访问页面。

10.Vuser虚拟用户(Virtual user):模拟真实业务逻辑步骤的虚拟用户,虚拟用户模拟的操作步骤都被记录在虚拟用户脚本里。Vuser脚本用于描述Vuser在场景中执行的操作。

11.Concurrency并发:并发分为狭义和广义两类,狭义的并发,即所有的用户在同一时刻做同一件事情或者操作,这种操作一般针对同一类型的业务,或者所有用户进行完全一样的操作,目的是测试数据库和程序对并发操作的处理。广义的并发,即多个用户对系统发出了请求或者进行了操作,但是这些请求或操作可以是不同的。对整个系统而言,仍然有很多用户同时进行操作。狭义并发强调对系统的请求操作是完全相同的,多用于性能测试,负载测试,压力测试,稳定性测试场景;广义并发不限制对系统的请求操作,多适用于混合场景,稳定性测试场景。

12.场景(Scenario):性能测试过程中为了模拟真实用户的业务处理过程,在LR中构建基于事务,脚本,虚拟用户,运行设置,运行计划,监控,分析等的一系列动作的集合,称之为性能测试场景。场景中包含了待执行脚本,脚本组,并发用户数,负载生成器,测试目标,测试执行的配置条件等。

13.思考时间(Think Time):模拟正式用户在实际操作时的停顿间隔时间。从业务的角度来讲,思考时间指的是用户在进行操作时,每个请求之间的间隔时间。在测试脚本中,思考时间体现为脚本中两个请求语句之间的间隔时间。

14.标准差(Std. Deviation):该标准差根据数理统计的概念得来,标准差越小,说明波动越小,系统越稳定;反之,标准差越大,系统越不稳定。包括响应时间标准差,TPS标准差,Running Vser标准差,Load标准差,CPU资源利用率标注差,Web Resources标准差等。

 

性能测试通过标准:

 

 

 

 

 

JMeter为什么采用线程组的方式来运行?

由于JMter是运行在JVM虚拟机上的。每个进程的开销比LR的进程开销要大,如果以进程的方式来运行的话,每台负载机上的进程数量就不会允许太多,当我们要大量并发时就需要大量的负载机,这显然是不经济的,再者java也是支持多线程的,所以JMeter选择了以线程方式来运行。

JMeter通过线程组来驱动多个线程运行测试脚本对被测服务器发起负载,每一个负载机上都可以运行多个线程组。JMeter的运行场景不仅可以在GUI方式中完成,还可以使用命令行,而且命令行的运行方式对应的负载机的资源消耗会更小。

 

工具无所谓好坏,更在于使用的人,对于企业来说能够快速,可靠,低成本地解决性能问题才是硬道理。

Jmeter是什么

JMeter也称为“Apache JMeter”,它是一个开源的,100%基于Java的应用程序,带有图形界面。 它旨在分析和衡量Web应用程序和各种服务的性能和负载功能行为。

JMeter主要用于测试Web应用程序或FTP应用程序,但目前,它适用于功能测试,JDBC数据库连接,Web服务,通用TCP连接和OS本机进程。 您可以执行各种测试活动,如性能,负载,压力,回归和功能测试,以便针对您的Web服务器获得准确的性能指标。

JMeter最初是由Apache软件基金会的Stefano Mazzocchi编写和开发的。 它主要用于测试Apache JServ(目前称为Apache Tomcat项目)的性能。Apache重新设计了JMeter以增强GUI,增加更多功能和功能测试功能。

JMeter不是一个浏览器,它不像任何浏览器那样呈现html页面,而是在协议级别上运行。

Jmeter特性

下面列出了JMeter的一些最重要的功能:

  • 开源应用程序:JMeter是一个免费的开源应用程序,可以帮助用户或开发人员使用源代码开发其他应用程序。
  • 用户友好的GUI:JMeter带有简单的交互式GUI。
  • 支持各种测试方法:JMeter支持各种测试方法,如负载测试,分布式测试和功能测试等。
    • Web: HTTP, HTTPS, SOAP
    • 数据库: JDBC, LDAP, JMS
    • Mail: POP3
  • 支持多协议:JMeter支持HTTP,JDBC,LDAP,SOAP,JMS和FTP等协议。
  • 模拟:JMeter可以使用虚拟用户或唯一用户模拟多个用户,以便对正在测试的Web应用程序产生大量负载。
  • 框架:JMeter是一个多线程框架,允许许多或单独的线程组同时和同时采样不同的函数。
  • 远程分布式测试:JMeter具有用于分布式测试的主从概念,其中主服务器将在所有从服务器之间分配测试,而从服务器将针对服务器执行脚本。
  • 测试结果可视化:测试结果可以以不同的格式查看,如图形,表格,树型和报告等。

JMeter工作流程

JMeter通过模拟一组用户将请求发送到目标服务器。 随后,收集数据以通过各种格式计算目标服务器的统计和显示性能度量。

如下图所示:

 

posted @ 2021-02-19 10:34  Gabrielle_gao  阅读(135)  评论(0)    收藏  举报