外部质量
用户关心
- 正确性,最最基本的质量属性,对应功能需求,其他QA多对应非功能需求。
- 健壮性,在异常情况下正常运行的能力。
包含容错能力和恢复能力。恢复没有容错健壮。 - 可靠性,用平均无bug运行时间与平均bug修复时间衡量。
- 性能,不等于速度,指软件的时间-空间效率,用响应时间和并发用户数来衡量。
(P.S. 对应负载测试和压力测试,还录制过一个使用JMeter进行这两种测试的视频 JMeter入门 | load testing和stress testing示例) - 安全性,如果黑客黑一个系统的代价高于所得我们认为这个系统是安全的。
- 易用性,用户希望界面友好、方便易用、上手快。
- 兼容性,又称互操作性,指不同产品/新老产品交换信息的能力。
内部质量
开发人员关心,它们可以帮助开发人员实现外部质量。
- 易理解性,开发人员理解软件产品的难易程度。
- 可测试性,又称可验证性,指测试时查找bug的难易程度。
- 可维护性(狭义的),指更改软件的难易程度。
- 可扩展性,对于增量开发,不断迭代的软件尤为重要。
- 可移植性,不加修改或稍加修改就运行在不同软硬件环境(CPU、OS和编译器)的能力
- 可复用性,不解释,粒度从小到大:代码,数据结构,模块,子系统。
过程质量
衡量过程质量也会用到产品质量的一些词语。
目前软件过程改进最好的参考标准是CMM
即Capability Maturity Model for Software软件过程成熟度模型