云途智报差旅报销 SaaS 平台
多租户企业差旅报销 SaaS 微服务系统,覆盖出差、申请、多级审批、异步付款、月结关账完整业务。本人负责功能测试、接口测试与自动化脚本开发。
- 搭建 Pytest + Requests + Allure 接口自动化体系,出可视化报告
- Selenium + PO 模式落地核心流程 Web 自动化
- JMeter 网关限流接口压测,结合 Linux 日志定位异常
- MySQL 验证多租户数据隔离与月结关账一致性
- 负责报销核心模块全流程测试,设计 200+ 条用例覆盖报销 / 审批 / 付款 / 月结
- 结合 Postman + Knife4j 完成接口验证,发现并跟踪业务 & 接口缺陷
- 覆盖正常 / 异常 / 边界场景,正向用例验证核心业务,反向用例验证规则/安全
# 模块 → 用例数 / 优先级分布 报销提交 28 P0:8 P1:14 P2:6 审批流转 22 P0:6 P1:12 P2:4 付款银企 26 P0:10 P1:12 P2:4 月结关账 18 P0:4 P1:10 P2:4 预算/权限 10 P0:2 P1:6 P2:2
- 搭建 Pytest + Requests 接口自动化:Fixture 复用登录 JWT
- YAML 数据驱动扩展至 80+ 条,接 Allure 报告
- 回归报销月份边界、并发付款幂等、Redis 失联查重降级等
# Fixture 复用 JWT + YAML 数据驱动 @pytest.fixture(scope="session") def jwt_token(): return login_api("qa_lead", "t123456") @pytest.mark.parametrize("case", yaml.safe_load(open("pay_cases.yaml"))) def test_pay_concurrent_idem(jwt_token, case): r = post("/pay/save", json=case, headers=jwt_token) assert r["balance_diff"] == case["expect_diff"]
- Selenium + PO 三层封装:base_page → page_object → test_case
- 覆盖登录页 / 报销页主流程,以及金额 / 已关账月份拦截边界
- 失败自动截图 + 重试,减少重复人工回归
class ExpensePage(BasePage): amount = (By.CSS_SELECTOR, "#amount") month = (By.CSS_SELECTOR, "#month") submit = (By.CSS_SELECTOR, "#submit") def submit(self, amt, month): self.input_text(self.amount, amt) self.input_text(self.month, month) self.click(self.submit) # 断言:已关账月份 → 拦截提示 return self.get_toast_text()
- 使用 JMeter 对网关限流相关接口进行压力测试
- 结合 Linux 日志分析接口异常及服务响应情况
- 辅助定位测试过程中发现的性能瓶颈 / 异常路径
# JMeter Non-GUI 压测网关限流接口 jmeter -n -t gateway_throttle.jmx \ -l result.jtl -e -o ./report \ -Jthreads=1000 -Jramp=30 # Linux 日志分析响应异常 tail -f gateway.log | grep -E '429|timeout' grep "SlowQuery" slow.log | awk '{print $NF}' | sort -nr | head