📌测试到底做什么?
你可能会问自己一个问题:测试工程师到底每天在做什么?
这不是一个简单的问题。很多人对测试的理解停留在“点点点、找找Bug”。但实际上,一个专业的测试工程师有着清晰的工作流程和方法论。
简单来说,软件测试的六大核心工作内容是:
| 1 | 掌握需求 | 要测什么? | 需求理解文档 |
| 2 | 测试计划 | 怎么安排时间? | 测试计划Excel |
| 3 | 测试用例 | 具体怎么测? | 测试用例文档 |
| 4 | 测试执行 | 实际去测! | Bug记录 |
| 5 | 测试报告 | 测完了怎么说? | 测试报告 |
| 6 | 回归测试 | 改完之后确认没坏? | 回归通过确认 |
本文定位:今天是入职系列的第一篇,我们将学习前三步——掌握需求、测试计划、测试用例编写。重点掌握测试用例的设计方法,特别是边界值和等价类这两个最基础也最重要的技巧。
📌 核心结论:测试不是随便点点,而是有方法、有流程、有产出的专业工作。掌握这些基本功,你就迈出了成为专业测试工程师的第一步。
一、掌握需求(要测什么?)
1.1 新人入职会收到什么?
当你第一天坐在工位上,测试负责人(通常是测试组长)会给你两样东西:
第一样:系统需求说明书
这是一份文档,通常包含:
-
系统功能描述:这个系统是干什么的?有哪些功能?
-
原型图:每个页面的样子,按钮在哪里,点击后会怎样
-
业务规则:什么条件下做什么操作,应该有什么结果
为什么需要这个文档?
你需要先知道“什么是对的”,才能判断“什么是错的”。系统需求说明书就是告诉你“正确的行为应该是什么”。如果你连正确的标准都不知道,就没法判断程序有没有问题。
第二样:Bug管理工具的地址和账户
常用的Bug管理工具有:JIRA、禅道、Tapd等。
Bug管理工具的作用:
-
记录你发现的所有问题
-
告诉开发人员“哪里出问题了”
-
跟踪开发人员有没有修复
-
你验证修复后关闭Bug
1.2 如何阅读需求文档?
拿到需求文档后,不要急着上手测。先做三件事:
第一步:通读全文,建立整体认知
把整个需求文档从头到尾看一遍,了解:
-
这个系统是做什么的?(例如:一个电商网站、一个后台管理系统、一个App)
-
有哪些主要功能模块?(例如:登录注册、商品浏览、购物车、订单支付)
-
用户的典型使用流程是什么?(例如:打开App→登录→搜索商品→加入购物车→下单→支付)
第二步:逐条理解,找出疑问
逐条阅读需求描述,标出你不太理解的地方。比如:
-
“优惠券可以叠加使用”——最多能叠加几张?
-
“密码强度要求中等”——什么叫中等?具体是什么规则?
第三步:向产品经理或测试负责人确认
不懂就问,不要猜测。需求上的歧义是导致Bug的重要原因之一。提前澄清,比上线后发现要好得多。
✅ 掌握需求的验收标准:
-
能说出系统的主要功能和核心流程
-
清楚各功能模块的边界和约束条件
-
所有疑问已向产品经理确认
二、测试计划(怎么安排时间?)
2.1 什么是测试计划?
掌握需求之后,你需要回答下一个问题:这么多功能,按什么顺序测?每个人测什么?每项任务要花多长时间?
这就是测试计划要解决的事情。
测试计划的核心是一份排期Excel表格,通常由测试负责人制定,然后分配给组员执行。
2.2 测试计划Excel的核心内容
一份标准的测试计划Excel包含以下列:
| 模块 | 功能模块名称 | 用户管理 |
| 子模块 | 具体功能点 | 用户注册 |
| 任务描述 | 需要做什么 | 编写注册功能测试用例 |
| 负责人 | 谁来做 | 张三 |
| 计划开始时间 | 预计哪天开始 | 2026-06-03 |
| 计划结束时间 | 预计哪天完成 | 2026-06-05 |
| 实际开始时间 | 实际哪天开始的 | 2026-06-03 |
| 实际结束时间 | 实际哪天完成的 | 2026-06-04 |
| 状态 | 进行中/已完成/延期 | 已完成 |
2.3 测试计划的两个作用
作用一:明确任务分工
告诉每个人:你负责哪个模块,什么时候开始,什么时候要完成。避免多人同时测同一个功能造成资源浪费,或者某个功能没人测被遗漏。
作用二:跟踪项目进度
测试负责人可以通过这个表格了解整体进度:哪些模块已完成,哪些模块有延期风险,是否需要协调资源。
💡 新人须知:作为新入职的测试工程师,你通常是“任务的执行者”而不是“计划的制定者”。测试负责人会把分配好的任务告诉你,你按照计划完成即可。但了解测试计划的结构和目的,能帮你更好地理解整个测试工作的节奏。
三、测试用例(具体怎么测?)
3.1 什么是测试用例?
测试负责人把任务分配给你之后,你拿到了一个具体的功能模块(比如“用户注册”)。现在问题来了:这个功能怎么测?
测试用例就是回答这个问题的文档。
测试用例的定义:一组输入数据、操作步骤和预期结果的集合,用于验证某个功能是否按需求正确实现。
一个标准测试用例包含的要素:
| 用例编号 | 唯一标识,方便管理 | TC_REG_001 |
| 测试标题 | 一句话说明测什么 | 验证正确用户名和密码可注册 |
| 前置条件 | 测试前需要准备好的状态 | 用户名未被注册,网络正常 |
| 测试步骤 | 一步步的操作指令 | 1.打开注册页 2.输入用户名 3.输入密码 4.点击注册 |
| 测试数据 | 具体输入的值 | 用户名:test01,密码:123456 |
| 预期结果 | 期望看到的现象 | 注册成功,跳转到登录页 |
| 实际结果 | 执行后看到的现象(执行时填写) | 与预期一致 |
| 状态 | 通过/失败/阻塞 | 通过 |
3.2 测试用例的灵魂:等价类划分法
什么是等价类?
你有没有想过:一个用户名输入框,有无数种可能的输入——abcd、Abcd123、12345abcd……你不可能把所有可能的值都测一遍,那样要测到天荒地老。
等价类的核心思想:把无限多的输入,划分成有限的几个“等价类”。每个等价类里的输入,应该产生相同的行为结果。你只需要从每个等价类中选一个代表来测试就够了。
等价类的两种类型:
| 有效等价类 | 符合要求,应该被接受 | test01(正常用户名) |
| 无效等价类 | 不符合要求,应该被拒绝 | 长度<4:abc、长度>16:abc…太长、含非法字符:test@01 |
实例演示:测试用户名输入框
假设需求:用户名必须是4-16位字母数字,只能包含字母和数字。
| 有效等价类 | 正常合法用户名 | test01 | 通过校验 |
| 无效等价类 | 长度小于4位 | ab | 提示“用户名长度需4-16位” |
| 无效等价类 | 长度大于16位 | abcdefghijklmnopq | 提示“用户名长度需4-16位” |
| 无效等价类 | 包含非法字符 | test@01 | 提示“只能包含字母数字” |
| 无效等价类 | 全数字 | 123456 | 根据需求(如果需要字母则报错) |
| 无效等价类 | 全字母 | abcdef | 根据需求 |
✅ 等价类的设计步骤:
找出输入条件(如用户名长度、字符类型)
为每个条件划分有效等价类和无效等价类
为每个等价类编号
每个等价类至少设计一个测试用例
3.3 测试用例的利器:边界值分析法
什么是边界值?
大量实践证明:程序最容易在边界值上出问题。比如要求“4-16位”,那么4位和16位这两个边界点,以及3位和17位这两个边界附近的点,是最容易出错的地方。
边界值的五种类型:
| 略小于最小值 | min-1 | 3位 |
| 最小值 | min | 4位 |
| 正常值 | 中间任意值 | 8位 |
| 最大值 | max | 16位 |
| 略大于最大值 | max+1 | 17位 |
为什么不只测边界点,还要测“略小于”和“略大于”?
因为开发人员在写判断条件时,容易犯边界错误。
比如有人写成:

如果不测3位和17位,可能发现不了这个边界错误。
3.4 完整示例:注册功能测试用例
需求描述:
-
用户名:4-16位字母数字组合
-
密码:6-12位任意字符
-
两次输入的密码必须一致
-
用户名不能重复
测试用例设计:
| TC_001 | 正常注册 | 有效等价类 | test01 | 123456 | 123456 | 注册成功 |
| TC_002 | 用户名3位 | 边界(min-1) | te | 123456 | 123456 | 提示用户名长度错误 |
| TC_003 | 用户名4位 | 边界(min) | test | 123456 | 123456 | 注册成功 |
| TC_004 | 用户名16位 | 边界(max) | test012345678901 | 123456 | 123456 | 注册成功 |
| TC_005 | 用户名17位 | 边界(max+1) | test0123456789012 | 123456 | 123456 | 提示用户名长度错误 |
| TC_006 | 用户名含特殊字符 | 无效等价类 | test@01 | 123456 | 123456 | 提示只能包含字母数字 |
| TC_007 | 密码5位 | 边界(min-1) | test01 | 12345 | 12345 | 提示密码长度错误 |
| TC_008 | 密码6位 | 边界(min) | test01 | 123456 | 123456 | 注册成功 |
| TC_009 | 密码12位 | 边界(max) | test01 | 123456789012 | 123456789012 | 注册成功 |
| TC_010 | 密码13位 | 边界(max+1) | test01 | 1234567890123 | 1234567890123 | 提示密码长度错误 |
| TC_011 | 两次密码不一致 | 无效等价类 | test01 | 123456 | 123457 | 提示两次密码不一致 |
| TC_012 | 用户名已存在 | 无效等价类 | test01 | 123456 | 123456 | 提示用户名已被注册 |
⚠️ 编写测试用例的注意事项:
| 步骤不清晰,别人看不懂 | 按顺序写清楚每一步操作 |
| 预期结果模糊(如“应该正常”) | 写具体可验证的结果(如“跳转到首页”) |
| 用例之间相互依赖 | 每个用例应该是独立的,不依赖其他用例的执行结果 |
| 只写正向用例,忽略异常 | 正向和异常的比例建议1:1或1:2 |
四、测试用例的执行与管理
4.1 测试用例的存放位置
测试用例通常存放在以下地方:
| Excel文档 | 小型项目、新人练习 | 简单直观 |
| 测试管理平台 | 企业级项目(如禅道、TestLink) | 便于协作、版本管理 |
| 代码仓库 | 自动化测试项目 | 与代码统一管理 |
4.2 发现Bug后如何记录?
当你执行测试用例时发现实际结果与预期结果不符,说明你发现了Bug。需要在Bug管理工具中记录。
一个标准的Bug记录包含:
| 标题 | 一句话概括问题 | 【注册】用户名4位时注册失败 |
| 严重程度 | 问题有多严重 | 严重/一般/轻微 |
| 优先级 | 多紧急修复 | 高/中/低 |
| 所属模块 | 哪个功能模块 | 用户管理-注册 |
| 环境信息 | 测试环境 | Windows Chrome版本120 |
| 前置条件 | 怎么达到这个状态 | 用户名test01未被注册 |
| 复现步骤 | 一步步操作 | 1.打开注册页 2.输入test01 3.输入密码 4.点击注册 |
| 预期结果 | 应该怎样 | 注册成功 |
| 实际结果 | 实际怎样 | 提示“用户名长度需4-16位” |
| 截图 | 证据 | 附上截图 |
4.3 Bug的生命周期

| 新建 | 刚发现,还没确认 |
| 已确认 | 开发确认是Bug |
| 已修复 | 开发改完了 |
| 已关闭 | 你验证修复成功了 |
| 驳回 | 开发认为不是Bug(需求未定义/重复/用户错误) |
| 重新打开 | 验证后发现没修好,重新激活 |
📌 本章核心要点总结
软件测试前三步流程

等价类划分要点
| 有效等价类 | 符合要求的数据,应该通过 |
| 无效等价类 | 不符合要求的数据,应该被拒绝 |
| 每个等价类至少1个用例 | 用代表代替全集 |
边界值分析要点
| 必测5个点 | min-1、min、正常值、max、max+1 |
| 原因 | 程序员的边界判断容易出错 |
| 与等价类配合 | 等价类负责“范围”,边界值负责“边界点” |
测试用例编写检查清单
-
用例编号唯一,便于追溯
-
测试标题清晰,一看就懂
-
前置条件完整,别人能复现
-
测试步骤按顺序写清楚
-
测试数据具体明确
-
预期结果可验证
-
覆盖了等价类和边界值
今天是软件测试入职系列的第一篇。我们学习了软件测试六大工作内容中的前三步:
掌握需求:读懂需求文档,知道什么是对的
测试计划:明确任务分工和时间安排
测试用例:把“怎么测”写成文档
其中,测试用例编写是本篇的重点。等价类帮你用最少的用例覆盖最多的场景,边界值帮你抓住最容易出错的边界点。这两个方法是测试工程师的基本功,是每一份测试用例都必须用到的技巧。

