测试用例编写方法总结
测试用例编写方法总结一、测试用例的基本概念1.1 什么是测试用例测试用例是为了验证软件功能是否符合预期而设计的一组输入、执行步骤和预期结果。它是测试执行的依据也是测试过程的核心文档。1.2 测试用例的作用确保测试的可重复性和一致性作为测试执行的标准操作手册便于跟踪和管理测试进度作为回归测试的基础评估需求覆盖率1.3 好的测试用例特征可执行性步骤清晰任何人都能按照用例执行测试可判定性预期结果明确能够判断测试是否通过独立性每个用例独立不依赖其他用例的执行结果可追溯性能够追溯到具体的需求或设计文档高效性用最少的用例覆盖最多的测试点二、测试用例的基本结构2.1 核心要素字段说明示例用例编号唯一标识便于管理和追溯TC_User_Login_001用例标题一句话描述测试目标验证有效账号密码登录成功测试模块所属功能模块用户中心测试功能具体功能点用户登录优先级P0-P3优先级越高越重要P0前置条件执行测试前需要满足的条件用户已注册、网络正常测试步骤详细的操作步骤1. 打开登录页 2. 输入用户名…预期结果明确的预期输出跳转到首页显示用户昵称关联需求关联的需求文档或IDREQ-001测试数据使用的测试数据用户名: test, 密码: 1234562.2 用例模板示例用例编号TC_User_Register_001 用例标题验证11位有效手机号注册成功 测试模块用户中心 测试功能手机号注册 优先级P0 前置条件网络正常手机号未注册 测试步骤 1. 进入注册页面 2. 输入手机号13800138000 3. 点击获取验证码 4. 输入验证码123456 5. 勾选用户协议 6. 点击注册按钮 预期结果 - 注册成功页面跳转到登录页 - 提示注册成功请登录 - 数据库中新增一条用户记录 关联需求REQ-002三、测试用例设计方法3.1 等价类划分法核心思想将输入域划分为若干等价类从每个类中选取代表性数据测试。步骤分析需求确定输入条件划分有效等价类符合规则的输入划分无效等价类不符合规则的输入为每个等价类设计测试用例示例用户名输入验证规则3-20位字母数字下划线等价类类型具体条件代表数据预期结果有效等价类3-20位字母数字下划线user01验证通过无效等价类1少于3位ab提示用户名长度至少3位无效等价类2多于20位abcdefghijklmnopqrstuvwxyz提示用户名长度不超过20位无效等价类3包含特殊字符user123提示用户名只能包含字母、数字和下划线无效等价类4空值(空)提示用户名不能为空设计原则有效等价类一个用例可覆盖多个有效等价类无效等价类一个用例只覆盖一个无效等价类便于定位问题3.2 边界值分析法核心思想错误往往发生在边界附近重点测试边界值及其相邻值。常见边界类型边界类型示例场景必测边界值数值范围年龄18-60岁17、18、19、59、60、61字符个数密码6-20位5、6、20、21时间边界活动截止23:5923:58、23:59、00:00容量边界上传文件最大10MB9.99MB、10MB、10.01MB示例密码长度验证6-20位用例ID输入值预期结果BV-015位密码提示密码长度不能少于6位BV-026位密码验证通过BV-0320位密码验证通过BV-0421位密码提示密码长度不能超过20位设计原则对于范围 [min, max]测试 min-1、min、min1、max-1、max、max1边界值通常与等价类划分结合使用3.3 判定表法核心思想当多个条件组合影响结果时用表格穷举所有组合。适用场景规则引擎、优惠券系统、多条件查询等。示例电商订单优惠规则条件C1是否会员C2订单金额≥100元C3是否首次下单结果A1享受9折优惠A2享受满100减20A3送新人礼包判定表规则C1会员C2金额≥100C3首次下单A1九折A2满减A3新人礼R1YYY✓✓✓R2YYN✓✓-R3YNY✓-✓R4YNN✓--R5NYY-✓✓R6NYN-✓-R7NNY--✓R8NNN---设计原则列出所有条件组合2^n 种每条规则对应一条测试用例条件超过4个时考虑使用正交实验法简化3.4 因果图法核心思想用图形方式描述条件与结果之间的因果关系再转换为判定表。基本符号符号含义说明○节点表示条件或结果→恒等条件成立结果成立非条件不成立结果成立∧与多个条件同时成立结果才成立∨或多个条件任一成立结果就成立示例文件删除确认条件C1文件已选中C2用户有删除权限结果E1显示删除确认弹窗关系E1 C1 ∧ C2两个条件同时满足才显示弹窗步骤分析需求确定原因和结果绘制因果图转换为判定表根据判定表设计测试用例3.5 正交实验法核心思想当条件组合爆炸时选取有代表性的组合用最少用例达到最大覆盖。适用场景兼容性测试、多参数组合测试。示例搜索功能测试因素和水平因素水平1水平2水平3关键词有无-筛选条件启用不启用-排序方式默认价格销量分页第1页中间页最后页正交表选择4因素最大3水平 → 选用 L9(3^4) 正交表生成的精简用例9条覆盖原本54条用例关键词筛选排序分页1有启用默认第1页2有不启用价格中间页3有-销量最后页4无启用默认中间页5无不启用价格最后页6无-销量第1页7-启用默认最后页8-不启用价格第1页9--销量中间页工具推荐微软PICT工具AllPairs工具3.6 场景法核心思想模拟用户真实使用路径设计端到端用例。步骤梳理业务流程识别主流程和分支流程设计每个场景的测试用例示例电商购物流程主流程用户登录 → 浏览商品 → 加入购物车 → 去结算 → 填写收货地址 → 选择支付方式 → 支付成功 → 订单完成异常场景登录失败用户名或密码错误商品库存不足支付失败余额不足网络中断收货地址不完整测试用例模板用例ID场景操作步骤预期结果SC-01正常购物流程1.登录→2.浏览商品→3.加入购物车→4.结算→5.支付订单创建成功SC-02商品库存不足1.浏览商品→2.加入购物车库存为0提示库存不足SC-03支付失败1.结算→2.支付余额不足提示支付失败订单状态为待支付3.7 错误推测法核心思想基于经验和直觉推测系统可能出错的地方。常见推测方向方向示例特殊字符SQL注入 OR 11 --极端值超大文件上传、负数金额并发操作连续点击提交按钮异常环境断网、低电量、时间变更操作顺序跳过必填步骤直接提交示例支付页面错误推测连续点击支付按钮是否重复扣款支付成功后断网订单状态是否一致金额输入框能否输入负数支付超时后是否可以重新支付3.8 状态迁移法核心思想基于系统状态变化设计用例覆盖所有可能的转换路径。适用场景订单系统、工单系统、状态机驱动的业务。示例外卖订单状态流转待付款 → 已付款 → 已发货 → 配送中 → 已完成 ↓ ↓ 已取消 已取消测试要点覆盖所有合法状态转换验证非法状态转换如已完成不能回到待付款测试状态转换的触发条件四、测试用例设计流程4.1 准备阶段步骤需求分析阅读需求文档明确功能需求、非功能需求和业务规则确认模糊点与产品、开发人员确认需求中的模糊或歧义之处划分测试模块将系统拆分成独立的模块和功能点示例模块用户中心 功能点注册、登录、找回密码、修改个人信息、退出登录4.2 设计阶段步骤确定测试类型功能测试、边界值测试、异常测试、反向测试等选择设计方法根据功能特点选择合适的用例设计方法编写测试用例按照模板填充用例的各个要素检查用例质量确保用例的可执行性、可判定性和独立性设计原则先设计正向用例再设计反向用例先覆盖核心功能再覆盖边缘功能用例之间避免重复覆盖4.3 评审与优化阶段步骤组织评审会邀请产品、开发、资深测试人员参与检查覆盖度确认用例是否覆盖所有需求点检查正确性确认预期结果是否符合产品逻辑检查可执行性确认用例是否依赖特定环境或数据优化调整根据评审意见修改和补充用例评审重点是否有遗漏的测试场景是否有冗余的测试用例预期结果是否明确可判定是否考虑了异常情况4.4 管理阶段步骤存储与编号使用工具管理用例编号规范统一版本控制跟踪用例的变更历史动态维护需求变更或软件迭代时及时更新用例复用与归档沉淀可复用的测试用例模板和方法常用工具测试管理工具TestLink、禅道、Jira文档工具Excel、Confluence五、测试用例编写实战5.1 实战场景用户登录功能需求描述用户可以使用手机号或邮箱登录密码长度6-20位登录失败3次后账号锁定10分钟支持记住密码功能用例设计用例编号用例标题前置条件测试步骤预期结果优先级TC_LOGIN_001手机号正确密码登录成功用户已注册1.输入手机号2.输入正确密码3.点击登录跳转到首页显示用户昵称P0TC_LOGIN_002邮箱正确密码登录成功用户已注册1.输入邮箱2.输入正确密码3.点击登录跳转到首页显示用户昵称P0TC_LOGIN_003手机号错误密码登录失败用户已注册1.输入手机号2.输入错误密码3.点击登录提示手机号或密码错误P0TC_LOGIN_004密码为空登录失败用户已注册1.输入手机号2.密码为空3.点击登录提示密码不能为空P1TC_LOGIN_005密码长度不足6位用户已注册1.输入手机号2.输入5位密码3.点击登录提示密码长度不能少于6位P1TC_LOGIN_006密码长度超过20位用户已注册1.输入手机号2.输入21位密码3.点击登录提示密码长度不能超过20位P1TC_LOGIN_007登录失败3次账号锁定用户已注册1.连续输入错误密码3次提示账号已锁定请10分钟后再试P0TC_LOGIN_008锁定期间无法登录账号已锁定1.输入正确账号密码2.点击登录提示账号已锁定请10分钟后再试P0TC_LOGIN_009锁定时间到期后可正常登录账号已锁定10分钟以上1.输入正确账号密码2.点击登录登录成功P1TC_LOGIN_010记住密码功能用户已注册1.输入账号密码2.勾选记住密码3.点击登录4.退出登录5.重新打开登录页登录页自动填充账号密码P15.2 实战场景API接口测试接口描述用户查询接口 GET /api/users请求参数参数名类型必填说明pageint否页码默认1limitint否每页数量默认10最大100keywordstring否搜索关键词响应结构{code:200,message:success,data:{list:[],total:0,page:1,limit:10}}用例设计用例编号用例标题请求参数预期结果优先级TC_API_USERS_001默认参数查询成功{}code200, 返回用户列表P0TC_API_USERS_002指定页码查询{“page”: 2}返回第2页数据P1TC_API_USERS_003指定每页数量{“limit”: 20}返回20条数据P1TC_API_USERS_004limit最大值{“limit”: 100}返回100条数据P1TC_API_USERS_005limit超过最大值{“limit”: 101}返回错误或默认100P1TC_API_USERS_006limit为0{“limit”: 0}返回错误或默认10P1TC_API_USERS_007搜索关键词{“keyword”: “test”}返回包含test的用户P1TC_API_USERS_008空关键词{“keyword”: “”}返回全部用户P1TC_API_USERS_009不存在的页码{“page”: 999}返回空列表total不变P1六、测试用例编写技巧6.1 用例设计技巧从用户角度出发模拟真实用户的操作场景先覆盖核心路径确保主流程的正确性注重边界条件边界附近是错误高发区考虑异常情况系统的容错能力很重要避免重复覆盖一个测试点只需要被覆盖一次用例粒度适中不要太细冗余也不要太粗漏测6.2 预期结果编写技巧结果要具体避免模糊表述❌ 坏登录成功✅ 好跳转到首页URL包含/home顶部显示用户昵称结果要可验证能够通过观察或工具验证❌ 坏可能成功✅ 好页面显示登录成功提示结果要完整考虑多方面的验证点页面跳转数据变化状态变化日志记录6.3 用例管理技巧编号规范TC_模块_功能_序号优先级划分P0冒烟、P1核心、P2一般、P3边缘版本控制记录用例的变更历史定期维护需求变更时及时更新用例用例复用抽取公共用例供多个场景使用七、测试用例设计常见误区7.1 误区一追求用例数量而非质量问题用例写了很多但覆盖的测试点很少或者重复覆盖。解决先用等价类/边界值压缩输入空间确保每个用例都有明确的测试目标定期评审删除冗余用例7.2 误区二只覆盖正常流程问题只测试正常场景忽略异常和边界情况。解决每个正常流程配套2-3个异常流程使用错误推测法补充异常场景考虑系统的容错能力7.3 误区三预期结果模糊问题预期结果不明确无法判断测试是否通过。解决预期结果要具体、可验证使用精确的描述避免可能、应该等词明确验证点页面、数据、状态、日志7.4 误区四用例之间相互依赖问题一个用例的执行依赖于另一个用例的结果。解决每个用例独立不依赖其他用例使用前置条件明确依赖关系准备测试数据时确保数据独立性7.5 误区五忽略非功能测试问题只测试功能正确性忽略性能、安全等非功能需求。解决根据需求文档识别非功能需求设计性能测试用例响应时间、并发量设计安全测试用例SQL注入、XSS攻击设计兼容性测试用例不同浏览器、设备八、总结8.1 设计方法选择策略场景推荐方法输入验证等价类划分 边界值分析多条件组合判定表法 / 因果图法业务流程场景法状态驱动状态迁移法多参数组合正交实验法经验补充错误推测法8.2 核心要点需求驱动测试用例必须可追溯到需求覆盖全面覆盖正常、异常、边界、性能等场景可执行性步骤清晰任何人都能执行可判定性预期结果明确能够判断通过与否独立性用例之间不相互依赖持续维护需求变更时及时更新用例8.3 常用工具工具类型推荐工具测试管理TestLink、禅道、Jira文档协作Confluence、Google Docs正交实验PICT、AllPairs自动化测试Selenium、pytest、JMeter