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

news/2024/11/29 22:30:14/

系统测试利器之挡板实战(一) - 简书

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

挡板起因

  • 当今是多服务多协作的时代,任何系统不再是孤岛,而是相互依赖。
  • 由于存在多系统间环境稳定难、数据准备难、并行开发难问题,造成多系统间联调测试需要大量的沟通成本、排查成本,为了解决这个让人头疼的问题,引出了挡板的概念。
  • 其实挡板测试主要是为了模拟外围的系统、服务、接口而开发的mock。
  • 如电商系统调用第三方支付进行订单的付款、充值等场景,在双方遵循接口协议的同时,不管开发联调、功能测试还是性能测试都能够让技术人员专注自己的功能实现。
  • 一句话为了减少外围系统的影响,在接口协议的框架下专注自己的功能,减少扯犊子。

解决问题

  • 挡板解决不稳定的问题:Mock服务非常简单,业务逻辑简单甚至没有,所以它足够稳定。
  • 快速构造复杂数据:通过自定义返回结果,可以构造非常复杂的数据,不需要第三方给我们准备数据,即可以做业务验证。
  • 快速构造异常场景:对于一些异常的情况,比如网络延迟高、重试机制、特殊异常返回都可以用挡板来构造。
  • 契约测试、驱动测试开发、性能测试、演示测试统统适用。

框架说明

  • 先复习下我们一般的系统架构,如下面的电商系统,会调用外围的系统支付、短信、实名认证、邮件通知等,对外通讯协议有tcp、https、http、smtp。

    image


    这里主要说明了调用外围系统的情景,其实内部之间的系统调用比这复杂。

  • 我们在引入挡板的架构后,挡板对于核心系统访问应该是透明的,是美丽的谎言,具体架构如下:

     

    image

  • 我们再深入了解下挡板的架构,从功能的角度分为动态数据、静态数据提供。

     

    image

  • 挡板前置

    提供接口的服务,用什么协议、用什么端口。

  • 静态数据

    静态的数据就是在写测试代码之前根据需要准备好,利用json数据格式(1.2)或其他文件的数据(1.1)存储,他的数据基本上是无需改动的。

  • 动态数据

    动态的数据就是在测试代码运行的时候才生成或根据业务去查询数据。

    数据无上下文关系只是一些动态的数据输出,利用动态的函数生成数据(2.1),动态的函数生成可以使用mockjs,它里面提供常用的数据生成,后面详细介绍。

    数据存在上下文关系,当前接口需要前面接口数据,利用数据库或NOSQL提供数据(2.2)。

  • 定时回调

    利用定时任务能够根据业务需求定时的把数据推到核心系统,是整个业务调用链路闭合。他的数据来自于静态或动态的数据。

技术选型

根据上面的架构要求,在繁多的开源框架中,选择了<label style="color:red">mountebank+mockjs</label>,其他的框架很多在这里不做评论,软件没有好坏之分,适合很重要!

mountebank本身相当强大,引用官方的话说mountebank可以提供跨平台、多协议的测试mock,就像我们所说的桩代码一样提供测试驱动,
是当前开源当中最强大的,完全可以治愈你的痛。

一句话mountebank简单便捷的实现挡板服务。

mountebank 简写 mb,注意后面直接称呼了。

mockjs本身也是可以提供mock的功能,我主要是看中了他强大的丰富的数据类型,生成动态的数据那是相当方便。
先尝尝鲜:

Mock.mock({"number|1-100": 100
})

这个函数就很容易的得到1到100的随机数,相当方便吧。

环境安装

由于mountebank是基于nodejs,所以首先要安装下nodejs,版本要求是v6或以上(他的强大之处在这里就不多说了,做前端的朋友心里有数)。

官方下载https://nodejs.org/en/download/

或者

yum install -y nodejs

那就mb和其他的组件一起安装了

#安装mountebank
npm install -g mountebank
#http请求提交试用
npm install superagent --save
#日志打印
npm install log4js
#获取UUID试用
npm install uuid --save
#获取时间
npm install moment
#mysql连接用
npm install mysql -S
#定时任务
npm install cron
#mock常用函数组件
npm install mockjs

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



作者:老杜杂谈
链接:https://www.jianshu.com/p/e04489add6ce
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


http://www.ppmy.cn/news/403781.html

相关文章

BGP线路是什么意思?BGP服务器租用

在选择服务器配置时是否经常听到服务器商说BGP服务器&#xff0c;BGP线路&#xff0c;对于刚接触服务器的朋友来说&#xff0c;BGP是什么意思&#xff1f;原理是什么&#xff1f;今天我将和你们分享 BGP通俗地讲就是一种协议&#xff0c;专业词称边界网关协议&#xff08;BGP&…

【Flutter】如何在 Flutter 中获取设备 ID

文章目录 一、 前言二、 设备 ID 的重要性1. 什么是设备 ID2. 设备 ID 的作用 三、 在 Flutter 中获取设备 ID1. 需要的工具和库2. 简单代码示例3. 完整可以运行的代码 四、 注意事项1. 权限问题2. 设备兼容性问题 五、 总结 一、 前言 在移动应用开发中&#xff0c;有时我们需…

RTL8211E应用(一)之芯片功能介绍

TL8211E是Realtek瑞昱推出的一款高集成的网络接收PHY芯片&#xff0c;它符合10Base-T&#xff0c;100Base-TX和1000Base-T IEEE802.3标准&#xff0c;可以通过CAT 5 UTP电缆及CAT 3 UTP电缆传输网络数据&#xff0c;该芯片在网络通信中属于物理层&#xff0c;用于MAC与PHY之间的…

以太网PHY层芯片LAN8720A简介

1、LAN8720A简介 2、芯片管脚配置 3、硬件电路

Nginx安装官方YUM源安装部署

注意&#xff1a;我使用的是Linux Rocky8.6版本&#xff0c;兼容部分CentOS版本&#xff0c;Ubuntu和其他OS版本&#xff0c;命令、文件路径、相关环境版本需要参考官方文档。 Nginx安装部署 安装Nginx软件的方式有很多种&#xff0c;分为如下几种 1.源码编译>Nginx (1.版本…

MT7628,MT7622

文章目录 1、MT76281.1 MT7628芯片简介1.2 芯片特性 2、MT76222.1 MT7622芯片简介 1、MT7628 1.1 MT7628芯片简介 MT7628 是联发科技 2014 年底发布的业界新一代 2T2R 802.11n Wi-Fi AP/路由器系统单芯片解决方案(SoC)。这款全新 SoC 为智能家庭内的数据、语音和影像应用程序…

Liunx下Intel无线网卡驱动安装

首先查看网卡型号&#xff0c;指令&#xff1a; lspci | grep -i net 如果是Intel的无线网卡&#xff0c;可以参考以下方法。 1.在这个页面中查找对应的无线网卡型号&#xff08;以我的8260为例&#xff09; 前面是型号&#xff0c;后面是最低系统内核版本&#xff0c;往下翻可…

[Datasheet] PHY LAN8720网络芯片解读

先聊一下这款芯片的优点&#xff0c;电力、工业、医疗电子都有过这款PHY芯片的应用&#xff0c;为何如此受欢迎&#xff0c;一定是有原因的&#xff1b; 1、封装体积很小&#xff0c;24-pin QFN&#xff0c;package (4 x 4 x 0.85mm height)&#xff1b; 2、10/100M自适应&am…