注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

网易杭州 QA Team

务实 专注 分享 做有态度的QA

 
 
 
 
 

日志

 
 

Nginx openresty在HTTP接口测试中的妙用  

来自刘成   2015-09-23 19:55:22|  分类: 接口测试 |举报 |字号 订阅

  下载LOFTER 我的照片书  |
   前段时间NOS项目这边有个数据灾备的测试,其中有一些异常测试场景需要模拟,鉴于设计方案的保密性质,我画了一个简单的图来帮助大家有助于了解当时的测试场景,具体如下图:
Nginx openresty在HTTP接口测试中的妙用 - 网易杭州QA - 网易杭州 QA Team

测试场景简要介绍:

笔者所要测试的是一个数据同步的逻辑,通过数据同步逻辑将一个分区的数据同步到另外一个分区,具体架构如上图显示:

1.       用户上传数据到模块A,模块A针对用户正确的请求进行处理将相应的数据存储,错误请求直接返回对应错误

2.       模块A在接收数据时会将相应的正确同步描述信息记录到模块B中表中

3.       模块C按照表中操作描述信息重放操作,将数据同步到模块D

 

测试过程中需要对模块C一些异常的情况进行验证,验证主要包括模块C触发的返回非200的情况,比如C使用一些非法参数返回4xx的情况:

从图中可以看出被测模块处在中间模块,从整个架构来看对于测试人员测试数据的输入只能在模块A进行,我们可以控制模块A的数据源,而我们的被测对象是模块C,它的数据是从模块B得来,而A写入模块B数据全部是正确数据,对于我们来测试模块C一些异常的情况无法满足,回头来看只能从两个点出发,一是修改B中表中数据,二是在D端返回时进行特殊处理。

修改B表中数据,这需要去修改数据库中表中数据,不易操作,且相当于将模块A隔离,不能保证系统完整性。问题自然也就落在了模块D上,只能通过模块D来模拟不同的返回结果。

如何模拟,仅凭服务端本身接收数据都是正确数据不能去改变返回结构,只能引入第三方模块,在模块D前面添加Nginx层,通过Nginx来返回期望结果,进而验证中间模块C接收到返回信息后的处理逻辑。

     Nginx具体的配置不再敖述,下面通过几个场景展示Nginx在测试中可以帮我们做的事情。 


场景1:模拟返回特定状态码4xx

处理方法:打开nginxnginx.conf配置文件,修改location 

location / {

        return 400

 }

Location匹配规则可以根据不同场景进行定义。

场景2:模拟返回特定json数据

location /{

     default_type application/json;

     return 200 '{"update":"no"}';

 }

场景3:模拟输出一些简单的信息

location /{

     echo "Hello,World!";

     return 200;

 }

其中场景3需要安装依赖echo模块,具体可参考《echo-nginx-module》这篇文章。

以上3中场景,可以让我们很好的来模拟服务端返回的信息,更好的协助我们来完成测试。笔者对Nginx了解较浅,或许你有更好的相关经验分享,欢迎交流!!谢谢!


  评论这张
 
阅读(920)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016