Locust性能-零基础入门系列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Locust性能-零基础入门系列相关的知识,希望对你有一定的参考价值。

本文主要讲解利用TaskSet类对测试场景进行管理。特别是当要纳入测试范围的功能点越来越多时,更需要考虑测试管理相关的内容。让性能测试更有条理和高效。
以如下官方例子来讲解TaskSet的用法以及在测试运行中的一些细节。

from locust import User, TaskSet, between,task,constant

class ForumSection(TaskSet):
    wait_time = constant(1)
    @task(10)
    def view_thread(self):
        print("This is task viewThread")

    @task(1)
    def create_thread(self):
        print("This is task create thread")

    @task(1)
    def stop(self):
        self.interrupt()

class LoggedInUser(User):
    wait_time = between(5,10)
    tasks = {ForumSection:2}

    @task
    def index_page(self):
        print("this is a index page.")

如上,类ForumSection继承了TaskSet类,其中定义了3个task,1,2是比较常规的task, 其中view_thread的权重是10,create_thread的权重是1;此外有一个比较特殊的task-> "stop",这个任务的权重是1,如果任务线程选中了此方法,那么会结束该线程在此任务集合(TaskSet)的执行,回退到其父节点(父TaskSet)。

综合来看,这里总结下使用这种模式管理性能测试的一些要点。

  • 自定义TaskSet子类必须要继承TaskSet类

  • 如果TaskSet类设置了测试运行时参数,比如wait_time,那么以TaskSet类设置为准,如果TaskSet类中没有设置参数,那么会沿用User类中的设置。

  • 如果某个线程(用户) 执行了TaskSet类中的stop任务,那么该线程会跳回父节点,在此例中,是跳回到LoggedInUser这个用户类中,那么下一步,该线程有可能执行任务“index_page”,也有可能执行任务“ForumSection”。以此类推。

  • 在TaskSet类执行任务时,是以该TaskSet类内的所有符合条件的任务为范围,此TaskSet类之外的任务,不在权重的计算范围内。

另,本人在51CTO 学院有locust的基础课程 https://edu.51cto.com/sd/ddd95 ,如有需要请查看。

以上是关于Locust性能-零基础入门系列的主要内容,如果未能解决你的问题,请参考以下文章

[易学易懂系列|golang语言|零基础|快速入门|]

性能监控平台搭建 -- 集成Locust性能数据

性能监控平台搭建 -- 集成Locust性能数据

性能测试使用locust进行接口的性能测试(一)

性能测试使用locust进行接口的性能测试(一)

性能工具之 Locust 简单入门