很多人自学软件测试半年,简历还是只能写"熟悉黑盒测试、会写用例"。 面试官一问:"你测过什么业务?" 只会说:测过百度、测过淘宝……

不是你不努力,是你缺一个能练手的企业级系统。

对着百度首页测接口?毫无意义,因为根本没有业务上下文。 对着开源商城写用例?逻辑太简单,面试官一眼就看穿了。 想学性能测试?连个有高并发的系统都找不到。

这些坑,我当年全踩过。

所以我用 Vibe Coding 手搓了一个电商进销存财务一体化系统,放出来了。

这不是一个 Demo,是真能跑完整业务流的企业级系统。商品怎么创建、采购怎么审批、库存怎么变化、财务怎么记账——每一步都是真实的业务逻辑。

你练出来的不是玩具项目,是面试桌上能实打实聊的项目经验。


这个系统能干什么?

覆盖从采购到销售、从库存到财务的完整业务链路:

业务域 核心能力
商品管理 CRUD、SKU 编码、成本价/销售价/秒杀价、安全库存预警
秒杀系统 活动管理、Redis 原子扣库存、分布式锁防超卖、用户限购、限流防刷
采购管理 供应商管理 → 采购订单 → 采购收货 → 入库确认 → 库存增加
销售管理 客户管理 → 销售订单 → 出库确认 → 发货 → 库存减少
库存管理 实时库存、出入库流水、库存调整、移动加权平均成本
财务管理 业务单据自动记账、凭证管理、利润表、资产负债表

系统架构长什么样?

前后端分离架构,一台电脑 docker compose up -d 就能跑起来:

┌─────────────────────────────────────────────────────────────┐
│                        用户访问层                            │
│    ┌─────────┐   ┌─────────┐   ┌──────────┐                │
│    │Web浏览器│   │ 移动端H5 │   │ 第三方API │                │
│    └────┬────┘   └────┬────┘   └────┬─────┘                │
└─────────┼──────────────┼─────────────┼──────────────────────┘
          └──────────────┼─────────────┘
                         │
┌────────────────────────┼──────────────────────────────────────┐
│                    Nginx 网关层                                │
│  ┌──────────────────┐  ┌─────────────────────────────────┐   │
│  │ Vue 3 SPA 静态文件│  │ /api/* → 反向代理到后端         │   │
│  │ (22个页面)        │  │ proxy_pass http://app:5000     │   │
│  └──────────────────┘  └─────────────────────────────────┘   │
└────────────────────────┼──────────────────────────────────────┘
                         │
┌────────────────────────┼──────────────────────────────────────┐
│                   Flask 后端 API 层                           │
│                                                               │
│  ┌────────────────────────────────────────────────────────┐  │
│  │  路由层: /api/auth/*  /api/products  /api/seckill/*   │  │
│  │  /api/purchase/*  /api/sales/*  /api/finance/*  ...   │  │
│  └─────────────────────┬──────────────────────────────────┘  │
│                        │                                     │
│  ┌──────┐ ┌─────────┐ ┌──────────┐ ┌──────────────────┐    │
│  │认证  │ │秒杀业务 │ │采购业务  │ │销售业务          │    │
│  │JWT   │ │Lua脚本  │ │入库流程  │ │出库流程          │    │
│  └──────┘ └────┬────┘ └────┬─────┘ └────────┬─────────┘    │
│                │           │                 │               │
│  ┌─────────────┴───────────┴─────────────────┴──────────┐  │
│  │   数据模型层: 14张业务表 + SQLAlchemy ORM            │  │
│  │   User │ Product │ Order │ SeckillActivity │ Voucher │  │
│  │   Supplier │ Customer │ StockIn │ StockOut │ ...     │  │
│  └─────────────────────┬────────────────────────────────┘  │
│                        │                                    │
│  ┌─────────────────────┼────────────────────────────────┐  │
│  │  财务核算: 移动加权平均 │ 库存管理: 流水记录          │  │
│  └─────────────────────┴────────────────────────────────┘  │
└────────────────────────┼──────────────────────────────────────┘
                         │
            ┌────────────┴────────────┐
            ▼                         ▼
┌─────────────────┐    ┌──────────────────────────────┐
│    MySQL 8.0    │    │         Redis 7               │
│                 │    │                              │
│  持久化所有      │    │ • 秒杀库存原子扣减(Lua脚本)  │
│  业务数据        │    │ • 分布式锁防并发冲突         │
│                 │    │ • 用户限购/限流               │
│                 │    │ • 异步消息队列                │
└─────────────────┘    └──────────────────────────────┘

架构分层

层级 组件 干嘛的
展示层 Vue 3 + Nginx 22个页面,SPA路由,API反向代理
API层 Flask 60+ RESTful JSON接口,CORS跨域
认证层 JWT + Session 双模式认证,登录/权限装饰器
业务层 5个Service模块 秒杀/采购/销售/财务/库存核心逻辑
数据层 SQLAlchemy ORM 14张表模型定义、关系映射
缓存层 Redis 7 库存预热、原子扣减、分布式锁、限流
持久层 MySQL 8.0 所有业务数据持久化

技术栈一览

后端技术:

技术 版本 用途
Python 3.11 运行时
Flask 3.x Web框架
Flask-SQLAlchemy 3.x ORM数据库操作
PyMySQL 1.x MySQL驱动
PyJWT 2.x JWT认证
Werkzeug 3.x 密码哈希
Redis-py 5.x Redis客户端(Lua脚本+连接池)

前端技术:

技术 版本 用途
Vue 3.x 渐进式框架
Vite 5.x 构建工具(HMR热更新)
Ant Design Vue 4.x UI组件库
Vue Router 4.x 前端路由
Pinia 2.x 状态管理
Axios 1.x HTTP客户端(Token自动注入)

基础设施: Docker + Docker Compose 一键编排,MySQL 8.0 持久化,Redis 7 缓存与并发控制。


每个模块能练什么测试技能?

这也是我做这个系统的核心目的——每个模块对应一类测试练习

商品管理 → 练接口测试

最标准的 CRUD 场景,但远比 Demo 丰富:

  • 创建商品要验必填项、价格负数、编码重复
  • 修改商品要测状态流转(正常→下架→删除)
  • 不同角色调用同一接口返回不同状态码(201 / 401 / 403)
  • 用 Postman 建一个集合跑一遍,再试 pytest + requests 自动化

这一步走完,接口测试你就入门了。

秒杀管理 → 练性能测试

这是我设计这个系统的重中之重。整个秒杀流程是这样的:

用户点击"抢购"
  │
  ▼
① 校验活动状态(进行中?已结束?)
  │
  ▼
② 校验用户限购(已经买了几件?)
  │
  ▼
③ Lua脚本原子扣减库存(Redis执行,杜绝超卖)
  │  若库存不足 → 返回"库存不足"
  │
  ▼
④ 获取分布式锁
  │
  ▼
⑤ 双重检查用户限购
  │  若超限 → 恢复库存
  │
  ▼
⑥ 创建秒杀订单(写入MySQL)
  │
  ▼
⑦ 增加用户秒杀次数
  │
  ▼
⑧ 发送消息到队列异步处理
  │
  ▼
返回订单号,秒杀成功

背后有 6 道防超卖防线:

机制 作用
Lua脚本原子扣减 GET+判断+DECR一个原子操作,杜绝竞态
分布式锁 SET NX EX + Lua释放,控制关键流程串行
双重检查 锁内再次校验,防止等待期间状态变化
异常回滚 异常时自动恢复库存
用户限流 每分钟最多3次,防刷单
Token幂等 防止重复提交

你可以用 JMeter 起 100 个线程同时抢同一个商品,验证:

  • 实际下单数 ≤ 秒杀库存数?(有没有超卖)
  • TPS 是多少?P95 响应时间?
  • 限流拦截在第几次生效?
  • 把 Redis 停了,系统会不会优雅降级?

这一步走完,性能测试你就真正上手了。

采购 / 库存 / 销售 → 练业务流程测试

电商最核心的进销存链路,每一步都有明确的业务含义:

采购流程:

创建供应商
  │
  ▼
创建采购订单(DRAFT)
  │  选择供应商 + 添加商品明细
  ▼
确认采购订单(→ APPROVED)
  │
  ▼
创建采购入库单(DRAFT)
  │  自动增加库存
  │  自动创建库存流水
  │  自动计算移动加权平均成本
  ▼
确认入库(→ APPROVED)
  │  自动生成财务凭证
  │  借:库存商品 / 贷:应付账款

销售流程:

创建客户
  │
  ▼
创建销售订单(DRAFT)
  │  自动校验库存是否充足
  ▼
确认销售订单(→ CONFIRMED)
  │
  ▼
创建销售出库单(DRAFT)
  │  自动减少库存
  │  使用移动加权平均成本计算出库成本
  ▼
确认出库(→ APPROVED)
  │  自动生成两张财务凭证
  │  收入:借应收账款 / 贷主营业务收入
  │  成本:借主营业务成本 / 贷库存商品

你可以测试:

  • DRAFT 状态下能不能直接取消?
  • APPROVED 后能不能再修改?
  • 同一个采购订单能不能重复入库?(应该被拦截)
  • 跑完 5 次入库出库后,库存流水总和 = 当前库存?

这是面试官最喜欢的场景——能聊业务流程的候选人,比只会"测增删改查"的强太多。

财务管理 → 练数据一致性校验

业务单据自动生成财务凭证,真会计记账那种:

业务场景 借方 贷方
采购入库 库存商品 应付账款
销售-收入 应收账款 主营业务收入 + 税费
销售-成本 主营业务成本 库存商品

移动加权平均成本法自动计算成本:

新成本 = (原库存金额 + 新入库金额) / (原库存数量 + 新入库数量)

示例:
初始:库存 0
采购 100件 @10元 → 成本 = 10元/件
采购 50件  @12元 → 成本 = (1000+600)/150 = 10.67元/件
销售 80件         → 成本 = 80×10.67 = 853.33元

你可以校验:

  • 每张凭证的借方总额 = 贷方总额?
  • 利润表上"收入 - 成本 - 费用 = 利润"能不能对上?
  • 资产负债表恒等式"资产 = 负债 + 权益"成不成立?
  • 两次不同价格的采购入库后,成本价计算是否正确?

这一步走完,你就不是"点点点"的测试了,你能聊数据层面的质量保障。

前端页面 → 练 UI 自动化

22 个页面、侧边栏导航、表单交互、表格分页、秒杀倒计时。

用 Playwright 写一个从登录到出库的端到端脚本,面试时把脚本一摆,比你写十行"熟悉 Selenium"有说服力。


项目文件结构

seckill_finance_system/
│
├── docker-compose.yml        # 一键编排 MySQL + Redis + 后端 + 前端
├── schema.sql                # 完整数据库建表脚本
│
├── backend/                  # Flask 后端
│   ├── app.py                # 主应用(60+ API 路由)
│   ├── models.py             # 14 张数据表模型
│   ├── auth.py               # JWT 认证
│   ├── database.py           # 数据库连接
│   ├── redis_client.py       # Redis 工具(Lua脚本/分布式锁)
│   │
│   ├── seckill_service.py    # 秒杀核心逻辑
│   ├── purchase_service.py   # 采购业务
│   ├── sales_service.py      # 销售业务
│   ├── finance_service.py    # 财务核算(移动加权平均+自动记账)
│   ├── stock_service.py      # 库存管理
│   │
│   └── tests/                # 8 个测试文件
│       ├── test_01_auth.py
│       ├── test_02_products.py
│       ├── test_03_seckill.py
│       ├── test_04_orders.py
│       ├── test_05_finance.py
│       ├── test_06_purchase_sales.py
│       ├── test_07_stock.py
│       └── test_08_api_security.py
│
└── frontend/                 # Vue 3 前端
    └── src/
        ├── api/              # Axios 封装
        ├── router/           # 22 个页面路由
        ├── store/            # Pinia 状态管理
        └── views/            # 页面组件
            ├── auth/         # 登录/注册
            ├── dashboard/    # 仪表盘
            ├── product/      # 商品管理
            ├── seckill/      # 秒杀专区 + 秒杀管理
            ├── order/        # 订单管理
            ├── purchase/     # 采购管理(4个页面)
            ├── sales/        # 销售管理(4个页面)
            ├── stock/        # 库存管理(3个页面)
            └── finance/      # 财务管理(4个页面)

给零基础的自学路线

如果你刚入行,不知道从哪下手,我给你画了一条路:

第一阶段:用 Postman 测商品接口 → 练接口测试基本功
第二阶段:用 pytest 写自动化用例 → 练代码能力
第三阶段:跑通采购→销售→财务完整链路 → 练业务理解
第四阶段:用 JMeter/Locust 压秒杀场景 → 练性能测试
第五阶段:用 Playwright 写前端 E2E → 练全栈测试
第六阶段:把以上组合成 CI 流水线 → 练持续集成

每一步都有对应的模块给你练,不用去找乱七八糟的资源。


怎么拿到这个系统?

项目文件我放在网盘了,加我微信直接发你。

扫码加我微信,备注「进销存」:

加我后我会把项目文件 + 一键启动教程一起发你。 拿到后解压,一句 docker compose up -d 启动,浏览器打开就能用。 有什么不会的,直接微信问我,别客气。


写在最后

我做测试 14 年了,深知这个行业最大的门槛不是技术,而是有没有场景给你练

这个系统是我花时间搓出来的,不算完美,但足够你从入门练到进阶。如果你觉得有用,点赞、在看、转发,让更多被"没业务系统"卡住的朋友看到。

评论区说说你自学测试踩过最大的坑,我每条都看。

你在评论区留下的每一句话,都可能成为下一篇爆款文章的素材。


我是测试员周周,14 年测试老兵,专注 AI + 测试实战分享。 关注我,测试路上不迷路。

Logo

电商企业物流数字化转型必备!快递鸟 API 接口,72 小时快速完成物流系统集成。全流程实战1V1指导,营造开放的API技术生态圈。

更多推荐