前言
刚入行软件测试,面对一堆专业术语容易一头雾水。本文用最直白的语言、最简短的例子,帮你快速掌握10个最核心的基础概念。读完你就能看懂测试文档、听懂团队讨论、写出一份合格的Bug报告。
---
是什么:程序没有按预期运行,就是Bug。
为什么重要:测试的核心工作就是找Bug。
怎么做:发现Bug后,需要记录以下信息:
- ►标题(一句话描述问题)
- ►复现步骤(从哪一步开始操作)
- ►实际结果(你看到了什么)
- ►预期结果(应该是什么样)
例子:登录页面输入正确密码后点击登录,页面无反应。Bug报告标题:“登录按钮点击后无响应”。
---
是什么:测试用例是一组“输入+操作+预期结果”的集合,用来验证某个功能是否正确。
为什么重要:没有测试用例,测试就像无头苍蝇,想到哪测到哪。
怎么做:写测试用例时,至少包含:
- ►用例编号
- ►测试场景
- ►前置条件(比如已登录)
- ►测试步骤
- ►预期结果
例子:测试“搜索功能”的一个用例:
用例编号:TC-SEARCH-001
场景:搜索已存在的商品
前置条件:已登录,商品“苹果”已上架
步骤:1. 在搜索框输入“苹果” 2. 点击搜索按钮
预期结果:页面显示“苹果”商品列表
---
是什么:在正式测试前,先快速跑一遍核心功能,看看系统能不能“开机”。如果连核心功能都挂了,就不用往下测了。
为什么重要:节省时间。避免花几小时测一个连登录都报错的系统。
怎么做:冒烟测试用例只覆盖核心流程(登录、注册、核心业务操作),通常不超过20个用例,执行时间控制在5-10分钟。
例子:测试一个电商APP,冒烟测试用例包括:打开APP → 注册/登录 → 浏览商品 → 加入购物车 → 支付。
---
是什么:修改代码后,重新测试一遍已有的功能,确保新代码没有破坏旧功能。
为什么重要:开发改了一行代码,可能让原来正常的功能出问题。回归测试就是兜底的。
怎么做:回归测试通常用自动化脚本执行,因为每次都跑一遍全量用例太耗时。每次发版前,必须跑完回归测试。
例子:开发修复了“支付按钮卡顿”的Bug,回归测试就要重新跑一遍“登录→浏览→加购物车→支付”的全流程。
---
是什么:
- ►黑盒测试:不看代码,只测功能。输入数据,看输出结果对不对。
- ►白盒测试:看代码,测代码逻辑是否覆盖全路径。
为什么重要:黑盒测试从用户视角找问题,白盒测试从开发者视角找隐患。两者互补。
怎么做:
- ►黑盒测试:写测试用例时,关注不同输入组合(如边界值、等价类划分)。
- ►白盒测试:写测试用例时,关注代码分支(if/else、for循环)是否都跑过。
例子:测试一个“计算器”应用:
- ►黑盒测试:输入“2+3”,看结果是不是“5”。
- ►白盒测试:看代码中加法逻辑是否处理了负数、小数、大数。
---
是什么:Bug最容易出现在输入值的“边界”附近。边界值分析就是专门测这些边界点。
为什么重要:很多程序员写代码时,边界判断容易出错(比如“>=”写成“>”)。
怎么做:取最小值、最小值+1、最大值、最大值-1、中间值进行测试。
例子:一个密码长度要求6-16位。需要测试的边界值:
- ►5位(无效边界)
- ►6位(有效最小值)
- ►7位(有效边界+1)
- ►15位(有效边界-1)
- ►16位(有效最大值)
- ►17位(无效边界)
---
是什么:把输入数据分成若干“等价类”,每个类里选一个代表值测试即可。
为什么重要:减少测试用例数量,提高效率。不用每个值都测一遍。
怎么做:
- ►有效等价类:程序能正确处理的输入。
- ►无效等价类:程序不能处理的输入(比如负数、超长字符串)。
例子:年龄输入框要求1-150岁。
- ►有效等价类:1-150之间的任意整数(如25)
- ►无效等价类:0、负数、151、非数字字符(如“abc”)
只需测4个值,就能覆盖所有情况。
---
是什么:用代码代替人工操作,自动执行测试用例并比对结果。
为什么重要:重复性高、执行频率高的测试(如回归测试)由机器来做,效率高、不疲劳。
怎么做:常用工具有Selenium(Web端)、Appium(移动端)、Postman(API接口)。编写脚本模拟用户操作。
例子:用Python+Selenium自动化测试登录功能:
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://example.com/login")
driver.find_element(By.ID, "username").send_keys("testuser")
driver.find_element(By.ID, "password").send_keys("pass123")
driver.find_element(By.ID, "loginBtn").click()
assert "欢迎回来" in driver.page_source
driver.quit()
---
是什么:测试系统在特定负载下的响应速度、稳定性和资源消耗。
为什么重要:功能正常不代表能扛住高并发。性能瓶颈是系统上线后最常见的故障。
怎么做:使用JMeter、LoadRunner等工具模拟多个虚拟用户同时操作,观察系统指标(响应时间、吞吐量、CPU/内存占用)。
例子:测试一个电商网站“秒杀”功能,模拟1000个用户同时点击“立即购买”,看页面是否崩溃、支付是否超时。
---
是什么:测试用例覆盖了多少代码或功能。常用指标有:
- ►代码覆盖率:被测试执行的代码行数占比。
- ►功能覆盖率:被测试的功能点占比。
为什么重要:覆盖率低意味着有大量代码或功能没有被测试,风险高。
怎么做:使用覆盖率工具(如JaCoCo、Istanbul)生成报告,分析哪些代码没测到,补充测试用例。
例子:代码覆盖率报告显示“if-else分支中else分支未覆盖”,说明这个分支的逻辑从未被执行测试。
---
自测清单
读完这篇文章,你能回答以下问题吗?(每个问题对应一个概念)
1. 发现一个Bug,需要记录哪些信息?
2. 测试用例最少包含哪几个要素?
3. 冒烟测试和回归测试的区别是什么?
4. 黑盒测试和白盒测试,你更适合从哪个开始学?
5. 密码长度6-16位,边界值分析要测哪几个值?
6. 等价类划分能帮你节省多少测试时间?
7. 自动化测试适合什么场景?
8. 性能测试主要关注哪些指标?
9. 测试覆盖率低意味着什么?
10. 如果只能记住一个测试思想,你选哪个?
---
总结
软件测试不是玄学,而是有方法、有套路的技术活。10个基础概念,每一个都是测试工程师的日常工具。从今天开始,遇到任何一个测试任务,先问自己:我该用哪个概念来指导我的测试?