本文首发于公众号「软件测试艺术」,回复“软件测试教程”获取:麦子学院、黑马、小强软件测试全套学习教程!
当我们买西瓜时,可以立即评估它的质量:大小、形状和成熟度,没有明显的破损。但是只有你在吃第一口时,才能知道西瓜是否真的甜,即使非常好看的西瓜也许一点都不甜。
这就类似于日常开发的任意产品或软件,看起来设计非常完美,但是当用户在真实环境中使用的时候出现许多设计缺陷和明显的错误,让人难以忍受。
人为犯错无法完全杜绝和避免,但是必须要想办法减小错误的代价。软件质量在开发最终用户产品的各个领域都非常重要,因此需要在产品开发过程中引入质量管理活动,主要包括:质量保证、质量控制和测试。
质量控制、质量保证和测试看起来非常类似,有时这三个术语通常可互换使用,他们共同的目标是向终端用户提供最佳质量的产品。它们有着共同的特点,但也有一些区别,为了避免混淆这些概念和减少误解,下面我们就来说说这3个术语的含义。
质量保证(Quality Assurance)是确定产品开发达到质量要求实施的流程、方法和标准,通过持续改进和维护流程,使质量控制工作成为可能。质量保证专注于改进开发产品的流程和方法,预防之前的错误再次发生,如公司或部门制定和推广的流程标准、流程文档和项目内审流程。
质量控制(Quality Control)是验证开发的产品符合质量目标开展的一系列活动,提供产品质量的最终反馈。质量控制专注于识别缺陷和问题来改进产品,如软件测试流程。
测试(Testing) 的目的是发现产品中的存在的潜在缺陷,是软件产品必经的基本过程,主要评估产品的整体可用性、性能、安全性和兼容性。它的关注点非常窄,由测试工程师在开发过程中或专用测试阶段(取决于软件开发周期的方法)并行执行。
质量保证和质量控制的最终输出是提供高质量的产品。主要区别是质量保证活动是在软件开发期间进行的,在开发软件后执行的是质量控制活动,而测试是质量控制活动中的一个环节而已。
也许上面说了这么多,还是对质量保证和质量控制的具体含义和很模糊。其实,映射到日常的项目开发工作中,质量保证就是按照既定流程来保障产品质量,控制开发工作而不是解决具体存在的Bug,趋向于“开发过程管理,确保项目以一套成熟高效的做事方法开展和实施”;质量控制检查开发人员开发的产品是否满足预期的质量要求,并给出改进建议,趋向于“需求确认,产品测试”;而测试是质量控制的最后一道关卡。
简单来说质量保证是针对项目实施过程的管理手段,质量控制是针对项目产品的技术手段。