性能测试的基本概念——软件接口测试实战详解(17)

发表于:2021-6-07 09:16

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

 作者:于涌 马林 张林丰    来源:51Testing软件测试网原创

  第9章基于接口的性能测试实战
  9.1 性能测试的基本概念
  随着互联网的蓬勃发展,软件的性能测试已经越来越受到软件开发商、用户的重视。一个网站前期可能用户较少,随着使用用户的逐步增长和宣传力度的加强,软件的用户可能会呈几倍、几十倍甚至几百倍数量级的增长。如果不经过性能测试,软件系统可能会该情况下崩溃,所以性能测试还是非常重要的。

  9.1.1  典型的性能测试场景
  下面是一些需要进行性能测试的场景。
  ·用户提出性能测试需求。例如,首页响应时间在3s内、主要的业务操作时间短于10s、支持300个用户在线操作等相关语言描述。
  ·某个产品要发布了,需要对全市的用户进行集中培训。通常在进行培训的时候,老师讲解完一个业务以后,被培训用户会按照老师讲解的实例同步完成前面讲过的业务操作。这样存在用户并发的问题,我们在培训之前需要考虑被培训用户的人数,所以在场景中要酌情设置并发用户数量。
  ·同一系统可以采用两种构架——Java、.NET,需要决定用哪个。如果同样的系统用不同的语言、框架,实现效果也会有所不同。为了系统能够有更好的性能,在系统实现前期,可以考虑设计一个小的Demo,设计同样的场景,实际考查在不同语言、不同框架之间的性能差异,而后选择性能好的语言、框架开发软件产品。
  ·编码完成后,总觉得某部分存在性能问题,但是又说不清楚到底是什么地方存在性能瓶颈。一个优秀的软件系统是需要开发人员、测试人员以及数据管理员、系统管理员等角色协同工作才能完成的。开发人员遇到性能问题以后会提出需求,性能测试人员需要设计相应的场景,分析系统瓶颈,定位出问题以后,将分析后的测试结果以及意见反馈给开发人员等相关人员。而后开发人员等相关人员进行相应调整,再次进行同环境、同场景的测试,直到系统能够达到预期的目标为止。
  ·判断一个门户网站能够支持多少用户并发操作(注册、写博客、看照片、灌水……)。一个门户网站应该是经得起考验的。门户网站栏目众多,我们在进行性能测试的时候,应该考虑实际用户应用的场景,将注册用户、写博客、看照片、看新闻等用户操作设计成相应的场景。根据预期的用户量设计相应的并发量,对于一个好的网站,随着用户的逐渐增长以及推广的深入,访问量可能会呈数量级的增长。考虑到门户网站这些方面的特点,在进行性能测试的时候需要考虑可靠性测试、失败测试以及安全性测试等。

  9.1.2  性能测试的概念及其分类
  系统性能是一个很大的概念,覆盖面非常广泛。对于一个软件系统而言,它包括执行效率、资源占用率、系统稳定性、安全性、兼容性、可靠性、可扩展性等。性能测试是为描述测试对象与性能相关的特征并对其进行评价而实施和执行的一类测试。它主要通过自动化测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。通常把性能测试、负载测试、压力测试统称为性能测试。
  相关测试的含义如下。
  ·负载测试:通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足系统性能指标的情况下,系统所能够承受的最大负载量的测试。简而言之,负载测试是通过逐步加压的方式来确定系统的处理能力和系统能够承受的各项阈值的。例如,通过逐步加压,从而得到“响应时间不超过10s”“服务器平均CPU利用率低于85%”等指标的阈值。
  ·压力测试:通过逐步增加系统负载,测试系统性能的变化,最终确定在什么负载条件下系统性能处于失效状态,并获得系统能提供的最大服务级别的测试。压力测试中逐步增加负载,使系统的某些资源达到饱和甚至失效。
  ·配置测试:主要通过对被测试软件的软硬件配置进行测试,找到系统各项资源的最优分配原则。
  ·并发测试:测试多个用户同时访问同一个应用、同一个模块或者数据记录时是否存在死锁或者其他性能问题,几乎所有的性能测试都会涉及一些并发测试。
  ·容量测试:测试系统的最大会话能力,以确定系统可同时处理在线的最大用户数,通常这和数据库有关。
  ·可靠性测试:在给系统加载一定的业务压力(如CPU资源的使用率在70%~90%)的情况下,运行一段时间,检查系统是否稳定。因为运行时间较长,所以通常可以测试出系统是否有内存泄漏等问题。
  ·失败测试:对于有冗余备份和负载均衡的系统,通过这样的测试来检验如果系统局部发生故障用户是否能够继续使用该系统,用户会受到多大的影响。如几台机器进行均衡负载,一台或几台机器垮掉后系统能够承受的压力。

  9.1.3  性能测试工具的引入
  综上所述,性能测试是软件测试的重中之重。它包括的种类、范围也很广,掌握并灵活应用性能测试工具的使用是软件企业的必经之路。目前市场上已经有很多性能测试工具,主流的性能测试工具有LoadRunner、JMeter、Apache ab、Locust等。在这些工具中,由于界面友好、方便易用、支持协议众多、功能强大等优势,很多用户将LoadRunner应用于商业的产品中,并取得了很好的效果。尽管LoadRunner出类拔萃,但因为该产品较贵且产品本身越来越庞大,所以越来越多的用户选择了开源的、免费的、小巧的性能测试工具JMeter或者Locust。当然,如果你更愿意使用LoadRunner,可以参看作者的《精通软件性能测试与LoadRunner最佳实战》一书。Locust是一个开源的性能测试工具,它使用Python开发,基于事件,支持分布式部署并且提供Web和控制台两种测试执行策略,以丰富的图表展示结果。其最大的一个亮点是,在模拟虚拟用户的负载时,使用的资源要明显少于LoadRunner和JMeter,这是为什么呢?因为LoadRunner和JMeter使用进程或者线程来模拟虚拟用户,而Locust借助gevent库对协程进行支持,以greenlet来实现对用户行为的模拟。协程占用的资源很少,所以在相同配置的情况下Locust能模拟更多的虚拟用户数量。
  Locust使用Python来编写对应的性能测试脚本,可以在脚本中指定性能测试的场景,即各业务以及它们的占比。同时,Locust提供了一个Web管理页面,可以在该页面中指定模拟用户的数量及用户加载的速度,执行测试后,Locust将给出请求数量、响应时间等一些关键性能指标数据并提供相关的一些图表。后续章节将详细介绍这款性能测试工具的使用方法。

查看《软件接口测试实战详解》全部连载章节
版权声明:51Testing软件测试网获得人民邮电出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号