3.MILY: 黑体">错误类型
各种不同的测试方法检测不同错误类型的能力也是不同的。错误的分类方法目前有许多种,前边已经给出了比较详细的分类方法,为分析方便,下列分类是其中的一种简单的分类方法。
(1)初始化错误:初始化代码中的错误;
(2)控制错误:控制转移的条件或转移地址错误;
(3)数据错误:包括程序中的常数、数据库中的数据错误等;
(4)计算错误:计算代码错误
(5)集成错误:各模块之间、软件与环境之间的错误
(6)容貌错误:人机界面、打印格式等错误。
4.测试充分度
测试充分度是反映了在给定的测试方法下软件被测试的程度。设M是给定的测试方法,在M下,软件S应被测试的元素的集合是T,而实际上被测试元素的集合为U,则U/T即是测试充分度。Frankl和Weiss发现,只有当测试的充分度接近100%时,才能使测试发现错误的能力得到发挥。如图1.11所示。
软件测试工具是提高软件测试效率的重要手段,是软件理论和技术发展的重要标志。也是软件测试技术从实验室走向产业的重要标志。软件测试工具是伴随软件测试技术的发展而发展的。目前,应用比较广泛的软件测试工具有下列几种类型:
(1)测试设计工具:测试设计工具有助于准备测试输入或测试数据。测试设计工具包括逻辑设计工具和物理设计工具。逻辑设计工具涉及到说明、接口或代码逻辑,有时也叫做测试用例生成器。物理设计工具操作已有的数据或产生测试数据。如可以随机从数据库中抽取记录的工具就是物理设计工具。从说明中获取测试数据的工具就是逻辑设计工具。
(2)测试管理工具:测试管理工具是指帮助完成测试计划,跟踪测试运行结果等的工具。这类工具还包括有助于需求、设计、编码测试及缺陷跟踪的工具。其代表工具有MI公司的Test Director, Rational公司的Test Manager, Compureware公司的TrackRecord等。
(3)静态分析工具:静态分析工具直接对代码进行分析,不需要运行代码,也不需要对代码编译链接,生成可执行文件。静态分析工具一般是对代码进行语法扫描,找出不符合编码规范的地方,根据某种质量模型评价代码的质量,生成系统的调用关系图等。静态分析工具的代表有Telelogic公司的Logiscope软件,PR公司的PRQA软件,Reasoning公司的Illuma软件。
(4)动态分析工具:动态分析工具与静态分析工具不同,动态测试工具的一般采用“插桩”的方式,向代码生成的可执行文件中插入一些监测代码,用来统计程序运行时的数据。其与静态分析工具最大的不同就是动态分析工具要求被测系统实际运行。其代表有Compuware公司的DevPartner软件、Rational公司的Purify系列产品。
(5)覆盖测试工具:覆盖工具评估通过一系列的测试,测试软件被测试执行的程度。覆盖工具大量的用于单元测试中。例如,对于安全性要求高或与安全有关的系统,则要求的覆盖程度也较高。覆盖工具还可以度量设计层次结构,如调用树结构的覆盖率。如Telelogic公司的TestChecker测试软件。
(6)负载和性能测试工具:性能测试工具检测每个事件所需要的时间。例如,性能测试工具可以测定典型或负载条件下的响应时间。负载测试可以产生系统流量。例如产生许多代表典型情况或最大情况下的事物。这种类型的测试工具用于容量和压力测试。专用于性能测试的工具有Radview公司的WebLoad、,icrosoft公司的WebStress,MI公司的LoadRunner等工具。
(7)GUI测试驱动和捕获/回放工具:这类测试工具可使测试自动执行,然后将测试输出结果与期望输出进行比较。此类测试工具可在任何层次中执行测试:单元测试、集成测试、系统测试或验收测试。捕获回放工具是目前使用的测试工具中最流行的一种。其代表有Rational公司的TeamTest、Robot,Compuware公司的QACenter,MI公司的WinRunner等。
(8)基于故障的测试工具:首先给出软件的故障模型,在此故障模型下,给出基于该故障模型的软件测试工具。这是目前一种有很好发展前景的软件测试工具。随着人们对软件故障认识的不断深入,软件的故障模型也会越来越完备,并更加符合实际。基于故障的软件测试工具有三个需要研究的问题:一是故障模型的准确程度,二是测试的准确程度,三是测试的自动化程度。目前比较典型的是Rational公司的C++测试产品C—Inspector。
1.12 软件测试技术的发展现状
软件测试技术是和程序联系在一起的,自从有了程序,也就有了软件测试。只不过是早期人们没有认识到这个问题罢了。
早在二十世纪五十年代,英国著名的计算机科学家图灵就曾给出了程序测试的原始定义:测试是正确性确认的实验方法的一种极端形式。但在这个时期,程序一般是比较简单的,控制类程序和计算类程序是主要的,程序的规模一般在几百~几千行源代码。程序设计者、编程人员和程序测试者一般都是一个人,测试者可以简单的根据程序的功能对程序进行测试,并简单的根据结果的正确性来决定程序是否有错误。由于程序规模小,一般程序的正确性也不存在大的什么问题。
五十年代以后,随着高级语言的诞生和广泛应用,软件的规模急剧增大,就计算机科学本身来说,操作系统软件、编译软件等一般都在数万行源代码,而且由于这种软件一般都是计算机系统运行的核心,其正确性和可靠性的要求都比较高,传统程序设计的思想和软件不可靠性的矛盾日趋突出。于七十年代诞生的软件工程技术是软件发展的里程碑,它在某种程度上缓解了这个矛盾,但没有从根本上解决问题。
七十年代中期以后,是软件测试技术发展的最活跃的时期。Brooks总结了开发IBM OS/360操作系统中的经验,在著名的《神秘的人—月》一书中阐明了软件测试在研制大系统中的重要意义。1975年,美
在软件测试理论迅速发展的同时,各种软件测试方法也应运而生。黄荣昌提出了程序插装测试技术;Howden在路径分析的基础上,提出了系统功能测试和代数测试的概念;Howden、Clarke和Darringer等人提出了符号测试方法,并建立了DISSET符号测试系统;Demillo提出了程序变异测试方法;Osterweil和Fosdick提出了数据流测试方法;White和Cohen提出了域测试方法;Richardson和Clarke提出了划分测试方法。总之,七十年代至八十年代,是软件测试技术迅速发展的时期,数十种软件测试方法被提出,软件测试技术已迅速发展成为一个独立的学科。
但总体来看,七十年代至八十年代,软件测试技术的研究主要是在理论上。实用的软件测试系统并不多见,少数的测试系统由于测试效率不高,也难以进入市场。
进入二十世纪九十年代,随着计算机技术的日趋普及,软件的应用范围逐步扩大,一些关系到国际民生的行业、关系到国家安全的重要部门已变得越来越依赖软件。软件的规模在大幅度的扩大,软件的复杂性在大幅度的提高,由于软件测试技术的发展远远落后于软件技术的发展,软件不可靠性的矛盾变得更加突出。因此,进入九十年代,软件的质量与可靠性已引起了政府和社会的广泛重视,各种实用的软件测试系统不断涌现,软件测试产品也逐步的进入市场,专门从事软件测试的公司也相继出现,这为保证软件的质量与可靠性奠定了重要基础。进入2000年以来,我国软件测试技术发展极为迅速,全国目前大约有100余家软件评测中心,软件测试的从业人员有数千人,2003年软件测试的产值达到了数亿人民币。
在软件测试技术的学术领域,1982年,在美国北卡罗来纳大学召开了首届软件测试的正式学术会议,之后,该学术会议每两年召开一次,此外,国际上还有软件可靠性会议,从会议的规模和论文的数量与质量上看,从事软件测试技术的人员在大幅度的增加。我国目前虽然没有专门的软件测试的学术组织,但目前在容错计算专业委员会的学术会议上、全国测试学术会议上都能受到大量的软件测试技术的学术论文。2004年8月,在青海省西宁市召开了全国首届软件测试技术研讨会,2007年,将在昆明召开第二届全国软件测试技术研讨会。
文章来源于领测软件测试网 https://www.ltesting.net/