—
前言
大家好,我是质量守护者。做质量管理6年,见证了测试从”事后验证”到”全程参与”的转变。测试左移是目前测试领域最热门的话题之一,今天分享实践经验和落地方法。
—
一、什么是测试左移?
传统测试模式
需求 –
开发 -> 测试 -> 发布
↑ ↑
测试介入晚,发现问题成本高
左移后的模式
需求 –
设计 -> 开发 -> 测试 -> 发布
↑ ↑ ↑
测试全程参与
左移的价值
| 发现问题的阶段 | 修复成本 |
|---|---|
| 需求阶段 | 1x |
| 设计阶段 | 5x |
| 开发阶段 | 10x |
| 测试阶段 | 20x |
| 生产环境 | 100x+ |
—
二、需求阶段测试介入
需求评审要点
测试人员在需求评审时关注:
1. 功能完整性
– 是否有遗漏的场景
– 边界条件是否明确
– 异常处理是否定义
2. 可测试性
– 验证条件是否明确
– 测试数据是否可准备
– 验证方法是否可行
3. 质量属性
– 性能要求
– 安全要求
– 兼容性要求
需求问题清单
markdown
需求评审检查清单
功能完整性
- [ ] 正常流程是否完整
- [ ] 异常流程是否覆盖
- [ ] 边界值是否明确
- [ ] 数据约束是否清晰
可测试性
- [ ] 验证标准是否明确
- [ ] 测试环境是否具备
- [ ] 测试数据是否可准备
质量属性
- [ ] 性能指标是否定义
- [ ] 安全要求是否明确
- [ ] 兼容性范围是否确定
—
三、设计阶段测试参与
测试设计评审
在设计阶段参与评审:
1. 架构评审
– 模块划分是否合理
– 接口定义是否清晰
– 错误处理是否完善
2. 数据库设计评审
– 表结构是否合理
– 索引设计是否完备
– 数据一致性是否保证
测试用例提前设计
在开发完成前完成测试设计:
yaml
测试用例模板
用例编号: TC-USER-001
用例名称: 用户登录成功
前置条件: 用户已注册
测试步骤:
1. 打开登录页面
2. 输入正确的用户名
3. 输入正确的密码
4. 点击登录按钮
预期结果:
– 登录成功
– 跳转到首页
– 显示用户信息
—
四、开发阶段测试协同
代码评审参与
测试关注点:
- 日志是否完善
- 错误处理是否合理
- 测试代码是否充分
单元测试覆盖
推动开发完善单元测试:
python
单元测试示例
def test_user_login():
“””测试用户登录”””
# 正常登录
result = login(“testuser”, “password123”)
assert result.success == True
# 错误密码
result = login(“testuser”, “wrongpass”)
assert result.success == False
# 用户不存在
result = login(“nonexist”, “password”)
assert result.success == False
—
五、自动化测试左移
测试脚本提前开发
在开发阶段同步编写测试脚本:
1. 接口文档驱动
– 根据API文档编写测试
– 使用Mock服务调试
2. 测试数据准备
– 准备测试账号
– 准备测试数据
RunnerGo自动化提前准备
yaml
接口测试配置
接口名称: 用户登录
URL: {{base_url}}/auth/login
方法: POST
请求体:
username: testuser
password: password123
断言:
– StatusCode == 200
– JSONBody.code == 200
– JSONBody.data.token != null
—
六、测试左移收益
量化指标
| 指标 | 左移前 | 左移后 |
|---|---|---|
| 缺陷发现阶段 | 测试阶段 | 需求/开发阶段 |
| 缺陷修复成本 | 高 | 低 |
| 测试周期 | 长 | 短 |
| 发布质量 | 一般 | 高 |
—
总结
测试左移实施要点:
| 阶段 | 测试工作 |
|---|---|
| 需求阶段 | 需求评审、可测试性分析 |
| 设计阶段 | 设计评审、用例设计 |
| 开发阶段 | 代码评审、单元测试推动 |
| 测试阶段 | 自动化执行、快速反馈 |
—
下期预告:Mock服务实战全解 – 从WireMock到自建Mock平台