互联网敏捷项目质量保障体系方案

本文是我在当前项目上设计的质量保障方案,在进行项目信息脱敏后,总结如下。


质量 = 正常工作的软件 + 满足项目干系人的需求


主动性质量管理 --> 预防 + 评审

流程

  1. 开发流程
    1.1 每一个环节明确的进入退出条件
    1.2 多轮质量反馈机制
    - 开发团队日常的反馈
    - 站会
    - IPM
    - 开卡&结卡
    - 客户/用户的反馈 + showcase
  2. 持续集成/持续部署流程
    2.1 加入代码扫描,自动化测试等
    2.2 失败处理
  3. 与上下游方的沟通联调流程

需求

  1. 需求分析和澄清
  2. 需求符合INVEST原则,无二义性和歧义性
  3. PO积极性,能够及时响应和回答
  4. AC的定义,完工的定义,测试结束的定义

开发实践

  1. Code Review 代码审查
  2. Peer Review (via PR) 同行评审
  3. TDD
  4. Pairing 结对编程

代码质量

  1. 静态测试

1.1 统一的编码规范:比如命名规则,注释,代码格式,函数复杂度等

  • 可以结合业界标准。比如Sun Code Convent和Google Style等
  • 使用工具扫描代码。比如JS的ESlint
  • 可以在IDE装相关插件,做到编码时检测

1.2 静态代码扫描

  • 集成到CI流水线中。SonarQube
  • IDE插件,做到编码时检测
  1. 动态测试

2.1 前端单元测试
2.2 后端单元测试

风险管理

  1. 可视化风险
  2. 及时暴露和管理风险

项目实践

  1. 定期Retro
  2. 知识管理
  3. API文档管理
  4. 新人培训
  5. 追求技术卓越
  6. 面对面沟通
  7. 集中办公

被动型质量管理 --> 测试 + 检验

质量属性

  1. 功能性
    • 完成度
    • 精准度
    • 互用性
    • 效率
    • 并发
  2. 性能
    • 资源利用率
    • 吞吐量
    • 持久力
  3. 安全
    • 认证
    • 授权
    • 隐私
  4. 兼容性
    • 应用兼容
    • OS兼容
    • 硬件兼容
    • 向后兼容
  5. 可用性
    • 易学性
    • 易操作性
    • 可达性
  6. 可靠性
    • 稳定性
    • 健壮性
    • 可恢复性
    • 错误处理
    • 数据完整性
  7. 可维护性
    • 可扩展性
    • 修复
    • 构建
  8. 可移植性
    • 重用
  9. 可安装性
    • 配置
    • 升级卸载

测试活动

质量属性 测试类型
功能性 功能测试、集成测试、探索式测试、用户验收测试、流测试、回归测试
性能 压力测试、负载测试
安全 渗透测试、威胁建模
兼容性 兼容性测试
可用性 用户测试、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覆盖数量
    • 自动化测试覆盖率
      • 运行通过的测试比率
        • 功能稳定程度
      • 不同开发阶段的比率
  • 兼容
    • 支持哪些浏览器
    • 移动端支持多分辨率机型
  • 代码质量
    • 静态代码扫描问题数
  • 技术负载率
    • 剩余技术负债点数
  • 用户/客户反馈
    • 线上问题反馈
    • 满意度反馈

你可能感兴趣的:(互联网敏捷项目质量保障体系方案)