估价器测试工具的实现
之前的文章《估价器测试方案在测试过程的落地提效》中,已经对估价器系统进行了简单的介绍,分析了在测试估价器需求时遇到的问题,也逐一介绍了前期的调研成果、第一版工具的实现思路和落地效果。
但是,第一期工具仍存在待解决和优化问题。针对这些问题,本期文章将介绍一下具体是怎么解决的,以及进一步的优化。
一、背景
在估价器系统的估价流程中,从输入质检码到获取质检价格,中间涉及到了很多步的映射逻辑,包括: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 应用如下:
运行 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 并在前端展示。
作者:李雯
> 转转研发中心及业界小伙伴们的技术学习交流平台,定期分享一线的实战经验及业界前沿的技术话题。
> 关注公众号「转转技术」(综合性)、「大转转FE」(专注于FE)、「转转QA」(专注于QA),更多干货实践,欢迎交流分享~
版权声明: 本文为 InfoQ 作者【转转技术团队】的原创文章。
原文链接:【http://xie.infoq.cn/article/b47540b19bb6ef59cee118670】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论