项目背景
软件测试是保障软件质量的关键环节。对于测试初学者来说,最常见的问题不是没有学过理论知识,而是缺乏完整的项目实践经验。本项目集整合了 4 个完整的软件测试项目,覆盖 Web 功能测试、API 接口测试、Playwright UI 自动化测试、Selenium UI 自动化测试四大领域,形成一条从手工测试到自动化测试的完整学习路径。
项目目标
- 建立完整的软件测试项目经验
- 覆盖功能测试、接口测试、UI 自动化测试三大领域
- 输出企业标准的测试计划、测试用例、Bug 报告、测试报告
- 为简历提供可直接使用的项目描述与面试话术
项目总览
| 序号 | 项目名称 | 测试类型 | 技术栈 | 用例数 | 周期 | 通过率 |
|---|---|---|---|---|---|---|
| 1 | Web 功能测试 | 手工测试 | Chrome DevTools + Excel | 30 条 | 2 周 | 83.3% |
| 2 | API 接口测试 | 接口测试 | Postman + JavaScript | 16 条 | 1 周 | 100% |
| 3 | Playwright 自动化 | UI 自动化 | Python + Playwright | 10 条 | 1 周 | 90% |
| 4 | Selenium 自动化 | UI 自动化 | Python + Selenium | 17 条 | 1 周 | 94.1% |
| 合计 | - | - | - | 73 条 | 5 周 | 92% |
项目结构
SoftwareTestingPortfolio/
├── Project1_WebFunctionalTesting/ # Web 功能测试
│ ├── 01_TestPlan/ # 测试计划
│ ├── 02_TestCases/ # 30 条测试用例
│ ├── 03_BugReports/ # 5 个 Bug 报告
│ └── 04_TestSummary/ # 测试总结报告
├── Project2_API_Testing/ # API 接口测试
│ ├── 01_RequirementsAnalysis/ # 需求分析
│ ├── 02_TestCases/ # 16 个接口测试用例
│ ├── 03_PostmanScripts/ # Postman Tests 脚本
│ └── 04_TestReport/ # API 测试报告
├── Project3_PlaywrightTesting/ # Playwright 自动化测试
│ ├── 01_TestCode/ # Page Object 框架 + 10 条用例
│ ├── 02_TestCases/ # 自动化测试用例文档
│ └── 03_TestReport/ # 执行报告
├── Project4_SeleniumTesting/ # Selenium 自动化测试
│ ├── 01_TestCode/ # Page Object 框架 + 17 条用例
│ ├── 02_TestCases/ # 自动化测试用例文档
│ └── 03_TestReport/ # 执行报告
└── Resume/ # 可直接投递的简历模板
项目一:Web 功能测试
测试对象
OpenCart 开源电商系统,一个功能完整的在线商城系统。
技术栈
- 手工测试
- Chrome DevTools(抓包、查看元素、模拟网络)
- Xmind(思维导图梳理测试点)
- Excel(测试用例与缺陷管理)
测试范围
覆盖电商系统的核心业务流程:
- 用户注册与登录
- 商品搜索与筛选
- 购物车管理
- 订单提交与支付
项目成果
- 测试计划文档:包含测试策略、测试范围、准入准出标准、风险评估、资源安排。
- 30 条测试用例:覆盖正向、逆向、边界场景。
- 5 份 Bug 报告:其中包含 1 个 S1 级别严重 Bug——订单支付后库存未扣减。
- 测试总结报告:缺陷统计、覆盖率分析、遗留风险。
印象深刻的 Bug
Bug 标题:订单支付成功后,商品库存未扣减
严重等级:S1(严重)
复现步骤:
- 登录系统并选择商品加入购物车。
- 进入结算页面完成支付。
- 查看商品库存数量。
预期结果:支付成功后,商品库存应相应扣减。
实际结果:库存数量没有变化,导致超卖风险。
根因分析:支付回调接口未正确触发库存扣减逻辑。
这个 Bug 直接体现了测试对业务风险的把控能力,也是面试中非常有说服力的案例。
项目二:API 接口测试
测试对象
JSONPlaceholder(https://jsonplaceholder.typicode.com/),一个免费的 REST API 练习平台。
技术栈
- Postman
- JavaScript 断言
- Newman(命令行执行)
测试范围
分析并测试 8 个核心接口,覆盖:
- GET:查询单个/列表资源
- POST:创建资源
- PUT:更新资源
- DELETE:删除资源
项目成果
- API 需求分析文档:梳理接口地址、请求方法、参数、响应结构。
- 16 个接口测试用例:覆盖正常场景、异常场景、参数边界。
- 5 个 Postman Tests 断言脚本:含逐行注释,便于学习。
- API 测试报告:通过率 100%,平均响应时间 245ms。
Postman 断言示例
// 状态码断言
pm.test("状态码为 200", function () {
pm.response.to.have.status(200);
});
// 响应时间断言
pm.test("响应时间小于 500ms", function () {
pm.expect(pm.response.responseTime).to.be.below(500);
});
// JSON 字段断言
pm.test("返回数据包含 id 字段", function () {
var jsonData = pm.response.json();
pm.expect(jsonData).to.have.property("id");
});
项目三:Playwright 自动化测试
测试对象
OpenCart 演示网站。
技术栈
- Python 3.10+
- Playwright
- Pytest
- Page Object Model(POM)
项目成果
- 完整的 Page Object 自动化测试框架。
- 10 个自动化测试用例。
- 详细的代码注释和项目说明。
- 测试执行报告,通过率 90%。
核心设计
Page Object 模式将页面元素定位和页面操作封装到单独的类中,测试用例只关注业务流程。例如登录操作:
LoginPage(driver).open_login().login("test@example.com", "Password123")
这样当页面元素变化时,只需要修改页面对象类,而不需要改动大量测试用例。
项目四:Selenium 自动化测试
测试对象
TodoMVC Vue.js 版本,一个经典的待办事项应用。
技术栈
- Python 3.10+
- Selenium 4.15
- Pytest
- Page Object Model
- pytest-html
项目成果
- 完整的 Selenium 自动化测试框架。
- 17 个自动化测试用例。
- 包含数据驱动测试和参数化测试。
- 测试执行报告,通过率 94.1%。
Selenium 与 Playwright 对比
| 对比项 | Selenium | Playwright |
|---|---|---|
| 安装复杂度 | 需要手动下载浏览器驱动 | 自动安装驱动 |
| API 设计 | 传统 WebDriver 协议 | 现代化 API,支持自动等待 |
| 执行速度 | 相对较慢 | 更快 |
| 社区生态 | 社区更大,资料更多 | 更新,功能更强大 |
| 浏览器支持 | 支持多种浏览器 | 主要支持 Chromium、Firefox、WebKit |
技术栈覆盖
✅ 功能测试:手工测试
✅ 接口测试:Postman + JavaScript 断言
✅ Web 自动化:Playwright + Selenium
✅ 测试框架:Pytest
✅ 设计模式:Page Object 模式
✅ 数据驱动:Pytest 参数化
✅ 测试报告:Pytest-html
面试话术
问:你做过什么测试项目?
我做过 4 个测试项目,累计覆盖功能测试、接口测试和 UI 自动化测试。
项目一是电商网站的 Web 功能测试,设计了 30 条测试用例,覆盖注册登录、商品搜索、购物车、订单支付,发现 5 个 Bug,其中 1 个是 S1 级别的库存未扣减问题。
项目二是 REST API 接口测试,使用 Postman 对 JSONPlaceholder 进行测试,设计 16 个用例,编写 Tests 断言脚本,通过率 100%。
项目三是基于 Python + Playwright 的 Web UI 自动化测试,使用 Page Object 模式完成 10 个用例。
项目四是基于 Python + Selenium 的自动化测试,完成 17 个用例,通过率 94.1%。
问:测试用例怎么设计?
主要使用三种方法:
- 等价类划分:把输入数据分成若干等价类,每个类选一个代表测试。
- 边界值分析:重点测试边界条件,很多 Bug 出现在边界处。
- 正逆向思维:正向验证功能正常,逆向验证系统容错能力。
此外还要考虑优先级划分、场景覆盖和异常处理。
问:发现 Bug 后怎么处理?
- 确认问题:多次复现,排除环境和操作因素。
- 记录信息:标题、复现步骤、预期结果、实际结果、截图/日志、严重等级。
- 提交报告:通过 Bug 管理系统提交。
- 跟进修复:与开发沟通,修复后进行回归测试。
写在最后
这个项目集最大的价值在于完整性和可复用性。从测试计划到测试报告,从手工测试到自动化测试,每个项目都有明确的输入、过程和输出。无论是作为学习材料,还是作为简历中的项目经验,都能清晰展示测试工程师应有的系统性思维和实践能力。