您好,欢迎来到六九路网。
搜索
您的当前位置:首页浅谈软件测试方法

浅谈软件测试方法

来源:六九路网
2011年7月 湖北成人教育学院学报 Journal of HuBei Adult Education Instiutte Jul,2 0 1 1 Vo1.17 N O.4 第17卷第4期 浅谈软件测试方法 吴妮妮 ,商林2 (1.长江职业学院工学院,湖北武汉,430074;2.武汉交通职业学院,湖北武汉,430065) [摘要]从软件测试的技术与过程、持续的软件测试、软件测试的充分性准则等方面简要介绍软件测试的基本思想; 讨论软件测试中的若干问题,包括面向路径的测试数据自动生成、测试预言、期望结果的自动生成、回归测试等;并且探讨 软件测试的发展趋势等。 [关键词】软件测试;软件质量;软件的易测试性 [中图分类号】TP311.弱 [文献标识码]A [文章编号】1673---3878(2011)o4-_0145—o3 1.引言 项目中,尽管采用形式化方法描述和证明软件规约。并且 随着社会的不断进步和计算机科学技术的飞速发展, 采用程序正确性证明方法排除了软件开发前期的许多缺 计算机及软件在国民经济和社会生活等方面的应用越来 陷,单元测试仍然发现了整个软件开发过程15.75%的缺 越广泛和深入。作为计算机的灵魂,软件在其中起着举足 陷。 轻重的作用。软件的失效有可能造成巨大的经济损失,甚 随着人们对软件测试重要性的认识越来越深刻,软件 至危及人的生命安全。例如,l996年Ariane5运载火箭的 测试阶段在整个软件开发周期中所占的比重日益增大。 发射失败等都是由软件故障引起的 .2 J。 现在有些软件开发机构将研制力量的40%以上投入到软 软件开发的各个阶段都需要人的参与,然而在人的工 件测试之中;对于某些性命攸关的软件,其测试费用甚至 作和通信过程中出现错误是难免的,不可能完美无缺。与 高达所有其他软件工程阶段费用总和的3到5倍…。尽 此同时,随着计算机所控制的对象的复杂程度不断提高和 管人们在软件开发过程中也采用形式化方法描述和证明 软件功能的不断增强,软件的规模也在不断增大。例如, 软件规约 ,并采用程序正确性证明 鲥、模型检验 ’ 等方 Windows NT操作系统的代码大约有3200万行 】。这使 法保证软件质量,但是这些方法都存在一定的局限性 J, 得错误更是不可避免。人们在软件的设计阶段所犯的错 尚未达到广泛实用阶段。因此。程序代码最终体现了软件 误是导致软件失效的主要原因,软件复杂性是产生软件缺 的质量,无论是从软件开发还是软件测试自身的效益看, 陷的极其重要的根源 J。 软件测试在今后较长时间内仍将是保证软件质量的重要 软件测试是保证软件质量和可靠性的重要手段。目 手段。 前许多项目的软件工程实践以结构化分析和设计为核心, 2.软件测试的基本思想 在开发阶段的前期,包括需求分析和设计都是以技术评审 2.1软件测试的技术与过程 和工程管理作为质量保证的手段。而技术评审和工程管理 如图l所示,现有的软件测试技术通常分为静态测试 主观因素很大,很可能又引入新错误并扩展到后续开发阶 和动态测试。静态测试是不执行程序代码而寻找程序代 段[引。 码中可能存在的缺陷或评估程序代码的过程。静态测试 另一方面,软件测试确实能够发现软件中隐藏的许多 包括主要由人工进行的代码审查、代码走查、桌面检查以 缺陷。例如,在英国约克大学为英国海军开发的SHOLIS 及主要由软件工具自动进行的静态分析。如果广义地理 [收稿日期】2011一o3—30 [作者简介]昊妮妮,女,长江职业学院工学院讲师。研究方向:通信网络与通信原理。 ・145・ 解,静态测试还包括软件需求分析和设计阶段的技术评 下两种方式 0J。确认测试主要采用黑盒测试中的状态 审 引。 测试、事务流测试等测试技术L2J。 动态测试通过在抽样测试数据上运行程序来检验程 2.2持续的软件测试 序的动态行为和运行结果,以发现缺陷。动态测试包括生 软件测试是保障软件质量的重要手段,但它不是万能 成测试用例、运行程序和验证程序的运行结果等三部分核 的,不能取代其他软件质量保障手段。完整的软件质量保 心内容,以及文档编制、数据管理、操作规程及工具应用等 障活动应该贯穿整个软件生存周期,包括评审、检查、审 辅助性工作。动态测试最重要的问题是生成测试用例的 查、设计方法学和开发环境、文档编制、标准、规范、约定及 策略,它是动态测试有效、高效的关键。测试用例包括输 符号执行 度量、培训、管理等。软件质量需要综合运用包括软件测 入数据和期望结果,一般说到测试用例生成时,由于期望 程序插麓 试在内的诸多手段才能得到最有力的保障。 结果构造的困难性,都侧重或仅生成输入数据。并称之为 变异测试 数据灌灏试 完整的软件测试工作也应该贯穿整个软件生存周期, 测试数据,下面的讨论即按此约定。 等价类划分 它有两方面的含义:(1)软件开发不同阶段都有软件测试 软件测试技术 因苷∈图 工作;(2)软件测试工作的各个步骤分布在整个软件生存 判定袭 静卷测试技术 动态 试技术 周期中 J。 r——r——I_—T1 边值分析 代代桌静技 广———————+———— 玛码面杏-术 白盒测 程序与规约栩鲭愚盒测 正交实验设 表1描述了软件测试各阶段工作在软件生存周期中 试技术 台的测试技术 试技术 走榆分 状态溯试 的分布情况(表中从左往右各列存在时间由前往后的顺 蠢蠢查折审 控域 制测 序性)。按照软件测试流程,将软件测试工作划分为计划 流试 测 (指进行测试计划)、设计(指进行测试设计)和执行(含评 试 价,指执行测试并判别结果、评价测试效果和被测试软 r——]r—— ————r1 r—— __1 语 分 条爿件路仝 伞会用 旬 支 件定疆往定 引定疆 件)几个阶段。表1表明软件测试工作连续不断地在软件 爱 疆 覆 盏覆值 用值盖 盖盏 盏条 盏箍爱 l 开发过程中进行。这体现了软件测试的一个原则:尽早开 始软件测试工作,不断进行软件测试工作。 田I 软1簪测试技术的分类 囊I 较件 试晷骱l置工作的分布 按照生成测试数据所根据的信息来源,动态测试分为 求 悭 l 蝙 自l越 砖 捷 分昕 鞋iI 设-} 搿幽 ■ 试 翻 基于规约的测试(又称黑盒测试或功能测试)、基于程序 乘境糟试 I .¨ I 性 }  I拽¨I  fI I  I的测试(又称白盒测试或结构测试)以及程序与规约相结 册 l |j削 I ㈨ l 执 l  }l I 合的测试。基于规约的测试是指测试人员无须了解程序 l 试 j it-9J l ㈣ I l fr I l&il 的内部结构,直接根据程序输入和输出之间的关系或程序 的需求规约来确定测试数据,推断测试结果的正确性。基 2.3软件测试的充分性准则 于规约的测试包括:等价类划分、因果图、判定表、边值分 Gerhart于1975年在研究软件测试能否保证软件的 析、正交实验设计、状态测试、事务流测试等。基于程序的 正确性时提出软件测试充分性的概念。软件测试的充分 测试是指测试人员根据程序的内部结构特性和与程序路 性是根据被测软件在有限多个测试数据上的行为判断在 径相关的数据特性设计测试数据。它包括控制流测试和 所有测试数据上的行为的逻辑基础 。 数据流测试两类主要技术以及域测试、符号执行、程序插 测试充分性准则是判定测试数据集对于被测程序是 装和变异测试等其他技术。程序与规约相结合的测试则 否充分的准则。如果测试数据集不充分,就必须增加更多 综合考虑软件的规范和程序的内部结构来生成测试数 的测试数据,否则可以结束当前测试工作。在文献中,有 据[1,2,9,10】。 许多软件测试的充分性准则。以及对充分性准则的研 软件测试的过程分为单元测试、组装测试、确认测试、 究 。良好的软件测试充分性准则应该具有如下基本性 系统测试等几个阶段 _2,9 J。单元测试可以运用白盒测试 质:空集不充分性、有限性、单调性、非复合性、非分解性、 (控制流、数据流测试)、黑盒测试(等价类划分、因果图、 非外延性、一般多重修改性、复杂性、回报递减律。 边值分析)等多种测试技术。组装测试主要采用黑盒测 2O世纪80年代中期,提出了充分性准则满足的l1 试中的等价类划分、边值分析,白盒测试中的数据流测试, 条公理。目前,通常用测试覆盖准则度量测试充分性。到 域测试,调用对覆盖等测试技术。组装测试的策略是指进 目前为止,已经提出许多针对程序内部结构的测试覆盖准 行单元组装的方法和步骤。组装测试的策略有渐增式组 则,主要包括控制流测试覆盖准则和数据流测试覆盖准 装和非渐增式组装两类,而前者又分为自底向上和自顶向 则。控制流测试覆盖准则包括语句覆盖、分支覆盖、条件 ・146・ 覆盖、判定条件覆盖、路径覆盖等。数据流测试覆盖准则 包括定值覆盖、引用覆盖等准则。这些准则不仅可以定量 地规定软件测试需求,指导测试数据的选择,而且可以度 量测试数据集揭示软件特定特征的能力,对测试结果和软 件可靠性评估具有重要影响。 3.软件测试中的若干问题 3.1面向路径的测试数据自动生成 开销。 4.结束语 软件测试是一项费时、费力并且单调乏味的活动,测 试人员需要设计、执行、分析大量的测试用例。软件测试 的自动化将有效地减轻测试人员的劳动强度,提高测试的 效率和质量,从而节省软件开发的成本,提高软件的质量。 虽然软件测试在软件质量保证中正发挥着越来越重要的 软件测试在整个软件开发周期所占的比重很大。据 统计,在所有的软件测试的开销中,约4o%花费在设计测 试用例上,约50%花费在编写和编译测试脚本上,另外约 作用,但是,目前在有些单位或部门软件测试仍然没有得 到足够的重视,主要有两个原因。一个是企业的任务或市 场的压力大,为了利润就缩短软件测试的时间,其结果是 牺牲了软件产品的质量。另外一个是软件测试的实施效 果不很理想,表现为投入大,回报低。这主要是由于当前 软件测试的自动化程度偏低,现有的软件测试技术不能满 10%花费在测试脚本的执行和配置管理上。在软件测试 中,面向路径的测试数据生成问题(在本文中简称为Q问 题)描述为:给定一个程序P和P中一条路径W。设P的 输入空间为D,求x∈D,使得P以x为输入运行,所经过 的路径为w。软件的单元测试中控制流测试中诸如语句 足当前软件开发的要求。这就需要研究更加有效的软件 测试技术。并且加速把先进、有效的技术从实验室转化为 工业界实用的方法的进程。 覆盖、分支覆盖、条件覆盖、判定条件覆盖、路径覆盖等问 题和数据流测试中的全定值覆益、全引用覆盖等问 题 -1。。,以及组装测试中的调用对覆盖和数据流测试等问 参考文献: 题可以归结为Q问题。自动求解Q问题将有效地减轻测 试人员的劳动强度,提高测试的效率和质量,节省软件开 [1]齐治昌,谭庆平,宁洪.软件工程[M].北京:高等教育 出版社。2001. 发的成本。根据估算,对于一个典型的大型软件项目,若 能自动生成测试数据,则能节省整个软件开发费用的 4%,相当于数百万美元。 3.2测试预言、期望结果的自动生成 [2]周涛.航天型号软件测试[M].北京 宇航出版社, 199l9. [3]Weyuker E.J.Evaluation Techniques for Improving the Quality of Very I ̄rge Software Systems in a Cost— Effective Way.The Journal of Systems and Software, 1994.47:97—103. 测试预言是一种检验待测系统在特定执行下是否正 确运行的方法。期望结果用来确定测试用例执行的成功 与否,它是程序根据输入应该得到的输出 因此,期望结 果是一种比较理想的测试预言。自动生成期望结果不仅 [4]蔡开元.软件可靠性工程基础[M].北京:清华大学出 版社。1995. 能有效地减轻测试人员的负担,而且能为不问断的持续测 试提供有力的支持。但是现有的对自动生成期望结果的 研究工作很少。 3.3回归测试 [5]King S,Hammond J,Chapman R,et 1a.Is Proof More Cost—Effcteive Than Testing?IEEE Transactions on Sofwatre Engineerig,2000,n26(8):675 686. [6]陈火旺,罗朝晖,马庆鸣.程序设计方法学基础[M]. 长沙:湖南科学技术出版社,1987. 回归测试的目的是确认修改后的软件,以保证在以前 测试过的代码中没有引入新的缺陷。据统计。回归测试占 整个软件系统开销的1/3。已有的测试用例集是回归测 [7]Clarke E.M,Grumberg 0,Peld D.Modelo Checking. Cambridge,Massachusetts,London,Englnd:Tahe MIT Press,1999. 试的基础。回归测试还要根据需要设计新的测试用例。 针对已有的测试用例集,回归测试主要有选择性重测和全 部重测两种策略。为减少回归测试的开销,在保证回归测 [8]单锦辉.面向路径的测试数据自动生成方法研究[D]. 长沙:国防科学技术大学,2002. 试的质量的前提下,应尽量减少回归测试时需求运行的测 试用例数目。对于选择性重测的测试策略,在选择哪些测 试用例需要重新运行时要进行大量的分析,代价很大。如 [9]郑人杰.计算机软件测试技术[M].北京:清华大学出 版社。1992. [1O]朱鸿,金凌紫.软件质量保障与测试[M].北京:科学 出版社。1997. 果分析之后,结果发现所有或者几乎所有的测试用例都被 选中,那么就根本就没必要去进行分析,简单地重新运行 整个测试用例集同样有效甚至更有效,从而节省了分析的 ・(责任编辑:胡炼) 147・ 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 69lv.com 版权所有 湘ICP备2023021910号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务