支持多种服务mock的工具 OpenMock

VSole2022-08-01 10:23:46

1 推荐理由

当项目依赖比较多的其他服务,在测试时,通常连接是这些服务的test环境,但是这样做第一 无法保证被依赖服务用例的完备性,第二 在实际测试过程中可能会遇到比较多费时费力的联调问题。本次推荐的openmock工具,通过mock的手段,可以简化此类项目的测试过程。

2 功能介绍

openmock支持通过yaml文件,配置HTTP、gRPC、Kafka、AMQP (e.g. RabbitMQ) 等协议的mock服务。

3 使用指南

3.1 安装

下载代码,并进入目录:

$ git clone git@github.com:checkr/openmock.git
$ cd openmock

使用docker安装:

$ docker run -it -p 9999:9999 -v $(pwd)/demo_templates:/data/templates checkr/openmock 

$ docker-compose up

检查是否安装成功:

$ curl localhost:9999/ping

3.2 配置示例

openmock的配置文件可以分成4大部分:

  1. Schema:openmock可以配置多个行为,每个行为通过key和kind来表示;
  2. Except:用来定义协议类型(HTTP、gRPC、Kafka、AMQP),以及触发当前行为的条件;
  3. Action:用来定义当前行为的执行结果;
  4. Template:用来定义和组装响应payload。

下面是HTTP mock server的配置示例:

# 这里是 Template
- key: http-request-template
  kind: Template
  template: >
    { "http_path": "{{.HTTPPath}}", "http_headers": "{{.HTTPHeader}}" }
# 这里也是Template
- key: color-template
  kind: Template
  template: >
    { "color": "{{.color}}" }
# 这里是Schema
- key: teapot
  kind: AbstractBehavior
# 这里Except
  expect:
    http:
      method: GET
      path: /teapot
# 这里Action
  actions:
    - reply_http:
        status_code: 418
        body: >
  # 这里使用了Template
          {
            "request-info": {{ template "http-request-template" . }},
            "teapot-info": {{ template "color-template" .Values }}
          }
- key: purple-teapot
  kind: Behavior
  extend: teapot
  values:
    color: purple

测试一下,可以看到如下结果:

$ curl localhost:9999/teapot
{"request-info":{"http_path":"/teapot","http_headers":""},"teapot-info":{"color":"purple"}}

更多示例请参考:

https://github.com/checkr/openmock/tree/master/demo_templates

4 总结

openmock 通过yaml文件可以实现快速mock服务,并且可以支持多种协议,比如HTTP、gRPC、Kafka、AMQP等。在项目测试时,可以试试使用openmock,看看能否提高项目的测试效率。

mock
本作品采用《CC 协议》,转载必须注明作者和本文链接
YApi 是高效、易用、功能强大的 api 管理平台是国内某旅行网站的大前端技术中心开源项目,使用mock数据/脚本作为中间交互层,为前端后台开发与测试人员提供更优雅的接口管理服务,该系统被国内较多知名互联网企业所采用。
YApi接口管理平台远程代码执行0day漏洞,攻击者可通过平台注册用户添加接口,设置mock脚本从而执行任意代码。
威胁行为者可以利用一种名为 Mockingjay 的新进程注入技术绕过安全解决方案,在受感染的系统上执行恶意代码。值得指出的是,每种方法都需要结合特定的系统调用和 Windows API 来执行注入,从而允许防御者制定适当的检测和缓解程序。然而,值得注意的是,可能还有其他具有类似特征的易受影响的 DLL。
1 推荐理由当项目依赖比较多的其他服务,在测试时,通常连接是这些服务的test环境,但是这样做第一 无法保证被依赖服务用例的完备性,第二 在实际测试过程中可能会遇到比较多费时费力的联调问题。
安全公司 Sentinel One 在最新博文中解释了该攻击的工作原理,攻击者可以在系统中植入 Remcos RAT 恶意软件。
是否会校验,在代码变更的时候 sql 语句是否也发生了变更呢?针对以上两个问题,sqlmock 可以完成对 sql 语句的单侧,让你对 orm 生成的 sql 了如指掌,同时清晰 test raw sql 也让 review 的同事快乐加倍。
主要因为最近公司上了代码质量管控的指标,会考评各个项目的单元测试覆盖率,以及sonar扫描出来的各种问题,很多老项目老代码,或者着急交付的项目,单元测试严重缺失,覆盖率只有5%不到。首先我们打开一个类,这个类就是我们即将要作为实验的类,这个类有7个public方法,因为Squaretest生成的单元测试方法都是只能生成public的,当然这也是合理的嘛!毕竟private的肯定被public调用了。
二. Apifox 做的改进1. Apifox的整体功能定位Apifox 是 API 文档、API 调试、API Mock、API 自动化测试一体化协作平台。支持 Markdown 所见即所得地编写非 API 文档的普通文档。API 文档支持密码保护和生效时间,可生成多份不同内容和权限的文档。支持绑定接口,接口发生变化时,自动更新测试用例。支持执行循环次数和用例之间设置时间间隔。
大厂基本为了程序的安全,会使用大量内联SVC去调用系统函数,以此来保护程序的安全。如何实现SVC指令的IO重定向,成为最大的问题。内核态是当Linux需要处理文件,或者进行中断IO等操作的时候就会进入内核态。当arm系列cpu发现svc指令的时候,就会陷入中断,简称0x80中断。
Laravel官方发布安全通告,修复了一个存在于Laravel中的远程代码执行漏洞。漏洞编号:CVE-2021-43503,漏洞威胁等级:严重,漏洞评分:9.8。
VSole
网络安全专家