测试工程师必备基础知识:软件质量模型概述

简介: 测试工程师必备基础知识:软件质量模型概述

软件质量模型


简介


软件测试的目的就是为了“验证产品质量是否满足用户的需求”。但是搞清楚,用户的需求并不是一件容易的事,因此在软件测试行业发展的漫长历史中,需要一种方式能够积累广大测试工程师的经验。这里的经验就是如何验证用户的需求。这也促使软件质量模型的诞生。软件质量模型是一个衡量软件整体质量效果的度量标准,反映软件满足明确或隐含需要能力的特性总和。如果你的测试活动脱离了软件质量模型,那么很有可能会有一些很重要的内容被忽略。软件质量模型发展到现在也经历了很多演进,但是每一种演进都是是为了交付好系统而发展的。



质量模型的分类



质量模型分为基于经验的模型和机遇构建的模型两大分类,基于经验的模型(Experience-based models),主要是依据质量工作人员的一些实践经验的总结,使用典型的质量因素构建一个多层的质量模型,基于经验的模型主要包含了层次模型、关系模型。基于构建的模型(Construction-base models)是通过提供一些方法从而构建一个质量模型,这其中重点在于质量属性之间关系的构建以及对质量属性进行分析,在构建模型中典型的就是Dromey质量模型。


当前被质量工程领域大部分专家所认可的就是基于经验的质量层次模型了,质量层次模型从 McCall 模型、Boehm 模型,最后发展到了ISO系列模型,充分说明了层次模型和质量特性的合理性。但是这也并不是否定了基于经验的关系模型、基于构建的质量模型就是不对的,每一个质量模型都有其在质量管理方面的优越性的。


基于经验的质量模型

软件质量层次模型的产生要追溯到1977年。Jim A.McCall 试图通过一系列的软件质量属性指标来弥补开发人员与最终用户之间的沟壑,最终提出了McCall模型,也被称为GE模型(General Electrics Model)。McCall质量模型是一个三层模型,自顶向下分别是质量因素、质量准则和质量度量。但是我们都知道,一个软件系统的质量因素除去其自身的软件相关属性之外还有硬件的一些属性的支持,所有软件的质量准则和质量度量都是在硬件属性之上展现的,没有硬件资源,软件系统就没有了运行的土壤,因此Barry W.Boehm在1978年提出了Boehm模型,通过一系列的属性的指标来量化软件质量,Boehm模型类似McCall质量模型,采用了层级的质量模型结构,包含了高层属性、中层属性和原始属性。**Boehm模型在某种程度上可以看你做McCall的下一代质量模型。**


但是,就算软件质量层次模型从McCall模型发展到了Beohm模型,却还是没有讲最原始的质量属性和一些质量要素区分清楚,这两类约束混杂在质量准则、质量度量上,因此ISO/IEC 9126质量模型综合了Boehm模型和McCal模型的优越性和问题,站在用户、开发者、管理者的角度,从外部质量、内部质量、使用中质量三个方面完成了质量模型的建设,从外部和内部对质量进行度量。这也是第一次彻底从将质量层次模型讲分清楚。ISO/IEC 9126质量模型包含了6个质量特性和27个质量子特性,特性和子特性一一映射,不存在交叉问题,但是还不完善,因此发展到后来的GB/T 25010全套的质量模型,包含了系统质量、使用质量等。


软件质量关系模型,重点是反映了质量属性之间的关系,通过描述质量属性之间的正面、反面或者中立的关系,来阐述软件质量。Perry模型就是一个典型的关系模型,它使用一张二位的表格来阐述各个质量属性以及它们之间的关系。可想而知,对于软件质量属性想要通过一个二位表格描述清楚其实还是有其局限性的。比如质量属性之间的动态可变的相互制约关系或者两个以上的质量属性之间的制约关系,这些在Perry模型也不能很好地表达。


基于构建的质量模型


基于构建的质量模型中最为典型的就是Dromey提出的一种质量模型,也称为Dromey模型。这种模型是由三个主要的元素组成,包含了质量属性、组件以及组建特性,通过提供建立模型的方法来构建质量模型。构建该种质量模型包括以下五个步骤:

  • (1)确定产品的一系列高级质量属性;
  • (2)确定产品组件; 
  • (3)对每个组件的最重要的、切实的、质量相关的属性 进行确认和分类; 
  • (4)为连接产品属性和质量属性提供系列的规则; 
  • (5)对模型进行评价,指出它的弱点,进行重定义或者废弃重新建模型。


人们可以通过由以上五个步骤组成的过程来针对具体软件产品的质量模型进行初始化和重定义。并且,针对软件的需求定义、设计和实现这些软件开发中关键的产品论证了该方法的应用


总结


以上的各种软件质量模型各有各的优越性,也有各式各样的缺陷:

  • 基于经验的层次模型由一些质量因素、质量准则和质量度量等组成,这也导致了只能表达质量属性之间的正面的关系,但是对于一些反面的、更复杂的关系却没有能力表达出来
  • 基于经验的关系模型能够表达质量属性之间关系,这些关系有可能覆盖正面、反面、中立的关系,但对于一些更为复杂的关系则同样无法表达。
  • 基于构建的质量模型认识到了软件质量模型需要通过质量相关属性和软件产品组件构建,但是应该Dromey模型却仅仅构建了一个统一的质量模型,应用领域的特殊性、软件设计和实现的特殊性依然没有被考虑进来,最终致命的问题是这种方法只能应用于软件开发完成之后。



目录
相关文章
|
3天前
|
jenkins 测试技术 持续交付
软件测试中的自动化与持续集成:提升效率与质量的关键
在快节奏的软件开发环境中,自动化测试和持续集成已经成为不可或缺的部分。本文将探讨自动化测试和持续集成的重要性,以及它们如何协同工作以提高软件开发的效率和质量。通过分析自动化测试的策略、工具选择以及持续集成的实践,我们将揭示这些技术如何帮助开发团队快速响应变化,减少错误,并加速产品上市时间。
|
8天前
|
测试技术 开发者 Python
自动化测试之美:从零构建你的软件质量防线
【10月更文挑战第34天】在数字化时代的浪潮中,软件成为我们生活和工作不可或缺的一部分。然而,随着软件复杂性的增加,如何保证其质量和稳定性成为开发者面临的一大挑战。自动化测试,作为现代软件开发过程中的关键实践,不仅提高了测试效率,还确保了软件产品的质量。本文将深入浅出地介绍自动化测试的概念、重要性以及实施步骤,带领读者从零基础开始,一步步构建起属于自己的软件质量防线。通过具体实例,我们将探索如何有效地设计和执行自动化测试脚本,最终实现软件开发流程的优化和产品质量的提升。无论你是软件开发新手,还是希望提高项目质量的资深开发者,这篇文章都将为你提供宝贵的指导和启示。
|
1月前
|
机器学习/深度学习 人工智能 监控
提升软件质量的关键路径:高效测试策略与实践在软件开发的宇宙中,每一行代码都如同星辰般璀璨,而将这些星辰编织成星系的过程,则依赖于严谨而高效的测试策略。本文将引领读者探索软件测试的奥秘,揭示如何通过精心设计的测试方案,不仅提升软件的性能与稳定性,还能加速产品上市的步伐,最终实现质量与效率的双重飞跃。
在软件工程的浩瀚星海中,测试不仅是发现缺陷的放大镜,更是保障软件质量的坚固防线。本文旨在探讨一种高效且创新的软件测试策略框架,它融合了传统方法的精髓与现代技术的突破,旨在为软件开发团队提供一套系统化、可执行性强的测试指引。我们将从测试规划的起点出发,沿着测试设计、执行、反馈再到持续优化的轨迹,逐步展开论述。每一步都强调实用性与前瞻性相结合,确保测试活动能够紧跟软件开发的步伐,及时适应变化,有效应对各种挑战。
|
7天前
|
机器学习/深度学习 人工智能 自然语言处理
自动化测试的新篇章:利用AI提升软件质量
【10月更文挑战第35天】在软件开发的海洋中,自动化测试犹如一艘救生艇,它帮助团队确保产品质量,同时减少人为错误。本文将探索如何通过集成人工智能(AI)技术,使自动化测试更加智能化,从而提升软件测试的效率和准确性。我们将从AI在测试用例生成、测试执行和结果分析中的应用出发,深入讨论AI如何重塑软件测试领域,并配以实际代码示例来说明这些概念。
34 3
|
18天前
|
编解码 人工智能 自然语言处理
迈向多语言医疗大模型:大规模预训练语料、开源模型与全面基准测试
【10月更文挑战第23天】Oryx 是一种新型多模态架构,能够灵活处理各种分辨率的图像和视频数据,无需标准化。其核心创新包括任意分辨率编码和动态压缩器模块,适用于从微小图标到长时间视频的多种应用场景。Oryx 在长上下文检索和空间感知数据方面表现出色,并且已开源,为多模态研究提供了强大工具。然而,选择合适的分辨率和压缩率仍需谨慎,以平衡处理效率和识别精度。论文地址:https://www.nature.com/articles/s41467-024-52417-z
40 2
|
21天前
|
敏捷开发 监控 jenkins
自动化测试之美:打造高效的软件质量保障体系
【10月更文挑战第20天】在软件开发的海洋中,自动化测试如同一艘精准的导航船,引领项目避开错误的礁石,驶向质量的彼岸。本文将扬帆起航,探索如何构建和实施一个高效的自动化测试体系,确保软件产品的稳定性和可靠性。我们将从测试策略的制定、工具的选择、脚本的编写,到持续集成的实施,一步步描绘出自动化测试的蓝图,让读者能够掌握这一技术的关键要素,并在自己的项目中加以应用。
28 5
|
21天前
|
Java 测试技术 持续交付
探索自动化测试的奥秘:提升软件质量的关键
【10月更文挑战第20天】 在当今快速发展的软件行业中,自动化测试已成为确保产品质量和加速开发周期的重要工具。本文将深入探讨自动化测试的核心概念、实施策略及其对软件开发生命周期的影响,旨在为读者提供一种全面理解自动化测试的视角,并展示如何有效地将其应用于实际项目中以提高软件质量和效率。
18 2
|
1月前
|
Java 测试技术 程序员
「测试线排查的一些经验-上篇」&& 后端工程师
「测试线排查的一些经验-上篇」&& 后端工程师
16 1
|
6天前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
34 3
|
1月前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
57 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)