当前位置: 首页 > news >正文

官方网站怎么找培训课程网站

官方网站怎么找,培训课程网站,网站报价怎么做,那个软件可以做三个视频网站引言 在编写 HTTP 服务的过程中#xff0c;集成测试 1 是保证程序正确性的重要一环#xff0c;如下图所示#xff0c;其基本的流程就是不断向服务发起请求然后校验响应的状态和数据等#xff1a; 为大量的 API 和用例编写测试是一件繁琐的工作#xff0c;而 Loadgen 2 正…引言 在编写 HTTP 服务的过程中集成测试 1 是保证程序正确性的重要一环如下图所示其基本的流程就是不断向服务发起请求然后校验响应的状态和数据等 为大量的 API 和用例编写测试是一件繁琐的工作而 Loadgen 2 正是为了简化这一过程而设计的。 一个简单的测试 假定我们在 127.0.0.1:9100 端口监听了一个 Pizza 3 服务现在我们通过如下配置来测试集合collection的创建 # loadgen.yml requests:- request:method: PUTurl: http://127.0.0.1:9100/test_create_document然后运行 loadgen -config loadgen.yml $ loadgen -config loadgen.yml__ ___ _ ___ ___ __ __/ / /___\/_\ / \/ _ \ /__\/\ \ \/ / // ///_\\ / /\ / /_\//_\ / \/ / / /__/ \_// _ \/ /_// /_\\//__/ /\ / \____|___/\_/ \_/___,\____/\__/\_\ \/[LOADGEN] A http load generator and testing suite. [INF] warmup started [INF] loadgen is up and running now. [INF] [PUT] http://127.0.0.1:9100/test_create_document - [INF] status: 200, error: nil, response: {success:true,collection:test_create_document} [INF] warmup finished ...为了便于阅读笔者对程序输出进行了简化实际会略有区别 可以看到Loadgen 实际上帮我们做了类似这样的操作 curl -XPUT http://127.0.0.1:9100/test_create_document一些简单的测试 上述示例中我们只测试了创建单个集合但是实际情况下短时间内会有许多请求涌入对于创建大量的集合我们又该如何测试呢 这里就需要用到变量 4 的概念 # loadgen.yml variables:- name: idtype: sequence requests:- request:method: PUTurl: http://127.0.0.1:9100/test_create_document_$[[id]]上述配置中我们定义了一个名为 id 的变量sequence 是一个特殊的类型——每次被读取时它的值会递增因此 Loadgen 会不断发起类似这样的请求 curl -XPUT http://127.0.0.1:9100/test_create_document_0 curl -XPUT http://127.0.0.1:9100/test_create_document_1 curl -XPUT http://127.0.0.1:9100/test_create_document_2 ...在 Pizza 的日志中也记录了这些请求 $ pizza___ _____ __________ _/ _ \\_ \/ _ / _ / /_\/ /_)/ / /\/\// /\// / //_\\ / ___/\/ /_ / //\/ //\/ _ \ \/ \____/ /____/____/\_/ \_/[PIZZA] The Next-Gen Real-Time Hybrid Search AI-Native Innovation Engine. [INFO] Collection test_create_document_0 created [INFO] Collection test_create_document_1 created [INFO] Collection test_create_document_2 created ...不那么简单的测试 目前为止我们只是不断的向一个服务“塞”大量的请求但比起发起请求我们常常更关心程序的响应是否符合预期也就是说响应需要满足我们定义的一些条件这可以通过 Loadgen 提供的 断言 5 功能来实现 # loadgen.yml variables:- name: idtype: sequence runner:# 检查返回值是否正常assert_error: true# 检查断言是否通过assert_invalid: true requests:- request:method: PUTurl: http://127.0.0.1:9100/test_create_document_$[[id]]assert:equals:# 注意这里我们故意设置了一个“不正常”的值以迫使断言失败_ctx.response.body_json.success: false在上述配置中我们启用了 Loadgen 的检查然后定义了一个会失败的断言 equals 会校验给定路径 _ctx.response.body_json.success 是否与期望值 false 相等_ctx.response.body_json 表示 JSON 格式的响应体success 表示响应体中该字段对应的值可以用 path.to.nested.key 来访问嵌套的字段 也就是说给定响应体 {success:true,collection:test_create_document}Loadgen 会检查 success 的值是否为 false $ loadgen -debug -r 1 -d 3 -config loadgen.yml #0 request, PUT http://127.0.0.1:9100/test_create_document_$[[id]], assertion failed, skiping subsequent requests [WRN] _ctx.response.body_json.success is not equal to expected value: true #0 request, PUT http://127.0.0.1:9100/test_create_document_$[[id]], assertion failed, skiping subsequent requests [WRN] _ctx.response.body_json.success is not equal to expected value: true #0 request, PUT http://127.0.0.1:9100/test_create_document_$[[id]], assertion failed, skiping subsequent requests [WRN] _ctx.response.body_json.success is not equal to expected value: true #0 request, PUT http://127.0.0.1:9100/test_create_document_$[[id]], assertion failed, skiping subsequent requests [WRN] _ctx.response.body_json.success is not equal to expected value: true上述命令我们使用了 -debug 启用更详细的报错-r 1 -d 3 减少发起的请求数1req/s 持续 3s 还有一个需要注意的细节是 ... is not equal to expected value: true这里报告的是 success 字段实际的值而不是断言中定义的期望值。 可以看到Loadgen 每次请求的断言都失败了不过我们可以通过日志来快速定位出错的原因以便于调试。 更进一步的测试 现在我们创建了大量的空集合是时候向其中添加一些文档document了但是一个首要解决的问题是每次测试创建的集合名称是带有 $[[id]] 这个变量的我们如何知道应该向哪个集合上传数据呢一个可靠的解决方案是借助 Loadgen 的寄存器 6 功能 # loadgen.yml variables:- name: idtype: sequence runner:assert_error: trueassert_invalid: true requests:- request:method: PUTurl: http://127.0.0.1:9100/test_create_document_$[[id]]assert:equals:_ctx.response.body_json.success: trueregister:# 把响应体的 collection 字段赋值给 $[[collection]]- collection: _ctx.response.body_json.collection- request:method: POST# 在上个请求创建的集合里添加一个文档url: http://127.0.0.1:9100/$[[collection]]/_docbody: {hello: world}assert:equals:_ctx.response.body_json.result: created上述示例中我们利用动态注册的变量记录了每次测试创建的集合以便于后续请求使用。 最后的优化 为了使我们的配置更加灵活和“便携”我们可以用环境变量来替换一些硬编码的值 # loadgen.yml variables:- name: idtype: sequence runner:assert_error: trueassert_invalid: true requests:- request:method: PUT# 读取 PIZZA_SERVER 这个环境变量url: $[[env.PIZZA_SERVER]]/test_create_document_$[[id]]assert:equals:_ctx.response.body_json.success: trueregister:- collection: _ctx.response.body_json.collection- request:method: POSTurl: $[[env.PIZZA_SERVER]]/$[[collection]]/_docbody: {hello: world}assert:equals:_ctx.response.body_json.result: created这样就可以通过 PIZZA_SERVERhttp://127.0.0.1:9101 loadgen -config loadgen.yml在不同的 Pizza 服务上运行测试。 https://en.wikipedia.org/wiki/Integration_testing ↩︎ https://www.infinilabs.com/docs/latest/gateway/getting-started/benchmark ↩︎ https://www.infinilabs.com/en/docs/latest/pizza ↩︎ https://www.infinilabs.com/docs/latest/gateway/getting-started/benchmark#变量的使用 ↩︎ https://www.infinilabs.com/docs/latest/gateway/getting-started/benchmark#返回值判断 ↩︎ https://www.infinilabs.com/docs/latest/gateway/getting-started/benchmark#动态变量注册 ↩︎
http://www.yingshimen.cn/news/96210/

相关文章:

  • 深圳有哪些做网站公司怎么免费申请网站域名
  • 网站的基础服务h5牛牛棋牌源码
  • 开发一个企业网站报价建筑企业网站模板免费下载
  • 随州网站建设有限公司广东省建设监理协会网站
  • 网站英语培训网站数据迁移教程
  • flash网站效果网站突然显示 建设中
  • 安卓手机网站开发工具怎么做网站的排名优化
  • 国外设计网站网址17网站一起做网店的流程
  • 无锡哪里有做网站的网站建设期间工作总结
  • 福田做商城网站建设哪家便宜网站安全建设的重要性
  • 网络营销网站建设方案网站建设策划书范本
  • 易加网站建设方案wordpress简洁淘宝客免费主题
  • 东莞网站建设的收费石家庄市工程造价信息网
  • 做it的在哪个网站找工作定制网站大概多少钱
  • 网站建设硬件要求网站播放mp3代码
  • 国外销售网站appcms程序怎么做网站
  • 制作手机网站工具如何搭建手机网站
  • 太原网站设计公司家具网站案例
  • 珠海专业网站制作公网站流量高有什么用
  • 新浪网网站的建设费用预算网站建设容易学吗
  • 电子商务网站开发流程投资理财网站建设
  • 移动网站 html5注册公司需要多少资金
  • wordpress wp-stats连云港网站优化公司
  • 做响应式网站制作网站建设后台管理怎么进入
  • 公司logo查询网站门窗厂家东莞网站建设
  • 长沙网站建设搭建广州白云区网站建设公司
  • 淄博网站制作定制网站建设预算明细
  • 规范12388举报网站建设管理网站建设单选
  • 郑州做个人网站的公司淮北论坛租房信息
  • 商务网站的建设与管理廊坊做网站多少钱