挡板测试大概就是:在一些跨系统的性能测试项目中,往往由于客观因素的限制(测试硬件资源有限、多系统之间的协调等),我们无法搭建一个完整的测试环境来完成测试工作。
此时,我们一般会搭建出被测系统,然后采用软件程序来模拟其他相关系统的功能。该软件程序一般被称为挡板
挡板能解决的问题:
1、由于调用第三方系统而无法给客户搭建一套演示环境
2、由于调用第三方系统而无法进行稳定的开发测试
3、由于调用第三方系统而无法进行自己系统的性能测试
在项目开发或者做性能压测过程中,项目中会有调用外网第三方接口的场景(类似支付,发送短信,ocr人脸识别,语音识别接口)。当开发时,对方不愿意提供测试服务器给我们调用,或者有的接口会按调用次数进行计费。
同时像支付,短信都是收费的服务,大量的压测,成本是一个很大的问题,当联调时,第三方的测试服务器也可能会出现不稳定,如果他们的服务挂了,我们就一直等着服务恢复,那么这就相当影响效率了。
如果我们在开发时,就定义一个挡板或者mock服务,在发起调用时,不直接调到第三方接口,而是调到我们自己的挡板代码或者mock服务,这样就可以避免这些问题了,同时在压测过程中可以避免第三方接口的性能瓶颈或者走公网的网络带宽瓶颈。
使用挡板的好处:
1、挡板代码,不需要侵入业务代码,可以根据入参做一些动态结果返回
2、不需要专门开发一个挡板服务,并且在每次启动客户端都先启动挡板服务
3、可以自由选择使用挡板还是Mock数据
目前已经存在很大开源的挡板程序可供选择(moco,Mockito,EasyMock,jMock,JMockit),个人比较喜欢tornado作为开发框架,因为其高效的异步,可以支持高并发,避免挡板程序成为瓶颈,一般的python开发框架有django或者flask都可以
自己开发的挡板更灵活,满足功能测试同事的需要
挡板的目录结构:
此次开发的是第三方接口,功能是个人风险信息查询,接口地址是:https://api-vip1.huadata.com/result
以上就是第三方接口的真实返回接口,发现还存在签名验证,对于这样的接口,不知道内部逻辑,测试起来也是非常麻烦
由于压测环境没有外网,所以压测调试脚本配置的外网环境肯定失败,其实是我们的业务代码中回调用第三方的接口,但是通过挡板可以完成
案例:直接在配置中心将外网的接口地址改成挡板的地址,通过lr调用接口
查看服务端:
说明挡板测试成功
其实也可以通过postman调用:
异常场景:便于功能测试人员模拟异常场景
作为性能测试,会经常存在开发挡板的场景,否则一直依赖开发改代码,这样就不用求别人
案例2:身份证图片ocr识别接口挡板
测试环境测试完成后,版本上线以后,关闭了第三方提供的外网身份证识别接口
所以,现在想归回一下问题,流程都通不过,需要重新申请开通外网,同时这个接口是收费的,调用一次都会收费
开发完挡板,直接配置到挡板接口
短信挡板的应用:
挡板应用生成的验证码
自己需要测试的应用获取到的短信验证码: