10.2 软件测试和质量保证
10.2.1 软件质量
软件质量是软件产品的特性可以满足用户的功能、性能需求的能力。
软件产品质量模型对产品设计时需要考虑的地方进行了高度概括:
功能性:是指软件产品在指定条件下使用时,提供满足明确和隐含要求的功能的能力。
可靠性:是指在特定条件下使用时,软件产品维持规定的性能级别能力。第一层:设备最好不要出故障;第二层:设备出现故障了不要影响主要的功能和业务;第三层:如果影响了主要功能和业务,系统可以尽快定位并修复。
易用性:是指用户在指定条件下使用软件产品时,产品被用户理解、学习、使用和吸引用户的能力。简单10个字:易懂、易学、易用、漂亮、好看(用户体验好)。
效率:是指在规定条件下,相对于所有资源的数量,软件产品可提供适当的性能的能力。通常,效率就是我们常说的产品性能。
可维持性:是指产品可被修改的能力,这里的修改是指纠正、改进软件产品和软件产品对环境、功能规格变化的适应性。
可移植性:是指软件产品从一种环境迁移到另外一种环境的能力。这里的环境,可以理解为硬件、软件或组织等不同的环境(win7、win10,macOS。。。)。
10.2.2 质量保证和质量控制
质量保证和质量控制是一对容易混淆的概念。
质量保证(Quality Assurance)
质量保证是指确保产品符合预定质量要求而作出的所有有组织、有计划活动的总和。主要是事先的质量保证类活动,以预防为主,期望降低错误的发生几率。简单的理解就是确保做事的流程是正确的,审计过程的质量。
质量控制(Quality Control)
质量控制是指在生产产品过程中的各种取样,质量标准,检验,批准放行等程序方面内容。主要是事后的质量检验类活动为主,默认错误是允许的,期望发现并找出错误。简单的理解就是要把事情做好,检查产品的质量。
两者的工作关系:QC进行质量控制,QA是确保QC按照步骤执行。
对于软件项目来说,软件质量模型保证(SQA)就是以一套计划和方案,确保软件测试能够实现对于软件质量的促进,目标如下:
- 保证有计划的进行
- 保证遵循了步骤和需求
- 及时通知给对应人员
- 高管可以接触到项目内部
- 软件质量需要测试工作来保证
10.2.3 软件测试和软件质量
软件测试是软件质量保证的重要手段,是规约、设计和编码的最终检查。软件过程的优劣决定了软件质量的高低,好的过程是高效高质量的前提。人员和过程是决定软件质量的关键因素,高质量的人员和好的过程应该得到好的产品。
在基本的软件项目中,软件测试的目的是通过查找缺陷保证产品的质量,通过量化风险保证决策的质量,通过查找根本原因保证过程的质量。
测试的必要性
软件测试对于开发而言,是确保质量已知,而不是到最后提交给客户时才发现质量无法达标。
好的编码---好的测试---质量已知
好的编码---差的测试---质量未知
差的编码---好的测试---质量已知
差的编码---差的测试---质量未知
测试质量三角形
软件测试质量三角形是指软件测试投入的资源,时间和质量是一个平衡的三角形,如果有一个改变,必然会带动至少另一个发生改变,也就是至少有两者发生改变。这对于正确看待软件项目管理,合理控制软件质量很重要。