软件测试与软件质量关系的概述Word下载.docx
《软件测试与软件质量关系的概述Word下载.docx》由会员分享,可在线阅读,更多相关《软件测试与软件质量关系的概述Word下载.docx(11页珍藏版)》请在冰豆网上搜索。
Blackboxtesting
第一章引言
在当今这个信息科技飞速发展的社会中,计算机已经完全渗透到人们的学习生活中。
而计算机软件是是计算机应用的核心,是使用者利用和掌控计算机的有力武器,因此软件质量也成为人们关注的焦点。
人们对于软件质量的要求越来越高,实现软件质量保证已成为软件工程领域一项重要任务。
软件质量是软件的生命,它直接影响软件的使用和维护。
因此软件质量问题一直是软件工程的核心问题。
若是许多软件的开发和生产仍处于“自设计”、“自编码”、“自检测”状态的话,软件质量就会低下,必然风险大、难保障。
例如:
某产品测出的故障800个,其中:
软件故障600个,占75%之多;
硬件故障127个,占16%;
其他故障73,占9%。
可见软件质量的严重性,因此必须加强软件开发和生产的管理,建立和完善软件测试的手段和方法,严格按照软件工程化管理的要求进行软件开发和管理,提高软件产品的质量。
近些年来,在软件测试和方法的研究上测试过程和测试用例方面也备受人们的关注。
测试过程决定测试工作的成败,而测试用例的质量决定了软件缺陷的发现率,且设计测试用例占50%的测试成本。
可见软件测试在保证软件质量中的地位。
实践证明,软件测试需要消耗大量的资源,并且测试所需的工作量,通常高达软件开发周期总工作量的30%—40%。
如果让测试偶然进行,既浪费时间也浪费不必要的工作量,甚至更糟的是错误仍在。
因此,必须科学的制定测试策略,合理安排软件测试工作,才能有效提高测试效率,有效控制资源消耗。
从而保证软件质量。
这也正从侧面说明了软件测试对于保证软件质量的重要性。
软件的设计技术,软件测试等是提高软件质量的有效方法。
就提高软件产品质量的可实施性、投资回报率等方面考虑,保证软件质量的最显著的方法是实施有效的软件测试,提高软件测试的效率。
目前,软件质量、软件测试和配置管理都逐渐被各软件公司重视起来,但是软件测试的方法、技术和标准都还在探索阶段。
软件测试不是保证软件质量的安全网,但软件测试毕竟是保证软件测试的有效手段,所以我们可以通过提高软件测试来保证软件质量。
本文就软件测试与软件质量之间的关系进行阐述。
把软件测试各个环明节和方法与软件质量进行结合明确软件测试和软件质量之间的关系从而通过软件测试环节来提高软件的质量。
第二章软件质量
软件质量就是软件对于用户的明确和隐含需求相一致的程度。
具体地说,软件质量是软件符合明确叙述的功能和性能需求、文档中明确描述的开发标准、以及所有专业开发的软件都应具有的隐含特征的程度。
2.1软件质量的定义
目前,在软件定义方面有很多定义。
最主要的有以下几种。
国际标准化组织ISO在质量特性国际标准ISO/IEC9162中将软件质量定义为反应软件产品满足规定需求和潜在需求能力的特征和特性的总和。
MJ.Fisher将软件质量定义为:
所有描述计算机优秀程度的特性组合。
TomMcCabe则认为软件质量是较高的用户满意程度以及较低的缺陷等级,这常常同较低的软件复杂程度有关。
SEI的WattsHumphrey倾向于将软件质量定义为具有很高的可实用性,同需求很好吻合,并具有高的可靠性和可维护性。
按照ANSI/IEEEstd1061-1992中的标准,软件质量定义为:
与软件产品满足需求所规定的和隐含的能力有关的特征或特性的总体。
2.2软件质量度量模型
软件质量度量管理模型(SQM:
SoftwareQualityManagement)也可称为软件质量评价模型,就是说从整体上来评价软件的质量,以便在软件开发过程中对软件质量进行控制,并对最终产品进行评价和验收模型。
用软件度量学的方法来科学的评估软件质量,可以更有力地对软件开发过程进行管理,从而合理地组织和分配资源,制定切实可靠的软件开发计划已获得高质量的软件。
下面就常见的Boehm模型、McCall模型、ISO/IEC9126模型这三种质量度量模型进行介绍。
2.2.1Boehm质量模型
Boehm模型是1976年B.W.Boemh等人提出的软件质量度量模型。
他们认为软件的质量可从三个方面考虑:
软件的可使用性、软件的可维护性和软件的可移植性。
可使用性分为可靠性、效率和人工工程三个方面,反应用户的满意程度;
可维护性从可测试性、可理解性、可修改性三个侧面进行度量,反映公司本身的满意程度;
可移植性被单独划分为一个属性。
如图2-1所示。
图2-1Boehn模型
该模型更好的为测试提供条件,测试可以从该模型的最小属性开始进行,各个击破来提高软件的质量。
2.2.2McCall质量模型
在Boehm之后,McCall等人在1978年提出来软件要素(factor)到准则(criteria)再到度量(metric)的三层次软件质量度量模型,定义了11个软件质量要素,分别是:
正确性(correctness)、可靠性(reliability)、效率(maintainability)、完整性(integrity)、可使用性(usability)、可维护性(maintainability)、可测试性(testability)、灵活性(flexibility)、可移植性(portability)重复使用性(reusability)、连接性(interoperability)。
该模型的基本思想是把软件的质量的因素分成三组,每组反映软件产品质量的一个重要方面,成为质量要素,这项要素一般需要量化。
每个要素又由一些准则组成,这些准则要比要素更易于理解和测量,因此真正的测量是针对准则来提出的。
我们可以通过对准则的实现对因素测量。
即软件测试也应该是渗透到组成软件质量的每个小要素里面去的。
这样的测试才能做到从根源提高软件质量。
2.2.3ISO/IEC9126质量模型
ISO/IEC9126质量模型包括六个质量特性结合21个质量特性。
六个质量特性:
功能性、可靠性、易使用性、效率、可维护性、可移植性【1】。
二十一个质量子特性:
功能性:
适合性、准确性、互操作性、依从性、安全性;
可靠性:
成熟性、容错性、易恢复性;
易使用性:
易理解性、易学性、易操作性;
效率:
时间特性、资源特性;
可维护性:
易分析性、易更改性、稳定性、易测试性;
可移植性:
适应性、易安装性、一致性、易替换性。
2.2.4三种模型的比较
三种模型的相同点是,它们都是类似于二层次的模型,质量要素、衡量标准基本相同,建立了软件质量要素和软禁啊度量之间的关系。
但它们的共同缺陷是质量要素和衡量标准之间的关系是通过非形式的讨论来建立的,有的度量不是客观指标只是主观判断,另外没有从软件生存周期不同阶段的生存形态来考虑,而仅仅考虑成品形态,不利于软件产品早起缺陷发现和维护成本的降低。
三种产品的不同点是,McCall模型的意义在于建立了软件质量度量项之间的关系;
Boehm模型里包括了McCall模型里没有的硬件领域的质量要素;
ISO/IEC9126模型的贡献在于将软件质量特征分为外部特征和内部特征。
总体来说,这些质量模型的原理都是一样的。
软件质量特征被定义为:
功能性、可靠性、可维护性、应用性、效率和可移植性、就是将软件质量的概念按照从上到下分为若干层次,有利于对软件质量认识的逐步深入。
【2】没有一种标准可以用于所有的概念。
在实际应用中,应该更具不同的需求对不同的质量特性和其子特性有所侧重,同时要考虑到由于因素之间存在逆相关,在实际开发过程中,应该根据不同需求做出不同的选择来进行测试,从而提高软件的质量。
由此可以看出软件测试与软件质量相互联系,软件测试从软件质量的本质出发,根据其最小属性的特点进行测试来达到提高软件质量的目的。
2.3软件质量管理标准
2.3.1ISO9000系列国际标准
目前,国际公认的并被世界各国和地区广泛采用的软件质量管理和质量保证标准是国际标准化组织ISO(全称为IntermationalOriganizationforStandardization)制定的ISO9000系列标准,该系列标准主要包括:
ISO84025《质量术语》ISO9000《质量管理和质量保证标准一选择和使用指南》,ISO9001《质量体系一设计开发、生产、安装和服务的质量保证模式》,ISO9002《质量体系一生产和安装的质量保证模式》,ISO9003《质量体系一最终检验和试验的质量保证模式》,ISO9004《质量管理和质量体系要素一指南》。
上述六项质量标准从1987年发布1987版,后经过修订成1994版,到现在己经发展到最新的2000版。
1994年修订后发布的ISO9000系列国际标准从1987年仅有的六项发展到十六项。
其中包括ISO9001-3;
1991“质量管理和质量保证标准一第三部分:
ISO9001在软件开发、供应和维护中的使用指南。
”这个指南是专门针对软件的质量管理和质量保证而制定的,对软件企业和软件产品的质量管理和质量保证具有重要的意义。
2000版ISO9001标准在1994版的基础上作了很大改变:
1994版ISO9001标准的结构是由二十个独立的质量要素组成,而2000版则引入了全面质量管理的概念,把这二十个要素分别归类于管理职责、资源管理、产品实现及测量、分析和改进四大类,构成一种过程方法模式的结构,符合PDCA(即计划(plan)、实施(Do)、检查(Check)、处理(Action))循环规则。
并且通过持续改进的环节使质量管理体系的水平不断上升,该方法逻辑清晰、结构严谨、更加容易理解和方便操作ISO9000系列标准是从整体上评价软件质量,以便在软件开发过程中对质量进行控制,并对最终软件产品进行评价和验收。
2.3.2GB/T16260软件工程-产品质量标准
在国内,通过引入国际标准,也制定了一些相应的标准,典型的GB/TI62605《软件工程一产品质量标准》该标准等同采用ISO/IEC9126:
2001【3】,总共包括质量模型、外部度量、内部度量和使用质量的度量四个部分。
第一部分是质量模型,定义了软件质量特性,及这些特性又如何分解成各个子特性的相关术语;
第2部分定义了外部度量,用来测量包括软件在内的基于计算机系统的行为;
第3部分定义了内部度量,用来测量软件本身;
第四部分定义了使用质量的度量,用来测量软件在某个特定使用环境中的使用效果。
GB/T16260的主要目的是使软件的需方、供方(开发者)和用户能够认识到软件质量在项目论证时或在签订合同时,就能提出一些质量要求,并且尽量做到合理。
作为供方(开发者)在项目论证或需求分析时,既要分析质量要求的合理性,又要分析如何满足需方或用户的质量要求,同时要考虑满足需方或用户潜在的隐含的质量要求。
一旦质量需求确定后,就应对这些质量需求分析配置:
即明确哪些过程、哪些活动、哪些阶段要控制、把握哪些质量需求。
特别是要关注过程本身的质量。
适时开展内部度量或外部度量。
以使软件产品最终满足用户或需方的质量要求。
作为用户或需方既要关注使用质量,也要关注外部质量及内部质量。
因为这些质量要求既有连带关系,又有制约关系。
针对一个软件产品或软件项目,不可能所有的质量特性要求都提得很高。
在我国,软件的需方、供方、开发者和最终用户,为了一个共同的目标,就是提高我国现代化水平,要互相理解、互相沟通,及时反馈相关信息,不断完善和提高软件的质量,提高我国软件工程化水平。
第三章软件测试
软件测试是使用人工操作或者软件自动运行的方式来检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别的过程。
3.1软件测试的定义
软件的生命周期一般包括:
项目规划、需求定义和需求分析、软件设计、程序编码、软件测试、运行维护。
软件测试是在规定条件下对程序进行操作,以发现错误,对软件质量进行评估。
软件是由文档、数据以及程序组成的,软件测试就是对软件形成过程的文档、数据以及程序进行的测试,而不仅仅是对程序进行的测试。
软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例,并利用这些测试用例运行软件,以发现软件错误的过程。
3.2软件测试的目的
软件测试的目的和意义在于发现程序中的错误,有效定义和实现软件成分由低到高的组装过程,验证软件是否满足任务书和系统定义文档所规定的技术要求,为软件质量模型的建立提供依据软件测试是对软件质量的度量与评估,以验证软件的质量满足用户需求的程度,为用户选择与接受软件提供有力的依据。
统计表明,在典型的软件开发项目中,软件测试工作量往往占软件开发总工作量的40%左右。
而在软件开发的总成本中,用在测试上的开销要占30%-50%。
如果把维护阶段也考虑在内,讨论整个软件生存周期时,测试的成本比例也许会有所降低,但实际上维护工作相当于二次开发,乃至多次开发,其中必定还包含有更多的测试工作。
这些测试在保证软件质量时比功能测试更为重要。
由此可见软软件测试在保证软件质量中占据重要的地位,在传统的瀑布模布模型中,软件测试仅处于运行维护阶段之前,是软件产品交付用户使用之前保证软件质量的重要手段。
近年来,软件工程界趋向于一种新的观点,即认为软件生命周期每一阶段中都应包含测试,从而检验本阶段的成果是否接近预期的目标,尽可能早的发现错误并加以修正。
通过测试来保证每一个小阶段的质量,最终达到提高整体质量的目的。
3.3软件测试的常见方法
正确性是软件的最低需求了,也是测试的最本质的目的。
正确性测试需要一些圣贤,告诉哪些行为是正确的。
测试者本人可能或不能知道被测软件内部的详细情况,如控制流和数据流。
所以,白盒观点和黑正确性是软件的最低需求了,也是测试的最本质的目的。
所以,白盒观点和黑盒观点都可以用来测试软件。
我们必须注意到,白盒和黑盒的点子不仅仅局限在正确性测试上。
观点都可以用来测试软件。
下面主要介绍一下白盒测试和黑盒测试.
3.3.1白盒测试
白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。
“白盒”法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。
“白盒”法是穷举路径测试。
在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。
白盒测试就是检查代码,分析静态结构,逻辑覆盖,测试软件的基本路径,测试符号、域来保证软件的质量。
白盒测试保证一个模块中的所有独立路径至少被执行一次,对所有的逻辑值均需要测试真、假两个分支,并且要检查内部数据结构以确保其有效性。
3.3.2黑盒测试
黑盒测试也称为功能测试、行为测试或数据驱动测试,在测试时,把程序看作一个不能打开的黑盒,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。
“黑盒”表示看不见盒子里头的东西,意味着黑盒测试不关心软件内部设计和程序实现,只关心外部表现,即只通过控制输入和输出的结果来保证软件,任何人都可以依据软件需求来执行黑盒测试。
黑盒测试注重于测试软件的功能性需求,着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试,多应用于测试过程的后期。
3.4白盒测试和黑盒测试比较
软件测试是软件开发中的重中之重,没有一点可以马虎的,在项目管理过程,强调的是每个过程的每一个环节都要进行测试,保证系统在每个阶段可以控制。
因为软件测试中考虑的问题基本上是项目管理中考虑的问题。
白盒测试的优点是,迫使测试人员去仔细思考软件的实现、可以检测代码中的每条分支和路径、揭示隐藏在代码中的错误、对代码的测试比较彻底。
但是白盒测试无法检测代码中遗漏的路径和数据敏感性错误也不会严重规格的正确性。
代码是软件产品中的重要组成部分,代码的质量反映软件的质量,白盒测试与黑盒测试不同之处之一就在于白盒测试需要源代码,即白盒测试可以通过保证源代码的质量来保证软件的质量。
黑盒测试相比于白盒测试的话基本上不用人管着,而且黑盒很可能发现白盒测试不易发现的其他类型错误,但黑盒测试的主要缺陷是难于衡量系统的完整性,而白盒测试正好可以弥补这个缺陷。
例如现在有一个计算器程序需要测试,如果输入3.1415926并按sqrt键,就会得到结果1.772453102341。
使用黑盒测试方法时,并不关心软件算圆周率的算术平方根要经历多少复杂的运算,只关心它的运算结果。
软件测试员可以通过其他“经过认证合格”的来检验结果,判定计算机程序是否运算正确;
白盒测试中软件测试员可以访问软件的代码并通过检查代码的线索来协助测试。
测试员根据代码检查结果判断或多或少可能出错的数目,并据此定制测试。
黑盒测试是与白盒测试互补的测试方法,在测试过程中交替使用这两种测试方法才能达到提高软件质量的目的。
第四章软件测试是提高软件质量的必要条件
软件质量是软件产品的灵魂。
软件设计技术,软件测试等都是提高软件质量的有效方法。
从提高软件产品质量的可实施性、投资回报率等方面考虑,保证软件质量的最显著的方法是实施有效的软件测试,提高软件测试的效率。
本章结合软件测试和软件质量特性介绍软件测试与软件质量之间的关系。
4.1软件测试与质量保证的联系与区别
软件测试和质量保证都贯穿整个软件开发生命周期的流程,好的测试可以有效地提高软件质量但是软件质量保证和软件测试是软件质量工程的两个不同层面的工作。
4.1.1软件测试与质量保证的联系
软件生命周期每一阶段中都应包含测试,从静态测试到动态测试,要求检验每一个阶段的成果是否符合质量要求和达到定义的目标,尽可能早的发现错误并加以修正。
如果不在早期阶段进行测试,错误的不断扩散、积累常常会导致最后成品测试的巨大困难、开发周期的延长、开发成本的剧增等等。
软件测试与软件质量的相同点在于二者都是贯穿整个软件开发生命周期的流程。
软件质量保证的职能是向管理层提供正确的可视化的信息,从而促进与协助流程改进。
软件质量保证还充当测试工作的指导者和监督者,帮助软件测试建立质量标准、测试过程评审方法和测试流程,同时通过跟踪、审计和评审,及时发现软件测试过程中的问题,从而帮助改进测试或整个开发的流程等,因此有了软件测试,测试工作就可以被客观的检查与评价,同时也可以协助测试流程的改进。
而软件测试为提供数据和依据,帮助软件测试更好地了解质量计划的执行情况、过程质量、产品质量和过程改进进展,从而使软件测试更好地做好下一步工作。
4.1.2软件测试与质量保证的区别
软件测试人员的一项重要任务是提高软件质量,但不等于说软件测试人员就是软件质量保证人员,因为测试只是质量保证工作中的一个环节。
软件质量保证和软件测试是软件质量工程的两个不同层面的工作。
质量保证:
质量保证的重要工作是通过预防、检查与改进来保证软件质量。
虽然在质量保证的活动中也有一些测试活动,但所关注的是软件质量的检查与测量。
质量保证的工作是软件生命周期的管理以及验证软件是否满足规定的质量和用户的需求,因此主要着眼于软件开发活动中的过程、步骤和产物,而不是对软件进行剖析找出问题或评估。
软件测试:
测试虽然也与开发过程紧密相关,但关心的不是过程的活动,而是对过程的产物以及开发出的软件进行剖析。
测试人员要“执行”软件,对过程中的产物-开发文档和源代码进行走查,运行软件,以找出问题,报告质量。
对测试中发现的问题的分析、追踪与回归测试也是软件测试中的重要工作,因此软件测试是保证软件质量的一个重要环节。
4.2软件质量特性中的测试
不同的测试可以同时测试多个质量特性,每个质量也可以单独进行测试。
前面2.2.3节已经介绍了软件质量的六个特性这里不在赘述。
本节重点将就功能性、可靠性、易使用性三个特性来讲述测试与质量的关系。
4.2.1功能测试
在功能测试的时候,要确保集成后的各个新模块小会出现错误,即原来每个模块功能不会因为集成而消失。
在软件集成的功能测试时,多采用黑盒测试方法,所以黑盒测试也常被称为功能测试,虽然这不是一种准确的说法。
功能测试比较容易理解,主要是根据产品规格说明书,来检验被测试的系统是否满足各方面功能的使用要求。
4.2.2可靠性测试
软件可靠性测试在有使用代表性的环境中,为进行软件可靠性估计对该软件进行的功能测试。
需要说明的是,“使用代表性”指的是在统计意义下该环境能反映出软件的使用环境特性。
其目的是通过在有使用代表性的环境中执行软件,以证实软件需求是否正确实现。
4.2.3易用性测试
易用性测试包括针对应用程序的测试,同时还包括对用户手册系统文档的测试。
通常采用质量外部模型来评价易用性。
包括如下方面的测试:
易理解性测试;
易学性测试;
易操作性测试;
吸引性测试;
易用的依从性测试。
易用性测试方法有:
静态测试;
动态测试;
动态和静态结合测试。
4.2.4测试和质量是包含交叉的
综合前文软件质量特性的测试可以看出软件测试是贯穿在软件开发过程中的。
软件测试可以进行到软件质量的小分