专栏首页用户6517667的专栏基于性能测试工具kylinTOP构建虚拟用户自身请求的并发模型

基于性能测试工具kylinTOP构建虚拟用户自身请求的并发模型

在对于WEB系统进行性能测试时,第一时间想到的是测试出WEB系统能够承受的最大并发虚拟用户(VU)用户数,因为系统的最大VU并发数可以直接反应系统的承载能力。但是人们往往忽略了VU的并发模型。什么是VU的并发模型呢?如下图所示,我们使用浏览器访问一个页面,浏览器会有多个HTTP请求发向服务端,这些请求有串行的也有并行的(water中有时间重叠的请求属于并行请求。串行请求是指:前一请求结束,后一请求才下发请求)。如果性能测试工具提供WEB录制功能并能按照浏览器的行为模型模拟VU行为,那是最好的了(如果你使用Jmeter或LoadRunner 11那么工具是无法做到的,详见:《性能测试工具Jmeter你所不知道的内幕》、《性能测试工具LoadRunner你所不知道的内幕》)。截止目前我了解到的性能测试工具:kylinTOP可以实现(Jmeter,CPTS(华为),PTS(阿里)均无法实现),但本文并是不讨论如何使用kylinTOP来录制脚本并模拟浏览器的行为,而是如何利用kylinTOP手工构建这样的场景。为什么要手工构建呢,主要是有些web系统对外提供的服务不是WEB页面,而是HTTP接口功能,对这种场景就需要我们手工来构建。

如果被测试系统是一个WEB服务系统,对外提供的HTTP接口不是WEB页面,而是HTTP接口功能。对于这种系统我们应当怎样测试性能呢?要想测试出它能承受的最大并发VU数,首先要分析其VU的请求模型。假定VU的请求模型如下所示:

VU请求模型描述:已知一个WEB系统对上层用户提供A、B、C、D、E、F、G、H、I共9个接口请求。上层用户使用这9个请求的约束要求是A、B是串行下发,C、D、E、F四个请求并行下发,G、H、I是串行下发。按照如下的瀑布图形下发请求:

一个上层用户对WEB系统来说就是一个VU,那么如何手工构建这样的请求模型呢?

步骤1:新建脚本

步骤2:创建请求节点和描述节点

通过“增加”按钮添加HTTP请求节点和描述节点。同时把要并发的请求移动到描述节点下面(作为描述节点的子节点,同时描述节点名称输入:start_concurrent)

说明:kylinTOP手工添加的HTTP请求节节点默认是串行的,“描述节点”的子节点处理为并发请求(描述节点的名称必须是:start_concurrent,否则当作串行处理)。

步骤3:脚本属性修改

设置脚本的“高级设置-虚拟用户“,属性值选择下图标志中的任意一个。

步骤4:调试脚本

点击调试按钮,生成如下所示VU瀑布图。该瀑布图中:CDEF四个是并发请求,其余是串行请求,与场景要求一致。

说到这里,脚本运行的瀑布图与场景要求已经完全一致。后续使用该脚本新建测试任务运行即可测试获得系统可承受的最大VU数。如果使用Jmeter,PTS等其它性能测试工具测试,VU的HTTP请求模型将是一个线性请求(串行请求),无法生成上述场景描述要求脚本,测试结果也是非常不准确的。

本文分享自微信公众号 - 软件测试培训(iTestTrain),作者:软件测试培训

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-04-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • postman接口功能测试

      postman介绍:postman是一个开源的接口测试工具,无论是做单个接口的测试还是整套测试脚本的拨测都非常方便。

    小老鼠
  • DevOps工具介绍连载(20)——Google App Engine

    2008年4月7号,Google在Campfire One上介绍了一种简化创建、运行和构建伸缩性Web应用的工具——Google App Engine。简而言之...

    小老鼠
  • DevOps工具介绍连载(1)

    puppet是一种Linux、Unix、windows平台的集中配置管理系统,使用自有的puppet描述语言,可管理配置文件、用户、cron任务、软件包、系统服...

    小老鼠
  • 【AI接入迷你赛】腾讯云产品鉴权签名 v3

    腾讯云 API 会对每个请求进行身份验证,用户需要使用安全凭证,经过特定的步骤对请求进行签名 Signature,每个请求都需要在公共请求参数中指定该签名结果并...

    用户4299935
  • 从传统运维到云运维演进历程之软件定义存储(一)

    运维是企业业务系统从规划、设计、实施、交付到运维的最后一个步骤,也是重要的步骤。运维从横向、纵向分可以分为多个维度和层次,本文试图抛开这纷繁复杂的概念,讲述一个...

    DevinGeng
  • 【小家Spring】Spring MVC控制器中Handler的四种实现方式:Controller、HttpRequestHandler、Servlet、@RequestMapping

    曾几何时,Apache旗下的项目: struts框架一度是MVC设计模式的主流框架。但后来随着Spring MVC3.0的发力,让它可议支持使用注解的方式进行快...

    YourBatman
  • 我国将于7月执行首次火星探测任务,一次性完成绕飞、降落和巡视三大任务

    我国首次火星探测任务预计将在今年7月执行,且一次性完成绕火星飞行、火星表面降落和巡视探测三大任务。

    镁客网
  • 用pycharm提交代码,冲突之后文件丢失找回方法

    1: 更新代码时, 监测到本地代码改变,需要和合并,重启之后才可以, 选择No同时,代码会被冲掉,新增加的文件也会被冲掉, 但是pycharm有一个文件历史记忆...

    Wyc
  • 复盘eygle在甲骨文大会上演讲中的示例,看看什么是大师的由点及面

    盖总(eygle)在刚结束的甲骨文大会的演讲中,通过一个简单的UPDATE语句,为我们展示了什么叫由点及面的优化,什么叫由点及面的知识覆盖度,不在于这个案具体如...

    bisal
  • J2EE前后台传值带中文时乱码

    (本文年代久远,请谨慎阅读)传值乱码问题在Web开发中涉及许多方面:登陆注册时,是否正确得到正确的中文用户名;修改信息时,是否可以显示提交的中文信息;

    ZONGLYN

扫码关注云+社区

领取腾讯云代金券