1.第一次
用户注册界面包括以下内容。
l账号:文本框,长度为>=5,<=20位,必须唯一、可以包含大写或小写英文字符(必填)或者数字(选填)(不允许中文)。
l密码:密码框,长度为>=5,<=30位,必须包含大写和小写英文字符、数字和特殊字符,密码通过SHA256散列进行传输和存储(不允许中文)。
l确认密码:密码框,确认密码的值必须与密码的值一致。
l手机号:手机框,需符合中国手机号码格式(1开始的11位数字)。
lEmail:Email框,需符合国际标准Email格式。
l注册按钮:点击后提交表单。
请根据等价类、边界值、决策树、错误推测法,设计尽可能完善的测试用例,但是尽可能避免重复的测试用例或者无效的测试用例。另外请考虑并发、安全(比如XSS注入,SQL注入)
根据您提供的注册界面需求,我将结合等价类划分、边界值分析、决策树、错误推测法以及安全测试,设计一套尽可能完善且避免重复的测试用例。
等价类划分:对每个输入字段划分有效等价类(VEC)和无效等价类(IVEC)。
边界值分析:针对长度限制的字段(账号、密码)测试边界值。
决策树:用于梳理组合逻辑,特别是密码与确认密码的匹配、必填项与选填项。
错误推测法:基于经验预测常见错误和易忽略场景。
安全测试:包括XSS、SQL注入、并发注册等。
1.2.2测试用例设计
规则:长度5-20位,必须唯一,允许大小写英文字母和数字(数字选填),必填,不允许中文。
编号 | 用例编号 | 输入值 | 预期结果 | 测试类型 |
|---|---|---|---|---|
1 | ACC-V-001 | Alice123 | 通过 | 有效等价类(长度适中,含字母数字) |
2 | ACC-V-002 | AbCdE (5位) | 通过 | 边界值(最小长度,纯字母) |
3 | ACC-V-003 | A1b2C3d4E5f6G7h8I9j0 (20位) | 通过 | 边界值(最大长度,混合) |
4 | ACC-IV-001 | ab12 (4位) | 失败,提示长度不足 | 边界值(小于最小长度) |
5 | ACC-IV-002 | A1b2C3d4E5f6G7h8I9j0K (21位) | 失败,提示超长 | 边界值(超过最大长度) |
6 | ACC-IV-003 | 中文账号 | 失败,提示不允许中文 | 无效等价类(非法字符) |
7 | ACC-IV-004 | alice!@# | 失败,提示非法字符 | 无效等价类(特殊字符) |
8 | ACC-IV-005 | 12345 | 失败,提示至少包含一个字母?注意:规则未明确要求必须含字母,仅说“可以包含大写或小写英文字符(必填)或者数字(选填)”,这里可能有歧义。假设“必填”指字母是必填,则纯数字无效。若允许纯数字,则此用例为有效。假设字母必填,则此用例为无效。 | 无效等价类(纯数字) |
9 | ACC-IV-006 | (空) | 失败,提示必填 | 必填项验证 |
10 | ACC-IV-007 | Alice123 (重复注册) | 失败,提示账号已存在 | 唯一性检查 |
11 | ACC-SEC-001 | <script>alert('xss')</script> | 失败,前端过滤/后端转义 | 安全测试(XSS) |
规则:长度5-30位,必须包含大写字母、小写字母、数字、特殊字符,通过SHA256传输存储,不允许中文。
编号 | 用例编号 | 输入值 | 预期结果 | 测试类型 |
|---|---|---|---|---|
1 | PW-V-001 | Pass@123 | 通过 | 有效等价类(符合全部要求) |
2 | PW-V-002 | A1b!(5位) | 通过 | 边界值(最小长度,包含全部类型) |
3 | PW-V-003 | Aa1!+重复至30位 | 通过 | 边界值(最大长度,符合规则) |
4 | PW-IV-001 | pass@123(缺大写) | 失败,提示需包含大写字母 | 无效等价类(缺大写) |
5 | PW-IV-002 | PASS@123(缺小写) | 失败,提示需包含小写字母 | 无效等价类(缺小写) |
6 | PW-IV-003 | Pass@word(缺数字) | 失败,提示需包含数字 | 无效等价类(缺数字) |
7 | PW-IV-004 | Pass123(缺特殊字符) | 失败,提示需包含特殊字符 | 无效等价类(缺特殊字符) |
8 | PW-IV-005 | 密码中文 | 失败,提示不允许中文 | 无效等价类(中文) |
9 | PW-IV-006 | A1b!(4位) | 失败,提示长度不足 | 边界值(小于最小长度) |
10 | PW-IV-007 | Aa1!+重复至51位 | 失败,提示超长 | 边界值(超过最大长度) |
11 | PW-IV-008 | (空) | 失败,提示必填 | 必填项验证 |
12 | PW-SEC-001 | ' OR '1'='1 | 失败,且不应返回详细错误 | 安全测试(SQL注入) |
13 | PW-SEC-002 | 传输过程中是否明文? | 检查网络请求,应为SHA256哈希值 | 安全测试(传输安全) |
规则:必须与密码一致。
编号 | 用例编号 | 密码 | 确认密码 | 预期结果 | 测试类型 |
|---|---|---|---|---|---|
1 | CFM-V-001 | Pass@123 | Pass@123 | 通过 | 有效等价类(一致) |
2 | CFM-IV-001 | Pass@123 | pass@123 | 失败,提示不一致 | 无效等价类(大小写不一致) |
3 | CFM-IV-002 | Pass@123 | Pass@124 | 失败,提示不一致 | 无效等价类(一个字符不同) |
4 | CFM-IV-003 | Pass@123 | (空) | 失败,提示不一致或必填 | 无效等价类(为空) |
规则:中国手机格式,1开头的11位数字。
编号 | 用例编号 | 输入值 | 预期结果 | 测试类型 |
|---|---|---|---|---|
1 | MOB-V-001 | 13800138000 | 通过 | 有效等价类(常规号码) |
2 | MOB-IV-001 | 1380013800 (10位) | 失败,提示格式错误 | 边界值(少一位) |
3 | MOB-IV-002 | 138001380000 (12位) | 失败,提示格式错误 | 边界值(多一位) |
4 | MOB-IV-003 | 23800138000 (非1开头) | 失败,提示格式错误 | 无效等价类(首数字非1) |
5 | MOB-IV-004 | 1380013800a | 失败,提示格式错误 | 无效等价类(含字母) |
6 | MOB-IV-005 | (空) | 失败,提示必填?注意:规则未明确手机是否必填,假设为必填。 | 必填项验证 |
7 | MOB-IV-006 | 重复注册同一手机号 | 失败,提示手机已注册?注意:取决于业务规则,通常唯一。 | 唯一性检查(若要求唯一) |
8 | MOB-SEC-001 | 13800138000' OR '1'='1 | 失败,无SQL错误信息 | 安全测试(SQL注入) |
规则:符合国际标准Email格式。
编号 | 用例编号 | 输入值 | 预期结果 | 测试类型 |
|---|---|---|---|---|
1 | EMA-V-001 | user@example.com | 通过 | 有效等价类(常规邮箱) |
2 | EMA-V-002 | user.name@example.co.uk | 通过 | 有效等价类(带点域名) |
3 | EMA-IV-001 | userexample.com(无@) | 失败,提示格式错误 | 无效等价类(缺@) |
4 | EMA-IV-002 | user@ (无域名) | 失败,提示格式错误 | 无效等价类(域名缺失) |
5 | EMA-IV-003 | user@example (无顶级域) | 失败,提示格式错误 | 无效等价类(不完整域名) |
6 | EMA-IV-004 | user@.com | 失败,提示格式错误 | 无效等价类(@后直接点) |
7 | EMA-IV-005 | (空) | 失败,提示必填?注意:规则未明确,假设为必填。 | 必填项验证 |
8 | EMA-IV-006 | 重复注册同一邮箱 | 失败,提示邮箱已注册?注意:通常要求唯一。 | 唯一性检查(若要求唯一) |
9 | EMA-SEC-001 | "><script>alert('xss')</script>@example.com | 失败,前端过滤/后端转义 | 安全测试(XSS) |
编号 | 用例编号 | 场景描述 | 预期结果 | 测试类型 |
|---|---|---|---|---|
1 | FORM-V-001 | 所有字段填写有效值 | 注册成功,跳转或提示成功 | 整体功能 |
2 | FORM-IV-001 | 某个必填字段为空 | 失败,停留在本页,提示对应错误 | 必填项组合 |
3 | FORM-IV-002 | 多个字段无效 | 提示所有错误,不提交 | 多错误处理 |
4 | FORM-SEC-001 | 并发注册同一账号 | 仅一个成功,其他失败(数据库唯一约束) | 并发测试 |
5 | FORM-SEC-002 | 修改前端JS跳过验证 | 后端依然验证并拒绝无效数据 | 安全测试(绕过前端) |
6 | FORM-SEC-003 | 提交超长数据(如密码1000位) | 后端截断或拒绝,防止缓冲区溢出 | 安全测试(溢出) |
合计:11+13+4+8+9+8=53
唯一性检查:账号、手机、邮箱是否唯一需根据业务规则确定。若唯一,需在数据库层面设置唯一索引,并在并发测试中验证。
密码规则澄清:规则中“必须包含大写和小写英文字符、数字和特殊字符”是否允许其他字符(如空格)?建议明确特殊字符范围(如!@#$%^&*()等)。
传输安全:密码应在前端哈希(SHA256)后传输,避免明文。后端应再次哈希(加盐)存储。
错误信息:不应泄露敏感信息(如数据库结构),应返回通用错误提示。
输入过滤:所有字段应做前后端双重验证和过滤,防止XSS、SQL注入。
性能考虑:对于长度边界值(如30位密码),确保系统处理正常。
以上用例覆盖了主要功能、边界、异常和安全场景,可根据实际项目细节进行调整。
用户注册界面包括以下内容。
l账号:文本框,必填项。长度为>=5,<=20位,必须唯一、可以包含大写或小写英文字符或者数字(大写或小写英文字符必须含有,数字可有可无)(不允许中文和特殊字符(ASCII32-126范围内))。
l密码:密码框,必填项。长度为>=5,<=30位,必须包含大写和小写英文字符、数字和特殊字符(ASCII32-126范围内),密码通过SHA256散列进行传输和在后端存储(不允许中文)。
l确认密码:密码框,必填项。确认密码的值必须与密码的值一致(确认密码仅在前端做校验,不传输)。
l手机号:手机框(Type=phone),必填项。需符合中国手机号码格式(1开始的11位数字),必须唯一。
lEmail:Email框(Type=email),必填项。需符合国际标准Email格式,必须唯一。
l注册按钮:点击后提交表单。
请根据等价类、边界值、决策树、错误推测法,设计尽可能完善的测试用例,但是尽可能避免重复的测试用例或者无效的测试用例。另外请考虑并发、安全(比如XSS注入,SQL注入等)。
根据更新后的详细需求,我将重新设计一套完善的测试用例。重点强调ASCII字符集限制、唯一性要求以及安全考虑。
规则:5-20位,必须包含字母(大小写均可),可含数字,不允许中文和特殊字符
编号 | 测试类型 | 用例编号 | 输入值 | 预期结果 | 说明 |
|---|---|---|---|---|---|
1 | 有效等价类 | ACC-V-001 | Alice123 | 通过 | 字母+数字组合 |
2 | ACC-V-002 | Alice | 通过 | 纯字母(5位边界) | |
3 | ACC-V-003 | ALICE | 通过 | 纯大写字母 | |
4 | ACC-V-004 | AliceBobCharlieD (20位) | 通过 | 最大长度纯字母 | |
5 | ACC-V-005 | A1b2C3d4E5f6G7h8I9j0 | 通过 | 最大长度字母数字混合 | |
6 | 无效等价类 | ACC-IV-001 | Al12 | 失败,提示长度不足 | 4位(小于最小长度) |
7 | ACC-IV-002 | AliceBobCharlieDe (21位) | 失败,提示超长 | 21位(超出最大长度) | |
8 | ACC-IV-003 | 12345 | 失败,提示必须包含字母 | 纯数字 | |
9 | ACC-IV-004 | 测试用户 | 失败,提示不允许中文 | 中文字符 | |
10 | ACC-IV-005 | Alice_123 | 失败,提示不允许特殊字符 | 包含下划线 | |
11 | ACC-IV-006 | Alice 123 | 失败,提示不允许特殊字符 | 包含空格 | |
12 | ACC-IV-007 | (空) | 失败,提示必填 | 空值 | |
13 | 边界值 | ACC-BV-001 | Abcd (4位) | 失败 | 长度4,小于下限 |
14 | ACC-BV-002 | Abcde (5位) | 通过 | 长度5,等于下限 | |
15 | ACC-BV-003 | Abcdef (6位) | 通过 | 长度6,下限+1 | |
16 | ACC-BV-004 | ...(19位字母)... | 通过 | 长度19,上限-1 | |
17 | ACC-BV-005 | ...(20位字母)... | 通过 | 长度20,等于上限 | |
18 | ACC-BV-006 | ...(21位字母)... | 失败 | 长度21,大于上限 | |
19 | ASCII验证 | ACC-ASC-001 | Alice\x00123 | 失败 | 包含NULL字符 |
20 | ACC-ASC-002 | Alice\x1F123 | 失败 | 包含控制字符 | |
21 | ACC-ASC-003 | Alice\x7F123 | 失败 | 包含DEL字符 | |
22 | ACC-ASC-004 | Alice\x80123 | 失败 | 扩展ASCII字符 | |
23 | 安全测试 | ACC-SEC-001 | <script>alert(1)</script> | 失败并过滤 | XSS攻击 |
24 | ACC-SEC-002 | admin' OR '1'='1 | 失败无SQL错误 | SQL注入 | |
25 | ACC-SEC-003 | ../../etc/passwd | 失败 | 路径遍历 | |
26 | 并发测试 | ACC-CON-001 | 同时注册相同账号Alice123 | 仅一个成功 | 唯一性约束 |
2.密码字段测试矩阵
规则:5-30位,必须包含大小写字母、数字、特殊字符(ASCII 32-126)
编号 | 测试类型 | 用例编号 | 输入值 | 预期结果 | 说明 |
|---|---|---|---|---|---|
1 | 有效等价类 | PW-V-001 | Pass@123 | 通过 | 标准组合 |
2 | PW-V-002 | Aa1! (5位边界) | 通过 | 最小长度 | |
3 | PW-V-003 | Aa1!重复7次 +Aa1!(30位) | 通过 | 最大长度 | |
4 | PW-V-004 | (空格) + Aa1@ | 通过 | 包含空格(ASCII 32) | |
5 | PW-V-005 | Aa1~ | 通过 | 包含~(ASCII 126) | |
6 | 无效等价类 | PW-IV-001 | Pass123 | 失败,缺特殊字符 | 无特殊字符 |
7 | PW-IV-002 | pass@123 | 失败,缺大写字母 | 全小写 | |
8 | PW-IV-003 | PASS@123 | 失败,缺小写字母 | 全大写 | |
9 | PW-IV-004 | Pass@word | 失败,缺数字 | 无数字 | |
10 | PW-IV-005 | 密码@123 | 失败,不允许中文 | 含中文 | |
11 | PW-IV-006 | (空) | 失败,提示必填 | 空值 | |
12 | 组合缺失 | PW-IV-007 | abcde | 失败,缺大写/数字/特殊 | 全小写字母 |
13 | PW-IV-008 | ABCDE | 失败,缺小写/数字/特殊 | 全大写字母 | |
14 | PW-IV-009 | 12345 | 失败,缺字母/特殊 | 纯数字 | |
15 | PW-IV-010 | !@#$% | 失败,缺字母/数字 | 纯特殊字符 | |
16 | 边界值 | PW-BV-001 | Aa1! (5位) | 通过 | 下限边界 |
17 | PW-BV-002 | Aa1@ (5位) | 通过 | 下限边界 | |
18 | PW-BV-003 | Aa12 (4位) | 失败 | 小于下限 | |
19 | PW-BV-004 | ...(30位组合)... | 通过 | 上限边界 | |
20 | PW-BV-005 | ...(31位组合)... | 失败 | 大于上限 | |
21 | 特殊字符验证 | PW-SPC-001 | Aa1 (空格结尾) | 通过 | 空格ASCII 32 |
22 | PW-SPC-002 | Aa1! | 通过 | ! ASCII 33 | |
23 | PW-SPC-003 | Aa1@ | 通过 | @ ASCII 64 | |
24 | PW-SPC-004 | Aa1[ | 通过 | [ ASCII 91 | |
25 | PW-SPC-005 | Aa1 + \x1F | 失败 | 控制字符 | |
26 | 安全测试 | PW-SEC-001 | ' OR '1'='1 | 失败 | SQL注入 |
27 | PW-SEC-002 | <> alert(1) @1Aa | 失败并过滤 | XSS攻击 | |
28 | PW-SEC-003 | 检查传输是否为SHA256 | 网络请求为哈希值 | 传输安全 | |
29 | PW-SEC-004 | A*1000 | 失败,防溢出 | 缓冲区溢出 |
编号 | 测试类型 | 用例编号 | 密码 | 确认密码 | 预期结果 |
|---|---|---|---|---|---|
1 | 有效等价类 | CFM-V-001 | Pass@123 | Pass@123 | 通过 |
2 | 无效等价类 | CFM-IV-001 | Pass@123 | pass@123 | 失败,大小写不一致 |
3 | CFM-IV-002 | Pass@123 | Pass@124 | 失败,一个字符不同 | |
4 | CFM-IV-003 | Pass@123 | (空) | 失败 | |
5 | CFM-IV-004 | (空) | Pass@123 | 失败 | |
6 | 前端验证 | CFM-FE-001 | 修改JS绕过验证 | 后端仍需验证 | 安全考虑 |
编号 | 测试类型 | 用例编号 | 输入值 | 预期结果 | 说明 |
|---|---|---|---|---|---|
1 | 有效格式 | MOB-V-001 | 13800138000 | 通过 | 标准格式 |
2 | MOB-V-002 | 19912345678 | 通过 | 19开头 | |
3 | 无效格式 | MOB-IV-001 | 1380013800 | 失败,11位 | 10位数字 |
4 | MOB-IV-002 | 138001380000 | 失败,11位 | 12位数字 | |
5 | MOB-IV-003 | 23800138000 | 失败,1开头 | 非1开头 | |
6 | MOB-IV-004 | 1234567890a | 失败,纯数字 | 含字母 | |
7 | MOB-IV-005 | 123 4567 8901 | 失败,纯数字 | 含空格 | |
8 | 特殊值 | MOB-IV-006 | +8613800138000 | 失败,国际格式 | 含+86 |
9 | MOB-IV-007 | 08613800138000 | 失败 | 含086 | |
10 | 边界值 | MOB-BV-001 | 10*10 | 通过 | 最小号码 |
11 | MOB-BV-002 | 19*10 | 通过 | 最大号码 | |
12 | 安全测试 | MOB-SEC-001 | 13800138000' -- | 失败 | SQL注入 |
13 | MOB-SEC-002 | <script>标签 | 失败 | XSS攻击 | |
14 | 并发唯一性 | MOB-CON-001 | 同时注册同一手机号 | 仅一个成功 | 唯一性约束 |
编号 | 介绍 | 输入 | 预期 |
|---|---|---|---|
1 | 完全有效场景 | 有效账号+有效密码+匹配确认密码+有效手机+有效邮箱 | 注册成功 |
2 | 单个字段无效场景 | 分别测试每个字段的无效值,其他字段有效 | 注册失败,提示对应错误 |
3 | 多字段无效组合 | 测试2-3个字段同时无效 | 提示所有错误,不提交 |
4 | 唯一性冲突场景 | 测试重复注册相同账号/手机/邮箱 | 提示"已存在" |
5 | 安全攻击场景 | 在各字段尝试XSS/SQL注入 | 失败并被过滤 |
编号 | 用例编号 | 场景描述 | 预期结果 |
|---|---|---|---|
1 | ERR-001 | 复制粘贴密码到确认密码字段 | 通过(正常情况) |
2 | ERR-002 | 密码字段显示明文(默认应隐藏) | 显示为*或点 |
3 | ERR-003 | 提交后快速点击多次注册按钮 | 仅处理一次提交 |
4 | ERR-004 | 网络中断后提交 | 有相应错误处理 |
5 | ERR-005 | 使用浏览器的自动填充功能 | 正常填充并可通过验证 |
6 | ERR-006 | 页面刷新后已填内容是否保留 | 通常应清空(安全考虑) |
7 | ERR-007 | 密码输入时切换显示/隐藏 | 切换正常 |
8 | ERR-008 | Tab键切换字段顺序 | 符合逻辑顺序 |
9 | ERR-009 | 超时后会话是否有效 | 需重新验证或提示 |
编号 | 场景编号 | 并发操作 | 预期结果 |
|---|---|---|---|
1 | CON-001 | 100用户同时注册不同账号 | 全部成功 |
2 | CON-002 | 10用户同时注册同一账号 | 仅1成功,其他失败 |
3 | CON-003 | 同一用户多标签页注册 | 防重复提交机制生效 |
4 | CON-004 | 注册过程中修改后端数据 | 事务完整性保证 |
编号 | 测试类型 | 测试点 | 预期结果 |
|---|---|---|---|
1 | 输入验证 | SQL注入:' OR 1=1 -- | 被过滤,无SQL错误 |
2 | XSS: <> alert() | 被转义或过滤 | |
3 | 路径遍历:../../../etc/passwd | 被拒绝 | |
4 | 传输安全 | 密码是否明文传输 | 必须为SHA256哈希 |
5 | 是否使用HTTPS | 应使用HTTPS | |
5 | 存储安全 | 密码存储是否加盐哈希 | 应加盐SHA256 |
7 | 敏感信息是否加密存储 | 手机/邮箱应脱敏或加密 | |
8 | 会话安全 | 注册成功后的跳转 | 应跳转安全页面 |
9 | 注册失败的信息泄露 | 不泄露系统信息 |
26+29+6+14+16+5+9+4+9=118
1.优先级排序:
oP0:基本功能、必填项验证、格式验证
oP1:边界值、组合测试、唯一性验证
oP2:安全测试、并发测试、错误推测
2.自动化建议:
o使用Selenium/Cypress进行UI自动化
o使用Postman/JMeter进行API和并发测试
o使用OWASP ZAP进行安全扫描
3.数据库验证:
o验证数据正确存储
o验证唯一约束生效
o验证密码为哈希值
这个测试用例集覆盖了功能、安全、性能和用户体验等多个维度,可根据实际项目资源和时间进行优先级调整和执行。