网络管理测试技术
刘璇
12级计算机科学与技术
摘要:网络管理系统是大型复杂的系统软件工程。为了确保研制的网络管理系统的可靠性和正确性,在网络管理系统的研制过程中,必须分阶段测试。包括对网络管理系统的每个模块进行测试,网络管理系统的子功能进行测试,最后对整体进行测试。论文介绍了软件测试的基本理论和技术,讨论了网络管理系统软件的特点和功能,分析了网络管理系统测试的方法和具体的关键技术,提出网络管理系统的具体测试方法,其中包括单元测试和系统测试。 关键字:网络管理 软件系统测试 测试方法 静态分析 功能测试
1绪论
随着软件系统的广泛应用,网络管理系统应用到人们的日常生活和工作等多个方面。网络管理的规模越来越复杂,网络管理向分级分布式方向发展。但是由于软件故障、软件缺陷导致软件运行中不可预知的错误,导致软件性能及稳定性下降,从而影响网管软件系统的使 用。软件测试是发现软件问题,提高软件质量的重要手段。
1.1研究背景
随着通信与计算机技术的持续高速发展,通信网络规模不断扩大,网络复杂性日益提高;同时,随着社会经济的发展,人们通信需求的不断增长,各种电信新技术、新业务被先后引 入通信网络。
在工程化的网络管理技术与标准的指导下,网管系统的建设得以迅速有效地开展。为了保证网管系统的质量,网管系统的测试时必不可少的重要手段。随着网络技术的不断发展,网络管理系统自身也日益复杂,对大型、复杂的网络管理软件的测试研究已经成为当前网络 管理领域和软件工程领域面临的难题。
1.2研究目的
本文的目的主要是针对网络系统测试,试图从一般软件系统测试和网管系统测试的共性和个性的比较出发,给出网管系统应用软件测试的特点和方法,对其测试的方法与技术进行 研究。
2软件测试
2.1软件测试基本理论
2.1.1软件测试的定义
1983年,电气与电子工程师协会(InstitudeofEleetronies EngineerS,工EEE)对软件测试的定义如下:使用人工或自动的手段来运行或测量软件系统的过程,目的是检验软件系统是否满足规定的要求,并找出与预期结果之间的差异;软件测试是一门需要经过设计!开发和维护等完整阶段的软件工程"因此,从这个阶段开始,软件测试进入一个全新的时期,软件测试成为一个专门的学科,从而形成了测试的理论!方法和各种测试技术,并开始运用某些测试工 具。
Gleford J.Myers在《TheArtofsoftwareTesting》1中是这样定义的:
(l)软件测试是为了发现错误而执行的过程;
(2)测试是为了证明程序有错,而不是证明程序无错误;
(3)一个好的测试用例在于它能够发现至今未发现的错误;
(4)一个成功的测试用例是发现了至今未发现的错误的测试。
这个定义强调了软件测试不是为了证明软件功能的正确,而更应该强调是以发现错误为 目的。
2.1.2软件测试过程模型
与软件开发的模型相对应,在软件测试的实践活动中,也形成了几类主要的测试模型。 其中以V模型、W模型、H模型等最为著名,下面分别进行比较其优缺点。
(1) V模型:V模型是为改进软件开发的效率和效果,由PaulRook提出的。V模型示 意图如图2-1:
图2-1 V模型示意图
由图2-1中可知V模型中对软件整个生命周期中的测试活动进行了分级,并与开发过程中的各阶段相对应。V模型的缺陷类似于瀑布开发模型的特点,就是必须严格按照软件的开发步骤进行测试,而实际的开发过程很可能不具备这样的开发条件。所以V模型的主要 缺陷在于不能尽早地不断地进行测试。
(2) W模型:相对于V模型,为克服V模型的缺陷,演化为W模型,W模型是基于“尽早地不断进行测试”的原则进行的,在软件开发阶段的测试活动尊循IEEE Std 1012—1998 《软件验证和确认》的原则,W模型示意图如图2-2: 1 Glenford J.Myers著.软件测试的艺术 电子工业出版.2006.26
图2-2 W模型示意图
W模型要求在软件开发的各个阶段,根据各阶段设计文档通过评审后,确定测试条件,以编写测试用例。"W模型和V模型的共同特点之一是把软件开发过程视为需求、设计、编码等一系列的串行活动。软件开发和测试都是一种线性的前后关系,都需要有严格的文档及相应评审通过后才能进入下一阶段,不能支持迭代及变更调整。W模型的优势在于设计软件产品的过程必须与软件的可靠性设计和测试同时进行,能够尽早地不断地进行测试。
(3) H模型:为了进一步完善V模型和W模型,更好地表示测试流程的完整性,产生 了H模型。H模型示意图如图2-3:
图2-3 H模型示意图
从H模型的示意图可以看出,测试流程分为测试准备和测试执行,测试准备活动包括测试需求分析、测试计划、测试设计、测试编码和测试验证,测试执行包括测试运行、测试总结、测试报告。相比于V模型和W模型,H模型的特点如下:软件测试不仅仅包含测试的执行,还应该包括设计等其他活动;软件测试是贯穿软件产品的生命周期,是一个独立的流程,但可以与其他流程并发进行;软件测试活动应该尽早地不断地进行测试;软件测试根据软件开发的各个阶段进行不同层次的测试,但是在实际测试过程中,测试活动可能会出现迭代和反复;H模型中把测试准备和测试执行进行分离,测试准备和测试执行需要按照不同的 工作要求来进行,有利于开发人员和测试人员独立工作,从而降低成本,提高效率。
2.2软件测试技术研究
2.2.1软件测试方式
软件测试按照测试方式分为静态测试、动态测试。
静态测试:其特点是不执行代码,而对需求规格说明、软件概要设计、软件详细设计等文档进行审查,对源代码根据设计文档进行结构检查、流程图分析、符号执行等找出软件代码的问题。
动态测试:通过运行程序对软件进行测试叫动态测试。动态测试按照测试技术分为白盒 测试、黑盒测试。
2.2.2白盒测试用例技术研究
白盒测试是一种结构测试,利用程序结构的实现细节等知识,进行测试用例的设计。进行白盒设计需要事先对软件的内部结构及流程比较熟悉,根据软件的详细设计说明进行追
踪,根据程序的接口及内部流程设计测试用例集,检验程序的实现是否满足设计文档的要求。 白盒测试用例最常用的技术是代码覆盖率分析,主要包括逻辑覆盖和路径覆盖两部分。
2.2.3黑盒测试用例技术研究
黑盒测试是根据规格说明规定的内容来设计测试用例,关注程序外部结构,重点针对软件功能进行测试。因此黑盒方法主要是穷举输入的测试方法,只有把所有可能的输入都作为测试用例进行测试,才能进行全部测试。一般常用的测试用例设计方法有等价类划分、边界 值分析、错误猜测、因果图法、判定表驱动法、正交试验法、功能图法、场景法等。 3网络管理系统的测试方法研究
3.1 网络系统的测试流程
在任何测试活动开始之前,首先需要解决的就是整个测试流程的设计,它可以指导整个测试过程。下面首先分析传统软件测试模型的优缺点,然后结合电信网管系统测试的需要, 提出其网管系统的测试模型:
传统测试模型的V模型的价值在于它明确地标明了测试过程中的不同级别,并且清楚地描述了这些测试级别和开发过程各个阶段的对应关系。但V模型存在许多不足之处,其 中对于电信网管系统的测试而言,它的不足之处主要如下:
(1)按照V模型,测试在编码实现之后才进行,容易导致需求阶段隐藏的错误一直到最后 验收测试时才被发现,发现和解决这些错误的代价较大。
(2)V模型把系统开发和测试过程划分为具有固定边界的不同阶段,使得很难跨过这些边 界来采集测试所需要的信息。
通过分析上一章介绍的W模型和H模型,在此提出电信网管系统的测试流程应采用这两者的结合。宏观上采用W模型,测试伴随着整个开发周期,从而有利于尽早的发现问题。而且测试的对象不仅仅是程序,需求、功能和设计同样要测试。即先对需求、功能和设计进行测试,再对电信网管系统的程序进行测试。其中,用单元测试验证模块的正确性,然后集成测试验证各模块之间藕合的正确性和健壮性,最后系统测试验证电信网管系统的系统特性,确定是否满足了用户的需求。而在某个测试层次上的一次测试“微循环”,要结合h模 型,只要测试准备活动完成,测试执行活动就可以进行了。
3.2网管系统的单元测试方法研究
在整个测试活动中,单元测试与编码的关系最为紧密,通常在编写出一个模块之后就对它作必要的单元测试,所以单元测试是集成测试和系统测试的基础。单元测试的目的是要验证模块的功能是正确的,且执行路径与设计者的设计意图是相符的"因此,单元测试通常是 白盒测试,测试工作主要分为两个步骤:人工静态检查和动态执行跟踪。
3.2.1人工静态检查
人工静态检查是单元测试的第一步,这个阶段工作主要是保证代码算法的逻辑正确性、清晰性、规范性、一致性和算法高效性。这种对程序的静态分析方法主要包括代码检查、静 态结构分析和代码质量度量等。
3.2.2动态执行跟踪
动态执行跟踪是通过设计测试用例,执行待测程序来跟踪比较实际结果与预期结果来发现错误。一般软件的动态执行跟踪通常分为功能测试与结构测试,可分别基于黑盒测试、盒
白盒测试方法来设计测试用例。
电信网管系统由于考虑到功能的实现与电信设备系统的交互性,以及在MBI规范下可能的多实现流程,对管理功能的实现方法及部分实现流程进行了一致性规定,故在实际测试中 我们采用灰盒测试取代纯粹的黑盒测试和白盒测试。
下面分别介绍动态执行跟踪的功能测试与结构测试在电信网管系统测试中应该是如何 进行的。
功能测试
功能测试是基于产品的外部功能来规划测试,检查程序各个实现的功能是否符合功能设计规格和要求,并检查其中的逻辑错误。
电信网管系统是一个分布式系统,系统中的各个模块不是独立的,而是与其它模块或外界环境有接口联系。有时候模块的输出是正确的,但其内部的处理其实已经错误了,这种情况用黑盒测试是无法发现的,由于在电信网管系统中协同工作的模块众多,数据不一致的可能性就很大。而电信网管系统的管理动作一般都是建立在这些数据之上的,数据的不一致会给电信网管系统带来的很大的隐患。电信网管系统模块的单元测试除了要保证模块的输出是正确的,还要保证模块的数据一致性。这有时就需要其它模块在功能上加以配合才能完成。 结构测试
一般来说,结构测试主要包括内存分析、覆盖率分析、性能分析等。
内存分析可用来发现程序中的内存错误。常见的内存错误主要包括:内存泄漏、内存的错误释放、内存越界、使用内存前未初始化。
覆盖率分析主要对代码的执行路径覆盖范围进行评估,语句覆盖、判断覆盖、条件覆盖、判断一条件覆盖、条件组合覆盖、路径覆盖都是从不同要求出发,为设计测试用例提出依据的。在电信网管系统的功能实现过程中,不是所有的路径都能很清晰的划分。这就应该用条件组合的方法进行测试。此外,对于一些核心的算法流程,在用路径测试法走过一遍之后,通常也可以用条件组合的方法在进行抽样测试。所以,我们采用路径覆盖结合条件组合覆盖 的覆盖率分析方法,这对于电信网系统来说是最适合的。
性能分析属于性能测试的范畴。性能测试可以出现在测试过程的各个阶段。然而,对于电信网管系统,只有将系统中所有的模块都组装在一起,系统性能才能完全确定,不借助其它模块就能完成的性能测试较少。所以,性能测试通常放到单元测试后面的测试活动(如集 成测试或系统测试)进行。
3.3网管系统的集成测试方法研究
单元测试仅仅保证了模块的局部正确性,对于程序结构设计中的错误无能为力;而系统测试一般在整个系统完成之后进行,若此时发现问题,错误难以定位,且改动面大,修改成 本高。因此,需要在模块集成的时候进行整体测试以发现可能出现的问题。
3.3.1网管系统的集成测试分析
一般情况下,集成测试需要分层次,分阶段完成。
第一个层次是组件测试。对单个模块进行测试,就像更大的单元测试,为后继测试提供 更加好的原料。如果一些组件己经充分被测试过,可以跳过这些组件。
第二个层次是做好集成测试规划。这一阶段最重要的是做好关键性分析,找出关键的部 分,以此作为主线进行计划和资源安排。
第三个层次是按照计划,把集成测试划分成为不同的阶段,明确各个阶段的主要任务, 确定任务完成的标记。
关键模块的确定
在集成测试时,应当先确定关键模块,对这些模块及早测试,在进行回归测试时,也应 该集中测试关键模块的功能。关键模块至少具有下述特征之一:
(1)对应某些用户关注程度相对较高的需求;
(2)在程序的模块结构中位于较高的层次(高层控制模块);
(3)较复杂!较易发生错误;
(4)有明确定义的性能要求;
(5)用关键算法实现。
我们应根据以上提到的关键模块的特征,结合电信网管系统各个模块的具体情况分析模块关键性,确定系统中的关键模块,把它们作为集成测试阶段的重点,及早测试、反复测试 以期获得良好的测试效果。
集成方式的选择
一般来说,有两种不同的集成方式:一次性集成测试方式(BigBnag Intigation)和增殖式集成测试方式(Inermeental Integration)。
一次性集成测试方式是将所有的模块集合在一起来论证它们之间的协作性和系统的稳定性;增殖式集成测试方式则是逐步将未曾测试的模块和己测试的模块组装成较大的系统,在组装的过程中边连接边测试,以发现连接过程中产生的问题,通过增殖逐步组装成为要求的软件系统。
增殖式测试把单元测试与集成测试结合起来进行,将模块逐步集成起来完成集成测试。这样把可能出现的差错分散暴露出来,便于找出问题和修改,因而可能取得较好的测试效果。所以,电信网管系统的集成测试应采用增殖式集成方式。增殖式集成测试方式根据集成的过 程又可分为:自顶向下增殖方式、自底向上增殖方式、混合增殖方式等。
3.3.2网管系统的集成测试实施
我们按照以下步骤进行电信网管系统的集成测试:
(1)首先确定子系统有哪些模块组成,保证这些模块都进行过单元测试。
(2)采用自底向上的增殖方式组装这些模块,生成一个子系统,并保证在此系统中,各个模块的功能尽可能发挥出来。
(3)测试前要设计测试用例,以一个关键模块为核心展开,以功能和性能为两条主线,注重模块间接口。
(4)搭建必要的测试环境,按照所写的测试用例,进行模块连接的充分测试。
(5)记录测试结果,总结测试问题。
3.4网管系统的系统测试方法研究
系统测试是将己经集成好的软件系统,作为基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其它系统元素结合在一起,在实际或与实际相似的使用环境下、对系统进行一系列组装测试和确认测试。主要目的在于通过与系统需求定义做比较, 发现软件与系统定义不符合的地方。
3.4.1电信网管系统的系统测试分析
系统测试的内容
电信网管系统的系统测试主要分为功能测试、非功能测试和文档测试三大类。
功能测试主要采用黑盒测试,不考虑程序的内在逻辑,只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当接收输入数据而产生正确的输出信息,并且保持 外部信息的完整性。
非功能测试包括:性能及压力测试、可恢复性测试、配置测试。
文档测试是验证安装手册和操作维护手册可用性、准确性、完整性和一致性。
系统测试策略
下面给出电信网管系统的系统测试策略:
(1)对整个电信网管系统的需求设计测试点,覆盖所有定义了的需求;
(2)根据测试点设计测试用例;
(3)执行测试用例,调试并执行回归测试;
(4)执行一调试一再测试循环,直到满足一个可靠性目标或稳定性目标或用完时间和预算;
(5)向用户提交系统。
3.4.2电信网管系统的系统测试实施
系统测试的实施可以分以下几个步骤来完成:系统测试计划、系统测试设计与实现、系统测试的执行、系统测试结果总结与分析。
系统测试设计与实现
系统测试设计与实现阶段的目标是,根据系统测试计划描述系统需要测试的特征、测试方法、测试环境规划、测试工具设计和选用方案和测试代码设计方案,并根据设计方案对测 试用例、测试工具、测试代码加以实现。
(1)系统测试环境设计
电信网管系统的系统测试环境设计包括:数据环境、硬件和软件环境的设计。
(2)测试用例的设计
一般来说,系统测试的测试用例编写的原则有:
(1)覆盖需求规格的所有测试点。
(2)测试用例的内容应和系统测试方案一致。
(3)测试用例应该考虑各种输入输出条件和各种边界值。
(4)测试用例应该考虑性能、异常、压力、容量方面的内容。
系统测试用例的设计必须依据一定的方法,电信网管管系统中采用的方法有:等价类划 分、边界值分析、错误推测法、因果图。
测试用例的设计包括测试用例样式的设计和测试用例内容的设计。我们在电信网管系统 的系统测试阶段采用的测试用例形式如表3-1所示:
表3-1 测试用例样式
测试用例的内容主要是对测试点进行细节上的扩展,其范围是用测试点来确定的。电信网管系统的功能点非常多,测试点自然也很多,为了清晰地组织系统测试的测试点,我们设 计了如表3-2所示的测试点清单:
表3-2 测试点清单
4总结与展望
4.1全文总结
软件测试是一个复杂的过程,不借助工具对于大型软件或复杂软件系统而言,往往十分困难。测试工具支持测试的内容一般有各种程度的逻辑覆盖测试、内存占用情况测试、性能 测试(如实时性测试)等。
本文对通信网络管理系统的方案和实现模块进行了研究,对测试理论和技术进行了深入探讨。对软件的穷尽测试是不可能的,这是软件测试作为软件质量保证手段的一个无法弥补的缺陷。
4.2未来展望
由于本文完成时间相对仓促,因此只是对软件基本测试技术在网络管理系统中的应用进行了探讨和应用,但是在很多方面还需要进一步深入。例如对于集成测试、功能测试的自动化是以后工作中需要关注的课题,也是软件自动化测试的发展方向。在以后的工作中对测试 用例设计技术和应用进行深入研究,以便设计更加有效地测试用例。
网络管理测试技术
刘璇
12级计算机科学与技术
摘要:网络管理系统是大型复杂的系统软件工程。为了确保研制的网络管理系统的可靠性和正确性,在网络管理系统的研制过程中,必须分阶段测试。包括对网络管理系统的每个模块进行测试,网络管理系统的子功能进行测试,最后对整体进行测试。论文介绍了软件测试的基本理论和技术,讨论了网络管理系统软件的特点和功能,分析了网络管理系统测试的方法和具体的关键技术,提出网络管理系统的具体测试方法,其中包括单元测试和系统测试。 关键字:网络管理 软件系统测试 测试方法 静态分析 功能测试
1绪论
随着软件系统的广泛应用,网络管理系统应用到人们的日常生活和工作等多个方面。网络管理的规模越来越复杂,网络管理向分级分布式方向发展。但是由于软件故障、软件缺陷导致软件运行中不可预知的错误,导致软件性能及稳定性下降,从而影响网管软件系统的使 用。软件测试是发现软件问题,提高软件质量的重要手段。
1.1研究背景
随着通信与计算机技术的持续高速发展,通信网络规模不断扩大,网络复杂性日益提高;同时,随着社会经济的发展,人们通信需求的不断增长,各种电信新技术、新业务被先后引 入通信网络。
在工程化的网络管理技术与标准的指导下,网管系统的建设得以迅速有效地开展。为了保证网管系统的质量,网管系统的测试时必不可少的重要手段。随着网络技术的不断发展,网络管理系统自身也日益复杂,对大型、复杂的网络管理软件的测试研究已经成为当前网络 管理领域和软件工程领域面临的难题。
1.2研究目的
本文的目的主要是针对网络系统测试,试图从一般软件系统测试和网管系统测试的共性和个性的比较出发,给出网管系统应用软件测试的特点和方法,对其测试的方法与技术进行 研究。
2软件测试
2.1软件测试基本理论
2.1.1软件测试的定义
1983年,电气与电子工程师协会(InstitudeofEleetronies EngineerS,工EEE)对软件测试的定义如下:使用人工或自动的手段来运行或测量软件系统的过程,目的是检验软件系统是否满足规定的要求,并找出与预期结果之间的差异;软件测试是一门需要经过设计!开发和维护等完整阶段的软件工程"因此,从这个阶段开始,软件测试进入一个全新的时期,软件测试成为一个专门的学科,从而形成了测试的理论!方法和各种测试技术,并开始运用某些测试工 具。
Gleford J.Myers在《TheArtofsoftwareTesting》1中是这样定义的:
(l)软件测试是为了发现错误而执行的过程;
(2)测试是为了证明程序有错,而不是证明程序无错误;
(3)一个好的测试用例在于它能够发现至今未发现的错误;
(4)一个成功的测试用例是发现了至今未发现的错误的测试。
这个定义强调了软件测试不是为了证明软件功能的正确,而更应该强调是以发现错误为 目的。
2.1.2软件测试过程模型
与软件开发的模型相对应,在软件测试的实践活动中,也形成了几类主要的测试模型。 其中以V模型、W模型、H模型等最为著名,下面分别进行比较其优缺点。
(1) V模型:V模型是为改进软件开发的效率和效果,由PaulRook提出的。V模型示 意图如图2-1:
图2-1 V模型示意图
由图2-1中可知V模型中对软件整个生命周期中的测试活动进行了分级,并与开发过程中的各阶段相对应。V模型的缺陷类似于瀑布开发模型的特点,就是必须严格按照软件的开发步骤进行测试,而实际的开发过程很可能不具备这样的开发条件。所以V模型的主要 缺陷在于不能尽早地不断地进行测试。
(2) W模型:相对于V模型,为克服V模型的缺陷,演化为W模型,W模型是基于“尽早地不断进行测试”的原则进行的,在软件开发阶段的测试活动尊循IEEE Std 1012—1998 《软件验证和确认》的原则,W模型示意图如图2-2: 1 Glenford J.Myers著.软件测试的艺术 电子工业出版.2006.26
图2-2 W模型示意图
W模型要求在软件开发的各个阶段,根据各阶段设计文档通过评审后,确定测试条件,以编写测试用例。"W模型和V模型的共同特点之一是把软件开发过程视为需求、设计、编码等一系列的串行活动。软件开发和测试都是一种线性的前后关系,都需要有严格的文档及相应评审通过后才能进入下一阶段,不能支持迭代及变更调整。W模型的优势在于设计软件产品的过程必须与软件的可靠性设计和测试同时进行,能够尽早地不断地进行测试。
(3) H模型:为了进一步完善V模型和W模型,更好地表示测试流程的完整性,产生 了H模型。H模型示意图如图2-3:
图2-3 H模型示意图
从H模型的示意图可以看出,测试流程分为测试准备和测试执行,测试准备活动包括测试需求分析、测试计划、测试设计、测试编码和测试验证,测试执行包括测试运行、测试总结、测试报告。相比于V模型和W模型,H模型的特点如下:软件测试不仅仅包含测试的执行,还应该包括设计等其他活动;软件测试是贯穿软件产品的生命周期,是一个独立的流程,但可以与其他流程并发进行;软件测试活动应该尽早地不断地进行测试;软件测试根据软件开发的各个阶段进行不同层次的测试,但是在实际测试过程中,测试活动可能会出现迭代和反复;H模型中把测试准备和测试执行进行分离,测试准备和测试执行需要按照不同的 工作要求来进行,有利于开发人员和测试人员独立工作,从而降低成本,提高效率。
2.2软件测试技术研究
2.2.1软件测试方式
软件测试按照测试方式分为静态测试、动态测试。
静态测试:其特点是不执行代码,而对需求规格说明、软件概要设计、软件详细设计等文档进行审查,对源代码根据设计文档进行结构检查、流程图分析、符号执行等找出软件代码的问题。
动态测试:通过运行程序对软件进行测试叫动态测试。动态测试按照测试技术分为白盒 测试、黑盒测试。
2.2.2白盒测试用例技术研究
白盒测试是一种结构测试,利用程序结构的实现细节等知识,进行测试用例的设计。进行白盒设计需要事先对软件的内部结构及流程比较熟悉,根据软件的详细设计说明进行追
踪,根据程序的接口及内部流程设计测试用例集,检验程序的实现是否满足设计文档的要求。 白盒测试用例最常用的技术是代码覆盖率分析,主要包括逻辑覆盖和路径覆盖两部分。
2.2.3黑盒测试用例技术研究
黑盒测试是根据规格说明规定的内容来设计测试用例,关注程序外部结构,重点针对软件功能进行测试。因此黑盒方法主要是穷举输入的测试方法,只有把所有可能的输入都作为测试用例进行测试,才能进行全部测试。一般常用的测试用例设计方法有等价类划分、边界 值分析、错误猜测、因果图法、判定表驱动法、正交试验法、功能图法、场景法等。 3网络管理系统的测试方法研究
3.1 网络系统的测试流程
在任何测试活动开始之前,首先需要解决的就是整个测试流程的设计,它可以指导整个测试过程。下面首先分析传统软件测试模型的优缺点,然后结合电信网管系统测试的需要, 提出其网管系统的测试模型:
传统测试模型的V模型的价值在于它明确地标明了测试过程中的不同级别,并且清楚地描述了这些测试级别和开发过程各个阶段的对应关系。但V模型存在许多不足之处,其 中对于电信网管系统的测试而言,它的不足之处主要如下:
(1)按照V模型,测试在编码实现之后才进行,容易导致需求阶段隐藏的错误一直到最后 验收测试时才被发现,发现和解决这些错误的代价较大。
(2)V模型把系统开发和测试过程划分为具有固定边界的不同阶段,使得很难跨过这些边 界来采集测试所需要的信息。
通过分析上一章介绍的W模型和H模型,在此提出电信网管系统的测试流程应采用这两者的结合。宏观上采用W模型,测试伴随着整个开发周期,从而有利于尽早的发现问题。而且测试的对象不仅仅是程序,需求、功能和设计同样要测试。即先对需求、功能和设计进行测试,再对电信网管系统的程序进行测试。其中,用单元测试验证模块的正确性,然后集成测试验证各模块之间藕合的正确性和健壮性,最后系统测试验证电信网管系统的系统特性,确定是否满足了用户的需求。而在某个测试层次上的一次测试“微循环”,要结合h模 型,只要测试准备活动完成,测试执行活动就可以进行了。
3.2网管系统的单元测试方法研究
在整个测试活动中,单元测试与编码的关系最为紧密,通常在编写出一个模块之后就对它作必要的单元测试,所以单元测试是集成测试和系统测试的基础。单元测试的目的是要验证模块的功能是正确的,且执行路径与设计者的设计意图是相符的"因此,单元测试通常是 白盒测试,测试工作主要分为两个步骤:人工静态检查和动态执行跟踪。
3.2.1人工静态检查
人工静态检查是单元测试的第一步,这个阶段工作主要是保证代码算法的逻辑正确性、清晰性、规范性、一致性和算法高效性。这种对程序的静态分析方法主要包括代码检查、静 态结构分析和代码质量度量等。
3.2.2动态执行跟踪
动态执行跟踪是通过设计测试用例,执行待测程序来跟踪比较实际结果与预期结果来发现错误。一般软件的动态执行跟踪通常分为功能测试与结构测试,可分别基于黑盒测试、盒
白盒测试方法来设计测试用例。
电信网管系统由于考虑到功能的实现与电信设备系统的交互性,以及在MBI规范下可能的多实现流程,对管理功能的实现方法及部分实现流程进行了一致性规定,故在实际测试中 我们采用灰盒测试取代纯粹的黑盒测试和白盒测试。
下面分别介绍动态执行跟踪的功能测试与结构测试在电信网管系统测试中应该是如何 进行的。
功能测试
功能测试是基于产品的外部功能来规划测试,检查程序各个实现的功能是否符合功能设计规格和要求,并检查其中的逻辑错误。
电信网管系统是一个分布式系统,系统中的各个模块不是独立的,而是与其它模块或外界环境有接口联系。有时候模块的输出是正确的,但其内部的处理其实已经错误了,这种情况用黑盒测试是无法发现的,由于在电信网管系统中协同工作的模块众多,数据不一致的可能性就很大。而电信网管系统的管理动作一般都是建立在这些数据之上的,数据的不一致会给电信网管系统带来的很大的隐患。电信网管系统模块的单元测试除了要保证模块的输出是正确的,还要保证模块的数据一致性。这有时就需要其它模块在功能上加以配合才能完成。 结构测试
一般来说,结构测试主要包括内存分析、覆盖率分析、性能分析等。
内存分析可用来发现程序中的内存错误。常见的内存错误主要包括:内存泄漏、内存的错误释放、内存越界、使用内存前未初始化。
覆盖率分析主要对代码的执行路径覆盖范围进行评估,语句覆盖、判断覆盖、条件覆盖、判断一条件覆盖、条件组合覆盖、路径覆盖都是从不同要求出发,为设计测试用例提出依据的。在电信网管系统的功能实现过程中,不是所有的路径都能很清晰的划分。这就应该用条件组合的方法进行测试。此外,对于一些核心的算法流程,在用路径测试法走过一遍之后,通常也可以用条件组合的方法在进行抽样测试。所以,我们采用路径覆盖结合条件组合覆盖 的覆盖率分析方法,这对于电信网系统来说是最适合的。
性能分析属于性能测试的范畴。性能测试可以出现在测试过程的各个阶段。然而,对于电信网管系统,只有将系统中所有的模块都组装在一起,系统性能才能完全确定,不借助其它模块就能完成的性能测试较少。所以,性能测试通常放到单元测试后面的测试活动(如集 成测试或系统测试)进行。
3.3网管系统的集成测试方法研究
单元测试仅仅保证了模块的局部正确性,对于程序结构设计中的错误无能为力;而系统测试一般在整个系统完成之后进行,若此时发现问题,错误难以定位,且改动面大,修改成 本高。因此,需要在模块集成的时候进行整体测试以发现可能出现的问题。
3.3.1网管系统的集成测试分析
一般情况下,集成测试需要分层次,分阶段完成。
第一个层次是组件测试。对单个模块进行测试,就像更大的单元测试,为后继测试提供 更加好的原料。如果一些组件己经充分被测试过,可以跳过这些组件。
第二个层次是做好集成测试规划。这一阶段最重要的是做好关键性分析,找出关键的部 分,以此作为主线进行计划和资源安排。
第三个层次是按照计划,把集成测试划分成为不同的阶段,明确各个阶段的主要任务, 确定任务完成的标记。
关键模块的确定
在集成测试时,应当先确定关键模块,对这些模块及早测试,在进行回归测试时,也应 该集中测试关键模块的功能。关键模块至少具有下述特征之一:
(1)对应某些用户关注程度相对较高的需求;
(2)在程序的模块结构中位于较高的层次(高层控制模块);
(3)较复杂!较易发生错误;
(4)有明确定义的性能要求;
(5)用关键算法实现。
我们应根据以上提到的关键模块的特征,结合电信网管系统各个模块的具体情况分析模块关键性,确定系统中的关键模块,把它们作为集成测试阶段的重点,及早测试、反复测试 以期获得良好的测试效果。
集成方式的选择
一般来说,有两种不同的集成方式:一次性集成测试方式(BigBnag Intigation)和增殖式集成测试方式(Inermeental Integration)。
一次性集成测试方式是将所有的模块集合在一起来论证它们之间的协作性和系统的稳定性;增殖式集成测试方式则是逐步将未曾测试的模块和己测试的模块组装成较大的系统,在组装的过程中边连接边测试,以发现连接过程中产生的问题,通过增殖逐步组装成为要求的软件系统。
增殖式测试把单元测试与集成测试结合起来进行,将模块逐步集成起来完成集成测试。这样把可能出现的差错分散暴露出来,便于找出问题和修改,因而可能取得较好的测试效果。所以,电信网管系统的集成测试应采用增殖式集成方式。增殖式集成测试方式根据集成的过 程又可分为:自顶向下增殖方式、自底向上增殖方式、混合增殖方式等。
3.3.2网管系统的集成测试实施
我们按照以下步骤进行电信网管系统的集成测试:
(1)首先确定子系统有哪些模块组成,保证这些模块都进行过单元测试。
(2)采用自底向上的增殖方式组装这些模块,生成一个子系统,并保证在此系统中,各个模块的功能尽可能发挥出来。
(3)测试前要设计测试用例,以一个关键模块为核心展开,以功能和性能为两条主线,注重模块间接口。
(4)搭建必要的测试环境,按照所写的测试用例,进行模块连接的充分测试。
(5)记录测试结果,总结测试问题。
3.4网管系统的系统测试方法研究
系统测试是将己经集成好的软件系统,作为基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其它系统元素结合在一起,在实际或与实际相似的使用环境下、对系统进行一系列组装测试和确认测试。主要目的在于通过与系统需求定义做比较, 发现软件与系统定义不符合的地方。
3.4.1电信网管系统的系统测试分析
系统测试的内容
电信网管系统的系统测试主要分为功能测试、非功能测试和文档测试三大类。
功能测试主要采用黑盒测试,不考虑程序的内在逻辑,只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当接收输入数据而产生正确的输出信息,并且保持 外部信息的完整性。
非功能测试包括:性能及压力测试、可恢复性测试、配置测试。
文档测试是验证安装手册和操作维护手册可用性、准确性、完整性和一致性。
系统测试策略
下面给出电信网管系统的系统测试策略:
(1)对整个电信网管系统的需求设计测试点,覆盖所有定义了的需求;
(2)根据测试点设计测试用例;
(3)执行测试用例,调试并执行回归测试;
(4)执行一调试一再测试循环,直到满足一个可靠性目标或稳定性目标或用完时间和预算;
(5)向用户提交系统。
3.4.2电信网管系统的系统测试实施
系统测试的实施可以分以下几个步骤来完成:系统测试计划、系统测试设计与实现、系统测试的执行、系统测试结果总结与分析。
系统测试设计与实现
系统测试设计与实现阶段的目标是,根据系统测试计划描述系统需要测试的特征、测试方法、测试环境规划、测试工具设计和选用方案和测试代码设计方案,并根据设计方案对测 试用例、测试工具、测试代码加以实现。
(1)系统测试环境设计
电信网管系统的系统测试环境设计包括:数据环境、硬件和软件环境的设计。
(2)测试用例的设计
一般来说,系统测试的测试用例编写的原则有:
(1)覆盖需求规格的所有测试点。
(2)测试用例的内容应和系统测试方案一致。
(3)测试用例应该考虑各种输入输出条件和各种边界值。
(4)测试用例应该考虑性能、异常、压力、容量方面的内容。
系统测试用例的设计必须依据一定的方法,电信网管管系统中采用的方法有:等价类划 分、边界值分析、错误推测法、因果图。
测试用例的设计包括测试用例样式的设计和测试用例内容的设计。我们在电信网管系统 的系统测试阶段采用的测试用例形式如表3-1所示:
表3-1 测试用例样式
测试用例的内容主要是对测试点进行细节上的扩展,其范围是用测试点来确定的。电信网管系统的功能点非常多,测试点自然也很多,为了清晰地组织系统测试的测试点,我们设 计了如表3-2所示的测试点清单:
表3-2 测试点清单
4总结与展望
4.1全文总结
软件测试是一个复杂的过程,不借助工具对于大型软件或复杂软件系统而言,往往十分困难。测试工具支持测试的内容一般有各种程度的逻辑覆盖测试、内存占用情况测试、性能 测试(如实时性测试)等。
本文对通信网络管理系统的方案和实现模块进行了研究,对测试理论和技术进行了深入探讨。对软件的穷尽测试是不可能的,这是软件测试作为软件质量保证手段的一个无法弥补的缺陷。
4.2未来展望
由于本文完成时间相对仓促,因此只是对软件基本测试技术在网络管理系统中的应用进行了探讨和应用,但是在很多方面还需要进一步深入。例如对于集成测试、功能测试的自动化是以后工作中需要关注的课题,也是软件自动化测试的发展方向。在以后的工作中对测试 用例设计技术和应用进行深入研究,以便设计更加有效地测试用例。