最近大家好像都在上线data population tool工具。以前大家的想法都很简单,直接将用户的数据dump下来(以前还听到用户直接将硬盘拔下,然后人工运动到另一个地方插上),插入到数据库中,来模拟真正的客户场景进行测试或者压测。但是随着GDPR或者种种安全限制,这种做法基本不可取。
为什么要做data population tool?
如果产品受众单一,稳定,架构不是很复杂。那么完全可以通过撑大数据库来达到目标。但是针对于平台产品,目标受众众多,客户的使用场景不尽相同。单一的靠数据量来进行压测,结果并不可靠。数据分布维度考量同样重要。
综合以上想法,组合了一套“拳法”:dataTool+Spoon。

dataTool基本功能可以用来根据设定的field,根据设定的简单rule(类型,长短,正则等)快速生成csv文件。最高条数100,000,000。未来还是需要高度定制下,进一步扩展数据分布,比如我的订单状态(active/close)的比例等等。
{
"fields": [
{
"name": "entityType",
"type": "string",
"nullable": false
},
{
"name": "title",
"type": "string",
"nullable": false
},
],
"constraints": [
{
"field": "entityType",
"equalTo": "Request"
},
{
"field": "title",
"shorterThan": 15
}
}
执行的时候也是用@CommandLine.Command进行包装,保证工具可以通过命令行进行执行,也方便未来集成到CI中去。
数据生成部分搞定,那么数据的清洗和插入就选用了Spoon。
说到Spoon,刚工作那会就接触到了,当时主要用来对接不同数据源,拉取报表。这次用它来进行数据解析和发送request。


加载上述生成的csv文件,简单的用java进行处理拼接header和body,然后用http组件进行发送。每发送成功之后,并对返回结果进行解析,确保数据正常写入到数据库中。流程清晰简单,依赖是用变量来进行处理。不过遇到了内存溢出的问题,所以变量的池子也不能太大。当然这些准备都是为了能够上CI自动化进行准备的。不过好处在于学习成本低,可维护性强。
网友评论