在Java中如何伪造数据
标签:
it阿里技术保障javafakerjfairy |
在项目开发中,尤其在单元测试和压力测试的情况下,需要涉及到伪造数据这样才能方便我们进行很好的测试,所以你会发现测试数据库中有不少例如asdf,1111,223456这样奇奇怪怪的字符串,不用说,这就是程序员造的假数据。这样的数据其实也没什么大问题,反正都是假数据,但是就是那么别扭,不方便阅读,如asdf这个数据,究竟是用户名、还是地址或者产品名称,完全不方便理解。那么有没有一种更好的方法来造假数据同时更好看更专业一些?其实有的,而且很早就有,这就是faker。今天我们就介绍一下Java下的两款faker工具。
faker比较老牌一些,其他语言如ruby,python,perl都有对应的实现,严格来说java-faker是从其他语言借鉴而来的。如果你已经对其他语言的faker有了解,那么java-faker不错,API基本一致,不需要调整什么。 fairy的中文意思为小精灵,那么jfairy非常贴切,"小精灵"可以给你任何你想要的数据。jfairy的API相比更直接和明了一下,非常容易阅读,如果你还没有使用faker的话,那么jfairy非常不错。使用jfairy和java-faker可以造哪些假数据,如会员信息、公司信息、地址信息、网络、信用卡、email、电话手机等等,来一段代码大家看一下:
http://img4.tbcdn.cn/L1/461/1/fdd7d3b431e8b84654cca60569c2532dbdc366cc
在上述的jfairy代码中,你可以看出特性非常丰富,创建单个假的对象,如用户,fairy.person() 即可,同时还可以创建关联对象,如公司+用户;最后还支持locale,这样我们创建国内和国外用户、地址、手机电话等也非常方便,如淘宝需要国内的信息,aliexpress需要国外的信息,一个locale就搞定啦。
有了faker的机制,伪造的数据也比较简单和专业啦,同时开发人员不用再担心在单测的时候没有数据的问题,测试的同学也可以批量造假数据啦。对于电商行业来说,我们可能需要添加对商品、类目、交易、店铺等相关数据进行伪造,这样对我们的业务编程帮助非常大。虽然伪造听起来不那么顺耳,但是对程序员在造假数据的时候帮助还是非常大的,还是建议大家多使用jfairy。
我个人同时在内部gitlab发起一个jfairy-alibaba的项目,这样可以针对alibaba的业务场景进行扩展,同时能够整合各种faker的框架和工具,能够让jfairy-alibaba这个项目更专业、范围也更广、同时更方便一些。
作者:阿里巴巴国际B2B-AliExpress

加载中…