
2026年4月3日把这些年做软测攒下来的东西整理了一遍发现每次被人问到“软件测试到底要学什么”时我都要重复讲一长串。今天干脆把它写成一份清单式笔记把我自己用过的、面试时被问到的、带新人时反复强调的内容全部摆出来。这份笔记是写给两类人看的刚准备入行软测、正在纠结从哪下手的零基础学习者以及学了一段时间但知识体系还是一团散沙的“半成品测开”。很多人会把软测理解成“点点点”觉得只要会玩手机、会用电脑就能干。但真进了项目里你会发现测试工程师要做的事情远不止是找Bug。你需要懂需求分析、会写测试用例、能操作数据库验证数据、能写脚本做自动化回归还得在团队里把缺陷沟通清楚。这份清单不会跟你扯虚的每一条都是实际工作里绕不开的能力项同时也会把我自己在GitHub上扒项目、刷面试题、转行学习时踩过的坑一并讲明白。看完之后你至少能回答两个问题我该学什么学了之后去哪里练手1. 软测必学清单打底先搞懂这几大块如果把软测的知识体系比作一棵树那么测试基础理论是根编程、数据库、Linux这些是养分自动化测试是枝干业务理解力和沟通能力是果实。缺了任何一环树都长不好。很多人一上来就急着学工具Selenium还没跑通就想着写框架这是典型的顺序搞反。工具随时可以换但底层的测试思维和分析能力才是你吃饭的本事。1.1 测试基础理论用例设计方法决定你的下限第一块必须吃透的是测试理论特别是测试用例设计方法。这是你进入公司后第一周就要用的东西也是面试的时候最容易翻车的地方。常见的测试用例设计方法包括等价类划分、边界值分析、场景法、错误推测法、因果图法。很多新手觉得这些是过时的教科书内容实际工作中没人用。这么说吧等价类和边界值我在真实项目里每天都在用。比如一个输入框要求“密码长度为6到16位”等价类就是把这所有输入分成有效等价类6到16位的任意字符和无效等价类小于6位、大于16位。边界值则是在这个基础上专门去测5、6、16、17这几个数字因为经验告诉我们bug大概率藏在边界上。除了设计方法你还得知道一条完整的测试用例包含哪些要素。很多新手写的用例就是一个“测试步骤预期结果”真拿给开发看开发会一脸懵。一个标准的用例需要有用例编号、所属模块、用例标题、前置条件、测试数据、操作步骤、预期结果、优先级。不要小看优先级这个字段我见过很多初入职场的测试把所有用例都标成高优先级结果评审的时候被开发怼得无话可说。建议每个模块的用例高优先级控制在20%以内。缺陷管理也是理论基础的重要一环。你需要会写一份合格的Bug报告包含Bug标题、复现步骤、实际结果、预期结果、环境信息、截图视频、严重程度和优先级。记住一个核心判断标准你写的Bug报告要能让人不看你的解释也能复现。很多新人写的Bug描述只有“页面报错”四个字开发来问你在哪个页面、什么数据、点了哪里你又答不上来。这种Bug最后大概率会被打回白白浪费来回沟通的时间。1.2 编程、数据库、Linux工具储备决定你的效率第二块就是工具储备。我强烈建议把Python作为入门语言因为语法简单、测试生态完善无论是做接口自动化用requests还是做UI自动化用Selenium和Playwright资源都很丰富。很多初学者在这里会犯一个致命错误——把Python当成后端开发来学啃完了整本《Python编程从入门到实践》、学完面向对象、学完装饰器再回头学测试结果发现用不上多少反而被绕晕了。正确思路是在测试实战中学Python先把列表、字典、循环、函数、文件操作、异常处理、类的基础结构学会然后直接写自动化脚本用到什么补什么。我跟你说我见过最快入门的例子一个月就能写出可运行的接口自动化用例而他那一个月在培训机构里只学了“Python基础语法”。数据库是第二个重头戏。测试工作中至少有30%以上的时间是在跟数据库打交道。做一个注册功能前端填完信息点提交你要确认信息是不是真的落库了。做一个订单功能你要下单、支付、退款每一步后端的金额和状态字段都要去数据库里查验。这时候你就需要会使用SQL至少掌握这些SELECT查询、WHERE条件过滤、ORDER BY排序、GROUP BY分组、JOIN多表关联、UPDATE更新数据以及DELETE FROM删除数据慎用。很多人面试的时候说自己“熟悉MySQL”结果面试官让现场写一条关联查询就卡住了。我给你一个建议去本地装一个MySQL或者直接用SQLite造几张表模拟电商的“用户表、订单表、商品表”每天写十条查询练习一周就能上手。Linux命令是第三个基本功。虽然现在很多公司用Windows做开发机但服务器百分之九十九是Linux。日志排查、环境部署、服务启停全依赖Linux基础。你需要掌握这些高频命令cd、ls、cat、tail -f实时查看日志测试排查问题的时候用得出神入化、grep过滤日志关键词、ps和top查看进程和CPU内存、netstat -tunlp查端口占用以及curl命令行接口请求。这里有个贼实用的场景线上环境报Bug了测试环境复现不出来你拿着运维给的服务器权限登上去用tail -f 日志文件 | grep 订单号几秒钟就能定位到报错信息。这套操作看起来不难但很多人就是没练过导致面试时一问就露馅或者进了项目组后被开发拉着一起排查问题站在旁边连命令都不会敲非常尴尬。1.3 自动化方向接口自动化和UI自动化怎么选自动化测试是软测进阶的必经之路但很多人分不清接口自动化和UI自动化的区别这是一个大坑。接口自动化测试是直接对后端API发起HTTP请求验证接口的响应数据、状态码、业务逻辑是否正确。它执行速度快、稳定性高、维护成本低。在一个迭代节奏快的互联网项目里接口自动化是投入产出比最高的自动化形式。学了Python之后你用requests库发送GET和POST请求配合pytest框架管理用例再用Allure生成测试报告一套最基础的接口自动化能力就成形了。这套组合也是目前招聘市场上需求量最大的技能组合之一。UI自动化测试是用Selenium或Playwright驱动浏览器模拟用户点击按钮、输入文本、选择下拉框等操作来验证页面的视觉和交互表现。它的优势是更贴近真实用户视角但代价是执行慢、环境依赖多、页面元素一变就可能挂。很多人学了一两个月Selenium之后发现代码写得很熟练到了真实项目里却很难快速落地原因就在这里——业务页面变化太频繁UI用例维护成本高。所以我建议新手入行优先把接口自动化作为重点突破方向UI自动化了解原理、能写脚本就够了。这个选择直接决定了你简历上“自动化测试能力”这一栏的含金量。2. 在GitHub上找软测项目的实操路径接下来重点写一下如何在GitHub上找软测项目这是最近我被问得最多的一个问题没有之一。很多学习者的困境是理论看了一堆代码也敲了几段但就是不知道自己做的这些练习在真实项目里怎么落地。问就是“我只做过Demo”简历上写着“熟悉接口自动化测试”结果一个拿得出手的真实项目都讲不出来。GitHub就是破局的地方。2.1 为什么GitHub比教程视频更能练出真本事教程视频的核心功能是“演示”它会把一切准备好、引导你一步步走通。这种模式有两个问题一是你很容易产生虚假的成就感跟着视频跑通了一个全流程就觉得掌握了二是视频里的代码是别人封装好的你没有经历真实世界的夹缝——见不到版本兼容问题、碰不到历史遗留烂代码、感受不到设计一个测试方案时的取舍。GitHub上的开源项目恰恰能补上这些盲区。你去读一个真实项目的测试目录会发现测试用例并不是按照“登录”“支付”“购物车”这样的模块整齐划分的它们散落在各个服务里面命名方式也千奇百怪有的项目中测试和被测代码融在一起。你需要自己去理清楚这些测试是怎么组织、怎么命名、怎么实现数据隔离的。这个过程非常像实习第一天接手一个老项目看到一堆代码无从下手逼着自己去读、去猜、去跑这种能力是视频永远教不会的。而且开源项目的Issue区和Pull Request区有大量的真实讨论你能看到其他人是怎么报告Bug、怎么走代码评审流程的这些东西在培训机构里永远接触不到。2.2 关键词、Topics和筛选条件的具体组合GitHub的搜索能力非常强直接用搜索框输关键词就行问题在于很多人搜出来的结果都是同一个类型看不到多元的项目形态。我给你一套我实测过的组合拳。第一步用关键词搜索找基础。光搜“software testing”会搜出一大堆理论仓库很多都是人家整理的链接大全。这时候可以把关键词组合得更细例子python pytest api testing selenium page object 接口自动化 测试框架 python第二步用Topics标签找到高质量集合。GitHub有一个Topics机制把同一个主题的项目聚合在一起。直接在Topics页面浏览这几组标签automation-testing、test-automation、sqa、software-testing、quality-assurance。这里面的项目通常质量比较好维护也活跃。第三步用Filters做精细筛选。比如在搜索结果页面点“Language: Python”再按“Most starred”排序就能把最热门的Python测试工具和项目都捞出来。如果想要新项目就按“Recently updated”排序。我个人最常用的筛选条件是筛选维度具体操作目的语言Python / Java / JavaScript匹配自己的技术栈Stars数stars:500过滤掉无人问津的仓库更新时间pushed:2025-01-01只看活跃项目避免一进去就是一堆历史遗留问题License选MIT / Apache-2.0确保可以放心学习甚至复用代码如果你实在不知道从哪下手还有个捷径找“Awesome”系列的列表仓库比如awesome-testing这些仓库把测试领域的工具、框架、教程全都按类别列好了等于有人帮你做了索引拿到之后按图索骥就行。2.3 拿到项目后怎么拆才不会变成“收藏党”收藏了不叫学习跑通了才叫入门。很多人点开一个项目看到README里密密麻麻的英文和一堆文件目录瞬间劝退。我来拆一拆拿到一个软测项目的操作顺序。第一步不要急着读源码而是先看README和项目的目录结构。先明白这是个什么项目、它要解决什么问题、它使用的技术栈是什么、怎么安装和运行。对于软测项目来说这一步重点关注它运行需要哪些前置条件比如Python版本、JDK、Node.js、数据库依赖这些整理出一张检查清单。第二步把项目跑起来。很多开源项目会有现成的测试demo、example或场景样例代码你先在本地把测试跑通能看到绿色PASS的结果。这一步的意义在于让你有个具体的环境后面改代码的时候能立刻看到效果。跑不通是最正常的情况这时候把报错信息复制到搜索引擎里十有八九能找到解决方案。第三步去读测试用例文件搞懂三层逻辑被测代码是干什么的、测试用例是怎么构造的、断言的是期望值还是状态码还是数据库里的记录。我建议你每读一个测试文件就在本子上用自然语言把它翻译成人话比如“这个用例是先用POST请求创建一个订单然后调用支付接口最后去数据库里查这条订单的状态字段是不是PAID”翻译一遍之后你才算真的看懂了。第四步做一件很多人从头到尾没做过的事——主动破坏代码。把被测程序里某个判断改成相反的或者把测试数据故意传错看看测试是不是真的会失败断言是不是真的会起作用。这个操作能帮你验证这套测试不是摆设也让你理解“测试是为了发现缺陷而存在的”而不是为了凑覆盖率数字。第五步把一个项目里你学到的测试设计方法搬到自己的练习项目里。你可以挑一个自己熟悉的小系统比如论坛、博客、待办事项为它补一套完整的接口测试用例推到自己的GitHub仓库。这样你的简历上就有了一个“自己写的、可以展示的、有完整用例的项目”面试官要代码你直接甩链接。3. 软测面试题靠背诵没用要构建答题框架聊完GitHub练手再来说说面试这块。软测面试题的类型总共就那么几大类基础知识题、用例设计题、自动化原理题、项目经验题、场景追问题。很多新人喜欢直接背面试题库背了几十道题觉得自己稳了结果面试官换个角度问一句就崩了。我建议你把面试整体当作一次“测试思维”的展示而面试题只是你展示能力的载体。下面我按常见题型给你拆一拆答题框架。3.1 用例设计题用微信红包把思维模型说清楚用例设计题是软测面试的头号题型本质上是考察你的测试思维。你别管面试官最后问的是微信发红包、支付宝转账、登录页面还是ATM取款答题架构都是一样的。比如“请设计微信发红包功能的测试用例”。很多人上来就说“红包金额小于0.01不行大于200不行抢不到红包会退款”这种答法叫零散罗列显得毫无章法。你需要展示的是维度的系统性功能维度正常发红包、正常抢红包、红包过期退还、24小时未领取退还余额。异常维度余额不足、网络中断、重复点击发送、红包被抢完后再点。边界维度金额为0.01元、金额为200元、人数为1人、人数为上限。兼容维度iOS/Android、微信不同版本、低内存手机。性能维度群成员全员同时抢红包。安全维度抓包修改红包金额如果是接口测试这就是个典型的越权风险点。你在回答的时候先说“我会从功能、异常、边界、兼容、性能、安全这几个维度来设计”然后每个维度举一两个例子面试官立刻会觉得你有体系而不是在背网上的标准答案。我见过很多候选人面试时聊到这个题都会卡壳原因就是他们把它当成了一道孤立的题而没有建立“测试计划”的全局思维。3.2 技术原理题面试官真正想看你的理解深度技术原理题主要出现在自动化测试方向。比如问Selenium中find_element和find_elements的区别、显式等待和隐式等待的区别、WebDriver的底层工作原理或者问pytest中fixture的作用和conftest.py的作用。这些题本身不难但很多人只会背定义一追问原理就露馅。我给你举一个最常见的例子“Selenium的显式等待和隐式等待有什么区别”标准回答是隐式等待是设置一个固定的轮询时间针对全局所有元素显式等待是针对某个元素设置等待条件和超时时间。但面试官想听到的是你知道什么时候用哪一个。我的建议是回答的时候补充一个实际场景页面加载时数据请求慢它是异步渲染的顶部Loading转圈了3秒后数据才出来如果用隐式等待即使设了20秒也会每条find语句傻等20秒测试执行时间会爆炸而用显式等待配合expected_conditions.element_to_be_clickable只有特定元素点不了的时候才去等执行效率高得多。讲接口自动化时面试官可能会问“一个完整的接口测试用例包含哪些字段”。这个问题在小公司面试里非常高频。我就直接给一个模板Method、URL、Headers、Body、前置条件比如需要登录Token、预期状态码、响应断言点字段值、数据库状态、用例描述。多提“数据库状态”这个词会让面试官觉得你不是只停留在接口层而是有全链路验证的意识。3.3 项目经验题三句话讲清你做了什么项目经验相关的问题也就是“你介绍一下你做的项目”这个经典开头是决定你能不能拿到Offer的关键一环。很多人的回答是“我做过一个电商项目的测试”面试官追问“你在里面具体做了什么”答案就是“我写了测试用例、执行了回归测试、用Postman做了接口测试”。这种回答等于白说因为没有让面试官感知到你的价值。我给你一套“三句话框架”项目背景一句话、我的职责和工作量一句话、项目里最值得讲的一个亮点案例一句话。举个例子项目背景这是一个面向B端客户的订单管理后台核心流程包括创建订单、审批、物流跟踪、结算。我的职责我负责订单模块和结算模块的功能测试和接口自动化手工用例写了200多条接口自动化用pytestrequests覆盖了核心流程30多条用例集成到Jenkins每天自动跑。亮点案例订单结算是金额敏感模块我在设计测试数据时发现同时查询数据库中的结算记录和Excel导出的汇总表时会出现一条订单被重复统计的情况反馈开发后定位是SQL关联查询没有对订单状态加过滤条件上线后类似问题没有再发生过。注意亮点案例一定要有“发现问题的过程定位思路最终结果”不要只讲“我发现了一个Bug”。这样讲完之后面试官大概率会针对这个案例追问几个技术细节比如你是怎么设计测试数据的、怎么通过数据库验证数据的、自动化用例是怎么组织的。只要前面练过这些追问就是你的主场。3.4 高频面试题自测清单下面这张表是我整理的高频软测面试题方向你可以拿来当自测清单一个方向一个方向过。我会给出对应的回答重点方便你快速定位知识缺口。题目方向考察点答题关键词你们公司的测试流程对测试流程的理解需求评审→用例评审→冒烟测试→功能测试→回归→上线→线上监控什么是Bug的优先级和严重程度缺陷管理基本功优先级是按件紧急性排严重程度是按影响面排两者不是一回事对接口测试的理解接口测试深度数据传递、状态码、响应校验、事务回滚、接口安全性、幂等性如何保证用例覆盖率分析方法论需求拆解、场景矩阵、等价类边界值、结合测试开发评审查漏手工测试会被自动化取代吗行业认知与心态手工和自动化各司其职探索性测试和用户场景价值无法替代你做过最难处理的Bug是什么实战能力描述Bug表象→排查过程→Root Cause→验证方案SQL题查询连续下单用户SQL能力窗口函数、日期排序、关联表查询如果你面试前能把这些方向都用自己的话梳理一遍基本可以应付绝大多数软测岗位的技术面。我强烈不建议直接背别人的面经因为面试官只要追问一个细节背的答案就露馅了。你要做的是把每道题的逻辑理清楚然后结合自己的练手项目去讲故事。4. 学习节奏与避坑三个月从零到可以面试最后这部分送给正处在迷茫期的零基础同学。软测这个岗位的门槛不像开发那么高但也绝不意味着随便学学就能进。我见过最快的转行案例是三个月也见过磨磨蹭蹭学了一年还在原地打转的。差距不在智商而在学习节奏和方向选择。4.1 一份可以落地的时间规划以三个月为一个周期目标是达到初级测试工程师或测试开发实习生的水平日程可以这么安排第一个月打基础。前两周集中啃测试理论和测试用例设计每天至少写十道手工用例练手。后两周学Python基础和SQL基础Python不要求达到开发水平但一定要能看懂脚本、能自己写简单的requests请求脚本。这个阶段性价比最高的每日打卡是一道用例设计题一条Linux命令一条SQL查询。第二个月上自动化。开始接触pytest框架和requests库自己搭一套最小可用的接口自动化脚手架。网上有很多优质的开源项目按照第2章的方式找项目、跑起来、读测试、改成自己的用例。月底的目标是能独立完成一个“登录核心业务接口”的参数化测试Demo并生成一份Allure报告。第三个月做项目和面经。把前两个月学的东西整合成两个有展示度的项目一个是手工测试的项目包含测试计划、用例集、Bug清单一个是自动化的项目包含测试代码、README、报告截图。然后把第3章的面试题按自己的话过一遍每道题给自己讲五分钟录下来回听直到逻辑顺畅为止。很多人的问题不是不努力而是每个方向都努力过头最后全堆在半空。我特别提醒一句这个阶段“能跑通”比“理解到源码级”重要一百倍你先成为工具的使用者再慢慢成为工具的解释者。4.2 我踩过的坑和给你的建议如果你只记一条经验我希望是这一条软测学习过程中最危险的敌人不是“不会”而是“懂了但没做过”。我说三个具体的坑你对照自己看有没有中招。坑一只收藏不删减。收藏几百G视频资源关注几十个公众号然后每天花时间看各种“速成攻略”最后真正敲过的代码可能只有Hello World。GitHub上找项目的意义就在于给你一个机制上的约束——不是看完就完而是必须跑出一个结果。坑二无聊的工具研究得太多。今天研究这个测试平台明天研究那个抓包工具工具列表背得滚瓜烂熟但连一台服务器都没部署过。工具是为了解决问题不是为了当陈列品。每次想学一个新工具之前先问自己我手上有没有一个问题需要它来解如果答案是“暂时没有”那就先放一放。坑三害怕写复杂的代码。很多人觉得自动化测试需要很强的编程功底自己只会写点简单脚本不敢碰。我想说测试自动化代码的核心是“可运行”不是“优雅”。你写的每一条用例、每一个断言只要能帮你发现缺陷、守住回归它就是合格的。等你跑通100条用例以后自然会想改进代码结构这是一个水到渠成的过程不用一开始就自我设限。最后再分享一个小技巧学软测一定要建立一个“错题本”不是记你笔试做错的题而是记你测试过程中遇到的最奇葩的Bug和排查过程。因为你在GitHub上练手的项目越多、跑通的测试越多你积累的“Bug手感”就越强面试时能讲出的故事也就越生动。我当时入行时整理了几十个这种记录后来每次面试讲到项目亮点都用得上效果比背十篇面经都好。希望能对正在路上的你有帮助。