本文适合:零基础想入门软件测试的人、刚转行不知道学什么的测试新人。
内容包括:行业背景、薪资行情、核心概念、工具清单、学习路线、练手项目、面试题。
阅读时间:约15分钟。建议先收藏,再按学习计划分阶段回看。

一、软件测试是什么时候“火”的?

软件测试在国内经历了三个阶段,你可以理解为:从“不存在”到“附属品”,再到“独立刚需”

第一阶段:2000年之前,“不存在”
国内软件产业刚起步,开发人员自己写完自己测,没有专职测试。软件质量完全依赖个人能力,Bug 靠用户反馈。

第二阶段:2000-2010年,“开始出现”
随着互联网兴起、外资软件企业进入中国,微软、IBM 这类公司带来了成熟的软件工程体系。专职测试岗位开始出现,但地位不高,常被视为“开发做不了的人才去做测试”。薪资普遍低于开发。

第三阶段:2010年至今,“真正火起来”
移动互联网爆发是分水岭。几个关键因素叠加:

  • App 竞争白热化:一款 App 如果频繁崩溃、闪退,用户会秒删差评。质量直接决定生死。

  • 敏捷开发普及:迭代速度从半年一个大版本变成每周甚至每天更新。没有测试保障,上线就是赌博。

  • 安全事件频发:数据泄露、支付漏洞让企业意识到,测试不只是“点一点”,是风险防控。

  • 测试技术升级:自动化测试、性能测试、安全测试的出现,让测试从“手工劳动”升级为“技术工种”。薪资开始追平甚至超过部分开发岗位。

结论:软件测试真正“火”起来,是在 2010 年之后。现在不是最热的风口期,但需求量稳定、不可替代,是进入 IT 行业的稳健入口之一。

二、薪资如何?参考招聘软件

仅作参考,具体视公司和行业而定

按经验分层:

级别 年限 一线城市薪资 二线城市薪资 典型要求
初级功能测试 0-1年 5-8K 3.5-5.5K 会写用例、执行测试、提 Bug
中高级功能测试 1-3年 8-15K 5.5-10K 独立负责模块,熟悉业务流程
自动化/性能测试 2-5年 15-25K 10-18K 掌握 Python/Java,会用 Selenium/Jmeter
测试开发 3-5年 20-35K 15-25K 能搭建测试框架,写测试工具
测试经理/架构师 5年以上 25-40K+ 20-35K 团队管理,质量体系建设

按技能方向分层(同是 3 年经验):

  • 只会手工功能测试:10-15K

  • 会接口测试 + 数据库:12-18K

  • 会自动化 + 性能:15-22K

  • 测试开发:18-30K

与开发岗位对比参考(3年经验、一线城市):

  • Java 开发:18-30K

  • 前端开发:15-25K

  • 功能+自动化测试:15-22K

  • 测试开发:18-30K

三、什么是软件测试?软件测试分为哪些?

一句话定义:
软件测试,就是用人工或自动的方式,去验证软件“有没有按预期工作”,并在这个过程中,找出它可能存在的缺陷。

这定义里有三个关键点:

  1. 验证“有没有按预期工作”:你拿到一个软件,得先搞清楚它应该是什么样。比如一个登录功能,你的预期是:正确账号密码能进,错误密码不让进。测试就是把软件的实际行为,和这个预期做对比。

  2. 找出缺陷:当实际行为和预期不一致时,你就找到了一个“Bug”。比如输入正确密码,系统却报错“服务器异常”——这就是缺陷。测试的使命之一,就是在用户发现之前,自己先把这些坑填上。

  3. 提供质量信息:这是测试最容易被忽视的价值。你测完一个功能后,不只是告诉团队“这里有Bug”,更重要的是告诉大家:这个软件现在到底是什么状态?能不能发布?还有哪些风险?你做的是用数据和事实,为决策提供依据

用一句更直白的话说:
软件测试,就是替用户把关,替团队探路,替老板降低风险

软件测试的划分方式有很多种。对于初学者来说,最重要的是沿着两条主线去理解:

  • 第一条线:按“测试技术”划分(功能 vs 非功能)——回答“我测的是什么”。

  • 第二条线:按“测试阶段”划分(单元-集成-系统-验收)——回答“我在什么时间点测”。

下面分别展开。

第一条线:按测试技术划分

这是最基础的划分,也是你进入这个行业后,日常工作里不断在切换的两个维度。

1. 功能测试

  • 测什么:软件“做没做对”。

  • 核心问题:这个功能,在做了正确的操作时,得到正确的结果了吗?在做了错误的操作时,能正确地处理吗?

  • 举例:登录功能。测正确的账号密码能不能登进去;测错误的密码会不会被拦下;测不填密码直接点登录,会不会有提示。

  • 一句话:功能测试,就是去验证“软件该做的事做了,不该做的事没做”。

功能测试是整个测试体系的地基。一个软件要是连功能都没做对,谈其他都太早。

2. 非功能测试

  • 测什么:软件“做得好不好”。

  • 核心问题:除了功能正确,软件在性能、安全、兼容性、易用性上,是否达到了要求?

  • 它包括很多子类

子类 核心问题 举例
性能测试 软件在不同压力下,反应还快不快、稳不稳? 1000个人同时下单,系统会不会崩溃?
安全测试 软件能否抵御恶意攻击? 黑客能不能通过输入框,偷走服务器的数据?
兼容性测试 软件在不同环境下,能不能正常用? 在苹果和安卓手机上,页面会不会错乱?
易用性测试 用户用起来顺手吗? 老人能看懂这个界面,并自己完成操作吗?
  • 一句话:功能测试是“能用”,非功能测试是“好用、安全、稳定”。

第二条线:按测试阶段划分

这是你看一个软件从开发到上线,测试是怎么一步步参与的。

1. 单元测试

  • 谁来做:通常是开发人员自己。

  • 测什么:软件最小的组成单元,比如一个函数、一段代码逻辑。

  • 目的:确保每个“零件”本身没有缺陷,从最底层保证质量。

  • 理解它:就像检查每一块砖烧得好不好。

2. 集成测试

  • 谁来做:开发或测试。

  • 测什么:把多个单元组合起来,检查它们之间的接口和交互。

  • 目的:确保“零件”之间的连接没问题。

  • 理解它:检查砖和砖之间的水泥抹匀了没。

3. 系统测试

  • 谁来做:这是专业测试人员的主战场。

  • 测什么:把整个软件当成一个完整的系统,全面验证它的功能和各项非功能属性。

  • 目的:确保整个系统符合需求规格说明。本文前面讲的功能测试和非功能测试,大部分就发生在这个阶段。

  • 理解它:房子盖好了,开始检查每间屋子、每根水管、每条电线是否都正常工作。

4. 验收测试

  • 谁来做:用户或产品方代表。

  • 测什么:从用户的真实使用场景出发,验收整个软件。

  • 目的:确定系统是否满足业务需求,可以正式交付。

  • 理解它:请业主来看房,试试开关、摸摸台面。这里不满意就改,满意了就交房。

四、软件测试常用工具介绍

学习顺序建议:Postman → 禅道 → F12开发者工具 → Playwright → JMeter

一、功能测试相关

1. 浏览器自带的开发者工具(F12)

这是最基础、最常用的工具,不需要安装。打开任何浏览器,按F12就能调出来。

  • 有什么用:看网页的代码结构、网络请求、控制台错误信息。

  • 典型场景:一个按钮点了没反应,按F12看控制台有没有报错信息。

  • 一句话:功能测试的起点。你每天都会用到它。

2. XMind / 流程图工具

这不是测试工具,但功能测试离不开它。

  • 有什么用:画业务流程、理清测试思路。比如一个下单流程:选商品→加购物车→结算→支付,每个节点都可以展开成测试用例。

  • 一句话:在动手测之前,先把脑子里的逻辑画出来。


二、接口测试工具

Postman(最推荐,新手第一站)

  • 有什么用:向服务器发送请求,看它返回什么数据。不需要界面,直接测试“墙里的水管”。

  • 典型场景:你注册一个账号,用 Postman 查一下这个账号有没有被正确存进数据库。

  • 为什么先学它:很多界面上的 Bug,根源在接口。学会了 Postman,你就不再是“表面点点点”。

  • 一句话:接口测试的事实标准。新手入门必学。

Apifox / Apipost(国产替代)

功能和 Postman 类似,但更贴近国内团队的使用习惯,集成了接口文档管理、Mock 数据等功能。可以先从 Postman 上手,之后再看这些。


三、性能测试工具

JMeter(最主流、免费开源)

  • 有什么用:模拟大量用户同时访问系统,测试系统扛不扛得住。

  • 典型场景:模拟1000个用户同时登录,看系统响应时间是否变慢、会不会崩溃。

  • 一句话:性能测试的标配。面试问“你会性能测试吗”,说的通常就是它。

LoadRunner(商业版,企业用得多)

功能比 JMeter 更强,但收费且复杂。很多大公司还在用。初期不需要碰,知道就行。


四、自动化测试工具

1. Selenium(Web自动化,最经典)

  • 有什么用:模拟用户在浏览器里的操作——点击按钮、输入文字、翻页。让代码帮你重复执行。

  • 典型场景:回归测试。每次发版前,让 Selenium 自动跑一遍核心流程(登录→下单→支付),人工只需要看结果。

  • 一句话:Web自动化的鼻祖。学自动化,通常从它开始。

2. Playwright(新一代,更现代)

微软开发的,比 Selenium 更快、更稳定、更简单。如果你还没开始学,可以直接学这个。

  • 一句话:Web自动化的未来之星。新手建议直接上手它。

3. Appium(移动端自动化)

  • 有什么用:和 Selenium 类似,但测的是手机 App,不是网页。

  • 一句话:移动端自动化绕不开它。


五、抓包工具

Charles / Fiddler

  • 有什么用:截获你手机或电脑发出的网络请求。能看到请求的内容、服务器返回了什么。

  • 典型场景:你用 App 下单,但一直提示“系统繁忙”。打开抓包工具,看请求发出去没有、服务器返回的错误信息是什么。

  • 一句话:当你需要看到“数据在链路上到底发生了什么”,用抓包工具。


六、缺陷管理工具

禅道(国内最普及,开源免费)

  • 有什么用:记录你发现的 Bug,指派给开发,跟踪修复进度。还集成了项目管理、需求管理等功能。

  • 一句话:国内中小公司测试团队的标配。

Jira(国际主流,大厂用得多)

功能更强大,配置更灵活。外企、大厂、敏捷团队用得最多。

一句话:如果你去外企面试,会操作 Jira 是加分项。

五、零基础学习计划(仅做参考)

第一阶段:理论基础与用例设计(第1-4周)

目标:弄懂“什么是软件测试”,并掌握最核心的测试用例设计方法。

学习内容

  1. 软件测试基础(第1周)

    • 核心概念:软件测试的定义、目的、原则(如“测试无法穷尽”)。

    • 测试分类:按技术分(功能、性能、安全),按阶段分(单元、集成、系统、验收)。

    • 学习资源:你之前理解的那些概念,以及任何一本《软件测试基础》教材的前几章。

  2. 测试用例设计方法(第2-4周)
    这是功能测试的核心技能。你需要彻底掌握以下方法,并大量练习:

    • 等价类划分法:分类,挑代表。这是基本功。

    • 边界值分析法:专攻临界点,Bug最爱藏身的地方。

    • 场景法:模拟用户的操作流程。

    • 错误推测法:凭经验和直觉猜哪里可能出问题。

本周实践

  • 找你电脑上的计算器、登录框或任何一个小功能,为它设计一份包含10-15条的测试用例集。用Excel表格写下来,格式参考:用例编号 | 测试点 | 前置条件 | 操作步骤 | 期望结果


第二阶段:手工测试实战与缺陷管理(第5-8周)

目标:把设计好的用例执行起来,学会提交一份合格的Bug报告。

学习内容

  1. Web测试基础(第5-6周)

    • 了解一个网站的基本构成,学会按F12打开浏览器的开发者工具,看看网页背后的代码和网络请求。

    • 掌握常见的Web测试点:链接、表单、Cookie、页面元素布局等。

  2. 缺陷管理与禅道(第7-8周)

    • 核心概念:什么是Bug的生命周期(发现->提交->修复->验证->关闭)。

    • 工具实操:在自己电脑上部署或直接使用在线版禅道。学会如何清晰地描述一个Bug:环境、操作步骤、预期结果、实际结果、截图附件,一个都不能少。

本周实践

  • 找一个开源网站(如某商城Demo站)进行测试,把发现的Bug完整地提交到禅道上。记录至少5个不同严重等级的Bug。这是你未来面试时的重要“作品”。


第三阶段:技术进阶(第9-12周)

目标:告别“纯手工”,掌握接口测试和数据库基础,开始向技术型测试迈进。

学习内容

  1. 接口测试与Postman(第9-10周)

    • 核心概念:什么是接口,为什么测接口。

    • 工具实操:学习使用Postman发送GET/POST请求,查看服务器返回的JSON数据。学会做简单的接口断言。

  2. 数据库基础与SQL(第11-12周)

    • 核心概念:数据库的基本概念,表、行、列。

    • 工具实操:安装一个MySQL数据库,用Navicat等可视化工具连接。学会最核心的SQL语句:SELECTINSERTUPDATEDELETE,尤其是带条件的查询WHERE

本周实践

  • 在你之前找的开源网站上,用Postman去请求它的登录、注册等接口,并查看返回的数据结构。同时,去数据库里查一下这个刚刚注册的账号是否被成功写入。

推荐资料

  • 入门书籍:《软件测试的艺术》(经典,薄而精悍)

  • 在线教程:慕课网、B站搜索“软件测试基础”,找播放量最高的免费课程。

  • 练习网站:找一些提供测试练习的开源项目或Demo网站,比如CureMuj,用真实网站练手。

六、GitHub实战项目推荐

一、手工功能测试练手项目

1. OrangeHRM

  • GitHub地址:搜索 orangehrm/orangehrm

  • 测试什么:一个开源的人力资源管理系统,包含考勤、招聘、绩效、请假等功能模块。

  • 为什么适合你

    • 功能丰富:员工管理、考勤、请假审批……这些都是真实的HR业务流程,比登录框复杂得多。

    • 有在线Demo:官网 opensource-demo.orangehrmlive.com 可以直接访问,不需要自己部署。你直接用浏览器打开,就能开始测。

    • 业务逻辑清晰:谁都能理解“请假审批”这个流程。你可以完整地测试:员工提交请假单→主管审批→系统记录的全过程。

  • 你可以做什么

    • 为“员工信息管理”模块设计一套完整的测试用例。

    • 测边界值:员工姓名最多多少字符?手机号栏输字母会怎样?

    • 测场景:一个员工被删除后,他提交的请假单还能不能查到?

    • 把发现的Bug记录到禅道里。

2. OpenCart

  • GitHub地址:搜索 opencart/opencart

  • 测试什么:一个完整的开源电商系统,有前台商品展示、购物车、支付,也有后台的商品管理、订单管理。

  • 为什么适合你

    • 电商是测试练手的绝佳场景:业务逻辑复杂且贴近真实用户。商品属性(颜色、尺码)、优惠券、满减、运费计算……有大量场景可以测。

    • 前后台联动:测完前台用户下单,再去后台看订单状态是否同步更新。

    • 也有在线Demo:OpenCart官网有演示站点,前台后台都可以访问。

  • 你可以做什么

    • 用“边界-异常-组合”那套方法,专门测它的购物车。比如:加一件商品,改数量为负数;加了库存只有3件的商品,反复加4件去结算。

    • 专门测优惠券:过期优惠券能用吗?满减条件差1块钱会怎样?

    • 这是你练习“接口测试”时最好的素材——前端下单,后台查数据库看订单对不对。


二、API接口测试练手项目

3. Restful-Booker

  • GitHub地址:搜索 mwinteringham/restful-booker

  • 测试什么:一个专门为测试人员练习接口测试而设计的酒店预订系统API。作者就是做测试培训的。

  • 为什么适合你

    • 专为测试而生:这个项目的目的就是让你练习接口测试。它有完整的API文档,清晰列出了创建预订、获取预订、更新预订、删除预订等接口。

    • 有部署好的公共版本restful-booker.herokuapp.com,你直接用Postman请求这个地址就能开始练。

    • 内置验证机制:你需要先请求一个Token,才能做更新和删除操作,这能让你实践Postman的认证设置。

  • 你可以做什么

    • 用Postman逐个调用它的接口,验证返回的数据结构是否正确。

    • 测试异常:不传Token直接删预订,看返回什么错误码。

    • 实践边界值:订房日期早于今天会怎样?住0天会怎样?

    • 这是你学完Postman后,第一个应该拿来练手的项目。


三、自动化测试练手项目(为以后准备)

4. Swag Labs

  • GitHub地址:搜索 saucelabs-training/demo-java 或直接搜 Swag Labs

  • 测试什么:一个模拟的电商网站,叫Swag Labs。是Sauce Labs公司专门为练习Selenium/Playwright自动化测试而做的。

  • 为什么适合你

    • 专为自动化设计:网站结构稳定,不会频繁改版导致脚本失效。

    • 有标准用户:网页上直接列出了几种标准账号(标准用户、锁定的用户、问题用户),每种都有预设的Bug等你发现。

  • 你可以做什么(在你学完Postman、开始学Playwright之后)

    • 用Playwright写一个自动登录脚本。

    • 写一个自动遍历所有商品、加到购物车、完成下单的脚本。

    • 这是你面试时最好的“自动化测试作品”来源。


你的上手顺序建议

  1. 第一周:打开 OrangeHRM 的在线Demo,开始为“员工管理”模块写测试用例。这是你功能测试的练手主战场。

  2. 第二周:打开 OpenCart 的在线Demo,专门测试它的购物车和优惠券功能。把Bug提交到禅道。

  3. 第三周起(学完Postman后):在Postman里请求 Restful-Booker 的公共接口,验证返回数据,测试异常场景。

  4. 一个月后(学自动化时):在Playwright里写脚本,自动化测试 Swag Labs

这些项目的在线Demo地址,你可以直接复制到浏览器打开。如果遇到某个Demo访问不了,在GitHub上搜项目名,一般都能找到最新的在线地址。

七、一些有趣的面试题

一、经典中的经典

1. 如何测试一个杯子?

这道题几乎成了测试面试的“Hello World”。面试官考察的是你思考的维度

解题思路框架(用你的“有的放矢”来拆解):

拿到杯子,先别急着说“摔一下看看”。在脑子里迅速建立一个框架:

  • 功能测试:它做杯子该做的事吗?

    • 能装水吗?能装多少?(容量测试)

    • 能保温/保冷吗?(如果是保温杯)

    • 水会从杯口以外的其他地方漏出来吗?

    • 带杯盖的话,盖上后能完全密封吗?

  • 易用性测试:它用起来舒服吗?

    • 拿在手里,大小、形状、重量合适吗?

    • 把手握着舒服吗?不硌手吗?

    • 对于老人或小孩,容易抓握吗?

  • 安全与可靠测试:它会伤害人吗?

    • 材质安全吗?装开水会释放有害物质吗?

    • 装开水后,杯身会不会烫手?(隔热性)

    • 摔到地上会碎吗?碎片是否锋利?

    • 如果是玻璃杯,能承受多大的温度骤变而不炸裂?

  • 边界与极限测试:往极端了想。

    • 装满水放进冰箱冷冻层,会冻裂吗?

    • 用最大的力去拧杯盖,还能拧开吗?

    • 连续开合杯盖一万次,会坏吗?

  • 兼容性测试:它能和别的东西好好配合吗?

    • 能放进常规的汽车杯架里吗?

    • 杯口直径兼容咖啡机出水口吗?

一句话总结:这道题没有标准答案。你能说出越多的维度,并且每个维度里的测试点越具体、越有逻辑,分数就越高。


二、逻辑与场景题

2. 如何测试一台自动售货机?

这道题考察你把一个复杂系统分解为模块和流程的能力。

解题思路
把售货机想象成一个系统,分为几个核心模块:

  • 支付模块:硬币、纸币、扫码支付、刷卡。每种支付方式都要测:金额正好、金额不足、金额多了找零。假币、损坏的纸币怎么处理?

  • 选择与出货模块:选择商品后,商品能准确掉下来吗?如果选了A,掉下来的是B,这是严重Bug。同时选两个商品会怎样?选了一个缺货的商品呢?

  • 用户界面与指示:屏幕显示清晰吗?售罄的商品有“已售完”提示吗?钱不够时点购买,会提示“金额不足”吗?

  • 异常与容错:出货过程中有人踢了机器一脚会怎样?突然断电了,如果已经扣了钱,恢复供电后会怎么处理?

3. 如何测试一个电梯?

这道题考察的是状态转换安全性

解题思路
电梯是一个典型的状态机,有静止、上行、下行、开门、关门等状态。

  • 基本功能:按下按钮,电梯会来吗?会停在正确的楼层吗?门会按时关闭吗?超载会报警并停止运行吗?

  • 算法逻辑:这和电梯的调度算法有关。你在10楼按了“上”,同时有人在5楼按了“下”,电梯会先接谁?在上升途中,如果有人按了比当前楼层更高的楼层,电梯会响应吗?

  • 安全与异常:门在关闭时被挡住,会自动打开吗?运行时停电了,应急系统会启动吗?下坠时,限速器和安全钳会启动吗?警报按钮和紧急电话是否畅通?


三、白盒与代码测试题

4. 如何测试一个函数 int add(int a, int b)

这道题看似简单,但考察的是你用等价类和边界值的扎实程度。

解题思路
你不需要看代码,只需要从输入和输出的角度去分析。

  • 等价类

    • 两个正数:add(1, 2) = 3

    • 一正一负:add(1, -2) = -1

    • 两个负数:add(-1, -2) = -3

    • 正数和零:add(5, 0) = 5

    • 负数和零:add(0, -5) = -5

  • 边界值测试:这是关键,最见功底。

    • 如果int是32位的,最大值是 2,147,483,647,最小值是 -2,147,483,648

    • add(1, 2147483647) = ? (预期:发生上溢出,看函数如何处理)

    • add(-1, -2147483648) = ? (预期:发生下溢出)

    • add(0, 2147483647) = ?

  • 性能测试:如果连续调用这个函数100万次,会变慢吗?会内存泄漏吗?


四、开放脑洞题

5. 如何测试“快乐”?

这道题没有标准答案,考察的是你面对一个模糊概念时,如何定义、量化、测试。

解题思路
先别慌,用“有的放矢”的第一步:先定义“靶子”

你不能测试“快乐”本身,你只能测试“快乐的表现”。

  • 生理指标:快乐时,大脑会分泌多巴胺、血清素,心率可能平稳,嘴角会上扬。可以测这些生理数据。

  • 行为指标:快乐时,人会笑,会唱歌,会更愿意帮助别人。可以统计一个人在单位时间内的微笑次数、助人行为次数。

  • 主观量表:设计一份科学的问卷,让人给自己1-10分的快乐程度打分。这是心理学常用的方法。

  • 反向测试:测试“不快乐”。压力增大、焦虑、抑郁,这些指标的上升,可能意味着“快乐”的下降。

一句话总结:这道题的精髓,在于你敢于去拆解它,并清晰地解释你拆解的逻辑。

你转行测试时最大的困惑是什么?或者你现在正在学哪个工具?欢迎评论区讨论


    Logo

    openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

    更多推荐