估价器测试工具的实现

一、背景

在估价器系统的估价流程中,从输入质检码到获取质检价格,中间涉及到了很多步的映射逻辑,包括:spu映射、外部检测项映射等等,这些映射关系都是在运营手动上传的Excel中配置的。

在对估价器系统进行测试时,对这些映射关系的校验在整个测试工作中占比很大。对于每一条映射关系,如果不能借助测试工具,就要手动筛选Excel映射模板获取结果,再与估价器代码输出的结果进行比对。人工筛选不仅耗时耗力,还有可能眼花手抖导致出错。

因此,我们开发这个工具的目的就是将手动执行的过程转变为自动化方式实现,提高测试效率和准确率。

二、整体流程

第一期工具利用python脚本实现了筛选Excel的过程。主要流程如下图所示:

图片

在此基础上,我们把python脚本服务化,同时,提供了前端交互,把筛选的结果通过前端页面对比展示。

用户通过前端发起请求调用java服务,java服务获取入参后,调用质检服务获取到质检报告,解析质检报告后发送http请求。

python服务获取请求后执行映射过程,并将筛选结果写到服务器上。

Java服务读取服务器上的筛选结果后,进行处理并返回前端页面展示对比结果。

主要的流程如下图所示:

图片

三、解决方案和实现过程

3.1 python脚本维护问题

问题描述:

python脚本是直接放在java服务中的,修改一次脚本,就需要把整个服务重新上线一次。不仅维护的成本高,而且其他服务无法调用。

解决方案:

Python脚本服务化:我们选择把python脚本封装成一个http接口,java服务通过发送请求来运行脚本。这样脚本迭代不会影响到其他服务,降低维护成本。

Python服务化框架选型:flask;flask的优势是小巧、自由、灵活,一个python脚本就可以实现web项目。

实现过程:

封装接口

(1)flask的使用,举例:

在hello.py文件中写一个最简单的flask应用如下:

from flask import Flask,request
app = Flask(__name__)
@app.route('/out')
def hello_world():
    return 'Hello World!'
if __name__ == '__main__':
    app.run(host='127.0.0.1', port=5000, debug=True)

运行hello.py,打开浏览器访问http://127.0.0.1:5000/out’,页面上会展示Hello World!

(2)具体设计:

图片

(3)具体实现

首先,通过@app.route(“/req”, methods=[‘GET’, ‘POST’])获取请求,methods=[‘GET’, ‘POST’]表明这个URL允许GET和 POST两种请求方式。

然后,用flask中的request方法来处理请求。通过request.method获取前端的请求方式,通过request.values获取到前端的入参。

图片

调用接口

通过解析质检报告获取到spu、sku等参数,这些参数就是后续用来筛选映射模板的条件。

把参数存为map的形式后,向python服务发送http请求,来执行映射流程。

(1)具体设计:
图片

(2)具体实现:
图片

3.2 Excel文件调用问题

问题描述:

Excel文件也是放在java服务的resource文件夹下。映射模板会频繁改动,服务也要频繁地重新上线。

同时,java中使用了System.class.getResource的方法获取Excel文件路径,在本地时可以调用成功,部署到服务器上之后,获取的路径就不对了。

解决方案:

我们选择把Excel文件放在服务器上,映射模板有改动的时候,只需要重新上传Excel文件即可。

实现过程:

图片

四、整体效果

第一期工具把映射结果写入了Excel中,展示结果如下:

图片

在测试时,需要手动下载Excel查看筛选结果,一个估价的过程需要查看6个Excel。本期通过前端页面展示,我们在估价器DDD重构的测试项目时,输入品类、估价场景和质检码点击执行,只需3s左右时间,就能完成整个估价流程,最终的质检价格、每个映射关系的筛选条件和筛选结果都一一清晰展现。

图片

五、后期待完善

Excel文件直接写在了服务器上,所以java服务必须要跟python服务部署在同一台服务器,才能获取到筛选结果,进而执行后面的流程,后续希望能够找到一个较好的方法。

目前展示了筛选的结果,可以与开发的结果进行diff并在前端展示。

在这里还是要推荐下我自己建的软件测试学习Q群:746506216,群里都是学测试的,如果你想学或者正在学习测试,欢迎你加入,大家都是测试党,不定期分享干货(只有软件测试相关的),包括我自己整理的一份2022最新的Python自动化测试进阶资料和零基础教学,欢迎进阶中和对测试感兴趣的小伙伴加入!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值