基于风险和质量的测试策略
1.为什么需要这种策略
首先因为人力成本,时间成本和设备成本,不可能做到100%的穷举测试.与其代码覆盖率90%但并没有测试到那关键的5%的问题,还不如代码覆盖率为70%并且能够把那个关键的5%的问题给覆盖到.所以我们需要基于风险的测试策略.
2.什么是产品风险
有一个合理的表达式是, 产品风险 = 失效概率 X 损失,然后可以使用使用一个表格来表示一下
失效概率为 HIGH | 失效概率为 MEDIUM | 失效概率为 LOW | |
---|---|---|---|
失效影响为 HIGH | H | M | M |
失效影响为 MEDIUM | M | M | L |
失效影响为 LOW | M | L | L |
3.风险分析过程
我们需要两个方面的人力,一方面是技术专家,另外一方面是技术代表(服务人员,市场人员,资深的测试人员)
对需求进行列举和细化,绘制成表格
然后技术人员依次对其进行评估打分,考虑的因素有人员经验,是否采用新技术,和平台或其他功能的交互性
然后技术代表进行评估打分,考虑的因素有,失效影响(一旦失效是否有安全隐患,造成的价值损失是多少),商业价值(是否为产品卖点),用户的使用频率(使用越多,被探测到的问题就越多)
然后相对应的,两项得分最高的,其实就是风险最高的,而相对应的两项都是得分低的,则表明风险低.
4.什么测试策略
测试策略即测试宽度和测试深度的组合.
5.什么是质量诉求
因为我们的特性是分成不同维度的,在基础设施行业,比如云计算,或者通信软件,他可以这么分类.即完全商用,部分商用,测试演示或者小范围使用.而对于不同的目标,使用者对质量诉求是不一样的,比如完全商用的,需要使用做功能测试,性能测试,可靠性测试,易用性测试等等,而小范围的演示的则只需要做简单的功能测试即可.
6.测试深度
对于不同风险或者不同质量诉求的模块,有着不同的测试深度诉求,以下是不同的测试深度
功能测试 => 覆盖到各个功能场景 |
---|
可靠性测试 =>异常值输入法,故障植入法,稳定测试法,压力测试法,恢复测试法 |
易用性测试 =>一致性测试,可用性测试 |
性能测试 => 基本性能测试,性能瓶颈测试,压力测试 |
可移植性测试 |
可维护性测试 => 日志测试,告警测试,资料测试,联机帮助测试 |
安全测试 |
7.如何基于风险和质量来确定测试深度
a.首先是根据产品评估模型来确定测试深度
确定测试深度
完全商用: 需要使用功能,可靠性,性能测试,易用性,安全测试等等方法来测试
部分商用: 需要使用功能测试和可靠性测试中的故障植入法和稳定性测试法
测试或者演示或者小范围试用: 只需要试用功能测试方法即可
b.然后考虑老功能来更新测试深度
分类 | 说明 | 测试策略 | 测试深度 |
---|---|---|---|
全新特性 | 全新开发的功能 | 全面测试 | 和步骤a说描述的移植 |
老特性变化 | 对外: UI变化,交互变化 对内: 功能的修改,性能提高 | 变更地方:全面测试 分析对老功能影响来做对应的回归测试和探索测试 | 和步骤a说描述的移植 |
老特性加强 | 对外:UI变化,交互变化 对内: 功能重构,中间层,底层发生变化,稳定性提升 | 分析对老功能影响来做对应的回归测试和探索测试 进行稳定性测试 | 功能测试+可靠性测试(故障植入和稳定性测试) |
老特性无变化 | 对内外无变化 | CICD,回归测试,探索式测试 |
当然在上面的基础上,还是要充分利用自动化测试来保障老功能.
c.然后考虑老功能来确定测试广度
测试广度,我们原则上是期望100%覆盖,但是对于历史上的一些质量较好的特性,则采取少测或者不测.对于一些完全商用特性,我们可以采用加强测试,比如加强对需求的review,加强对系统设计的review