4.3.1 理解测试类型
我们前面提到的测试视角其实就是测试类型。我们总结了产品、质量属性和测试类型的关系,如图4-14所示。
图4-14 产品、质量属性和测试类型的关系
事实上,测试者对测试类型并不陌生,很多人常常还能“如数家珍”,如功能性测试、性能测试、压力测试、兼容性测试、易用性测试、可靠性测试等。但大家对这些测试类型的含义又常有自己的理解,例如我就经常听到同事争论该如何划分压力测试、性能测试、稳定性测试和可靠性测试——其实解决这个问题最简单、有效的方式就是使用质量属性来定义测试类型,即回归到测试类型的本质。
我们就对压力测试、性能测试、稳定性测试这几个概念进行对比分析。
·如果测试负载在系统允许的负载范围内,那测试的是系统的功能,此时的测试属于功能性测试;若在此基础上再加大测试时间,那就是稳定性测试了,此时关注的是系统的成熟性。
·如果测试负载正好和系统允许的负载一致,那测试的就是系统的性能,此时的测试属于性能测试。
·如果测试负载超过系统允许的负载范围,这时对系统来说属于一种“异常”情况,那测试的就是系统容错性了,此时的测试属于可靠性测试中的压力测试。
图4-15所示为对上述情形进行的总结。
图4-15 压力测试、性能测试、稳定性测试对比
我们也可以利用质量属性来定义测试类型,最直接的方式就是把质量属性中的“某某性”,换成“某某性测试”。例如易用性包含可辨识性、易学性、易操作性、用户差错防御性、用户界面舒适性和易访问性,对应的测试类型就是可辨识性测试、易学性测试、易操作性测试、用户差错防御性测试、用户界面舒适性测试和易访问性测试。
由于质量属性是标准性的,所以这种方法使得测试类型也具有了标准性,不容易出现歧义。但很多时候测试团队已经有一些大家都使用习惯的测试类型,不一定能和质量属性对应上。我们建议大家借助质量属性,把正在使用的测试类型梳理一遍,以帮助团队更好地理解这些测试类型的目标,并达成一致。表4-11梳理了一些常见的测试类型和质量属性的关系。
表4-11 常见测试类型和质量属性的对应关系