您的位置 首页 > 德语词汇

testee是什么意思?用法、例句 轻量级http压测工具httptester

老铁们,大家好,相信还有很多朋友对于testee是什么意思?用法、例句和轻量级http压测工具httptester的相关问题不太懂,没关系,今天就由我来为大家分享分享testee是什么意思?用法、例句以及轻量级http压测工具httptester的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!

testee是什么意思?用法、例句 轻量级http压测工具httptester

近来有需求要对HTTP接口进行压测,于是去了解了一下JMeter,发现虽然功能强大,但本身依赖JAVA,并且依赖图形化界面,不够轻量化,所以想着自己写一个基于命令行的轻量级压测工具,于是就有了httptester。

httptester是采用GO语言来编写的,尽管目前仍是早期版本,但是基本功能已经没有问题了。

httptester是一个二进制可执行文件,无需安装。

下载最新版本:https://github.com/rocketk/httptester/releases

找到自己平台对应的版本下载至本地,将其所在目录放入系统环境变量中。

httptester-h\nhttptesterrun-h\nhttptesterserve-h

最简单的压测命令(以压测百度首页为例)

httptesterrun-u'https://www.baidu.com/'

设定并发量、循环次数、超时时间

httptesterrun--loop10--concurrency100--timeout500ms-u'https://www.baidu.com/'\n#httptesterrun--loop10--concurrency100--timeout2s-u'https://www.baidu.com/'结果

100%[==============================]\n--Configuration--\nConcurrency:100Loop:10Timeout:2000msKeepAlive:trueTimeUnit:msMethod:GETURL:https://www.baidu.com/\nHeaders:[]\nBody:\n\n--Conclusion--\ntotalcount:1000\nsuccesscount:981\nfailedcount:0\nerrorcount:19\nnatureduration:2280ms\ntotalcost:195688ms\nmax:1539ms\nmin:0ms\nmedian:110ms\nmean:195ms\nstandarddeviation:248.309631\nthroughput:430requests/second

字段

总共的http请求数量,等于loop*concurrency

失败的请求数量,不同于errorcount,只有被【断言】校验不通过的才算失败

错误数量,一般是超时或http接口不可用

自然耗时(区别于下面的总体耗时)

总体耗时,每个请求的耗时加总起来的总耗时,在并发情况下会大于自然耗时

吞吐量,数值等于success_count/nature_duration

为了更好地测试各种Assertion表达式,你可以通过以下命令启动一个Restful风格的API服务:

httptesterserve\n#httptesterserve--port1234

此示例服务是一个典型的Restful风格的API服务,包含以下操作(以curl命令为例):

curlhttp://localhost:1234/users增加一个新用户

curl-XPOST\\\n-d'{"name":"NewUser","age":18,"stature":175,"weight":60,"available":true}'\\\n'http://localhost:1234/users'更新一个已有用户

curl-XPUT\\\n-d'{"name":"NewUser","age":18,"stature":175,"weight":60,"available":true}'\\\n'http://localhost:1234/users/{id}'

注意将{id}改为实际的用户id

curl-XDELETE'http://localhost:1234/users/{id}Assertion

在默认情况下,httptester并不会做断言检测,也就是说只要http请求得到了响应,不论其返回的响应是什么,不论响应码是什么,都会按照成功来计算。但很多情况下,你需要判断其结果是否正确。

当前版本的httptester支持3种断言,即响应码断言/JSON断言/正则表达式断言

以上一节Restful-API服务接口中的“列出所有用户”为例,curl格式如下:

curl-ihttp://localhost:1234/users

返回结果:

HTTP/1.1200OK\nContent-Type:application/json;charset=utf-8\nDate:Sat,13Mar202113:28:48GMT\nContent-Length:459\n\n[\n{\n"age":18,\n"id":"732e930c-59ce-4087-b509-6288b5d2d6c5",\n"stature":180,\n"weight":62.5,\n"name":"Jack",\n"available":true\n},\n{\n"age":25,\n"id":"30160f4c-a4ee-420b-ba61-fb0f78a3e312",\n"stature":175,\n"weight":60.5,\n"name":"Mary",\n"available":true\n},\n{\n"age":32,\n"id":"04c7aca2-c27b-4ff1-8756-1bdf57ab7993",\n"stature":185,\n"weight":65,\n"name":"Benjamin",\n"available":true\n},\n{\n"age":15,\n"id":"51784d48-4abd-4f01-83df-4cd43869027c",\n"stature":160,\n"weight":50.799999999999997,\n"name":"Lee",\n"available":false\n}\n]

接下来我们来看在httptester中如何来写断言。

使用--assert-status-codes来设定响应码断言,下面的例子表示,只有当http响应码为200或201时才算请求成功

httptesterrun-u'http://localhost:1234/users'\\\n-c100-l100\\\n--assert-status-codes'200201'JSON断言

此次我们使用“新增一个用户”为例,它的返回值如下:

HTTP/1.1200OK\nContent-Type:application/json;charset=utf-8\nDate:Fri,12Mar202107:01:50GMT\nContent-Length:116\n\n{"id":"ddb6b9fe-f0af-40ef-8b44-90e5b150b3ac","name":"NewUser","age":18,"stature":175,"weight":60.5,"available":true}

假设我们认为返回值中的name值要等于NewUser,那么我可以使用--assert-json-expression来达到这一目的。注意双等号两侧的空格是必须的。

httptesterrun--methodPOST-u'http://localhost:1234/users'\\\n-b'{"name":"NewUser","age":18,"stature":175,"weight":60,"available":true}'\\\n-c100-l100\\\n--assert-json-expression'$.name==NewUser'更为复杂的例子

添加header设定method添加body添加timeout

httptesterrun--method'POST'-u'http://localhost:1234/users'\\\n-H'Content-Type:application/json'\\\n-H'accept:application/json'\\\n-b'{"name":"NewUser","age":18,"stature":175,"weight":60,"available":true}'\\\n--timeout2s\\\n--loop100\\\n--concurrency100\\\n--assert-status-codes'200201'\\\n--assert-json-expression'$.name==NewUser'\n-e

-e表示如果出现失败或报错,将错误信息打印出来

文章到此结束,如果本次分享的testee是什么意思?用法、例句和轻量级http压测工具httptester的问题解决了您的问题,那么我们由衷的感到高兴!

本站涵盖的内容、图片、视频等数据,部分未能与原作者取得联系。若涉及版权问题,请及时通知我们并提供相关证明材料,我们将及时予以删除!谢谢大家的理解与支持!

Copyright © 2023