ITPub博客

首页 > 数据库 > 数据库开发技术 > moco框架接口命中率统计实践

moco框架接口命中率统计实践

原创 数据库开发技术 作者:FunTester 时间:2021-05-24 08:51:27 0 删除 编辑

在日常的工作中我们经常会用到各种各样的moco框架,我选用的就是二次开发moco API,增加了一些新功能也做了一些封装。感觉自己用起来还是非常舒服的,几分钟可以构建一个简单的测试服务,用来测试性能框架各种功能。

在之前的性能测试Demo中,我本机起了一个moco服务,写了一个简单的GET接口,用性能测试框架进行压力测试。结果喜人,单机配置「1G内存」的「FunTester」测试框架对本机的moco服务QPS打开了50000+。有图为证:

在这个过程中,发现moco API中已经有提供计数器的功能,就是com.github.dreamhead.moco.MocoRequestHit类,提供moco接口命中统计的功能。

这个类功能较为简单,提供的方法比较少,都是一些断言的功能。

首先分享一下基本语法:

        def monitor = getHitMonitor()

        def server = getServer(12345, "${getMark()}.log", monitor)

        monitor.verify(urlStartsWith("/b"), atLeast(2))`

其中monitor是创建好的MocoRequestHit对象,通过构造方法传入httpserver中,然后在httpserver运行中对其中的接口命中率进行断言。

断言语法如下:

        try {
            monitor.verify(urlStartsWith("/m"), never())
            monitor.verify(urlMatcher("/t"), once())
            monitor.verify(urlOnly("/a"), times(1))
            monitor.verify(urlEndWith("/b"), atLeast(2))
            monitor.verify(urlContain("/"), atMost(10))
            monitor.verify(urlEndWith("/"), between(12, 22))
            monitor.verify(unexpected(), never())
        } catch (e) {
            logger.warn(e)
        }

这里需要用try-catch捕获异常,不然当前线程终止,无法执行后面的结束操作。

下面我手动翻译一下moco API文档。

  • never():从来没有被调用过;
  • once():只被调用过一次;
  • times(int i):该方法被调用过i次;
  • atLeast(int i):该方法至少被调用过i次;
  • atMost(int i):该方法最多被调用过i次;
  • between(int i,int j):该方法被调用次数在i和j之间;
  • unexpected():未命中;

下面分享一下之前写过的moco API文档的文章:

moco API


「FunTester」,腾讯云年度作者、Boss直聘签约作者,GDevOps官方合作媒体,非著名测试开发。


原文作者:FunTester;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2019-07-07

  • 博文量
    1037
  • 访问量
    420779