• 使用Jmeter虚拟化table失败


    工作中经常会用到Jmeter工具,把在浏览器上东点西点的手工操作,写成脚本,方便CI/CD流程中新的版本的测试,这样可以避免每次版本迭代都手工操作一次。

    最近在自动化IBM的CP4D的Data Virtualization这个功能的时候,遇到一个花费了不少功夫才找到根源的问题,在此记录一下,也与大家分享。

    问题:在全新的cluster上运行Jmeter脚本,往往在virtualize table这一步发生错误,报错如下。

    1. {
    2.     "code": 500,
    3.     "message": "Error: CHECK TABLE EXISTENCE -- DB2 SQL Error: SQLCODE=-552, SQLSTATE=42502, SQLERRMC=USER101;IMPLICIT CREATE SCHEMA, DRIVER=4.31.10"
    4. }

    当脚本报错的时候,我会先仔细观察一下脚本里的报错,也看看出错的这个request之前的request看是否有出错的;没有头绪的话我就会去浏览器上对相同的数据做一番同样的操作,看是否浏览器上就没有问题。这样我可以判断是脚本问题还是说cluster有问题。

    首先,检查脚本里头出错的http request,包括sampler result,request body,request header,response body。特别是request body和request header,要确保无误。怎么确保无误?最直接的方法,就是在浏览器上做相同操作的时候打开浏览器的Inspect功能,去到Network这一栏,可以观察到在浏览器上操作的时候的具体内容。我用的是Firefox浏览器,如图,在浏览器页面上右击,选择Inspect,然后选中Network。从这个时候开始,浏览器上所有的操作都会被记录在Network里。所以我可以看到具体在virtualize table这一步的时候的所有细节,这样我就可以跟脚本里的对比,来确保准确与否。

     检查下来,没有发现不一样的地方,也就说这些细节都没问题。而且也说明了在浏览器操作是没有问题的,说明cluster没问题,问题一定在脚本里。问题在哪?

    我又试着跑一下脚本,发现没问题了!再删掉所有数据,包括connection、virtualized data、data asset,再跑脚本,也是没问题了!感觉一头雾水。

    我想着删掉DV instance从头再来,因为创建DV instance比较费时,一般要一个多小时才能ready。不过为了验证脚本我还是删掉了DV instance,一切从头再跑一遍脚本,包括创建DV instance。

    好了,问题又出现了。。。纳闷归纳闷,但是我怀疑可能是我在浏览器上的操作遗留下了什么东西,而这个东西恰好在发送virtualize table这个http request的时候需要的。怎么验证?

    我又打开浏览器的Inspect,做virtualize table的操作,然后查看Network里的一条条request。我发现有一条create schema的request,这是个POST,但是我在浏览器里并没有手工创建schema。就是说,当浏览器没找到自动填充的schema的时候,自动发送了一个POST request去创建schema。难道是遗漏了这一步导致的错误?再看看报错,IMPLICIT CREATE SCHEMA,的确报的跟schema有关。

    于是,我迅速在Jmeter脚本里加上一个判断,如schema不存在则POST request去创建schema。调通之后,删掉DV instance,跑脚本,果然就没有错误了。

     

     

     

     

    回过头来看,这种问题其实挺隐秘的,因为写脚本的时候,一般都是结合浏览器,边在浏览器上操作,再将request搬到Jmeter里,很可能就会把某个隐藏的自动操作漏掉,而且漏掉之后在同一个cluster里跑脚本还看不出来问题,这是隐藏最深的地方。所以,最好的方法是,在全新的cluster里,第一遍在浏览器上操作的时候,就使用Jmeter的录制功能,把所有request都录制下来,再逐一帅选出来相关的有意义的request。下一篇我再讲讲怎么使用Jmeter录制脚本。

  • 相关阅读:
    Vue3实现tab切换
    UiPath实战(08) - 选取器(Selector)
    MVCC:多版本并发控制案例分析(二)
    C#中ThreadPool线程池的使用总结
    MySQL8.0 show create view BUG解析
    学成在线-网站搭建
    大厂真题:【模拟】小红书2023秋招提前批-小红的数组构造
    sapjco3.dll has version “721.619“, but required is at least version “721.913“
    工厂方法模式
    软考高级系统架构设计师系列之:微服务
  • 原文地址:https://blog.csdn.net/qingyang0320/article/details/125448073