【问题标题】:How can I test a http request in JMeter when the service is not available当服务不可用时,如何在 JMeter 中测试 http 请求
【发布时间】:2019-11-07 11:37:25
【问题描述】:

我正在尝试测试一个 http 请求,但该服务不可用,有没有办法在 JMeter 中创建一个虚拟响应?这样做的目的是测试实际发送的请求

建议使用虚拟采样器,但是如果其他测试人员没有获得此插件,则他们将无法对其进行测试。是否有其他已经内置的采样器或工具可以使用?

【问题讨论】:

标签: http testing service jmeter request


【解决方案1】:

实际上,您最终可以使用 JSR223 Sampler 为所欲为。

在 Groovy 中编写 HTTP 请求相当容易,因为 HTTP 客户端功能有效地嵌入到环境中,例如:

def urlString = 'http://' + restHost + ':' + restPort + '/' + restPath + '?' + paramString.toString()
def url = urlString.toURL()
def response = url.getText()

就这么简单。

然后您可以捕获协议错误,并以您想要的任何内容进行响应 - 您可以从脚本中完全访问您的 SampleResult 对象:

try {
   ...
} catch(IOException ioe) {
    SampleResult.setResponseCode("200")
    SampleResult.setResponseMessage("FAKE OK")
    SampleResult.setResponseData("My dummy response!", "UTF-8") 
    SampleResult.setSuccessful(true)
}

附:不确定我是否真正理解这样的请求背后的原因。

如果情况如此不幸,以至于负责被测服务的团队拒绝合作,我宁愿快速做一个模拟服务,让测试变得纯粹、简单和通用。

【讨论】:

    【解决方案2】:

    请求不会被发送,因为您需要在通过网络发送任何数据之前建立底层TCP connection

    如果您想测试服务器关闭的事实,您可以定义连接和响应超时,设置位于HTTP Request 采样器的“高级”选项卡下(或者更好的是HTTP Request Defaults

    上述配置将“告诉”JMeter 尝试建立连接,如果 1 秒内没有响应 - 采样器将被标记为失败:

    如果这是您期望的行为,您可以将 JMeter 配置为接受此响应,方法是将 Response Assertion 添加为请求的子项并将其配置为:

    • 要测试的字段:Response Code
    • 模式匹配规则:Equals
    • 要测试的模式:Non HTTP response code: org.apache.http.conn.ConnectTimeoutException
    • 勾选Ignore Status

    这样JMeter会将超时请求视为成功:

    【讨论】:

      猜你喜欢
      • 2016-12-18
      • 1970-01-01
      • 2015-10-23
      • 2019-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-31
      • 2018-12-20
      相关资源
      最近更新 更多