JMeter—自动化测试主流工具(2)

发表于:2020-5-19 14:01

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:51Testing教研团队    来源:51Testing软件测试网原创

  第2章 JMeter
  2.1 性能测试基础
  2.1.1 性能的定义
  性能指器物所具有的性质与效用(《新华字典》的解释)。
  性能的定义包括以下两层含义。
  ●性质:该器物具有什么特性。
  ●效用:该器物能干什么及干得怎么样。
  那么身边的性能有哪些呢?
  ●计算机:计算机的性能是指什么呢?用起来比较快?看起来比较好看?通常说计算机的性能好是指CPU具有比较出众的运算能力。但是,仅CPU快,计算机一定就快吗?不一定,这还取决于存储器。
  ●汽车:汽车各零件在一般情况下功能良好,但在高速、长时间、大压力运行的情况下可能会出现问题,这些也是性能问题。
  ●手机中的APP:以下是十大APP性能黑洞,出现这些情况,将直接导致用户流失。
  连接超时;
  闪退;
  卡顿;
  崩溃;
  黑白屏;
  网络劫持;
  交互性能差;
  CPU使用率降低;
  内存泄露;
  不良接口。
  2.1.2 性能测试的概念
  性能测试(performance testing)指的是在一定的负载下,系统的响应时间等特性是否满足特定的性能需求,从某些角度来说,性能其实是功能的一种。功能用于衡量软件是否能工作,性能用于衡量软件工作得怎么样。在软件质量模型中可以发现性能测试是属于效率方面的。
  软件效率是指在规定条件下,相对于所用资源的数量,软件产品可提供适当性能的能力。
  其中,资源可能包括其他软件产品、系统的软件和硬件配置,以及物质材料(如打印纸、磁盘等);对于用户所操作的系统,功能性、可靠性、易用性和效率的组合可以从外部进行测量。
  要衡量一个软件的性能,需要从以下方面考虑。
  ●时间特性:在规定条件下,当软件产品执行其功能时,提供适当的响应和处理时间及吞吐率的能力。
  ●资源利用性:在规定条件下,当软件产品执行其功能时,使用合适数量和类别的资源的能力。人力资源作为生产率的一部分,也包括在其中。
  ●效率依从性:软件产品遵循与效率相关的标准或约定的能力。
  也就是说,需要确保软件在一定的资源下达到一定的性能,并且遵守相关的标准或协议。例如,用户从来不会奢望一台旧手机运行智能系统时开机速度会很快,因为这样的硬件相对于当前产品的标准已经过时了。但是如果一台高级的主流新手机在1min内无法完成启动,用户就会开始怀疑是不是自己的硬件存在某些问题。
  所以,作为一个性能测试工程师,其主要工作目标是确保系统能够在一定的硬件、软件环境下达到一定的性能指标。
  2.1.3 性能测试的分类
  性能测试可以分为以下几类。
  1.压力测试
  在一定的软件、硬件及网络环境下,通过模拟大量的虚拟用户给服务器施加压力,使服务器的资源处于极限状态并长时间连续运行,以测试服务器在高负载情况下是否能够稳定工作。
  压力测试强调系统的稳定性,这个时候处理能力已经不重要了。
  2.负载测试
  在一定的软件、硬件及网络环境下,通过在不同虚拟用户数量的情况下运行一种或多种业务,测试服务器的性能指标是否在用户要求的范围内,用于确定系统所能承载的最大用户数、最大有效用户数,以及不同用户数下的系统响应时间与服务器的资源利用率。
  负载测试强调在一定的环境下验证系统能否达到对应指标,大多数性能测试是负载测试。
  基本上,性能测试是通过加压来实现的,一般认为“最佳用户数”之前的测试是负载测试,之后的“重负载区域”的测试为压力测试,如图2-1所示。
  图2-1 负载测试
  3.容量测试
  在一定的软件、硬件及网络环境下,向数据库中构造不同数量级别的数据记录,通过在一定的虚拟用户数量下运行一种或多种业务,获取不同数据级别的服务器性能指标,以确定数据库的最佳容量。
  容量测试不仅可以对数据库进行,而且可以用于判断硬件处理能力、服务器的连接能力等,以测试系统在不同容量级别是否能达到指定的性能。
  下面给出一个实例。要为企业几年后的业务规划提前做容量规划,需要测试到达未来的容量的条件。
  在**公司旗下,截至2016年6月底,**专车业务付费用户数达到624.96万人,APP累计下载量达到2151.53万次。2016年上半年,专车业务总单量达到5534.2万单,同比增长282.64%;日均单量达到30.41万单,同比增长280.54%;估计未来5年将拥有1亿用户,请为该系统软件框架和硬件容量进行规划。
  4.强度测试
  强度测试主要用于检查程序对异常情况的抵抗能力。强度测试总是迫使系统在异常的资源配置下运行。例如,当正常的用户单击率为“1000次/s”时,运行单击率为“2000次/s”的测试用例;运行需要最大存储空间(或其他资源)的测试用例;运行可能导致操作系统崩溃或磁盘数据剧烈抖动的测试用例;等等。
  疲劳强度测试是一类特殊的强度测试,主要测试系统长时间运行后的性能表现,如7×24h的压力测试。
  5.配置测试
  在不同的软件、硬件及网络环境配置下,通过在一定的虚拟用户数量下运行一种或多种业务,获得不同配置的性能指标,用于选择最佳的设备及参数配置。
  通过产生不同的配置,得到系统性能的变化情况。通过配置测试可以将性能缺陷放大,方便定位性能瓶颈。
  图2-2所示是配置测试实例。在实际系统中,如果代码的性能极好,但是相关硬件配置的性能低下,仍然会造成系统总体性能的下降。
  图2-2 配置测试实例
  6.基准测试
  在一定的软件、硬件及网络环境下,模拟一定数量的虚拟用户运行一种或多种业务,将测试结果作为基线数据,在系统调优或者系统评测过程中,通过运行相同的业务场景并比较测试结果,确定调优是否达到效果或者能否为系统的选择提供决策数据。
  基准测试一般基于配置测试,通过配置测试得到数据,并将这个数据作为基准来比较每次调优后的性能是否有所改善。
  7.并发测试
  通过模拟多个用户并发访问同一个应用、同一个存储过程或数据记录及其他并发操作,测试是否存在死锁、数据错误等故障。
  为了避免数据库和开发的并发错误,需专门针对每个模块进行并发测试。
  2.1.4 性能指标
  1.响应时间
  响应时间反映完成某个业务所需要的时间。例如,如果从单击“登录”按钮到返回登录成功页面需要消耗1s,那么这个操作的响应时间是1s。
  LoadRunner是通过事务来完成对响应时间的统计的,事务是指做某件事情的操作,而函数会记录开始做这件事情和做完该事情之间的时间差,也称为事务响应时间(response time)。
  2.吞吐量
  吞吐量反映单位时间内能够处理的事务数目。例如,对于一个系统来说,一个用户登录需要1秒,如果系统同时支持10个用户登录,且响应时间是1秒,那么系统的吞吐量就是10人/秒。
  在LoadRunner中,吞吐量也称为TPS(Transaction Per Second,每秒事务数),即在单位时间内能完成的事务数目。
  3.资源占用情况
  资源并不是简单指运行系统的硬件,而是指支持运行程序的一切资源。
  在LoadRunner中,可以通过很多的计数器监控接口来帮助监控系统中的硬件或者软件资源的占用情况,如CPU的使用率、内存使用情况、缓存命中率等。
  对于一个用户来说,他最关心的只有响应时间。如果响应时间长了,那么用户就会觉得系统慢,用户并不关心有多少人使用这个系统,系统的资源是不是足够,所以从某个角度来说,必须保证在任意情况下在操作中对最终用户的响应时间不能超过5s。
  调查统计显示,对于一个用户来说,如果他访问一个系统的响应时间在2s以内,那么用户会感到系统很快,比较满意;如果他访问一个系统的响应时间在2~5s,那么用户可以接受,但是对速度有些不满;如果他访问一个系统的响应时间超过10s,那么用户将无法接受。
  所以,对于一个系统来说,需要保证其响应时间在5s以内。当然,某些特殊的操作可能会远远超过这个响应时间,可以通过loading bar的方式来提前告诉用户。

版权声明:51Testing软件测试网获得人民邮电出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号