本文是我在当前项目上设计的质量保障方案,在进行项目信息脱敏后,总结如下。
质量 = 正常工作的软件 + 满足项目干系人的需求
主动性质量管理 --> 预防 + 评审
流程
- 开发流程
1.1 每一个环节明确的进入退出条件
1.2 多轮质量反馈机制
- 开发团队日常的反馈
- 站会
- IPM
- 开卡&结卡
- 客户/用户的反馈 + showcase - 持续集成/持续部署流程
2.1 加入代码扫描,自动化测试等
2.2 失败处理 - 与上下游方的沟通联调流程
需求
- 需求分析和澄清
- 需求符合INVEST原则,无二义性和歧义性
- PO积极性,能够及时响应和回答
- AC的定义,完工的定义,测试结束的定义
开发实践
- Code Review 代码审查
- Peer Review (via PR) 同行评审
- TDD
- Pairing 结对编程
代码质量
-
静态测试
1.1 统一的编码规范:比如命名规则,注释,代码格式,函数复杂度等
- 可以结合业界标准。比如Sun Code Convent和Google Style等
- 使用工具扫描代码。比如JS的ESlint
- 可以在IDE装相关插件,做到编码时检测
1.2 静态代码扫描
- 集成到CI流水线中。SonarQube
- IDE插件,做到编码时检测
-
动态测试
2.1 前端单元测试
2.2 后端单元测试
风险管理
- 可视化风险
- 及时暴露和管理风险
项目实践
- 定期Retro
- 知识管理
- API文档管理
- 新人培训
- 追求技术卓越
- 面对面沟通
- 集中办公
被动型质量管理 --> 测试 + 检验
质量属性
- 功能性
- 完成度
- 精准度
- 互用性
- 效率
- 并发
- 性能
- 资源利用率
- 吞吐量
- 持久力
- 安全
- 认证
- 授权
- 隐私
- 兼容性
- 应用兼容
- OS兼容
- 硬件兼容
- 向后兼容
- 可用性
- 易学性
- 易操作性
- 可达性
- 可靠性
- 稳定性
- 健壮性
- 可恢复性
- 错误处理
- 数据完整性
- 可维护性
- 可扩展性
- 修复
- 构建
- 可移植性
- 重用
- 可安装性
- 配置
- 升级卸载
测试活动
质量属性 | 测试类型 |
---|---|
功能性 | 功能测试、集成测试、探索式测试、用户验收测试、流测试、回归测试 |
性能 | 压力测试、负载测试 |
安全 | 渗透测试、威胁建模 |
兼容性 | 兼容性测试 |
可用性 | 用户测试、Alpha测试、Beta测试 |
可靠性 | 风险测试、场景测试、域测试(domain testing)、流测试、压力测试 |
可维护性 | 单元测试 |
可移植性 | 专项测试 |
可安装性 | 专项测试 |
测试策略
SDLC | 测试类型 | 方法 | 框架/工具 | 策略 |
---|---|---|---|---|
Code | 单元测试 | 自动化 | Junit, pytest, mocha, jasmine | 采用TDD,覆盖率检查,QA review UT,每次构建在CI执行 |
Test | 冒烟测试 | 手工/自动化 | webdriver | 针对每次build在CI执行地自动化冒烟测试,在shoulder check环节的冒烟测试,与Build Verification Testing类似,每次build都要通过的测试 |
Test | 功能测试 (系统测试) | 手工/自动化 | webdriver | 故事卡测试 - 探索式测试,故事卡测试 - 场景验收测试,自动化UI测试,自动化API测试,自动化测试在CI流水线执行,自动化测试也可以单独在CI执行 |
Test | 集成测试 | 自动化 | Rest assured,pact | 覆盖依赖服务的测试,可以使用mock |
Test | 性能测试 | 自动化 | locust,gatling | 压力测试,负载测试 |
Test | 兼容性测试 | 手工/自动化 | Browserstack | 确定产品支持的主流平台和浏览器 |
Test | 安全测试 | 自动化 | HP Fortify | 渗透测试 |
Test | 回归测试 | 手工/自动化 | 故事卡缺陷的回归测试,AC的回归测试,相关代码配置改动引起的回归测试,缺陷卡回归测试,上线前的回归测试 - Candidate testing, PVT | |
UAT | 用户验收测试 | 手工 | 每个故事卡QA测试结束后,需要客户进行在UAT环境进行测试。只有当UAT通过了,才表明这个故事卡done,QA需要在此环节和business进行协调 |
质量度量
-
缺陷统计度量
- 解决率
- 解决时间
- 分布
- 触发原因
- 严重性
- 优先级
- 数量变化趋势
-
覆盖率
- 需求覆盖率
- 故事卡AC覆盖率
- 代码覆盖率
- 函数覆盖数量
- 运行使用到的功能覆盖数量
- 条件覆盖数量
- path覆盖数量
- 自动化测试覆盖率
- 运行通过的测试比率
- 功能稳定程度
- 不同开发阶段的比率
- 运行通过的测试比率
-
兼容
- 支持哪些浏览器
- 移动端支持多分辨率机型
-
代码质量
- 静态代码扫描问题数
-
技术负载率
- 剩余技术负债点数
-
用户/客户反馈
- 线上问题反馈
- 满意度反馈
网友评论