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

测试老司机手把手教你造数据: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-09-10 22:33:05
已经不适合当今体系!女篮世界杯收官,这4人大概率难留国家队

已经不适合当今体系!女篮世界杯收官,这4人大概率难留国家队

江启
2026-09-11 03:15:05
5年倒闭15000家!曾经的街边小吃之王,为什么没人吃了?

5年倒闭15000家!曾经的街边小吃之王,为什么没人吃了?

房产衫哥
2026-09-08 18:21:11
伊朗下令暂停对进出伊朗、运输能源产品的外国船舶收取10%的运费附加费

伊朗下令暂停对进出伊朗、运输能源产品的外国船舶收取10%的运费附加费

财联社
2026-09-10 19:17:16
莫迪又一次拒签一带一路,9年一次不落,仅仅四天,代价随之而来

莫迪又一次拒签一带一路,9年一次不落,仅仅四天,代价随之而来

白色得季节
2026-09-11 12:53:58
停止资助威胁资助人女孩愿意把苹果17promax换红米,资助人送去1500元,这是什么神仙逻辑

停止资助威胁资助人女孩愿意把苹果17promax换红米,资助人送去1500元,这是什么神仙逻辑

Mr王的饭后茶
2026-09-10 09:35:52
乌克兰拟将色情产业合法化,女记者嘲讽:男人上战场,女人拍色情

乌克兰拟将色情产业合法化,女记者嘲讽:男人上战场,女人拍色情

江山挥笔
2026-09-10 10:53:30
深成指跌逾2% 三市下跌个股近5200只

深成指跌逾2% 三市下跌个股近5200只

财联社
2026-09-11 10:41:03
高雄市长最新民调曝光:柯志恩支持度43.8%,微幅领先赖瑞隆

高雄市长最新民调曝光:柯志恩支持度43.8%,微幅领先赖瑞隆

海峡导报社
2026-09-11 11:02:04
想携号转网被联通告知靓号捆绑20年,交5800元违约金或者注销 用户索要靓号协议,联通:无法回答

想携号转网被联通告知靓号捆绑20年,交5800元违约金或者注销 用户索要靓号协议,联通:无法回答

大风新闻
2026-09-10 18:50:12
别纠结大学光环了!去这五座城市上大学比什么都强,就业发展是真的好

别纠结大学光环了!去这五座城市上大学比什么都强,就业发展是真的好

手工制作阿爱
2026-09-10 04:29:37
史上最大乌龙充值!充1000到账2641万亿,店主20天花了25万

史上最大乌龙充值!充1000到账2641万亿,店主20天花了25万

大厂编外实习生
2026-09-03 17:02:27
千万粉丝网红董先生参加员工婚礼:现场随礼现金100万

千万粉丝网红董先生参加员工婚礼:现场随礼现金100万

快科技
2026-09-10 16:15:10
列宁遗体每年烧掉100多万,民众要求下葬,普京:我在,谁也不能动

列宁遗体每年烧掉100多万,民众要求下葬,普京:我在,谁也不能动

一姐说军史
2026-09-11 14:42:04
9月10日俄乌最新:普京故技重施,川普话里有话

9月10日俄乌最新:普京故技重施,川普话里有话

西楼饮月
2026-09-10 22:09:38
带电动升顶的小米澎程新车被标注为“文化生活服务车” 需一年一检高速节假日不免费?门店回应

带电动升顶的小米澎程新车被标注为“文化生活服务车” 需一年一检高速节假日不免费?门店回应

金融界
2026-09-09 18:18:15
推断被继续证实:胡赛攻占摩卡,巴土不下场、中东就只运河可出

推断被继续证实:胡赛攻占摩卡,巴土不下场、中东就只运河可出

邵旭峰域
2026-09-11 13:32:05
没想到,董建华离世仅2天,63岁曹可凡竟因一个举动实现口碑暴涨

没想到,董建华离世仅2天,63岁曹可凡竟因一个举动实现口碑暴涨

胡一舸南游y
2026-09-10 14:33:07
WTT澳门冠军赛爆冷:张本智和“剃光头”,妹妹美和状态拉满

WTT澳门冠军赛爆冷:张本智和“剃光头”,妹妹美和状态拉满

面包夹知识
2026-09-11 15:26:06
美光宣布发放史上最高员工奖金:全球逾6万人受益

美光宣布发放史上最高员工奖金:全球逾6万人受益

CNMO科技
2026-09-11 11:46:36
2026-09-11 16:44:49
51Testing软件测试网 incentive-icons
51Testing软件测试网
中国软件测试人的精神家园
1641文章数 13285关注度
往期回顾 全部

科技要闻

罗永浩连用7个“抄的”吐槽苹果折叠屏

头条要闻

"男子称停资助遭受助学生质问"疑反转 民政局查无此人

头条要闻

"男子称停资助遭受助学生质问"疑反转 民政局查无此人

体育要闻

37岁还能场场进球,还能翻跟头!

娱乐要闻

黄晓明直言帮太多白眼狼,杨颖遭殃

财经要闻

千叶珠宝创始人夫妇失联 股价应声"腰斩"

汽车要闻

买菜车也有小乐趣 风云T7不止是台合格家用SUV

态度原创

房产
本地
亲子
手机
军事航空

房产要闻

时隔7年,绿地海南再拿地!

本地新闻

拼假 13 天国内长线路线合集

亲子要闻

潮州新时代月子中心婴儿护理口碑怎么样?

手机要闻

vivo法务部回应“MCN组织博主诋毁品牌被判赔130万”

军事要闻

涉伊朗核问题 中国和俄罗斯投下反对票

无障碍浏览 进入关怀版