这份入门指南将带你从零开始,理解软件测试的核心思想,并掌握寻找Bug的基础方法。
第一部分:核心思想 - 你不是在“挑刺”,而是在“守护”
首先,要建立一个正确的心态:
· 测试的目的不是证明软件没问题,而是想尽办法证明软件有问题,从而帮助开发团队在用户发现问题之前修复它。
· 你是用户的代言人,是产品质量的守护者。你的工作能避免公司因糟糕的软件而损失金钱和声誉。
· 与开发人员是合作共赢的关系,而不是对立关系。你们的共同目标是做出优秀的产品。
第二部分:什么是Bug?—— 识别缺陷的双眼
Bug就是软件中任何不符合预期或需求的问题。常见类型包括:
1. 功能错误:该有的功能没实现,或者实现错了。(例如:点击“登录”按钮没反应)
2. 界面UI问题:错别字、排版错乱、颜色错误、元素重叠等。
3. 兼容性问题:在Chrome浏览器上正常,在Firefox上布局乱了;在iOS上闪退,在Android上正常。
4. 性能问题:软件运行缓慢、耗电过快、占用内存过大。
5. 安全性问题:用户密码明文存储、容易被SQL注入等。
6. 易用性问题:操作流程反人类,用户用起来很不方便。(例如:找不到关键按钮)
7. 逻辑错误:业务流程走不通。(例如:没购物也能支付成功)
第三部分:找Bug的基础方法 - 从“瞎点”到“有章法的点”
1. 需求分析 - 你的“作战地图”
在测试任何功能之前,第一件事就是看需求文档(PRD)。如果你不知道软件“应该”是什么样子,你就无法判断它“现在”的样子对不对。
· 问自己:这个功能的设计初衷是什么?预期流程是怎样的?有哪些规则和限制?
2. 设计测试用例 - 你的“作战计划”
测试用例就是为某个功能而设计的、一系列详细的测试步骤和预期结果。这是测试工作的核心。
· 一个简单测试用例包含:
· 用例标题:测试什么(例如:验证用户使用正确用户名和密码可以成功登录)
· 前置条件:需要什么准备(例如:用户已注册)
· 测试步骤:一步一步的操作(1. 打开App 2. 输入用户名XXX 3. 输入密码YYY 4. 点击“登录”按钮)
· 预期结果:应该发生什么(登录成功,跳转到首页)
· 实际结果:实际发生了什么(留空,执行后再填写)
· 状态:通过 / 失败
3. 执行测试 - “开枪射击”
按照你写的测试用例一步步操作,并记录实际结果。
· 如果实际结果 != 预期结果 -> 恭喜你,找到一个Bug!
· 如果实际结果 == 预期结果 -> 用例通过。
4. 常用测试技巧(黑盒测试)
即使没有用例,这些技巧也能帮你发现大量问题:
· 等价类划分:
· 思想:输入太多测不完,就把输入数据分类,从每一类中选一个代表值来测试。
· 示例:测试“用户名”输入框(要求6-12位数字)。
· 有效等价类:符合要求的,如 123456。
· 无效等价类:不符合要求的,如 123(太短)、1234567890123(太长)、abcde!(非法字符)。
· 你只需要从每个类别中选一两个值测试即可,大大减少工作量。
· 边界值分析:
· 思想:错误最容易发生在边界附近。
· 示例:还是“6-12位数字”。
· 测试:5位(12345)、6位(123456)、7位、11位、12位(123456789012)、13位(1234567890123)。
· 你会发现,5位和13位应该报错,6位和12位应该成功。
· 错误推测法:
· 思想:凭经验和直觉猜测软件可能在哪些地方出错。
· 示例:
· 必填项不填就点击提交。
· 输入超长的字符串(如1000个字符)。
· 重复提交表单。
· 网络中断时进行操作。
· 探索性测试:
· 思想:在理解软件功能的基础上,像用户一样随意地“探索”和“瞎点”,但带着测试的目的性。这是对新手上手最快、最有趣的方法!
· 示例:测试一个电商网站,不要只走“浏览->加入购物车->付款”的正常流程。试试:
· 付款到一半关掉页面再打开。
· 同时用手机和电脑登录同一个账号操作。
· 在搜索框里输入各种稀奇古怪的符号。
第四部分:发现Bug之后 - 如何有效报告
找到一个Bug只是成功了一半,清晰地描述它才能让开发人员快速修复。
一份好的Bug报告应包含:
1. 清晰明确的标题:一句话概括问题。(例如:【购物车页面】商品数量减少按钮点击无效)
2. 环境:在什么情况下发现的?(例如:iPhone 12, iOS 16.5, App版本v2.1.0, Wi-Fi网络)
3. 复现步骤:这是最重要的部分! 像写食谱一样,一步步告诉开发如何能看到这个Bug。(例如:1. 打开App 2. 将A商品加入购物车 3. 进入购物车页面 4. 点击A商品数量的‘-’按钮)
4. 预期结果:期望应该发生什么?(数量从1变为0,商品被移除)
5. 实际结果:实际发生了什么?(点击‘-’按钮无任何反应)
6. 附件(证据):一图胜千言! 务必加上截图或屏幕录制视频。用箭头或方框在图上标出问题所在。
7. 严重等级:这个Bug有多严重?(例如:阻塞、严重、一般、次要)
8. Bug类型:是功能问题?还是UI问题?
报告Bug的黄金法则:对事不对人,描述客观事实。
第五部分:入门实践建议
1. 从测试身边的一切开始:你手机上的每个App,访问的每个网站,都可以成为你的测试对象。试着用上面提到的方法去“挑毛病”。
2. 学习使用工具:
· 项目管理:了解Jira、禅道等是如何用来提交和管理Bug的。
· 抓包工具:初步了解Charles/Fiddler,可以看App和服务器之间传输了什么数据,对分析复杂问题非常有帮助。
3. 阅读和社区:
· 阅读经典的软件测试书籍(如《软件测试的艺术》)。
· 关注测试相关的博客、论坛(如TesterHome、知乎的测试话题)。
4. 考虑学习自动化:手工测试是基础,但要想长远发展,需要学习编程(如Python/Java)和自动化测试工具(如Selenium、Appium)。不过这是后话,先把手工基础打牢。
总结
找Bug入门很简单:
1. 心态正:你是守护者。
2. 看需求:知道什么是对的。
3. 用方法:等价类、边界值、探索性测试。
4. 报清楚:带图、步骤详细、客观描述。