软件质量模型:衡量(测试)软件质量的维度
目前业界主流的质量模型是 ISO/IEC 25010,它将软件质量划分为 8 大特性:功能、性能、兼容、易用、安全、可靠性、移植性、维护性。
特性一:功能性 (Functional Suitability):软件是否具备某方面的能力
问题: 软件的功能做对了没有?
- 功能完整性: 该有的功能都有吗?
- 功能正确性: 功能运行的结果对吗?(比如 1+1 算出来是不是等于2)
- 功能适合性: 功能是不是解决了用户的实际问题?
特性二:可靠性 (Reliability):长时间运行稳定,不出现异常
问题: 软件在恶劣环境下能撑住吗?会动不动就崩溃吗?
- 成熟度: 正常情况下容错能力如何?Bug多不多?
- 可用性: 系统能正常服务的时间占比是多少?(比如 7x24 小时运行不宕机)
- 容错性: 遇到异常(如断网、断电)时,软件能应对吗?能保护数据不丢失吗?
- 易恢复性: 故障发生后,重启和恢复需要多久?
特性三:性能效率 (Performance Efficiency):多用户同时使用能否满足要求(时间、资源)
问题: 软件快不快?耗不耗电?占不占内存?
- 时间特性: 响应速度(点击按钮多久有反应)、吞吐量(一秒能处理多少请求)。
- 资源利用率: 运行时占多少CPU、内存、耗电量(对手机APP尤其重要)。
- 容量: 系统最多能支持多少用户同时在线?能存多少数据?
特性四:易用性 (Usability):易学易用、用户粘性好
问题: 用户觉得好用吗?需要看说明书才能上手吗?
- 可辨识性: 用户一眼能不能看懂这是干嘛的?
- 易学性: 新手学起来快不快?
- 易操作性: 操作步骤是不是足够简单?
- 用户错误保护: 误操作时,软件有没有提示和挽回的余地?(比如误删邮件,有没有回收站)
特性五:安全性 (Security):敏感数据存储/传输安全
问题: 软件安全吗?数据会被盗吗?
- 机密性: 数据只有授权的人能看吗?
- 完整性: 数据能被随意篡改吗?
- 抗抵赖性: 做过的事情能留下痕迹无法抵赖吗?(比如交易记录)
- 可追溯性: 谁在什么时候做了什么,有日志记录吗?
特性六:兼容性 (Compatibility):在不同的设备/平台上能否正常使用
问题: 软件能和别的"小伙伴"一起好好玩吗?
- 共存性: 和其他软件同时运行会冲突吗?
- 互操作性: 能和其他系统交换数据吗?(比如微信能分享到淘宝吗?早期这个就不太兼容)
特性七:可维护性 (Maintainability):运行过程出现问题维护操作是否方便
问题: 对于开发人员来说,修这个软件容易吗?
- 模块化: 代码是不是一块一块很清晰?
- 可重用性: 这段代码以后能用在别的地方吗?
- 可测试性: 好不好写自动化测试去验证它?
特性八:可移植性 (Portability):应用系统升级/数据迁移方便
问题: 软件能搬家吗?
- 适应性: 从电脑搬到手机,或者从安卓14换到安卓15,还能适应吗?
- 易安装性: 安装卸载过程顺利吗?
- 可替换性: 能用这个软件替换掉旧的同类软件吗?