边缘案例测试数据生成器 API

API ID 13369

边缘案例测试数据用于QA和模糊测试: Unicode 注入探针 边界日期 浮点精度 16种类型 可重现的种子 每个值解释了它破坏了什么

API 文档

端点

请求
为单一字段类型生成边缘情况测试数据——那些合法但具有攻击性的输入值,这些值会破坏真实代码。返回具有元数据的值,使其可操作:该值属于哪个类别以及其破坏的代码类型的英文解释。 从8个组中的16种类型中选择:unicode_string、emoji_sequence、person_name、organization_name、email、email_display_name、date、datetime、integer、float、UUID、path_or_filename、postal_code、phone_number、JSON key和JSON value。 您获得的示例:破坏简单日期算术的闰年日期、会导致32位time_t溢出的2038年时间戳、来自IEEE 754舍入的0.30000000000000004、一个字形但七个代码点的ZWJ表情符号组合、用于域名欺骗的西里尔字母同形异义词、保留的Windows文件名如CON,以及被简单正则表达式验证器错误拒绝的RFC 5322有效电子邮件地址。 完全确定性:传递一个种子,每次都会返回完全相同的值,因此结果可以固定到CI存档中。省略种子,将为您生成一个,并在响应中返回,以便稍后固定。 以JSON(默认)、CSV或纯文本输出。通过类别参数过滤到单个类别。通过目录端点发现每一种类型和类别。
Endpoint ID: 28532
GET https://zylalabs.com/api/13369/edge+case+test+data+generator+api/28532/generate+edge+case+test+data
输入参数

生成边界案例测试数据 — 端点功能

对象 描述
type 必需 Field type to generate. One of the 16 types — call the Catalog endpoint for the full list.
count 可选 Number of values to return, 1–500. Default 50.
seed 可选 Integer seed for reproducible output. Omit for a random seed, which is returned in the response.
category 可选 Restrict output to one category within the type, e.g. leap_day or homoglyph.
format 可选 json (default), csv, or text.
csv_escape 可选 Only for format=csv. true (default) neutralises spreadsheet formula injection; false returns raw values.

剩余免费测试请求:3 / 3。


输入参数

type
count
seed
category
format
csv_escape
API 示例响应
JSON
{
    "type": "email",
    "seed": 42,
    "count": 3,
    "items": [
        {
            "value": "user@[192.168.1.1]",
            "category": "ip_literal_domain",
            "breaks": "Domain-parsing code that assumes the part after '@' is always a hostname (never a bracketed IP literal) fails to extract or validate the domain correctly.",
            "safe_to_display": true
        },
        {
            "value": "[email protected]",
            "category": "punycode_domain",
            "breaks": "The domain is punycode-encoded (an internationalized domain name). Domain allowlist or comparison logic that does not decode punycode may fail to recognize this as equivalent to its Unicode form, or fail to catch a homograph-spoofed lookalike domain encoded the same way.",
            "safe_to_display": true
        },
        {
            "value": "[email protected]",
            "category": "plus_addressing",
            "breaks": "Deduplication logic treating '[email protected]' and '[email protected]' as different accounts misses that most mail providers deliver both to the same inbox (sub-addressing, RFC 5233).",
            "safe_to_display": true
        }
    ]
}
生成边界案例测试数据 — 代码片段

curl --location --request GET 'https://zylalabs.com/api/13369/edge+case+test+data+generator+api/28532/generate+edge+case+test+data?type=email&count=3&seed=42' --header 'Authorization: Bearer YOUR_API_KEY' 


    
请求
生成一个完整的测试夹具只需一次调用:定义自己的字段名称,将每个字段映射到一个类型,并获得准备好填充数据库、CI夹具或QA数据集的行 发送一个字段对象,将您喜欢的任何字段名称映射到16种支持的类型之一,例如 {"user_email": "email", "signup_at": "datetime", "display_name": "person_name"}。每一行为每个字段组合一个敌对值,因此一次调用可以同时测试许多失败模式 每次调用最多可以处理20个字段和500行。共享相同类型的两个字段接收独立混洗的值,而不是相同的副本,因此同一行中的 billing_email 和 personal_email 确实是不同的地址 确定性:相同的种子总是返回相同的行。省略种子,将生成并返回一个种子,以便可以精确重现运行 以 JSON(默认)或 CSV 输出。CSV 将按照您声明的顺序返回每个字段名称的一列—直接粘贴到电子表格或填充脚本中
Endpoint ID: 28533
POST https://zylalabs.com/api/13369/edge+case+test+data+generator+api/28533/generate+multi-field+test+fixture+rows
输入参数

生成多字段测试夹具行 — 端点功能

对象 描述
请求体 必需 Json

剩余免费测试请求:3 / 3。


输入参数

API 示例响应
JSON
{
    "seed": 7,
    "count": 2,
    "rows": [
        {
            "user_email": {
                "value": "a234567890123456789012345678901234567890123456789012345678901234@aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.com",
                "category": "max_length_254",
                "breaks": "This address is near the RFC 5321 maximum length of 254 characters. Database columns sized below that maximum truncate or reject it even though it is technically valid.",
                "safe_to_display": true
            },
            "signup_at": {
                "value": "2026-11-01T01:30:00-04:00",
                "category": "dst_fall_back_ambiguous",
                "breaks": "In US Eastern time, this local clock time occurs twice during the fall-back transition. Without an explicit fold indicator, converting it to UTC is genuinely ambiguous, and libraries may silently pick the wrong occurrence.",
                "safe_to_display": true
            }
        },
        {
            "user_email": {
                "value": "[email protected]",
                "category": "plus_addressing",
                "breaks": "Deduplication logic treating '[email protected]' and '[email protected]' as different accounts misses that most mail providers deliver both to the same inbox (sub-addressing, RFC 5233).",
                "safe_to_display": true
            },
            "signup_at": {
                "value": "2026-01-01T24:00:00",
                "category": "midnight_as_24_00",
                "breaks": "ISO 8601 permits 24:00:00 to represent midnight at the end of a day, but many parsers only accept 00:00:00 through 23:59:59 and reject this equally valid representation.",
                "safe_to_display": true
            }
        }
    ]
}
生成多字段测试夹具行 — 代码片段

curl --location --request POST 'https://zylalabs.com/api/13369/edge+case+test+data+generator+api/28533/generate+multi-field+test+fixture+rows' --header 'Authorization: Bearer YOUR_API_KEY' 

--data-raw '{
  "fields": {
    "user_email": "email",
    "signup_at": "datetime"
  },
  "count": 2,
  "seed": 7
}'

    
请求
返回此API可以生成的每种字段类型,连同其类别组、描述、可用于过滤的类别标签列表,以及每个池中存在的不同值的数量 在以编程方式集成时首先调用此接口,包括从AI代理或编码助手,以发现完整的能力集,而无需硬编码类型名称或阅读文档 还返回支持的输出格式和每个请求的最大行数
Endpoint ID: 28534
GET https://zylalabs.com/api/13369/edge+case+test+data+generator+api/28534/list+available+types+and+categories
输入参数

剩余免费测试请求:3 / 3。

此端点不需要任何输入参数。

API 示例响应
JSON
{
    "types": [
        {
            "type": "date",
            "category_group": "datetimes",
            "description": "Calendar-boundary and invalid-looking-but-real dates.",
            "categories": [
                "earliest_iso_year",
                "far_future_sentinel",
                "invalid_day_of_month",
                "leap_day",
                "pre_epoch",
                "year_2038"
            ],
            "entry_count": 6
        },
        {
            "type": "datetime",
            "category_group": "datetimes",
            "description": "Timestamps at DST transitions, unusual UTC offsets, and precision boundaries.",
            "categories": [
                "dst_fall_back_ambiguous",
                "dst_spring_forward_gap",
                "leap_second",
                "midnight_as_24_00",
                "quarter_hour_offset",
                "sub_microsecond_precision"
            ],
            "entry_count": 7
        },
        {
            "type": "email",
            "category_group": "emails",
            "description": "RFC 5322-valid but unusual email addresses.",
            "categories": [
                "comment_syntax",
                "ip_literal_domain",
                "max_length_254",
                "mixed_case",
                "plus_addressing",
                "punycode_domain",
                "quoted_local_part"
            ],
            "entry_count": 7
        },
        {
            "type": "email_display_name",
            "category_group": "emails",
            "description": "Display-name strings that can corrupt naively-built SMTP headers.",
            "categories": [
                "angle_bracket_in_display_name",
                "comma_in_display_name",
                "crlf_header_injection",
                "null_byte",
                "very_long_display_name"
            ],
            "entry_count": 5
        },
        {
            "type": "emoji_sequence",
            "category_group": "unicode",
            "description": "Multi-codepoint emoji: ZWJ sequences, skin-tone modifiers, flag sequences, keycaps.",
            "categories": [
                "flag_sequence",
                "keycap_sequence",
                "skin_tone_modifier",
                "zwj_family",
                "zwj_generic_pair"
            ],
            "entry_count": 5
        },
        {
            "type": "float",
            "category_group": "numbers",
            "description": "Floating-point values that are not representable in JSON, or that expose IEEE 754 rounding.",
            "categories": [
                "denormal_minimum",
                "ieee754_rounding",
                "infinity",
                "not_a_number",
                "scientific_notation"
            ],
            "entry_count": 5
        },
        {
            "type": "integer",
            "category_group": "numbers",
            "description": "Integer values at 32-bit and 64-bit signed boundaries.",
            "categories": [
                "int32_max_plus_one",
                "int32_min_minus_one",
                "int64_max",
                "leading_zeros",
                "negative_zero"
            ],
            "entry_count": 5
        },
        {
            "type": "json_key",
            "category_group": "structural",
            "description": "Strings intended for use as a JSON object key, including reserved and unsafe names.",
            "categories": [
                "dollar_prefix",
                "embedded_dot",
                "empty_string_key",
                "numeric_string_key",
                "prototype_pollution_key",
                "very_long_key",
                "whitespace_only_key"
            ],
            "entry_count": 8
        },
        {
            "type": "json_value",
            "category_group": "structural",
            "description": "JSON values at precision, nesting, and null/empty/missing boundaries.",
            "categories": [
                "boolean_as_string",
                "empty_array",
                "empty_object",
                "explicit_null",
                "float64_precision_loss",
                "leading_zero_numeric_string"
            ],
            "entry_count": 6
        },
        {
            "type": "organization_name",
            "category_group": "names",
            "description": "Company/brand names with punctuation, leading digits, or unusual casing.",
            "categories": [
                "accented_character",
                "ampersand",
                "apostrophe",
                "intentional_lowercase_brand",
                "leading_digit",
                "trailing_punctuation",
                "very_long_legal_name"
            ],
            "entry_count": 7
        },
        {
            "type": "path_or_filename",
            "category_group": "identifiers",
            "description": "Filenames and paths that are legal but mishandled by common filesystem or validation code.",
            "categories": [
                "bare_parent_reference",
                "leading_dot_hidden_file",
                "max_length_255",
                "path_traversal",
                "reserved_windows_device_name",
                "trailing_dot",
                "trailing_space",
                "unicode_normalization_mismatch"
            ],
            "entry_count": 8
        },
        {
            "type": "person_name",
            "category_group": "names",
            "description": "Names that break naive validation, splitting, or templating logic -- includes canonical injection probes.",
            "categories": [
                "apostrophe",
                "emoji_in_name",
                "leading_trailing_whitespace",
                "mononym",
                "multi_word_particle_surname",
                "reserved_word",
                "right_to_left_script",
                "shell_metacharacter_probe",
                "single_character",
                "sql_injection_probe",
                "ssti_probe",
                "very_long_name",
                "xss_probe"
            ],
            "entry_count": 14
        },
        {
            "type": "phone_number",
            "category_group": "addresses_phones",
            "description": "Phone numbers at E.164 length boundaries and common formatting variants.",
            "categories": [
                "e164_maximum_length",
                "e164_near_minimum_length",
                "extension_suffix",
                "human_formatted_punctuation",
                "leading_zero_national_format",
                "long_country_code"
            ],
            "entry_count": 6
        },
        {
            "type": "postal_code",
            "category_group": "addresses_phones",
            "description": "Postal codes from formats that break US-centric assumptions.",
            "categories": [
                "canada_alternating_pattern",
                "country_without_postal_code",
                "eircode",
                "embedded_hyphen",
                "leading_zero_us_zip",
                "uk_postcode_variable_length"
            ],
            "entry_count": 6
        },
        {
            "type": "unicode_string",
            "category_group": "unicode",
            "description": "Strings with combining marks, bidi overrides, zero-width characters, and homoglyphs.",
            "categories": [
                "astral_plane",
                "bidi_override",
                "byte_order_mark",
                "combining_diacritic",
                "combining_mark_stack",
                "homoglyph",
                "mixed_script",
                "variation_selector",
                "zero_width_space"
            ],
            "entry_count": 9
        },
        {
            "type": "uuid",
            "category_group": "identifiers",
            "description": "Syntactically valid UUIDs at sentinel and formatting boundaries.",
            "categories": [
                "invalid_version_nibble",
                "max_uuid",
                "nil_uuid",
                "unhyphenated_form",
                "uppercase_hex"
            ],
            "entry_count": 5
        }
    ],
    "formats": [
        "csv",
        "json",
        "text"
    ],
    "max_count": 500
}
列出可用类型和类别 — 代码片段

curl --location --request GET 'https://zylalabs.com/api/13369/edge+case+test+data+generator+api/28534/list+available+types+and+categories' --header 'Authorization: Bearer YOUR_API_KEY' 


    

API 访问密钥和身份验证

注册后,每个开发者都会被分配一个个人 API 访问密钥,这是一个唯一的字母和数字组合,用于访问我们的 API 端点。要使用 边缘案例测试数据生成器 API 进行身份验证,只需在 Authorization 标头中包含您的 bearer token。

标头
标头 描述
授权 必需 应为 Bearer access_key. 订阅后,请查看上方的"您的 API 访问密钥"。

无长期承诺。随时升级、降级或取消。 免费试用包括最多 50 个请求。

(年度计费可节省 2 个月 🎉)

🚀 企业版套餐

起价
$ 10,000/年


  • 自定义数量
  • 自定义速率限制
  • 专业客户支持
  • 实时 API 监控
zeiss-logo amazon-logo zoom-logo decathlon-logo

领先企业的信赖之选

概览

边缘案例测试数据用于质量保证和模糊测试:Unicode 注入探针 边界日期 浮点精度 16 种类型 可重复的种子 每个值解释它会破坏什么

边缘案例测试数据生成器 API FAQs

边界情况测试数据是技术上有效但位于软件常常失败的边界上的输入——闰日日期、32位限制的整数、包含撇号的名字、由多个代码点组成的表情符号及Windows保留的文件名。普通的虚假数据生成器产生看似合理的数据;边界情况数据才是实际发现错误的。

Faker Mockaroo 和类似工具优化于看起来真实的数据 plausible names addresses 和 dates 这个 API 则恰恰相反 每个值的选择都是因为它破坏了某些东西 它还会告诉你它破坏了什么 这样失败的测试就可以立即诊断而不是一个谜团

一个用简单英语解释的特定失败模式,其目的是暴露价值的设计——例如,0.30000000000000004是0.1 + 0.2在IEEE 754算术中的真实结果,并且会在与0.3的相等性检查中失败。它将原始字符串转换为一个文档化的测试用例

是的。传递一个种子,每次都会返回相同的值,永远在 /v1 端点上——安全地固定在 CI 固件中。省略种子时,会生成一个随机种子并在响应中返回,以便您可以稍后重现该确切运行

十六种类型,涵盖八个组:Unicode 字符串和表情符号序列,个人和组织名称,电子邮件和电子邮件显示名称,日期和日期时间,整数和浮点数,UUID 和文件路径,邮政编码和电话号码,以及 JSON 键和值

是的 POST /v1/generate 接受一个字段对象将您自己的字段名称映射到类型,并返回多达500行完整数据 每行最多20个字段 准备好填充数据库或CI固定装置

它包括在标准安全测试指南中发布的经典、无害的检测探针——一个SQL自同义词,一个基本的XSS探针,一个路径遍历字符串。这些用于测试您自己的输入处理。没有有效的利用代码、Shell有效负载或CVE特定攻击链

它区分了两种不同的风险 “假”意味着这个值在用户界面中渲染为原始值是不安全的 例如可以可视化地伪装文件名的双向覆盖 “真”意味着可以作为惰性文本安全显示 尽管它仍可能导致处理它的后端代码中断 如果你向用户显示生成的值,请对此进行过滤

是的 — 格式=csv,另外格式=text,每行一个原始值。默认情况下,会中和可能触发电子表格公式执行的CSV单元格。如果您故意测试自己的CSV导入处理,请设置csv_escape=false

不 该API是无状态的没有数据库 您请求的内容和为您生成的内容从未写入日志 只有请求元数据例如端点 状态码 和请求的类型

一般常见问题

Zyla API Hub 就像一个大型 API 商店,您可以在一个地方找到数千个 API。我们还为所有 API 提供专门支持和实时监控。注册后,您可以选择要使用的 API。请记住,每个 API 都需要自己的订阅。但如果您订阅多个 API,您将为所有这些 API 使用相同的密钥,使事情变得更简单。
价格以 USD(美元)、EUR(欧元)、CAD(加元)、AUD(澳元)和 GBP(英镑)列出。我们接受所有主要的借记卡和信用卡。我们的支付系统使用最新的安全技术,由 Stripe 提供支持,Stripe 是世界上最可靠的支付公司之一。如果您在使用卡片付款时遇到任何问题,请通过 [email protected]

此外,如果您已经以这些货币中的任何一种(USD、EUR、CAD、AUD、GBP)拥有有效订阅,该货币将保留用于后续订阅。只要您没有任何有效订阅,您可以随时更改货币。
定价页面上显示的本地货币基于您 IP 地址的国家/地区,仅供参考。实际价格以 USD(美元)为单位。当您付款时,即使您在我们的网站上看到以本地货币显示的等值金额,您的卡片对账单上也会以美元显示费用。这意味着您不能直接使用本地货币付款。
有时,银行可能会因其欺诈保护设置而拒绝收费。我们建议您首先联系您的银行,检查他们是否阻止了我们的收费。此外,您可以访问账单门户并更改关联的卡片以进行付款。如果这些方法不起作用并且您需要进一步帮助,请通过 [email protected]
价格由月度或年度订阅决定,具体取决于所选计划。
API 调用根据成功请求从您的计划中扣除。每个计划都包含您每月可以进行的特定数量的调用。只有成功的调用(由状态 200 响应指示)才会计入您的总数。这确保失败或不完整的请求不会影响您的月度配额。
Zyla API Hub 采用月度订阅系统。您的计费周期将从您购买付费计划的那一天开始,并在下个月的同一日期续订。因此,如果您想避免未来的费用,请提前取消订阅。
要升级您当前的订阅计划,只需转到 API 的定价页面并选择您要升级到的计划。升级将立即生效,让您立即享受新计划的功能。请注意,您之前计划中的任何剩余调用都不会转移到新计划,因此在升级时请注意这一点。您将被收取新计划的全部金额。
要检查您本月剩余多少 API 调用,请参考响应标头中的 "X-Zyla-API-Calls-Monthly-Remaining" 字段。例如,如果您的计划允许每月 1,000 个请求,而您已使用 100 个,则响应标头中的此字段将显示 900 个剩余调用。
要查看您的计划允许的最大 API 请求数,请检查 "X-Zyla-RateLimit-Limit" 响应标头。例如,如果您的计划包括每月 1,000 个请求,此标头将显示 1,000。
"X-Zyla-RateLimit-Reset" 标头显示您的速率限制重置之前的秒数。这告诉您何时您的请求计数将重新开始。例如,如果它显示 3,600,则意味着还有 3,600 秒直到限制重置。
是的,您可以随时通过访问您的账户并在账单页面上选择取消选项来取消您的计划。请注意,升级、降级和取消会立即生效。此外,取消后,您将不再有权访问该服务,即使您的配额中还有剩余调用。
为了让您有机会在没有任何承诺的情况下体验我们的 API,我们提供 7 天免费试用,允许您免费进行最多 50 次 API 调用。此试用只能使用一次,因此我们建议将其应用于您最感兴趣的 API。虽然我们的大多数 API 都提供免费试用,但有些可能不提供。试用在 7 天后或您进行了 50 次请求后结束,以先发生者为准。如果您在试用期间达到 50 次请求限制,您需要"开始您的付费计划"以继续发出请求。您可以在个人资料中的订阅 -> 选择您订阅的 API -> 定价标签下找到"开始您的付费计划"按钮。或者,如果您在第 7 天之前不取消订阅,您的免费试用将结束,您的计划将自动计费,授予您访问计划中指定的所有 API 调用的权限。请记住这一点以避免不必要的费用。
7 天后,您将被收取试用期间订阅的计划的全额费用。因此,在试用期结束前取消很重要。因忘记及时取消而提出的退款请求不被接受。
当您订阅 API 免费试用时,您可以进行最多 50 次 API 调用。如果您希望超出此限制进行额外的 API 调用,API 将提示您执行"开始您的付费计划"。您可以在个人资料中的订阅 -> 选择您订阅的 API -> 定价标签下找到"开始您的付费计划"按钮。
付款订单在每月 20 日至 30 日之间处理。如果您在 20 日之前提交请求,您的付款将在此时间范围内处理。
您可以通过我们的聊天渠道联系我们以获得即时帮助。我们始终在线,时间为上午 8 点至下午 5 点(EST)。如果您在该时间之后联系我们,我们将尽快回复您。此外,您可以通过 [email protected]

您可能还喜欢