加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

在Java中如何伪造数据

(2014-09-23 20:32:34)
标签:

it

阿里技术保障

java

faker

jfairy

在项目开发中,尤其在单元测试和压力测试的情况下,需要涉及到伪造数据这样才能方便我们进行很好的测试,所以你会发现测试数据库中有不少例如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  高级技术专家 陈立兵  @linux_china

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有