APP 注册压力测试
测试组在验收新用户注册流程时,需要连续提交 200 个不同手机号来验证短信验证码接口的限流策略和并发处理能力。手动输入 200 个号耗时且容易重复触发风控。用本工具按 170/171 虚拟运营商号段批量生成 200 个随机号,每 5 秒轮换一次号段前缀,确保号段不重复,模拟真实用户注册场景。
测试账号注册时,随手填的“13800138000”被系统判为无效号码,反复试号段反而触发风控。这个工具从工信部公示的合法号段池中随机生成号码,每次点击都输出一个真实存在的号段组合,用于接口调试、表单验证或压力测试。所有运算在浏览器本地完成,生成的号码不会离开设备,适合在开发环境中快速获取测试样本。
测试组在验收新用户注册流程时,需要连续提交 200 个不同手机号来验证短信验证码接口的限流策略和并发处理能力。手动输入 200 个号耗时且容易重复触发风控。用本工具按 170/171 虚拟运营商号段批量生成 200 个随机号,每 5 秒轮换一次号段前缀,确保号段不重复,模拟真实用户注册场景。
运营人员为双十一活动配置了手机号白名单,要求白名单内号码必须覆盖三大运营商所有号段(130-139、150-159、180-189 等)。手动从每个号段挑一个号容易漏掉冷门号段如 145/147。用本工具勾选全部号段,每次生成 10 个号,循环 5 轮即可覆盖 50 个不同号段前缀,确保白名单验证脚本能跑通所有分支。
开发人员需要往测试数据库的 user 表里插入 500 条用户记录,手机号字段不能重复且必须符合真实号段规则,否则业务代码的号段校验逻辑会报错。从生产库导出脱敏数据太麻烦。用本工具生成 500 个随机手机号(排除 170/171 等虚拟号段),直接拼 SQL 语句插入,10 分钟完成测试数据准备。
技术写手在撰写 API 文档时,需要展示一个真实的手机号请求示例。用 13800138000 这种测试号容易被新开发人员误当成真实号去联调。用本工具生成一个 188 号段的随机号,写在文档的请求示例里,既符合号段规范,又不会让任何人误拨。
运营向短信通道商提交营销模板审核时,需要提供 3-5 个测试接收号码,号码必须为真实号段且不能是已退订用户,否则审核会被驳回。手动从通讯录找号容易暴露隐私。用本工具生成 5 个不同号段的随机号(选 139/186/158 等主流号段),提交审核后 2 小时通过,无需担心号码被通道商留存。
| 维度 | 本工具 | 在线随机号站 | 传统方法 |
|---|---|---|---|
| 隐私 | 浏览器本地生成,无网络上传 | 需提交到服务器,可能记录 IP | 翻纸质号段表,完全离线 |
| 号段覆盖 | 工信部合法号段,实时更新 | 部分站只维护常用号段 | 需自行收集公告,易遗漏 |
| 生成速度 | 毫秒级生成,无等待 | 受网络延迟影响,约 0.5-2 秒 | 手动翻找,数分钟 |
| 批量数量 | 单次可生成 1-1000 个 | 多数限制 50-200 个/次 | 无上限但效率极低 |
| 格式控制 | 可指定前缀、运营商、省份 | 部分站仅随机无过滤 | 完全手动筛选 |
| 使用成本 | 免费无限制 | 免费但有次数限制或广告 | 需购买号段手册 |
| 输入 | 输出 | 说明 |
|---|---|---|
| 点击生成(无输入) | 13800138000 | 常规:默认操作,生成一个以138号段开头的11位手机号,验证基本功能是否正常 |
| 点击生成(连续5次) | 13912345678 13698765432 13711112222 13500001111 15833334444 | 常规:多次生成,验证每次结果不同且号段随机分布(非固定模式) |
| 点击生成(100次后) | 17712345678 | 边界:大量生成后检查号段覆盖,验证是否包含170/171等虚拟运营商号段(若工具支持) |
| 点击生成(指定号段:139) | 13900000001 | 边界:若工具支持号段筛选,验证仅返回该号段号码;若不支持则忽略此条 |
| 点击生成(空输入框提交) | 无输出或提示“请输入有效条件” | 易错:部分用户以为需手动填写内容,实际工具无输入框时直接点按钮即可 |
| 点击生成(连续生成1000次) | 每次结果均以13/14/15/17/18/19开头,后8位随机数字 | 易错:高频生成可能暴露工具随机数质量(如重复率高),需验证无规律性 |
| 点击生成(浏览器控制台检查) | 结果不包含170/171等未开放或特殊号段 | 边界:验证工具是否严格限制在工信部公布的合法号段内,避免生成无效号码 |
1.误以为号码可回拨或归属真实用户
用生成的号码去注册网站验证码,或直接拨打测试仅用于前端表单测试、数据脱敏填充、演示环境占位工具从合法号段随机生成,号码并未在运营商激活,无法接收短信或通话,属于无效号码。
2.混用运营商专属号段导致测试场景不符
测试只要求移动号,却生成了 170 联通虚拟号段确认测试环境号段范围后,手动筛选或指定号段(如 139、138)不同号段归属不同运营商,部分业务逻辑(如携号转网、虚拟运营商限制)会因号段不同而表现异常。
3.把随机号码当作真实用户数据存入生产库
将生成的号码直接写入用户表,用于后续营销推送仅用于开发/测试环境,生产环境应使用真实用户授权数据随机号码可能恰好与真实用户号码冲突,导致隐私风险或业务数据污染。
4.号码长度或格式不符合国际标准
生成 18612345678 后直接用于国际短信测试加上中国区号 +86,写成 +8618612345678国内号码 11 位不含区号,国际通信需 E.164 格式(+国家码+号码),否则被网关拒收。
5.忽略号段合法性更新,使用已废弃号段
长期使用 144、148 等早期测试号段定期核对工信部最新号段分配表,或使用工具内置的当前有效号段工信部会回收/调整号段,废弃号段可能被运营商拦截或标记为异常。
6.一次生成大量号码用于压力测试
连续点击生成 10 万条号码,期望模拟真实用户注册压力测试应使用专用测试工具(如 JMeter)构造符合场景的号码池浏览器端生成大量数据会耗尽内存,且号码无规律分布,不符合真实用户注册的号段分布特征。
7.误以为生成号码包含校验位
将随机号码直接用于 SIM 卡写入或 IMSI 关联仅用于界面展示、表单验证,不涉及底层通信协议真实手机号最后一位是 Luhn 算法校验位,本工具随机生成不保证校验通过,运营商系统会拒绝。
手机号 = 前3位号段 + 随机8位数字
前3位号段工信部分配的合法运营商号段随机8位数字00000000–99999999 均匀随机取号段 138,随机8位为 45236789,生成手机号 13845236789,仅用于测试,不关联真实用户。
6 种主流语言实现,复制即用:
import random
# 合法手机号号段(前三位)
PREFIXES = ['130','131','132','133','134','135','136','137','138','139',
'150','151','152','153','155','156','157','158','159',
'170','171','173','175','176','177','178',
'180','181','182','183','184','185','186','187','188','189',
'198','199']
def random_phone():
prefix = random.choice(PREFIXES)
# 后8位随机数字,首位可为0
suffix = ''.join(str(random.randint(0,9)) for _ in range(8))
return prefix + suffix
print(random_phone()) # 例: 13812345678// 合法号段(前三位),仅测试用途
const PREFIXES = [
'130','131','132','133','134','135','136','137','138','139',
'150','151','152','153','155','156','157','158','159',
'170','171','173','175','176','177','178',
'180','181','182','183','184','185','186','187','188','189',
'198','199'
];
function randomPhone() {
const prefix = PREFIXES[Math.floor(Math.random() * PREFIXES.length)];
// 后8位随机数字
let suffix = '';
for (let i = 0; i < 8; i++) {
suffix += Math.floor(Math.random() * 10);
}
return prefix + suffix;
}
console.log(randomPhone()); // 例: 13900112233package main
import (
"fmt"
"math/rand"
"strconv"
"time"
)
func main() {
rand.Seed(time.Now().UnixNano())
prefixes := []string{
"130","131","132","133","134","135","136","137","138","139",
"150","151","152","153","155","156","157","158","159",
"170","171","173","175","176","177","178",
"180","181","182","183","184","185","186","187","188","189",
"198","199",
}
prefix := prefixes[rand.Intn(len(prefixes))]
suffix := ""
for i := 0; i < 8; i++ {
suffix += strconv.Itoa(rand.Intn(10))
}
fmt.Println(prefix + suffix) // 例: 13812345678
}#!/bin/bash
# 合法号段列表
PREFIXES=(
130 131 132 133 134 135 136 137 138 139
150 151 152 153 155 156 157 158 159
170 171 173 175 176 177 178
180 181 182 183 184 185 186 187 188 189
198 199
)
# 随机选号段
PREFIX=${PREFIXES[$RANDOM % ${#PREFIXES[@]}]}
# 生成后8位随机数字
SUFFIX=$(printf "%08d" $((RANDOM * RANDOM % 100000000)))
echo "${PREFIX}${SUFFIX}" # 例: 13900112233import java.util.Random;
public class RandomPhone {
private static final String[] PREFIXES = {
"130","131","132","133","134","135","136","137","138","139",
"150","151","152","153","155","156","157","158","159",
"170","171","173","175","176","177","178",
"180","181","182","183","184","185","186","187","188","189",
"198","199"
};
public static String randomPhone() {
Random rand = new Random();
String prefix = PREFIXES[rand.nextInt(PREFIXES.length)];
StringBuilder sb = new StringBuilder(prefix);
for (int i = 0; i < 8; i++) {
sb.append(rand.nextInt(10));
}
return sb.toString();
}
public static void main(String[] args) {
System.out.println(randomPhone()); // 例: 13812345678
}
}<?php
$prefixes = [
'130','131','132','133','134','135','136','137','138','139',
'150','151','152','153','155','156','157','158','159',
'170','171','173','175','176','177','178',
'180','181','182','183','184','185','186','187','188','189',
'198','199'
];
function randomPhone() {
global $prefixes;
$prefix = $prefixes[array_rand($prefixes)];
$suffix = '';
for ($i = 0; $i < 8; $i++) {
$suffix .= rand(0, 9);
}
return $prefix . $suffix;
}
echo randomPhone() . "\n"; // 例: 13900112233
?>本工具只生成符合号段规则的数字组合,并非从运营商数据库分配的真实可用号码。这些号码在真实通信网络中大概率未激活,不能用于接收短信或拨打电话。用途限定为测试场景,比如填入开发环境表单、压力测试或数据脱敏填充,不要用于注册验证等需要真实回执的场景。
工具内置了工信部历次发布的合法号段列表,包括 130-139、150-159、170-179(虚拟运营商)、180-189、190-199 等。192 是 2019 年后分配给中国广电的号段,属于合法范围。如果希望只生成某家运营商的号码(如仅移动 134-139/150-152),工具界面提供了号段筛选下拉框,勾选即可过滤。
本工具完全在浏览器本地运行(FE 实现),所有计算由当前设备 CPU 完成。生成 100 个以内基本无感;生成 1 万条时,根据设备性能可能卡顿 2-5 秒且页面可能短暂无响应。建议按需分批生成(每次 100-500 条),复制后再生成下一批。如果确实需要大批量,可考虑复制结果后拼接。
每次点击「生成」按钮,工具都会从所有合法号段中按均匀概率抽取,不做全局去重。两次生成之间无状态关联,所以不同用户或同一用户不同批次之间,完全可能产生相同号码。如果用于填充测试数据且要求唯一性(如数据库主键),建议在导入时额外添加自增序号或时间戳后缀来保证不重复。
170 和 171 是工信部分配给虚拟运营商的专用号段(俗称虚拟运营商号段),由阿里通信、京东通信、小米移动等转售企业使用。这些号码在号段校验规则上完全合法,但实际使用中部分平台可能将其识别为「虚拟运营商」而限制接收验证码。测试时如需模拟普通用户,建议在筛选栏中取消勾选「虚拟运营商」类别。
本工具对所有合法号段的后 8 位进行完全随机生成,每个数字出现概率均等(10%),所以尾号为 4 是正常概率。当前版本未提供「不含数字 4」的过滤选项。如果测试场景要求避开数字 4,可以生成后手动替换(如将 4 替换为随机非 4 数字),或批量复制后用文本编辑器统一替换。
完全不需要联网。工具核心逻辑(号段列表校验 + 随机数生成)全部在浏览器本地 JavaScript 执行,没有任何网络请求。生成的号码仅存在于当前页面内存中,刷新页面或关闭标签页后自动消失。可以放心用于包含敏感数据的测试环境,无需担心号码泄露或数据外传。
隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。
测试数据提示本工具生成的数据均为随机虚构,仅供开发测试、界面占位与教学演示;随机结果可能与真实信息巧合,禁止用于注册账号、营销骚扰、伪造身份证明或任何指向真实主体的用途,违规使用产生的后果由使用者自行承担。