使用Locust完成性能测试(三)——持续测试(20)

发表于:2022-10-18 09:24

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

 作者:陈磊    来源:51Testing软件测试网原创

  部分选项的作用如下。
  --master用于以主服务模式启动Locust。
  --master-bind-host用于为主服务指定IP地址(可选,默认为127.0.0.1)。
  --master-bind-port用于为主服务设置固定的端口(可选,默认为端口5557)。Locust在启动后会使用两个端口:一个是设置的端口,另一个是对设置的端口号加1的端口。因此,如果设置的是端口5557,那么Locust将使用端口5557和端口5558。
  对应的slave配置如代码清单3-10所示。
代码清单3-10
  部分选项的作用如下。
  --slave用于以从服务模式启动Locust。
  --master-host用于为从服务指定主服务的IP地址。
  --master-port用于为从服务指定主服务的端口。
  先启动主节点,再启动从节点。从节点启动后,主节点将返回代码清单?3-11?所示的信息。
代码清单3-11
  分布式启动的UI控制台如图3-12所示。
  Locust是开源项目,其源代码可从GitHub仓库下载。
图3-12  分布式启动的UI控制台
  Locust的关键代码如代码清单3-12所示。
代码清单3-12
  从上述代码可以看出,所有的测试场景都继承自HttpUser类,每一个测试场景都是HttpUser类的子类。在HttpUser类的子类中,通过tasks调用对应的测试用例,这可以看成一种PO(PageObject)模式,TaskSet则对应PO模式下PageObject类的子类,HttpUser对应测试用例类。min_wait和max_wait分别表示在执行两个任务期间等待时间的下限和上限(单位为毫秒)。weight用于设置每一个HttpUser场景运行时的权重,权重越大,场景执行的概率越大。TaskSet是任务的集合,每次执行场景时,Locust都会先从TaskSet中随机挑选一个任务并执行,可以通过在@task后指定权重,设置哪个测试用例执行的概率更大,然后等待由min_wait或max_wait指定的一段时间,再从TaskSet中挑选其他任务继续并执行。@task会按照权重执行对应的测试用例,如果希望顺序执行所有的测试用例,那么需要让测试用例类继承自SequentialTaskSet类,如代码清单3-13所示。
代码清单3-13
  在上述代码中,即使在@task后指定了权重,所有的测试用例也会按顺序执行。
  在使用JMeter或LoadRunner时,经常使用参数化功能。参数化功能及一些参数策略能使测试工程师设计的测试用例更加贴合实际。另外,使用检查点来验证每次访问的正确性。Locust主要通过断言来完成检查点的设置。断言用于检查测试中得到的响应数据等是否符合预期,断言可看成异常处理的一种高级形式,是一种布尔表达式。测试中常用的检查点机制在Python中已得到很好的支持。
  Locust提供的ResponseContextManager类继承自Response类,主要起传递和管理上下文的作用。与父类Response相比,ResponseContextManager类新增加了success()和failure()两个方法。使用ResponseContextManager类手动将HTTP请求标记为成功或失败的,如代码清单3-14所示。
代码清单3-14
  在压力测试过程中,当断言失败且没有找到预期内容时,在UI模式下,控制台的Failures标签页中将出现图3-13所示的错误信息。
图3-13  输出的错误信息
  除利用断言设置检查点之外,参数化也是性能测试人员必须掌握的技能。Locust是纯Python驱动的性能测试框架,这让Locust有了无限可能,任何代码逻辑能处理的事情也都可以使用Locust处理。下面以访问百度搜索引擎并提供不同的搜索关键字为例进行讲解,如代码清单3-15所示。
代码清单3-15
  执行测试场景后,在UI部分输入并发用户数和每秒启动人数,便可展示图3-14所示的实时结果。
图3-14  实时结果
  可以看到,虽然只有一个URL,但是出现了两种结果,这说明参数化起到了作用。可以发现使用Locust进行性能测试非常简单。其实不用纠结,性能测试过程中,工具仅仅是模拟多并发的发生器,任选一个并开始学习即可。在性能测试过程中,并发工具只是一个开始,离完成性能测试还很遥远。现在很多大公司开始推行性能工程,这是因为性能不是靠哪一个性能测试工具随随便便测试几次就可以的,这些远远不够。
查看《持续测试》全部连载章节
版权声明:51Testing软件测试网获得作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号