
自学的软件测试很多人最后不是卡在理论而是卡在“没有项目经验”。测试用例、等价类、边界值、抓包、Postman、Selenium 这些知识都学过了但一打开简历发现“项目经验”那一栏不知道写什么。面试官问“你测过什么系统”答不上来前面的准备就全部白费。这里想先给一个明确判断软件测试练手项目不是越多越好而是越“能讲清楚”越好。面试官不会因为你写了 5 个项目就认为你经验丰富他大概率会随机挑一个细问这个系统是什么业务你负责哪部分你设计了哪些用例你发现了什么值得说的缺陷如果答不出细节写再多项目也会暴露问题。所以真正有效的做法是从下面这 18 个项目里选 2 到 3 个深入跑起来、测进去、沉淀出属于自己的测试记录再写进简历。这篇文章会从四个角度展开第一练手项目到底应该怎么选为什么不同岗位方向要选不同类型第二给出 18 个免费或可自行搭建的软件测试项目清单覆盖 Web 功能测试、接口自动化、移动端、性能测试、嵌入式与 AI 应用方向第三用一个完整 Web 项目演示从测试计划、用例设计、接口测试到测试报告的流程第四回答简历怎么写、面试怎么讲、常见问题怎么排查。1. 为什么自学软件测试总卡在“没有项目经验”很多人评价一份测试简历时最看重的不是证书也不是你背了多少面试八股文而是“你有没有真的测过一个可以运行的系统”。这里的“测过”不是指你在课程里点过几个网页而是指你完成过一轮相对完整测试活动至少包含需求分析、测试计划、用例设计、执行、缺陷提交、测试报告这些环节。没有项目经验本质上不是因为你不努力而是因为找不到合适的被测系统。随便下载一个开源项目可能因为版本不匹配在安装阶段就放弃了自己从零写一个系统又需要大量时间去网上找项目又不知道哪些适合练手、哪些能写进简历。这里需要拆掉一个误区项目经验不等于“你把代码仓库克隆下来跑通了”。跑通一个系统只是开始真正有价值的是你对这个系统做了什么。你有没有画出业务流程图你有没有根据需求拆解出测试点你有没有用等价类、边界值设计过一组完整用例你有没有提交过缺陷并跟踪到关闭你有没有输出一份测试报告一个合格的软件测试练手项目至少要具备三个特征一是业务逻辑可以理解。比如图书管理系统、电商系统、任务管理系统业务边界清楚不用花几天时间研究行业背景。二是有数据持久化。系统里涉及数据库的增删改查这样你才能验证数据是否正确写入、更新、删除才能做数据一致性测试这也是面试时很容易被问到的地方。三是可以本地运行。项目必须能在自己的电脑上启动能注册账号、登录、操作核心功能。如果项目连跑都跑不起来再“高级”也没有意义。所以在挑选项目时不要只盯着“项目技术栈有多新”先问自己一个问题今天我在本机能不能把它启动起来如果能启动再评估它的业务复杂度是否足够支撑你写满一页简历。2. 如何挑选练手项目测试方向决定项目类型不同测试岗位方向需要练手的项目类型是不一样的。如果选错了方向你会花大量时间在不需要的技术细节上最后简历依旧没有重点。先按岗位方向做分类功能测试方向优先选择 Web 管理系统比如图书管理、教务系统、后台管理。这类系统业务规则多适合练功能测试用例设计和业务场景测试。接口测试方向优先选择有明确 REST API 的前后端分离项目比如带 Swagger 接口文档的 Spring Boot 后端项目再配合 Postman 或 pytest 做接口测试脚本。自动化测试方向需要选择能稳定运行的 Web 项目或 App并且最好有固定的测试账号和可重置的测试数据。这样你才能写 UI 自动化脚本和接口自动化脚本。性能测试方向选择业务逻辑简单但接口链路完整的项目比如电商系统的下单接口方便用 JMeter 做并发压测。测试开发方向选择可以二次开发的开源项目比如开源后台管理系统或开源测试平台在理解源码的基础上封装测试功能。在技术栈选择上推荐优先选择包含“前端 后端 数据库”的完整项目尤其是 Spring Boot Vue3 MySQL 这类主流组合。原因很简单简历上的项目描述可以写“针对某前后端分离系统结合数据库验证了某条业务链路的数据一致性”这种表达比“我测试了一个静态网页”有说服力得多。如果项目的技术栈和你准备面试的公司匹配比如目标岗位要求熟悉 Spring Boot 项目、熟悉 MySQL那就更有优势。对自学者来说选项目时先问几个问题项目是否有 README 安装文档是否提供数据库初始化脚本是单体应用还是前后端分离项目接口文档是否清晰本地运行时依赖的 JDK、Node.js、MySQL 版本是否容易配置这些条件比 star 数量重要得多。3. 18 个可以直接写进简历的软件测试项目清单下面的 18 个练手项目不需要全部做完。建议按你准备投递的岗位方向选择 2 到 3 个深入实践。每个项目都会说明技术栈、核心功能、练手重点以及简历写法参考。3.1 第一批Web 业务系统项目功能测试方向项目 1图书管理系统技术栈Spring Boot MySQL Thymeleaf 或 Vue这是非常经典的软件测试练手项目。业务围绕图书借阅展开核心功能包括用户登录、用户管理、图书信息维护、借书、还书、逾期记录。推荐练手重点登录功能的正确用户名密码、错误密码、空值、账号锁定场景图书借出的库存校验借书还书后数据库数量是否一致普通用户和管理员权限差异。简历参考写法“独立完成图书借还业务流程的测试用例设计与执行使用等价类、边界值方法设计用例发现库存一致性和权限校验类缺陷”。项目 2电商系统前后端分离技术栈Vue3 Spring Boot MySQL Redis电商系统的核心链路非常值得测注册登录、商品浏览、加入购物车、提交订单、模拟支付、查看订单。因为业务链路长适合练习场景法、流程分析法也能练习接口联调测试。推荐练手重点购物车数量修改后价格是否实时变化下单时库存扣减与订单生成是否一致同一商品并发下单是否超卖重复提交订单是否有幂等处理。简历参考写法“负责从购物车到下单支付的全流程功能与接口测试梳理各模块数据流转关系定位到库存扣减与订单状态不一致的问题”。项目 3博客 / 内容管理系统技术栈Spring Boot Vue3 MySQL核心功能包括注册登录、文章发布、文章分类、评论、搜索、个人主页。这个项目的价值在于文本输入场景多容易测出各种输入校验问题。推荐练手重点注册昵称长度限制、密码复杂度文章标题空值、超长字符评论内容中的特殊字符和脚本注入分页查询在不同边界下的返回结果。简历参考写法“结合数据库查询验证文章列表分页统计结果发现评论区和搜索模块存在数据一致性问题并协助开发完成回归验证”。项目 4学生选课系统技术栈Java Web 或 Spring Boot MySQL选课系统是业务规则非常复杂的项目适合练习场景法和判定表法。核心功能包括学生登录、选课、退课、成绩查询、课程管理。推荐练手重点选课时间冲突、课程容量已满、同一课程重复选课、退课截止时间限制、学分上限判断、成绩边界值0分、100分、缺考。简历参考写法“针对选课冲突、课程容量满员、退课时间限制等业务规则设计场景化用例覆盖核心业务分支提交缺陷并跟踪闭环”。项目 5任务管理系统 / 待办事项系统技术栈Vue3 Node.js 或 Spring Boot MySQL核心功能是任务的新增、修改、删除、状态流转、截止日期、优先级。虽然功能简单但状态流转的场景非常典型适合练习状态图分析和异常流测试。推荐练手重点任务状态从“待办”到“进行中”再到“已完成”的流转修改已删除任务截止日期为空或过期重复点击保存按钮是否产生重复数据。简历参考写法“负责任务状态流转模块的测试梳理出多类异常状态组合推动开发补充状态非法变更校验”。3.2 第二批接口与自动化测试项目自动化/测开方向项目 6RESTful API 练习项目技术栈Spring Boot MySQL Swagger如果找不到现成的接口测试项目可以自己写一个最简待办清单 API。核心接口包括创建任务、查询任务列表、更新任务、删除任务用 Swagger 生成接口文档。推荐练手重点接口参数缺失、参数类型错误、非法 JSON 格式、重复创建、删除不存在的数据。简历参考写法“基于 Spring Boot 自建待办清单 API使用 Postman 完成接口冒烟测试整理接口测试要点”。项目 7pytest requests 接口自动化测试项目技术栈Python pytest requests allure这是接口自动化方向的经典组合适合进阶。项目被测对象可以是公开 API也可以是你自己本地搭建的接口项目。核心练习内容是封装请求、参数化用例、断言、Fixture、生成测试报告。推荐练手重点登录后获取 Token 并传递给后续接口使用参数化覆盖正常和异常输入断言响应状态码、响应体和数据库数据失败用例自动截图或保留日志。简历参考写法“使用 pytest requests 搭建接口自动化测试框架实现接口场景串联、数据驱动和 Allure 报告输出”。项目 8Selenium / Playwright UI 自动化测试项目技术栈Python Selenium 或 Playwright pytest选择有一个稳定部署的 Web 项目比如前面提到的图书管理系统或电商系统写 UI 自动化用例覆盖登录、搜索、列表、添加购物车等核心操作。推荐练手重点元素定位策略选择优先使用 data 属性和稳定的 id显式等待替代强制 sleep失败截图和视频录制测试数据隔离每个用例使用独立账号。简历参考写法“使用 Selenium 封装公共方法编写多条 UI 自动化用例通过显式等待和失败重跑机制提升自动化脚本稳定性”。项目 9Appium 移动 App 自动化测试项目技术栈Appium Python Android 模拟器可以选择一个开源 Android 记账 App 或者自己写一个最简单 App用 Appium 做启动、点击、滑屏、输入、断言的自动化操作。推荐练手重点App 启动和登录流程自动化模拟器分辨率变化下的元素定位查看 Appium 日志定位崩溃使用 adb 命令管理测试数据。简历参考写法“使用 Appium 完成 Android 端核心功能的自动化回归通过 adb 命令快速重置数据并输出测试报告”。项目 10开源后台管理模板测试技术栈Vue3 Element Plus 前端 Mock 或真实后端开源后台管理模板非常多功能通常包含登录、菜单权限、用户管理、角色管理、表格增删改查、搜索分页。测试价值集中在权限模型和表格交互上。推荐练手重点不同角色登录后菜单可见性按钮级别权限控制表格批量删除搜索关键词组合分页数据一致性。简历参考写法“在后台管理系统中完成多角色权限分配测试验证不同角色的菜单和数据可见范围提交权限绕过类问题”。3.3 第三批移动端与小程序项目项目 11微信小程序点餐 / 商城技术栈微信小程序 云开发或后端 API小程序和普通 App 的测试重点不太一样需要关注微信授权登录、订阅消息、支付回调等场景。推荐练手重点首次登录授权弹窗、拒绝授权后再次触发购物车加购和下单流程断网状态下点击支付重复提交订单订单列表下拉刷新。简历参考写法“测试小程序首次授权登录链路覆盖拒绝授权、断网、重复提交等异常场景验证订单数据正确性”。项目 12Android 记账 App技术栈Android Kotlin/Java Room/SQLite记账 App 非常适合练本地数据持久化和日期类测试。核心功能包括记账、分类统计、日期选择、月度汇总。推荐练手重点添加一笔收入或支出后列表和总额是否一致本地数据修改后重启 App 是否存在跨月数据统计是否正确横竖屏切换数据是否丢失。简历参考写法“负责记账模块数据持久化测试通过 adb 命令快速还原测试数据验证跨天和跨月统计逻辑”。项目 13Flutter 跨平台应用技术栈Flutter Dart 后端 APIFlutter 项目适合练跨平台兼容性一次开发可以运行在 Android 和 iOS 上。测试重点是同一份代码在不同系统、不同分辨率下的表现差异。推荐练手重点Android 和 iOS 的功能一致性不同屏幕尺寸下布局是否错位系统字体调大后页面是否显示异常不同系统版本上的点击响应。简历参考写法“使用多台模拟器对比同一 Flutter 应用在 Android 和 iOS 上的表现提交布局兼容和系统差异类问题”。项目 14天气 / 新闻阅读类 App技术栈Android/iOS/Flutter 免费公开 API这类 App 的核心依赖网络接口非常适合练网络异常场景测试。比如下拉刷新、加载更多、断网提示、超时处理、接口返回错误码时的页面表现。推荐练手重点弱网和断网状态下的页面提示接口超时后是否有重试机制返回空列表、错误码、异常 JSON 时的页面展示下拉刷新是否产生重复数据。简历参考写法“重点验证无网、弱网和接口超时场景发现网络异常时页面崩溃的问题并协助定位到接口返回数据处理缺陷”。3.4 第四批性能与专项测试项目项目 15电商下单接口压测技术栈JMeter 电商系统性能测试的练手项目不需要太复杂关键是接口链路完整。用电商系统的下单接口做并发压测可以练习线程组配置、参数化、断言、聚合报告分析。推荐练手重点不同并发用户数50/100/200下的 TPS、响应时间、错误率查看事务响应时间分布压测后检查数据库订单数据是否有异常通过监控定位瓶颈在应用层还是数据库层。简历参考写法“使用 JMeter 对下单接口进行多轮并发压测输出 TPS、响应时间和错误率报告定位到数据库连接池配置瓶颈”。项目 16MySQL 数据库测试与数据校验技术栈MySQL Navicat 或命令行 接口自动化测试工程师虽然不一定要写复杂 SQL但验证数据能力非常重要。这个练手项目可以结合前面的任一个 Web 项目练习通过 SQL 验证数据正确性。推荐练手重点用户注册后数据库用户表记录是否正确订单金额与订单明细总和是否一致删除操作是物理删除还是逻辑删除并发下单后库存数量是否正确扣减。简历参考写法“结合接口操作验证数据库增删改查结果编写 SQL 脚本校验订单金额和明细一致性发现重复数据写入问题”。项目 17报表统计项目测试技术栈Spring Boot 定时任务 MySQL报表类项目的核心是统计口径。测试重点包括日期边界、数据汇总规则、空数据显示、大量数据下的报表加载性能。推荐练手重点日、周、月报表统计结果是否符合预期跨月、跨年、闰年日期边界删除数据后报表是否实时更新大量数据下报表接口响应时间。简历参考写法“验证日/周/月报表统计口径检查跨年和月末边界数据发现报表数据多加一条统计项的问题”。3.5 第五批嵌入式与 AI 应用方向项目 18AI 应用 / Agent 项目测试技术栈Spring AI / 开源 Agent 项目 / Python随着 AI 应用增多测试工程师也需要会测 AI 应用。可以选择一个本地可运行的 Agent 或 AI 对话项目作为被测对象练习 AI 应用的功能测试和边界测试。推荐练手重点输入空值、超长文本、特殊字符、多轮对话上下文是否正常不同 prompt 下返回结果是否符合预期接口超时和流式返回异常敏感内容过滤效果。简历参考写法“对 AI 对话类应用进行功能和边界测试覆盖多轮对话、超长输入、接口超时场景验证异常输入下的系统稳定性”。如果对嵌入式方向更感兴趣也可以将第 18 个项目替换为嵌入式 Linux 项目或 Qt 桌面应用项目重点测试串口通信、界面控件交互、异常掉电后的数据恢复等场景。4. 环境搭建与必备工具链选好项目以后第一件事不是直接写用例而是把项目在本地跑起来。软件测试练手项目最常用的工具有Git、JDK、Node.js、MySQL、IDEA 或 VS Code、Postman/Apifox、Charles/Fiddler、JMeter、Python 环境。版本建议以实际项目为准优先选择长期支持版本不要盲目追求最新版。以本地启动一个 Spring Boot Vue3 项目为例先克隆项目再导入 IDE然后初始化数据库分别启动前后端。下面是常见命令示例# 克隆项目 git clone https://gitee.com/your-project-demo/library-system.git # 进入后端目录使用 Maven 启动 cd library-system/backend mvn spring-boot:run # 进入前端目录安装依赖并启动 cd ../frontend npm install npm run dev如果项目包含了数据库初始化脚本通常是一个.sql文件。先用 MySQL 客户端创建数据库再导入脚本mysql -u root -p init.sqlSpring Boot 项目的数据库连接配置通常在application.properties或者application.yml中本地启动时需要修改成自己的数据库账号密码spring.datasource.urljdbc:mysql://localhost:3306/library_system?useUnicodetruecharacterEncodingutf8 spring.datasource.usernameroot spring.datasource.password123456 spring.datasource.driver-class-namecom.mysql.cj.jdbc.DriverPython 自动化测试环境可以用虚拟环境管理依赖python -m venv venv source venv/bin/activate # Windows 使用 venv\Scripts\activate pip install pytest requests allure-pytest playwright playwright install chromium启动完成后先用浏览器访问前端页面再用 Postman 或 Apifox 验证后端接口。如果接口返回正常 JSON 数据说明项目已经可以开始测试了。这里真正容易踩坑的地方是版本兼容。比如 JDK 8 和 JDK 17 对部分框架支持不同Node.js 版本太高或太低会导致依赖安装失败MySQL 8 的认证插件可能影响旧版本驱动连接。遇到启动失败时先看控制台日志搜索关键报错信息而不是直接放弃项目。5. 从 0 到 1 完成一个 Web 测试项目的完整实战下面用一个“任务管理系统”的待办 API 为例演示从测试计划到测试报告的全过程。这里的接口路径以实际项目为准重点是掌握测试思路。5.1 第一步分析需求和业务范围假设被测系统是一个待办任务 API核心功能有创建任务、查询任务列表、查询任务详情、更新任务状态、删除任务。测试范围应该明确为“任务模块新增和状态流转的接口测试”。功能测试人员需要先画出业务流程用户创建任务 → 任务进入“待办”状态 → 用户开始处理 → 状态变为“进行中” → 用户完成 → 状态变为“已完成”。5.2 第二步设计测试用例测试用例是软件测试的核心交付物。以“创建任务接口”为例可以采用等价类和边界值方法设计如下用例用例编号模块优先级前置条件操作步骤预期结果TC_001创建任务P0已登录输入合法任务标题和描述返回 200任务创建成功TC_002创建任务P1已登录标题为空返回 400提示标题不能为空TC_003创建任务P1已登录标题长度为 100 个字符返回 200创建成功TC_004创建任务P2已登录标题长度为 101 个字符返回 400提示超长TC_005创建任务P2未登录直接调用创建任务接口返回 401提示未认证5.3 第三步编写接口测试脚本在手工用 Postman 验证后可以把重复性最高的接口用例改成自动化脚本。下面是一个基于 pytest requests 的示例代码可以保存为test_todo_api.pyimport pytest import requests BASE_URL http://localhost:8080/api def get_token(): resp requests.post(f{BASE_URL}/auth/login, json{ username: testuser, password: 123456 }) return resp.json()[token] HEADERS {} pytest.fixture(scopemodule, autouseTrue) def setup_token(): global HEADERS token get_token() HEADERS {Authorization: fBearer {token}} pytest.mark.parametrize(title, expected_status, [ (写测试用例, 200), (, 400), (a * 100, 200), (a * 101, 400), ]) def test_create_todo(title, expected_status): resp requests.post(f{BASE_URL}/todos, json{title: title}, headersHEADERS) assert resp.status_code expected_status这个脚本覆盖了创建任务接口的正常、空值、长度边界场景。执行方式pytest test_todo_api.py -v --alluredir./allure-results allure serve ./allure-results通过--alluredir生成测试结果然后用 Allure 打开可视化报告。5.4 第四步提交缺陷和输出测试报告发现缺陷时需要用缺陷报告模板记录。一个合格缺陷报告至少要包含字段内容示例缺陷标题任务标题为 101 个字符时接口返回 500测试环境Windows 11 / JDK 17 / MySQL 8前置条件用户已登录复现步骤调用 POST /api/todos传入 101 个字符标题实际结果接口返回 500服务端堆栈 NPE预期结果返回 400提示标题超长严重程度一般在测试报告中需要汇总用例执行情况、缺陷统计、遗留风险和测试结论。这四步走完你才算真正拥有一个可以写进简历的项目经历。6. 简历项目描述写法从“练过”到“会测”很多自学者把项目写进简历时只有一句话参与了某系统的测试。这种写法等于没写。面试官想看的是被测系统是什么、你做了什么、用了什么方法、发现了什么问题、最终结果如何。功能测试方向的简历描述可以这样写“针对图书管理系统独立完成图书借还流程的测试分析。使用 XMind 梳理业务流程图采用等价类、边界值和场景法设计测试用例 60 余条。执行过程中发现库存扣减与订单生成不一致问题提交缺陷并协助开发定位到事务提交顺序错误。最终通过回归测试验证修复结果。”接口自动化方向的简历描述可以这样写“基于 pytest requests 搭建接口自动化测试框架对某前后端分离系统的登录、任务创建、状态流转接口进行自动化测试。使用参数化覆盖正常、异常、边界场景引入 pytest-failed-screenshot 和 Allure 生成可视化报告实现回归用例自动执行。”性能测试方向的简历描述可以这样写“使用 JMeter 对电商下单接口进行 100 到 200 并发压测记录 TPS、平均响应时间、错误率等指标。通过聚合报告和数据库连接监控定位到数据库连接池大小配置过低导致的高并发下响应变慢建议调整后重新压测验证。”写简历时建议不要编造绩效数字。如果确实没有跑过 1000 并发就不要写“支撑 1000 并发”。面试官一旦追问细节编造的数据会很快露馅。面试中讲项目时可以按这个顺序组织语言项目是什么业务 → 我在里面负责什么 → 我如何分析测试点 → 我怎样设计用例 → 我发现了什么经典缺陷 → 我如何推动问题解决 → 最后有没有产出报告或自动化脚本。7. 软件测试练手常见问题与排查思路问题现象可能原因排查方式解决方案项目启动失败JDK / Node / MySQL 版本不匹配依赖冲突查看启动日志检查控制台报错关键字按照项目 README 使用指定版本重新构建依赖数据库初始化失败SQL 脚本编码问题、数据库权限不足查看 SQL 文件编码使用命令行单独执行脚本转为 UTF-8 编码确认账号有 CREATE TABLE 权限接口返回 404项目上下文路径错误、路由或控制器映射不对检查启动日志中 Tomcat 端口和 context path确认接口地址前缀端口和路径与后端配置一致接口返回 500参数校验未处理、数据库查询异常、空指针查看后端控制台堆栈日志根据堆栈定位代码问题或提交缺陷给开发UI 自动化找不到元素元素定位不稳定、iframe、动态加载、属性变化打开浏览器开发者工具检查元素尝试不同定位策略优先使用 data 属性定位添加显式等待自动化脚本运行不稳定测试数据未隔离、用例间状态依赖检查用例执行顺序查看失败截图和日志每个用例独立创建测试数据执行后清理数据压测结果波动大网络波动、测试数据不够、服务器资源竞争多次运行压测查看聚合报告和监控指标固定压测环境使用独立测试数据关闭无关进程新手遇到问题时第一个动作是看日志和截图。Web 项目看后端控制台和前端的 Network 面板移动端看 Appium 日志和 adb logcat接口测试看响应体和请求体。大部分问题都能通过日志定位到方向。8. 最佳实践与工程建议练手项目不能练完就丢最好按照工程化的方式管理这样才能形成真正属于你的资产。第一个建议是给每个练手项目建立独立仓库。你可以把测试用例文档、接口测试脚本、自动化测试脚本、缺陷记录、测试报告都提交到 Git 仓库。这样面试时可以直接展示“我不仅有测试记录还有可复用的自动化脚本”。第二个建议是测试数据和测试用例分离。用例表达“测什么”数据表达“用什么值测”。在接口自动化脚本中用参数化管理数据在手工测试用独立的 CSV 或 Excel 管理测试数据。第三个建议是注意安全边界。在公开仓库中提交代码时不要包含数据库密码、Token、密钥等敏感信息。可以在本地配置文件中写测试环境数据库密码但提交到远程仓库前一定检查。第四个建议是自动化用例优先保证稳定而不是追求数量。自动化测试最忌讳的是脚本今天能过明天过不了。宁可先维护 20 条稳定用例也不要一次写 200 条不稳定用例。每个用例要做到有独立的测试数据准备和清理逻辑、有明确的断言、有失败时的截图或日志输出。第五个建议是学习使用缺陷管理工具。即使是个人练手也可以使用禅道、Jira 或在线文档模拟完整流程。记录缺陷时写清楚环境、前置条件、复现步骤、实际结果、预期结果和严重程度。这种习惯会让你在进入团队后更快适应工作流。第六个建议是不要忽略数据库验证。很多测试问题只看界面是发现不了的。比如页面提示“操作成功”但数据库里根本没有对应记录比如列表显示数量正确但后端返回的数据里多了一条不应出现的数据。学会使用 SQL 验证数据是测试工程师基本功。进阶方向上建议按“接口测试 → 自动化测试 → 性能测试 → 测试平台开发”的路径推进。AI 应用测试也是值得关注的方向但不是必须一开始就投入大量精力。先把经典 Web 项目的测试链路跑通再逐步扩展。9. 总结与后续学习方向这篇文章的核心观点是软件测试的项目经验不是靠数量堆出来的而是靠“完整跑通一个系统”沉淀出来的。18 个练手项目可以帮你覆盖 Web 功能测试、接口自动化、移动端、性能、嵌入式与 AI 方向但真正建议的是选取 2 到 3 个按测试计划、用例设计、执行、缺陷跟踪、测试报告的流程完整走一遍。如果你今天只能做一件事那就选一个最接近目标岗位方向的项目在本机启动起来把登录和核心业务流程的用例写出来、跑一遍、记录结果。跑通这个闭环之后你会发现简历上的“项目经验”不再是空白面试时也能讲出细节。下一步可以继续深入接口测试和自动化测试把手工用例逐步转化成可复用的脚本这才是测试工程师真正的核心竞争力。