网易首页 > 网易号 > 正文 申请入驻

测试老司机手把手教你造数据:5款测试数据生成工具实战

0
分享至

在软件测试的日常工作中,测试数据的准备往往是非常耗时且容易被忽视的环节。手工造数据不仅效率低下,还容易出现数据覆盖不全面、边界场景遗漏等问题。

作为一名资深测试工程师,我深知高质量测试数据对测试效果的重要性。今天,我将为大家深入剖析五款主流的测试数据生成工具:Faker、Mockaroo、JSON Generator、Mimesis和Chance.js,帮助你快速掌握测试数据生成。



为什么需要专业的测试数据生成工具?

在讨论具体工具之前,我们先来理解为什么需要这些工具。传统的测试数据准备方式存在以下痛点:

●效率低下:手工编造数据耗时费力,特别是需要大量数据时

●真实性不足:随意编造的数据往往缺乏真实场景的特征

●覆盖不全:容易遗漏边界值、特殊字符、多语言等场景

●维护困难:数据硬编码在测试脚本中,修改和复用都很麻烦

●隐私风险:使用生产环境真实数据存在合规风险

专业的测试数据生成工具能够帮我们解决这些问题,让测试数据的准备工作变得高效、规范、可控。

工具一:Faker-Python生态的数据生成王者

工具概述

Faker是Python生态中最流行的测试数据生成库,支持多种语言和地区的本地化数据生成。它的设计理念是“简单易用,功能强大”,非常适合Python开发者和测试工程师使用。

核心特性

●多语言支持:支持50+种语言和地区,包括中文、英文、日文等

●丰富的数据类型:姓名、地址、电话、邮箱、公司、文本、日期等

●可扩展性强:支持自定义Provider,可以生成业务特定的数据

●种子机制:通过设置种子值,可以生成可重复的测试数据



实战案例

pip install faker

# generate_fake_data.pyfrom faker import Faker# 创建中文数据生成器fake_zh = Faker('zh_CN')# 生成基础个人信息print(f"姓名: {fake_zh.name()}")print(f"地址: {fake_zh.address()}")print(f"电话: {fake_zh.phone_number()}")print(f"邮箱: {fake_zh.email()}")# 生成公司信息print(f"公司: {fake_zh.company()}")print(f"职位: {fake_zh.job()}")# 生成日期时间print(f"生日: {fake_zh.date_of_birth(minimum_age=18, maximum_age=65)}")# 批量生成用户数据users = []for _ in range(100): user = { 'id': fake_zh.uuid4(), 'username': fake_zh.user_name(), 'name': fake_zh.name(), 'email': fake_zh.email(), 'phone': fake_zh.phone_number(), 'address': fake_zh.address(), 'created_at': fake_zh.date_time_this_year() } users.append(user)# 使用种子保证数据可重复Faker.seed(12345)fake_seeded = Faker('zh_CN')print(fake_seeded.name()) # 每次运行结果相同



适用场景

●Python项目的单元测试和集成测试

●数据库填充和性能测试

●API接口测试的请求数据生成

●需要本地化数据的国际化项目测试

使用技巧

●合理使用种子:在需要数据可重复的场景(如回归测试)使用种子机制

●自定义Provider:针对业务特定字段(如会员等级、订单状态)创建自定义生成器

●性能优化:批量生成数据时,复用Faker实例而不是每次创建新实例

工具二:Mockaroo-在线数据生成神器

工具概述

Mockaroo是一款强大的在线测试数据生成工具,提供直观的Web界面和 RESTful API。它最大的优势是无需编程即可快速生成复杂的测试数据集。

核心特性

●可视化配置:通过Web界面拖拽配置数据结构

●140+数据类型:涵盖常见和特殊的数据类型

●多种导出格式:支持CSV、JSON、SQL、Excel等格式

●RESTful API:可集成到自动化测试流程中

●数据关联:支持字段间的依赖关系和公式计算

实战案例

场景:生成电商订单测试数据

1、访问 mockaroo.com,创建新的 Schema

2、配置字段:

●order_id: Row Number

●customer_name: Full Name

●email: Email Address

●product: Product Name

●quantity: Number(1-10)

●unit_price: Money(10-1000)

●total: Formula(quantity * unit_price)

●order_date: DateTime(过去一年内)

●status: Custom List(pending, paid, shipped, delivered)



3、设置生成 1000条数据,选择 JSON格式下载





4、使用 API集成到测试脚本:



pip install requests

# Mockaroo_API.pyimport requests# Mockaroo API调用api_key = 'your_api_key'url = f'https://api.mockaroo.com/api/generate.json?key={api_key}&count=100'schema = [ {"name": "order_id", "type": "Row Number"}, {"name": "customer_name", "type": "Full Name"}, {"name": "email", "type": "Email Address"}, {"name": "product", "type": "Product Name"}, {"name": "quantity", "type": "Number", "min": 1, "max": 10}, {"name": "unit_price", "type": "Money", "min": 10, "max": 1000}, {"name": "order_date", "type": "Datetime", "min": "2024-01-01", "max": "2024-12-31"}, {"name": "status", "type": "Custom List", "values": ["pending", "paid", "shipped", "delivered"]}]response = requests.post(url, json=schema)orders = response.json()print(orders)



适用场景

●快速原型验证和演示数据准备

●数据库初始化和迁移测试

●非技术人员参与的测试数据准备

●需要复杂数据关联的场景

使用技巧

●保存Schema:将常用的数据结构保存为模板,提高复用性

●使用公式:利用公式功能实现字段间的逻辑关联

●API集成:将 Mockaroo API集成到 CI/CD流程中,实现自动化数据准备

工具三:JSON Generator

灵活的JSON数据定制工具

工具概述

JSON Generator是一款专注于JSON格式数据生成的在线工具,通过类似模板语言的语法,可以灵活定义复杂的JSON数据结构。

核心特性

●模板语法:使用简洁的模板语法定义数据结构

●内置函数:提供丰富的数据生成函数

●嵌套结构:轻松生成多层嵌套的JSON数据

●循环和条件:支持循环生成和条件判断

● 实时预览:即时查看生成结果

实战案例

访问:https://json-generator.com/

// JSON Generator模板示例[ { 'repeat(50)': { id: '{{objectId()}}', index: '{{index()}}', guid: '{{guid()}}', isActive: '{{bool()}}', balance: '{{floating(1000, 4000, 2, "$0,0.00")}}', picture: 'http://placehold.it/32x32', age: '{{integer(20, 60)}}', eyeColor: '{{random("blue", "brown", "green")}}', name: { first: '{{firstName()}}', last: '{{surname()}}' }, company: '{{company().toUpperCase()}}', email: function (tags) { returnthis.name.first.toLowerCase() + '.' + this.name.last.toLowerCase() + '@' + this.company.toLowerCase() + '.com'; }, phone: '+1 {{phone()}}', address: '{{integer(100, 999)}} {{street()}}, {{city()}}, {{state()}}, {{integer(100, 10000)}}', about: '{{lorem(1, "paragraphs")}}', registered: '{{date(new Date(2020, 0, 1), new Date(), "YYYY-MM-ddThh:mm:ss")}}', tags: [ { 'repeat(3, 7)': '{{lorem(1, "words")}}' } ], friends: [ { 'repeat(3)': { id: '{{index()}}', name: '{{firstName()}} {{surname()}}' } } ] } }]



适用场景

●RESTful API测试数据准备

●前端 Mock数据生成

●复杂嵌套JSON结构的测试

●微服务间数据契约测试

使用技巧

●善用函数组合:将多个内置函数组合使用,生成更真实的数据

●自定义函数:使用 JavaScript函数实现复杂的业务逻辑

●模板复用:将常用的数据结构保存为代码片段,提高效率

工具四:Mimesis

高性能的Python数据生成库

工具概述

Mimesis是一款专注于性能的 Python测试数据生成库,相比 Faker,它在生成速度上有显著优势,特别适合需要大量数据的性能测试场景。

核心特性

●极致性能:生成速度比 Faker快 2-3倍

●内存友好:采用惰性加载,内存占用更低

●类型丰富:支持30+种数据类型

●多语言支持:支持 33种语言环境

●Schema支持:可以通过 Schema定义复杂数据结构

实战案例

pip install mimesis

# generate_mimesis_data.pyfrom mimesis import Person, Address, Datetime, Financefrom mimesis.locales import Localefrom mimesis.schema import Field, Schema# 基础使用person = Person(Locale.EN)address = Address(Locale.EN)datetime = Datetime(Locale.EN)finance = Finance(Locale.EN)print(person.full_name())print(address.address())print(datetime.datetime())print(finance.company())# 使用 Schema批量生成field = Field(Locale.EN)def user_schema(): return { 'id': field('uuid'), 'name': field('person.full_name'), 'email': field('person.email'), 'phone': field('person.telephone'), 'address': field('address.address'), 'birthday': field('datetime.date', start=1970, end=2005), 'salary': field('finance.price', minimum=5000, maximum=50000), 'created_at': field('datetime.datetime') }# 生成 10000条数据users = [user_schema() for _ in range(10000)]# 打印所有生成的数据print("\n" + "="*80)print(f"生成了 {len(users)} 条用户数据:")print("="*80 + "\n")for i, user in enumerate(users, 1): print(f"用户 {i}:") for key, value in user.items(): print(f" {key}: {value}") print()# 性能对比测试import timestart = time.time()for _ in range(10000): person.full_name()end = time.time()print(f"Mimesis生成 10000个姓名耗时: {end-start:.2f}秒")



适用场景

●大规模数据生成(百万级以上)

●性能测试和压力测试

●数据库批量填充

●对生成速度有严格要求的场景

使用技巧

●使用Schema:对于复杂数据结构,使用 Schema可以提高代码可读性

●合理选择Locale:根据测试需求选择合适的语言环境

●性能优化:在循环中复用 Provider实例,避免重复初始化

☑️想了解更多涨薪技能提升方法

✔️可以到公主号【Atstudy技术社区】,即可加入领取 ⬇️⬇️⬇️

☑️转行、入门、提升、需要的各种干货资料

☑️内含AI测试、 车载测试、AI大模型开发、BI数据分析、银行测试、游戏测试、AIGC

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
商家拒收数字人民币,一句“没开通”能免责吗?

商家拒收数字人民币,一句“没开通”能免责吗?

马俊哲律师
2026-10-28 11:43:46
这一回中国真要杀鸡给猴看,挑中的是荷兰。不是美国,不是日本,不是菲律宾,是荷兰

这一回中国真要杀鸡给猴看,挑中的是荷兰。不是美国,不是日本,不是菲律宾,是荷兰

扶苏聊历史
2026-10-26 14:36:51
皇马官方声明道歉:俱乐部和姆巴佩一同公开道歉!对中国怀有深深敬意

皇马官方声明道歉:俱乐部和姆巴佩一同公开道歉!对中国怀有深深敬意

念洲
2026-10-28 17:29:35
台“防长”顾立雄发表严正声明

台“防长”顾立雄发表严正声明

果妈聊娱乐
2026-10-28 08:25:16
你在公司捞过的最大油水是什么?网友:车在我名下,老板跑路了

你在公司捞过的最大油水是什么?网友:车在我名下,老板跑路了

夜深爱杂谈
2026-10-26 21:11:13
10月28号收评:三大指数全天放量上涨,明天是红色星期四?还是黑色星期四?

10月28号收评:三大指数全天放量上涨,明天是红色星期四?还是黑色星期四?

春江财富
2026-10-28 15:20:35
莱阳战役,纵队司令成钧亲率敢死队,谭震林:敢胡来就开除你党籍

莱阳战役,纵队司令成钧亲率敢死队,谭震林:敢胡来就开除你党籍

漫步史书
2026-10-27 17:36:47
自媒体人"徽剑" 因曝光电诈骨干被灭口,谁透露了他的地址、照片、车牌号?

自媒体人"徽剑" 因曝光电诈骨干被灭口,谁透露了他的地址、照片、车牌号?

新商业派
2026-10-27 13:52:30
中期选举前夕民调出炉:特朗普支持率脱离低点,民主党大概率赢下众议院

中期选举前夕民调出炉:特朗普支持率脱离低点,民主党大概率赢下众议院

财联社
2026-10-27 11:54:19
西部排名大变脸!4队全胜,火箭排第1,掘金掉到第10,勇士倒数第4

西部排名大变脸!4队全胜,火箭排第1,掘金掉到第10,勇士倒数第4

大卫的篮球故事
2026-10-28 18:57:55
宝马设计是进步还是退步?1968年宝马E9 2800 CS赛博改装

宝马设计是进步还是退步?1968年宝马E9 2800 CS赛博改装

玩车改装分享
2026-10-27 11:24:04
外交部回应姆巴佩道歉!有人算了笔账:24小时蒸发约1.6亿,还能挽回吗?

外交部回应姆巴佩道歉!有人算了笔账:24小时蒸发约1.6亿,还能挽回吗?

上观新闻
2026-10-28 16:40:51
杨瀚森两场NBA未出场!开拓者探花郎现形:37分钟10中1,6分5失误

杨瀚森两场NBA未出场!开拓者探花郎现形:37分钟10中1,6分5失误

球场没跑道
2026-10-28 14:35:18
内塔尼亚胡阵营丢14席,对手却卡在61席门槛外

内塔尼亚胡阵营丢14席,对手却卡在61席门槛外

爬虫饲养员
2026-10-28 04:13:11
"丧尽天良!"西安挖出秦始皇女儿的陵墓,墓里的惨状,连考古专家都倒吸一口凉气

"丧尽天良!"西安挖出秦始皇女儿的陵墓,墓里的惨状,连考古专家都倒吸一口凉气

扶苏聊历史
2026-10-27 16:08:24
真心补不起啊!高三数学一对一两小时报价6000元,一小时3000元,家长直呼无力承担,评论区炸锅

真心补不起啊!高三数学一对一两小时报价6000元,一小时3000元,家长直呼无力承担,评论区炸锅

火山詩话
2026-10-26 08:37:00
男子和四十多岁女网友认识后,频繁发生关系,最后一次在车内,男子死亡后家属向女子索要巨额赔偿

男子和四十多岁女网友认识后,频繁发生关系,最后一次在车内,男子死亡后家属向女子索要巨额赔偿

丫头舫
2026-10-13 22:10:25
名记:皇马内部不理解姆巴佩发声明为何不通过俱乐部,俱乐部认为处理类似事情更有经验

名记:皇马内部不理解姆巴佩发声明为何不通过俱乐部,俱乐部认为处理类似事情更有经验

尘语者
2026-10-28 17:07:59
昭通小伙担心婚礼冷清邀网友喝喜酒,数百人赶来撑场面,有人送冰柜也有人送整头猪,村干部:已安排工作人员帮忙维持秩序

昭通小伙担心婚礼冷清邀网友喝喜酒,数百人赶来撑场面,有人送冰柜也有人送整头猪,村干部:已安排工作人员帮忙维持秩序

极目新闻
2026-10-28 18:28:28
大冷!14亿欧阿森纳遭英乙第18名淘汰:身价是对方500倍 无缘4冠王

大冷!14亿欧阿森纳遭英乙第18名淘汰:身价是对方500倍 无缘4冠王

风过乡
2026-10-28 06:35:40
2026-10-28 19:20:49
51Testing软件测试网 incentive-icons
51Testing软件测试网
中国软件测试人的精神家园
1669文章数 13285关注度
往期回顾 全部

科技要闻

AI世界开口说话!谷歌新模型Genie 4有多神

头条要闻

新郎是孤儿担心婚礼冷清邀网友来撑撑场面 数百人到场

头条要闻

新郎是孤儿担心婚礼冷清邀网友来撑撑场面 数百人到场

体育要闻

0胜4负与篮网国王一桌 热火字母哥赌错了?

娱乐要闻

巾帼不让须眉!章子怡拿下重磅荣誉

财经要闻

iPhone Duo七年等来一场吐槽大会

汽车要闻

电动大掀背+无框车门+激光雷达 一汽-大众ID. AURA L5真能打动年轻家庭

态度原创

艺术
数码
家居
公开课
军事航空

艺术要闻

米芾气势如虹的大字行书,填补了“二王” 的不足,董其昌盛赞 “宋朝第一”!

数码要闻

AI时代的轻薄本怎么选?华硕灵耀16 Air 骁龙版值得加入双十一清单

家居要闻

2026建博会(广州) 公装联探展交流活动

公开课

李玫瑾:为什么性格比能力更重要?

军事要闻

伊朗最高领袖最新声明 提到了“结束战争”

无障碍浏览 进入关怀版