质量保障体系的搭建,并非测试人员一方的责任,需要产品、研发、项目经理、运维工程师一起参与来搭建这个体系。
需求阶段主要确保「产品经理」输出的原始需求能被项目经理、研发人员、测试人员所认可。
评审要点:
- 正确性:
- 是否清晰准确的陈述了要开发的功能
- 完整性:
- 正常场景、异常场景是否均有考虑到
- UI、交互设计是否完整
- 流程类需求是否有清晰的流程图
- 是否存在隐藏的需求
- 合理性:
- 是否与现有功能冲突,存在冲突时是否有兼容方案
- 用户体验是否合理
- 可行性:
- 需求中的功能是否具有可操作性,能否通过现有技术实现
- 可测试性:
- 是否每项需求均有验证的标准及方法,可通过设计测试用例或者其他验证方法来进行测试
- 可交付性:
- 评估是否能在规定时间内进行交付
- 交付成本是否过高,例如部署、迁移
- 无二义性:
- 需求是否存在模糊描述,例如:同已有逻辑
- 分配优先级:
- 是否对所有需求都进行了优先级分配;若所有需求都一样重要,那么在项目管理过程中便无法灵活管控资源及进度
评审人员:
项目经理、产品经理、测试负责人、研发负责人
1、统一的需求文档模板、交互设计规范说明、UI设计规范说明
2、评审必须登记评审记录和会议纪要。记录包括时间、评审项目、评审内容、参与人员、主持产品经理(项目负责)、内容纪要、记录人
3、产品需求评审通过,即锁定需求内容。如无十分必要不能随意变更
4、需求变更需走变更流程,并征得研发、测试、项目经理一致认可
研发方案设计
研发的技术方案里至少需要包含:
研发设计评审
评审要点:
- 正确性
- 技术设计是否可以满足业务需求中的全部功能要求?
- 对异常场景考虑是否充分?
- 可测性
- 是否可测?
- 预期结果是否稳定?
- 非功能性
- 是否考虑了安全性、性能、稳定性、扩展性、可靠性等非功能质量属性?
- 兼容性
- 对不同形态和版本的终端是否兼容?
- 对上下游的服务和数据是否兼容
- 部署方案
- 部署逻辑是否合理?
- 是否需要对数据结构、缓存、各类配置进行操作?
评审人员:
项目经理、研发工程师、测试工程师、产品经理
【参与人员】开发
○ 【用例占比】所有核心主链路用例(P0、P1)用例;
○ 【通过标准】完成冒烟用例的验证,测试会验证开发同学的冒烟结果,通过后,需求进入提测阶段,否则打回重新冒烟
测试阶段主要是通过测试策略、测试用例以及一系列的测试手段等确保版本质量。
测试计划制定:
由测试负责人根据需求、研发设计方案、交付时间、资源情况评估,制定测试计划,确保版本可如期交付。
测试计划核心要素:
测试范围:新功能、旧功能,分别需要覆盖哪些
测试时间:什么时间测试开始,什么时间结束
测试策略:需要安排几轮测试?每一轮的测试重点有哪些?需要运用哪些测试方法(性能、安全、稳定性测试等)、测试工具?
测试环境:在什么环境测?环境配置要求如何?
测试资源:需要哪些人力资源投入,资源如何安排
风险控制:识别的风险有哪些?对应的解决方案?
测试计划制定规范:后续补充文档
测试计划评审:
评审要点:
- 测试环境:测试环境要求是否清晰,是否可提供
- 测试范围:
- 是否覆盖了业务和技术需求?对于已有功能是否安排了必要的回归?
- 是否存在测试过度?
- 测试优先级:对待测模块是否进行了优先级分配
- 测试策略:
- 安排的测试轮次是否合理?是否包含包含基础的冒烟、验收等测试
- 风险控制:项目风险是哪些?(资源、技术)是否有对应的解决方案?
参与人员:项目经理、产品经理、研发负责人、测试工程师
测试用例设计
可参考文章:测试用例规范
测试用例评审
评审的时间不宜过早或过晚,一般提测前2天左右完成;单次评审时间不宜超过1个小时。
评审要点:
- 测试范围:测试用例是否覆盖了业务和技术需求?对于已有功能是否进行了必要的回归?
- 异常情况:用例是否考虑了非常规操作或其他异常情况?
- 易读性:测试用例是否包含前置条件、操作步骤、期望结果等必要信息?
- 非功能性设计:针对非功能性的需求和技术设计,测试用例是否设计充分?
通过标准:
确定用例覆盖所有设计的功能点,且明确每个用例的验证点
评审人员:
产品经理、研发工程师、测试工程师
制定测试准入标准,若满足标准则进入SIT测试阶段,若不满足则进行整改,直至满足后方可进入下一阶段。
测试准入条件:
根据测试计划、测试策略要求,对待测系统服务进行功能测试、性能测试、安全测试等。测试执行过程中核心保障测试进度管理、缺陷管理。
缺陷管理
缺陷标准规范,参考:
BUG描述规范
BUG处理流程规范
进度管理
整体测试进度
、活跃BUG统计
、关键问题
、主要风险
等测试报告规范后续补充
测试准出条件:
交付阶段主要确保产品发布后,能完整、稳定在客户线上环境运行。
如发布流程复杂,不可控因素较多,可视情况组织发布预演练。即在指定环境模拟一遍正式发布的流程。方案上基本同正式发布一致,区别仅在于操作的环境。
演练过程需记录每个流程的耗时及问题点,演练结束后组织复盘,并针对问题点进行流程的调整优化。
上线方案主要明确发布流程的每一个步骤、预计执行时间、负责人及问题解决预案,确保版本能正常部署到生产环境。
发布前
发布中
发布后
风险及解决方案
开发部分
主要负责确保服务部署的正确性。checklist内容至少需包含如下:
测试部分
主要负责验证线上环境核心功能流程可正常运行。
功能checklist
checklist设计完后需组织产品经理、研发经理、项目经理进行评审。
checklist的设计部分需遵循:
全链路压测
核心验证系统稳定性。需提前确认压测场景、压测时长,并组织评审通过
版本发布上线后,还需要确保能够实时监控,及时发现异常并告警,在规定时间内进行定位解决,保障生产稳定性。
明确监控方法、监控指标、告警机制。
具体后续补充
故障处理流程规范,后续补充
明确各种“类生产环境”的作用及差异点,保障环境稳定可用;常见环境划分包括:
基于以上环境,将各种测试技术和自动化技术集成起来,使代码提交后能 自动构建、部署、测试,生成工具链。
1、测试左移:
2、测试策略:
旨在减少不必要的测试,尽早暴露重点问题并推进解决。有效的测试策略,能最大限度提升测试效率。
常见测试策略制定:
- 冒烟测试:只验证核心功能链路,不需要细测,暴露出影响流程的BUG;冒烟测试的用例通常选择BVT用例执行
- 第一轮:新功能全面细测,旧功能只测试BVT+高等级用例,尽可能挖掘所有能发现的BUG
- 第二轮——第x轮:验证上一轮BUG,并根据上一轮测试情况,调整本轮测试策略
- 回归测试:验证全部BUG,所有功能进行BVT+高等级用例测试,保障核心功能流程
以上仅供参考,实际需根据项目具体情况进行调整
3、自动化测试:
自动化测试效益分析:
ROI = 自动化提升的效率/自动化产生的成本 = (手工用例执行的时间 - 自动化用例执行时间)* 自动化用例的有效执行次数 / 自动化用例编写和维护的总成本
4、专项解决痛点:
1、测试模型
基于深入了解行业产品特性,产出测试模型,包括但不限于: 业务流程、业务特性树、业务场景等。测试模型构建的合理性和完整性是后续质量保障的基础
2、测试规范
遵循制定好的规范,减少过程无效沟通及返工。包括但不限于:用例编写规范、测试过程规范、BUG编写规范、BUG处理规范、压测规范等
3、测试技术
接口测试
接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等
为什么要进行接口测试
1.越底层发现bug,它的修复成本是越低的。
2.前端随便变,接口测好了,后端不用变,前后端是两拨人开发的。
3.检查系统的安全性、稳定性,前端传参不可信。
4.如今的系统复杂度不断上升,传统的测试方法成本急剧增加且测试效率大幅下降,接口测试可以提供这种情况下的解决方案。
5. 接口测试相对容易实现自动化持续集成,且相对UI自动化也比较稳定,可以减少人工回归测试人力成本与时间,缩短测试周期,支持后端快速发版需求。接口持续集成是为什么能低成本高收益的根源。
6. 现在很多系统前后端架构是分离的,从安全层面来说做接口测试很有必要。
接口测试工具:Postman、Jmeter、Apipost
安全测试
渗透测试,以成功入侵系统,证明系统存在安全问题为出发点,以攻击者的角度来看待 和思考问题
安全测试工具:Burp Suite 、AppScan、Nmap、kail Linux等
性能测试
性能测试是通过增加用户请求访问量来测试软件或应用程序的稳定性及响应时间。
目的是验证软件系统是否能够达到需求提出的性能指标,同时发现软件系统中存在的性能瓶颈。
性能测试工具:LoadRunner、Jmeter等
全链路压测
微服务架构下,单服务接口性能测试很难模拟出接近生产环境的场景和数据规模,单接口压测通过并不能代表整个系统链路的性能。尤其是QPS 比较高的场景,如果不进行全链路压测,只要链路中一个环节挂掉,就会引起整个链路的崩溃。
全链路压测是基于实际的生产业务场景和系统环境,模拟海量的用户请求和数据,对整个业务链路进行各种场景的测试验证,持续发现并进行瓶颈调优,保障系统稳定性。
全链路压测的目标
- 实现生产环境的压测服务,模拟真实的生产峰值场景,以发现真实的线上瓶颈并实现监控分析
- 实现精准的容量规划,确保线上系统的正常运行
- 实现压测流量和生产流量的隔离,避免对生产流量产生影响
其他专项测试
同样在微服务背景下,很多企业项目开始进行容器化部署。为应对Kubernetes+Docker+微服务部署模式的特性,提高测试质量,在测试技术上也衍生出各种专项测试技术,例如:
1、系统容灾测试:
通过模拟断电、断网、服务崩溃等异常情况,验证系统的健康状态监视和异常情况下的功能切换、系统恢复能力
2、pod弹性扩缩容测试:
通过模拟用户请求,增大/降低系统服务负载,验证服务是否能在负载大的时候,自动进行扩容,确保所有请求能正常响应,当负载小的时候自动进行缩容,以避免资源浪费。弹性扩缩容的测试验证除了关注功能本身外,还需要关注扩容、缩容的速度;缩容策略,例如当有请求还在被指定缩容的pod上时,如何能确保不影响用户正常使用
3、服务负载均衡测试:
单台服务的负载是有限的,当负载较大时,就需要有多台相同的服务器,此时为避免流量全部打到同一台服务上导致负载过大而异常,就需要有负载均衡策略调配,控制流量的走向。而测试则通过工具模拟请求,验证负载均衡策略是否合理,是否能正常生效
…等等
通过制定标准组织过程资产沉淀模板和节奏,保障过程资产有效沉淀,可以复用。
组织过程资产包括:
1、空间目录
例如下图,实际可根据内部情况调整
2、流程规范
包括但不限于测试流程定义、测试计划模板、测试用例模板、报告模板、缺陷规范、发布规范等
3、测试方法沉淀
各类测试方法、测试技术沉淀(接口测试、自动化测试、性能测试、安全测试、专项测试等)
4、固资管理
例如:测试环境信息、测试设备信息维护
5、业务知识库
6、培训材料
内部分享课程材料
“你如果无法度量它,就无法管理它”
过程质量:
交付质量:
想把质量做好,流程和方法是"术"的层面,文化是“道”的层面。文化是组织成员表现出来的共同的信念、价值观、态度、制度和行为模式。
在大多数质量保障体系推行过程中更多关注的是可见的质量标准、要求、操作程序等,换句话说,也就是被要求应该如何做,而不是主动、自发的质量意识和行为。
质量文化的建设应该自上而下,由高层主导构建文化,并推行以获得质量认知统一,让所有人参与到持续改进中,辅以一系列奖惩制度。