系统测试利器之挡板实战(二)

mb概述

安装好mb以后,直接通过mb命令启动服务,默认端口是2525,浏览器输入(http://localhost:2525) 访问试试看!

在RHEL7和Centos7下可以设定后台服务自动启动,配置的方法可以在这里配置方法获得,在这里不多扩展。
本人喜欢写段shell脚本来启动、停止mb服务,详情见后面。

  • mb命令启动常用参数
选项 描述 默认
--command start,stop,restart, replay(删除代理,转化为代理捕获的响应值,后面代理详解) start
--port 2525 指定mb运行的端口好,默认是2525 2525
--configfile imposters.ejs mountebank将加载指定的模板文件,为了方便管理会把配置存储在EJS模板中。后面详细说明。 N/A
--logfile mb.log mountebank用于存储日志的文件 mb.log
--loglevel debug 日志级别 debug, info, warn, error info
--allowInjection 是否允许脚本注入,mb支持针对谓词, 存根响应,行为装饰, 等待行为函数和 tcp请求解析的 JavaScript注入,但默认情况下禁用它们。 false
--localOnly 请求隔离,仅接受来自localhost的请求 false
--ipWhitelist 白名单环境隔离 所有IP地址
--pidfile 为stop命令存储pid的文件 mb.pid
  • 常用术语

    1. 冒名顶替者(imposter)

    从社会角度来说他就是一个诈骗团伙,里面会有很多的骗子。
    从技术角度来说imposter就是一个服务或系统骗子,他有端口、协议提供测试的服务,可以根据测试需要创建多个imposter。

    1. 存根(stub)

    用于为imposter生成响应的一组配置。一个imposter可以具有0个或多个stub。

    从社会角度来说就是骗子公司的一个部门或产品线。

    从技术角度来说stub就是提供一个服务的响应,一个请求的地址。

    1. 谓词(predicate)

    配置响应stub的条件。每个stub可以有0个或更多predicate。

    从社会角度来说就是要找相应的人做相应的事。

    从技术角度来说predicate就是根据条件做相应的功能,返回对应的数据。

    1. 响应(response)

    产生响应数据。每个stub可以有0个或更多响应。

    1. 响应类型(response type)
      每个stub响应由定义响应行为的特定响应类型定义。目前支持的响应类型是:is,proxy,inject。

    is是默认的类型,就是一般的应答输出。

    proxy是代理响应类型,它允许记录重放行为。

    inject允许您注入JavaScript函数以创建响应对象。

    1. 存根行为(stub behavior)

    向响应添加其他的自定义处理,如可以后面通过shell脚本执行nodejs来获取动态的数据。

    如果对上面的概念还不明白,没有关系,后面就让代码给你解释。

  • 代码说明一切

前面对于他的结构说明了一番,不懂得没有关系,我们go on!
下面就是一个imposter,其实他就是一个json格式的文件,为了方便说明我在json里面加了注释(懂技术的人都会明白,这样会死的很惨!)。

{
  "port": 8081,
  "protocol": "http",
  "stubs": [
    {
      "predicates": [
        {
          "equals": {
            "method": "POST",
            "path": "/customers/123"
          }
        }
      ],
      "responses": [
       {
        "is": {
            "statusCode": 200,
            "headers": {
                "Server": "Apache-Coyote/1.1",
                "Access-Control-Allow-Origin": "*",
                "Content-Type": "text/json;charset=UTF-8",
                "Content-Length": 298,
                "Date": "Tue, 05 Sep 2017 06:49:14 GMT",
                "Connection": "close"
            },
            "body": {
       
                "head": {
                    "rspcode": "100",
                    "respMsg": "成功",
                    "serialNo": "d7af14e5-a99e-4881-9b1b-695b7a760a64"
                },
                "body": {
                    "code": "S4393493",
                    "startDate": "2019-04-09",
                    "level": "3",
                    "endDate": "2020-04-08"
                }
       
            }
        },
        "_behaviors": {
            "shellTransform": ["node ./dcs/test.js"]
        }
       }
      ]
    },
    {
      "responses": [
        {
          "is": { "statusCode": 404 }
        }
      ]
    }
  ]
}

正常访问的情况下返回结果为:

{
    "head": {
        "rspcode": "100",
        "respMsg": "成功",
        "serialNo": "d7af14e5-a99e-4881-9b1b-695b7a760a64"
    },
    "body": {
        "code": "S4393493",
        "startDate": "2019-04-09",
        "level": "3",
        "endDate": "2020-04-08"
    }
}

是不是很简单?

系统测试利器之挡板实战(一)
系统测试利器之挡板实战(三)
系统测试利器之挡板实战(四)
系统测试利器之挡板实战(五)
系统测试利器之挡板实战(六)
系统测试利器之挡板实战终结(七)

你可能感兴趣的:(系统测试利器之挡板实战(二))