资源预览内容
第1页 / 共106页
第2页 / 共106页
第3页 / 共106页
第4页 / 共106页
第5页 / 共106页
第6页 / 共106页
第7页 / 共106页
第8页 / 共106页
第9页 / 共106页
第10页 / 共106页
亲,该文档总共106页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第第 3 章章 软件测试的方法和技术软件测试的方法和技术 3.1 软件测试方法概述软件测试方法概述3.2 白白 盒盒 测测 试试3.3 黑黑 盒盒 测测 试试3.4 测测 试试 用用 例例 设设 计计 3.1 软件测试方法概述软件测试方法概述 软件测试的种类大致可分为人工测试软件测试的种类大致可分为人工测试和基于计算机的测试。而基于计算机的测和基于计算机的测试。而基于计算机的测试又可分为黑盒测试和白盒测试。试又可分为黑盒测试和白盒测试。1黑盒测试黑盒测试 黑黑盒盒测测试试是是根根据据软软件件产产品品的的功功能能设设计计规规格格,在在计计算算机机上上进进行行测测试试,以以证证实实每每个个已已经经实实现现的的功功能能是是否否符符合合要要求求。黑黑盒盒测测试试意味着测试要在软件的接口处进行。意味着测试要在软件的接口处进行。 2白盒测试白盒测试 白盒测试是根据软件产品的内部工作白盒测试是根据软件产品的内部工作过程,在计算机上进行测试,以证实每种过程,在计算机上进行测试,以证实每种内部操作是否符合设计规格要求,所有内内部操作是否符合设计规格要求,所有内部成分是否已经过检查。白盒测试把测试部成分是否已经过检查。白盒测试把测试对象看做一个打开的盒子,允许测试人员对象看做一个打开的盒子,允许测试人员利用程序内部的逻辑结构及有关信息,设利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序的状态,进行测试。通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。确定实际的状态是否与预期的状态一致。 3.2 白白 盒盒 测测 试试 白盒测试也称为结构测试或逻辑驱动白盒测试也称为结构测试或逻辑驱动测试,前提是知道产品内部工作过程,可测试,前提是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路的结构测试程序,检验程序中的每条通路是否都能够按预定要求正确工作,而不管是否都能够按预定要求正确工作,而不管产品的功能,主要用于软件验证。产品的功能,主要用于软件验证。 白白盒盒测测试试方方法法又又可可分分为为静静态态测测试试和和动动态态测测试试。静静态态测测试试是是一一种种不不通通过过执执行行程程序序而而进进行行测测试试的的技技术术,其其关关键键功功能能是是检检查查软软件件的的表表示示和和描描述述是是否否一一致致,没没有有冲冲突突或或者者没没有有歧歧义义。它它瞄瞄准准的的是是纠纠正正软软件件系系统统在在描描述述、表表示示和和规规格格上上的的错错误误,是是任任何何进进一一步步测测试试的的前前提提。而而动动态态测测试试需需要要软软件件的的执执行行,当当软软件件系系统统在在模模拟拟的的或或真真实实的的环环境境中中执执行行之之前前、之之中中和和之之后后,对对软软件件系系统统行行为为的的分分析析是是动动态态测测试试的的主主要要特特点点。它它显显示示了了一一个个系系统在检查状态下是正确还是不正确。统在检查状态下是正确还是不正确。 白白盒盒测测试试的的动动态态测测试试要要根根据据程程序序的的控控制制结构设计测试用例,其原则是:结构设计测试用例,其原则是:(1)保保证证一一个个模模块块中中的的所所有有独独立立路路径径至至少少被使用一次;被使用一次;(2)对所有逻辑值均需测试)对所有逻辑值均需测试true和和false;(3)在在上上下下边边界界及及可可操操作作范范围围内内运运行行所所有有循环;循环;(4)检查内部数据结构以确保其有效性。)检查内部数据结构以确保其有效性。 下下面面将将介介绍绍几几种种实实用用的的白白盒盒测测试试用用例例设设计计方方法法,包包括括程程序序插插桩桩、逻逻辑辑覆覆盖盖、基基本本路径测试等。路径测试等。3.2.1 程序插桩程序插桩 在在软软件件动动态态测测试试中中,程程序序插插桩桩是是一一种种基基本的测试手段,有着广泛的应用。本的测试手段,有着广泛的应用。1方法简介方法简介 程程序序插插桩桩方方法法是是借借助助往往被被测测程程序序中中插插入入操作,来实现测试目的的方法。操作,来实现测试目的的方法。 如果我们想要了解一个程序在某次运如果我们想要了解一个程序在某次运行中所有可执行语句被覆盖的情况,或是行中所有可执行语句被覆盖的情况,或是每个语句的实际执行次数,最好的办法是每个语句的实际执行次数,最好的办法是利用插桩技术。这里仅以计算整数利用插桩技术。这里仅以计算整数X和整数和整数Y的最大公约数程序为例,说明插桩方法的的最大公约数程序为例,说明插桩方法的要点。图要点。图3-3给出了这一程序的流程图。给出了这一程序的流程图。 图3-3 插桩后求最大公约数程序的流程图 设计插桩程序时需要考虑的问题包括:设计插桩程序时需要考虑的问题包括: 探测哪些信息;探测哪些信息; 在程序的什么部位设置探测点;在程序的什么部位设置探测点; 需要设置多少个探测点。需要设置多少个探测点。2断言语句断言语句 在在程程序序中中特特定定部部位位插插入入某某些些用用以以判判断断变变量量特特性性的的语语句句,使使得得程程序序执执行行中中这这些些语语句句得得以以证证实实,从从而而使使程程序序的的运运行行特特性性得得到到证证实实。我我们们把把插插入入的的这这些些语语句句称称为为断断言言。这这一一做做法法是是程程序序正正确确性性证证明明的的基基本本步步骤骤,尽尽管管算算不不上上严严格格的的证证明明,但但方方法法本本身身仍仍然然是是很很实实用用的的。下下面面以以求求两两个个非非负负数数NUM和和DEN之之商商的的Wensley迭迭代代算算法法为为例例,对对断断言语句的作用做一简要说明。言语句的作用做一简要说明。图3-5 计算非负数之商的迭代程序 图3-6 插入断言后的迭代程序 3.2.2 逻辑覆盖逻辑覆盖 逻逻辑辑覆覆盖盖是是以以程程序序内内部部的的逻逻辑辑结结构构为为基基础础的的设设计计测测试试用用例例的的技技术术,是是通通过过对对程程序序逻逻辑辑结结构构的的遍遍历历实实现现程程序序的的覆覆盖盖,它它是是一一系系列列测测试试过过程程的的总总称称,这这组组测测试试过过程程逐逐渐渐进进行行越越来来越越完完整整的的通通路路测测试试。这这一一方方法法要要求求测测试试人人员员对对程程序序的的逻逻辑辑结结构构有有清清楚楚的的了了解解,甚甚至至要要能能掌掌握握源源程程序序的的所所有有细细节节。它属于动态测试。它属于动态测试。 从从覆覆盖盖源源程程序序语语句句的的详详细细程程度度分分析析,逻逻辑辑覆覆盖盖标标准准有有语语句句覆覆盖盖、判判定定覆覆盖盖、条条件件覆覆盖盖、条条件件判判定定组组合合覆覆盖盖、多多条条件件覆覆盖盖和和修正条件判定覆盖。修正条件判定覆盖。 为便于理解,使用如下所示的程序,为便于理解,使用如下所示的程序,图图3-7所示的是其流程图。所示的是其流程图。 图图3-7 参参考考例例子子流流程程图图int function1(bool a,bool b,bool c) int x; x=0;if(a&(b|c) x=1; return x;1语句覆盖语句覆盖 为为了了暴暴露露程程序序中中的的错错误误,程程序序中中的的每每条条语语句句至至少少应应该该执执行行一一次次。所所以以,语语句句覆覆盖盖的的含含义义是是:选选择择足足够够多多的的测测试试数数据据,使使被被测程序中每条语句至少执行一次。测程序中每条语句至少执行一次。2判定覆盖判定覆盖 比比语语句句覆覆盖盖稍稍强强的的覆覆盖盖标标准准是是判判定定覆覆盖盖。按按判判定定覆覆盖盖准准则则进进行行测测试试是是指指,设设计计若若干干测测试试用用例例,运运行行被被测测程程序序,使使得得程程序序中中每每个个判判断断的的取取真真分分支支和和取取假假分分支支至至少少经经历历一一次次,即即判判断断的的真真假假值值均均曾曾被被满满足足。判判定定覆覆盖又称为分支覆盖。盖又称为分支覆盖。3条件覆盖条件覆盖 在在设设计计程程序序中中,一一个个判判定定语语句句是是由由多多个个条件组合而成的复合判定。条件组合而成的复合判定。 条条件件覆覆盖盖的的含含义义是是:构构造造一一组组测测试试用用例例,使使得得每每一一判判定定语语句句中中每每个个逻逻辑辑条条件件的的可可能能值至少满足一次。值至少满足一次。4条件判定组合覆盖条件判定组合覆盖 条条件件判判定定组组合合覆覆盖盖的的含含义义是是:设设计计足足够够的的测测试试用用例例,使使得得判判定定中中每每个个条条件件的的所所有有可可能能(真真/假假)至至少少出出现现一一次次,并并且且每每个个判判定定本本身的判定结果(真身的判定结果(真/假)也至少出现一次。假)也至少出现一次。5多条件覆盖多条件覆盖 多多条条件件覆覆盖盖也也称称为为条条件件组组合合覆覆盖盖,它它的的含含义义是是:设设计计足足够够的的测测试试用用例例,使使得得每每个个判判定定中中条条件件的的各各种种可可能能组组合合都都至至少少出出现现一一次次。显显然然满满足足多多条条件件覆覆盖盖的的测测试试用用例例是是一一定定满满足足判判定定覆覆盖盖、条条件件覆覆盖盖和和条条件件判判定定组组合覆盖的。合覆盖的。6修正条件判定覆盖修正条件判定覆盖 它它要要求求满满足足两两个个条条件件:首首先先,每每一一个个程程序序模模块块的的入入口口和和出出口口点点都都要要考考虑虑至至少少被被调调用用一一次次,每每个个程程序序的的判判定定到到所所有有可可能能的的结结果果值值要要至至少少转转换换一一次次;其其次次,程程序序的的判判定定被被分分解解为为通通过过逻逻辑辑操操作作符符(and、or)连连接接的的bool条条件件,每每个个条条件件对对于于判判定定的的结结果果值值是独立的。是独立的。7测试覆盖准则测试覆盖准则(1)Foster的的ESTCA覆盖准则覆盖准则 前面所介绍的逻辑覆盖其出发点似乎前面所介绍的逻辑覆盖其出发点似乎是合理的。所谓是合理的。所谓“覆盖覆盖”,就是想要做到全,就是想要做到全面而无遗漏。但是,事实表明,它并不能面而无遗漏。但是,事实表明,它并不能真的做到无遗漏。真的做到无遗漏。 K.A.Foster从从测测试试工工作作实实践践的的教教训训出出发发,吸吸收收了了计计算算机机硬硬件件的的测测试试原原理理,提提出出了一种经验型的测试覆盖准则。了一种经验型的测试覆盖准则。(2 2)WoodwardWoodward等人的层次等人的层次等人的层次等人的层次LCSAJLCSAJ覆盖准则覆盖准则覆盖准则覆盖准则 Woodward等人曾经指出结构覆盖的等人曾经指出结构覆盖的一些准则,如分支覆盖或路径覆盖,都不一些准则,如分支覆盖或路径覆盖,都不足以保证测试数据的有效性。为此,他们足以保证测试数据的有效性。为此,他们提出了一种层次提出了一种层次LCSAJ覆盖准则。覆盖准则。 3.2.3 基本路径测试基本路径测试 上上节节的的例例子子是是个个比比较较简简单单的的程程序序段段,只只有有两两条条路路径径。但但在在实实际际问问题题中中,即即使使一一个个不不太太复复杂杂的的程程序序,其其路路径径的的组组合合都都是是一一个个庞大的数字。庞大的数字。 如果把覆盖的路径数压缩到一定限度如果把覆盖的路径数压缩到一定限度内,例如,程序中的循环体只执行零次和内,例如,程序中的循环体只执行零次和一次,就成为基本路径测试。一次,就成为基本路径测试。 设设计计出出的的测测试试用用例例要要保保证证在在测测试试中中程程序序的每一条可执行语句至少执行一次。的每一条可执行语句至少执行一次。1程序的控制流图程序的控制流图 控制流图是描述程序控制流的一种图控制流图是描述程序控制流的一种图示方式。其中基本的控制结构对应的图形示方式。其中基本的控制结构对应的图形符号如图符号如图3-8所示。在图所示。在图3-8所示的图形符号所示的图形符号中,圆圈称为控制流图的一个结点,它表中,圆圈称为控制流图的一个结点,它表示一个或多个无分支的语句或源程序语句。示一个或多个无分支的语句或源程序语句。 图3-8 控制流图的图形符号 图图3-9(a)所所示示的的是是一一个个程程序序的的流流程程图图,它可以映射成图(它可以映射成图(b)所示的控制流图。)所示的控制流图。图3-9 程序流程图和对应的控制流图 2计算程序环路复杂性计算程序环路复杂性 进进行行程程序序的的基基本本路路径径测测试试时时,程程序序的的环环路路复复杂杂性性给给出出了了程程序序基基本本路路径径集集合合中中的的独独立立路路径径条条数数,这这是是确确保保程程序序中中每每个个可可执执行行语语句句至至少少执执行行一一次次所所必必须须的的测测试试用用例例数数目目的上界。的上界。 所谓独立路径,是指包括若干未曾处所谓独立路径,是指包括若干未曾处理的语句或条件的一条路径。理的语句或条件的一条路径。 基基本本路路径径集集不不是是惟惟一一的的,对对于于给给定定的的控控制流图,可以得到不同的基本路径集。制流图,可以得到不同的基本路径集。 通常环路复杂性可用以下通常环路复杂性可用以下3种方法求得。种方法求得。 将将环环路路复复杂杂性性定定义义为为控控制制流流图图中中的的区域数。区域数。 设设E为为控控制制流流图图的的边边数数,N为为图图的的结结点点 数数 , 则则 定定 义义 环环 路路 的的 复复 杂杂 性性 为为V(G)=EN+2。 若若设设P为为控控制制流流图图中中的的判判定定结结点点数数,则有则有V(G)=P+1。3基本路径测试法步骤基本路径测试法步骤 基基本本路路径径测测试试法法适适用用于于模模块块的的详详细细设设计计及源程序,其主要步骤如下。及源程序,其主要步骤如下。 以以详详细细设设计计或或源源代代码码作作为为基基础础,导导出出程序的控制流图。程序的控制流图。 计计算算得得到到的的控控制制流流图图G的的环环路路复复杂杂性性V(G)。)。 确定线性无关的路径的基本集。确定线性无关的路径的基本集。 生生成成测测试试用用例例,确确保保基基本本路路径径集集中中每每条路径的执行。条路径的执行。3.2.4 程序的静态测试程序的静态测试1源程序静态分析源程序静态分析 在在静静态态结结构构分分析析中中,测测试试者者通通过过使使用用测测试试工工具具分分析析程程序序源源代代码码的的系系统统结结构构、数数据据结结构构、数数据据接接口口、内内部部控控制制逻逻辑辑等等内内部部结结构构,生生成成函函数数调调用用关关系系图图、模模块块控控制制流流图图、内内部部文文件件调调用用关关系系图图、子子程程序序表表、宏宏和和函函数数参参数数表表等等各各类类图图形形图图表表,可可以以清清晰晰地地标标识识整整个个软软件件系系统统的的组组成成结结构构,使使其其便便于于阅阅读读与与理理解解,然然后后可可以以通通过过分分析析这这些些图图表表,检查软件有没有存在缺陷或错误。检查软件有没有存在缺陷或错误。 通通常常采采用用以以下下一一些些方方法法进进行行源源程程序序的的静静态分析。态分析。(1)生成各种引用表)生成各种引用表 标号交叉引用表标号交叉引用表 变量交叉引用表变量交叉引用表 子程序(宏、函数)引用表子程序(宏、函数)引用表 等价表等价表 常数表常数表 (2)错误静态分析)错误静态分析 错错误误静静态态分分析析主主要要用用于于确确定定在在源源程程序序中中是否有某类错误或是否有某类错误或“危险危险”结构。结构。 类型和单位分析类型和单位分析 引用分析引用分析 表达式分析表达式分析 接口分析接口分析 2人工测试人工测试 静态分析中进行人工测试的主要方法有静态分析中进行人工测试的主要方法有桌前检查、代码审查和走查。经验表明,桌前检查、代码审查和走查。经验表明,使用这种方法能够有效地发现使用这种方法能够有效地发现30%70%的逻辑设计和编码错误。的逻辑设计和编码错误。(1)桌前检查)桌前检查 由程序员自己检查自己编写的程序。由程序员自己检查自己编写的程序。程序员在程序通过编译之后,进行单元程序员在程序通过编译之后,进行单元测试设计之前,对源程序代码进行分析、测试设计之前,对源程序代码进行分析、检验,并补充相关的文档,目的是发现检验,并补充相关的文档,目的是发现程序中的错误。程序中的错误。 (2)代码审查)代码审查 代代码码审审查查是是由由若若干干程程序序员员和和测测试试员员组组成成一一个个审审查查小小组组,通通过过阅阅读读、讨讨论论和和争争议议,对程序进行静态分析的过程。对程序进行静态分析的过程。 代码审查分两步。第一步,小组负责代码审查分两步。第一步,小组负责人提前把设计规格说明书、控制流程图、人提前把设计规格说明书、控制流程图、程序文本及有关要求、规范等分发给小组程序文本及有关要求、规范等分发给小组成员,作为审查的依据。小组成员在充分成员,作为审查的依据。小组成员在充分阅读这些材料后,进入审查的第二步,召阅读这些材料后,进入审查的第二步,召开程序审查会。开程序审查会。 (3)走查)走查 走走查查与与代代码码审审查查基基本本相相同同,其其过过程程分分为为两两步步。第第一一步步也也把把材材料料先先发发给给走走查查小小组组每每个个成成员员,让让他他们们认认真真研研究究程程序序,然然后后再再开开会会。开开会会的的程程序序与与代代码码审审查查不不同同,不不是是简简单单地地读读程程序序和和对对照照错错误误检检查查表表进进行行检检查查,而而是是让让与与会会者者“充充当当”计计算算机机,即即首首先先由由测测试试组组成成员员为为被被测测程程序序准准备备一一批批有有代代表表性性的的测测试试用用例例,提提交交给给走走查查小小组组。走走查查小小组组开开会会,集集体体扮扮演演计计算算机机角角色色,让让测测试试用用例例沿沿程程序序的的逻逻辑辑运运行行一一遍遍,随随时时记记录录程程序序的的踪踪迹,供分析和讨论用。迹,供分析和讨论用。 3.2.5 其他白盒测试方法简介其他白盒测试方法简介1域测试域测试 域测试是一种基于程序结构的测试方法。域测试是一种基于程序结构的测试方法。 域测试正是在分析输入域的基础上,选择域测试正是在分析输入域的基础上,选择适当的测试点以后进行测试的。适当的测试点以后进行测试的。2符号测试符号测试 符号测试的基本思想是允许程序的输符号测试的基本思想是允许程序的输入不仅仅是具体的数值数据,而且包括符入不仅仅是具体的数值数据,而且包括符号值,这一方法也因此而得名。号值,这一方法也因此而得名。 3Z路径覆盖路径覆盖 分析程序中的路径是指检验程序从入口分析程序中的路径是指检验程序从入口开始,执行过程中经历的各个语句,直到出口。开始,执行过程中经历的各个语句,直到出口。 4程序变异程序变异 程序变异方法是一种错误驱动测试。程序变异方法是一种错误驱动测试。所谓错误驱动测试方法,是指该方法是针所谓错误驱动测试方法,是指该方法是针对某类特定程序错误的。经过多年的测试对某类特定程序错误的。经过多年的测试理论研究和软件测试的实践,人们逐渐发理论研究和软件测试的实践,人们逐渐发现要想找出程序中所有的错误几乎是不可现要想找出程序中所有的错误几乎是不可能的。比较现实的解决办法是将错误的搜能的。比较现实的解决办法是将错误的搜索范围尽可能地缩小,以利于专门测试某索范围尽可能地缩小,以利于专门测试某类错误是否存在。类错误是否存在。 错误驱动测试主要有两种,即程序强错误驱动测试主要有两种,即程序强变异和程序弱变异。变异和程序弱变异。 最最后后,归归纳纳一一下下白白盒盒测测试试中中各各种种测测试试方方法的应用策略。法的应用策略。 在在白白盒盒测测试试中中,可可以以使使用用各各种种测测试试方方法法的综合策略如下。的综合策略如下。 (1)在在测测试试中中,应应尽尽量量先先使使用用工工具具进进行行静态结构分析。静态结构分析。 (2)测测试试中中可可采采取取先先静静态态后后动动态态的的组组合合方方式式:先先进进行行静静态态结结构构分分析析、代代码码检检查查,再进行覆盖率测试。再进行覆盖率测试。 (3)利利用用静静态态分分析析的的结结果果作作为为导导引引,通通过过代代码码检检查查和和动动态态测测试试的的方方式式对对静静态态发发现现结结果果进进行行进进一一步步的的确确认认,使使测测试试工工作作更更为为有效。有效。 (4)覆覆盖盖率率测测试试是是白白盒盒测测试试的的重重点点,一一般般可可使使用用基基本本路路径径测测试试法法达达到到语语句句覆覆盖盖标标准准;对对于于软软件件的的重重点点模模块块,应应使使用用多多种种覆覆盖率标准衡量代码的覆盖率。盖率标准衡量代码的覆盖率。 (5)在在不不同同的的测测试试节节点点,测测试试的的侧侧重重点点不不同同:在在单单元元测测试试阶阶段段,以以代代码码检检查查、逻逻辑辑覆覆盖盖为为主主;在在集集成成测测试试阶阶段段,需需要要增增加加静静态态结结构构分分析析等等;在在系系统统测测试试阶阶段段,应应根根据黑盒测试的结果,采取相应的白盒测试。据黑盒测试的结果,采取相应的白盒测试。3.3 黑黑 盒盒 测测 试试 黑盒测试也称功能测试或数据驱动测黑盒测试也称功能测试或数据驱动测试,前提是已知产品所具有的功能,通过试,前提是已知产品所具有的功能,通过测试来检测每个功能是否都正常使用。测试来检测每个功能是否都正常使用。 黑盒测试方法主要有等价类划分、边黑盒测试方法主要有等价类划分、边界值分析、因果图、错误推测、功能图法界值分析、因果图、错误推测、功能图法等,主要用于软件确认测试。等,主要用于软件确认测试。 3.3.1 等价类划分法等价类划分法 等等价价类类划划分分是是一一种种典典型型的的黑黑盒盒测测试试方方法法。使使用用这这一一方方法法时时,完完全全不不考考虑虑程程序序的的内内部部结结构构,只只依依据据程程序序的的规规格格说说明明来来设设计计测测试试用用例例。由由于于不不可可能能用用所所有有可可以以输输入入的的数数据据来来测测试试程程序序,而而只只能能从从全全部部可可供供输输入入的的数数据据中中选选择择一一个个自自己己进进行行测测试试。如如何何选选择择适适当当的的子子集集,使使其其尽尽可可能能多多地地发发现现错错误误,解解决的办法之一就是等价类划分。决的办法之一就是等价类划分。 首首先先,把把数数目目极极多多的的输输入入数数据据,包包括括有有效效的的和和无无效效的的,划划分分为为若若干干等等价价类类,而而所所谓谓等等价价类类,是是指指某某个个输输入入域域的的子子集集合合。在在该该子子集集合合中中,各各个个输输入入数数据据对对于于揭揭露露程程序序中中的的错错误误都都是是等等效效的的。并并合合理理地地假假定定:测测试试某某等等价价类类的的代代表表值值就就等等价价于于对对这这一一类类其其他他值值的的测测试试。因因此此,可可以以把把全全部部输输入入数数据据合合理理划划分分为为若若干干等等价价类类,在在每每一一个个等等价价类类中中取取一一个个数数据据作作为为测测试试的的输输入入条条件件,就就可可用用少少量量代代表表性性测测试试数数据据,取取得得较较好好的的测测试试结果。结果。等价类的划分有以下两种不同的情况。等价类的划分有以下两种不同的情况。 有效等价类有效等价类 无效等价类无效等价类 划分等价类的原则如下。划分等价类的原则如下。 按区间划分按区间划分 按数值划分按数值划分 按数值集合划分按数值集合划分 按限制条件或规则划分按限制条件或规则划分 在在确确立立了了等等价价类类之之后后,建建立立等等价价类类表表,列出所有划分出的等价类,如表列出所有划分出的等价类,如表3-6所示。所示。 再再从从划划分分出出的的等等价价类类中中按按以以下下原原则则选选择择测测试用例。试用例。 为每一个等价类规定一个惟一的编号。为每一个等价类规定一个惟一的编号。 设设计计一一个个新新的的测测试试用用例例,使使其其尽尽可可能能多多地地覆覆盖盖尚尚未未覆覆盖盖的的有有效效等等价价类类;重重复复这这一一步步骤骤,直到所有的有效等价类都被覆盖为止。直到所有的有效等价类都被覆盖为止。 设设计计一一个个新新的的测测试试用用例例,使使其其仅仅覆覆盖盖一一个个无无效效等等价价类类,重重复复这这一一步步骤骤,直直到到所所有有的的无无效等价类都被覆盖为止。效等价类都被覆盖为止。3.3.2 边界值分析法边界值分析法 人们从长期的测试工作经验得知,人们从长期的测试工作经验得知,大量的错误是发生在输入或输出范围的大量的错误是发生在输入或输出范围的边界上,而不是在输入范围的内部。因边界上,而不是在输入范围的内部。因此针对各种边界情况设计测试用例,可此针对各种边界情况设计测试用例,可以查出更多的错误。以查出更多的错误。 使用边界值分析方法设计测试用例,使用边界值分析方法设计测试用例,首先应确定边界情况。首先应确定边界情况。 选择测试用例的原则如下。选择测试用例的原则如下。 如如果果输输入入条条件件规规定定了了值值的的范范围围,则则应应该该取取刚刚达达到到这这个个范范围围的的边边界界值值,以以及及刚刚刚刚超超过这个范围边界的值作为测试输入数据。过这个范围边界的值作为测试输入数据。 如如果果输输入入条条件件规规定定了了值值的的个个数数,则则用用最最大大个个数数、最最小小个个数数、比比最最大大个个数数多多1个个、比最小个数少比最小个数少1 个的数作为测试数据。个的数作为测试数据。 根根据据规规格格说说明明的的每每一一个个输输出出条条件件,使用规则使用规则1。 根根据据规规格格说说明明的的每每一一个个输输出出条条件件,使用规则使用规则2。 如如果果程程序序的的规规格格说说明明给给出出的的输输入入域域或或输输出出域域是是有有序序集集合合(如如有有序序表表、顺顺序序文文件件等等),则则应应选选取取集集合合的的第第一一个个和和最最后后一一个元素作为测试用例。个元素作为测试用例。 如如果果程程序序用用了了一一个个内内部部结结构构,应应该该选选取取这这个内部数据结构的边界值作为测试用例。个内部数据结构的边界值作为测试用例。 分析规格说明,找出其他可能的边界条件。分析规格说明,找出其他可能的边界条件。3.3.3 错误推测法错误推测法 人人们们也也可可以以靠靠经经验验和和直直觉觉推推测测程程序序中中可可能能存存在在的的各各种种错错误误,从从而而有有针针对对性性地地编编写写检检查这些错误的例子。这就是错误推测法。查这些错误的例子。这就是错误推测法。 错误推测法的基本想法是:列举出程序错误推测法的基本想法是:列举出程序中所有可能有的错误和容易发生错误的特殊中所有可能有的错误和容易发生错误的特殊情况,根据它们选择测试用例。情况,根据它们选择测试用例。 3.3.4 因果图法因果图法 因因果果图图方方法法最最终终生生成成的的就就是是判判定定表表。它它适适合合于检查程序输入条件的各种组合情况。于检查程序输入条件的各种组合情况。 利用因果图生成测试用例的基本步骤如下。利用因果图生成测试用例的基本步骤如下。 分分析析软软件件规规格格说说明明的的描描述述中中哪哪些些是是原原因因,哪哪些些是是结结果果。原原因因是是输输入入条条件件或或输输入入条条件件的的等等价价类,结果是输出条件。类,结果是输出条件。 分分析析软软件件规规格格说说明明描描述述中中的的语语义义,找找出出原原因因与与结结果果之之间间、原原因因与与原原因因之之间间对对应的关系,根据这些关系,画出因果图。应的关系,根据这些关系,画出因果图。 标标明明约约束束条条件件。由由于于语语法法或或环环境境的的限限制制,有有些些原原因因和和结结果果的的组组合合情情况况是是不不可可能能出出现现的的。为为表表明明这这些些特特定定的的情情况况,在在因因果图上使用若干标准的符号标明约束条件。果图上使用若干标准的符号标明约束条件。 把因果图转换成判定表。把因果图转换成判定表。 为判定表中的每一列设计测试用例。为判定表中的每一列设计测试用例。 通通常常在在因因果果图图中中,用用Ci表表示示原原因因,Ei表表示结果,其基本符号如图示结果,其基本符号如图3-12所示。所示。图3-12 因果图的基本符号 对对于于黑黑盒盒测测试试方方法法来来说说,以以上上4种种方方法法是是基基本本的的测测试试方方法法,除除此此之之外外还还有有判判定定表表驱驱动动法、正交试验法、功能图法和场景法等。法、正交试验法、功能图法和场景法等。 在实际测试中,往往是综合使用各种方在实际测试中,往往是综合使用各种方法才能有效地提高测试效率和测试覆盖率,法才能有效地提高测试效率和测试覆盖率,这就需要认真掌握这些方法的原理,积累更这就需要认真掌握这些方法的原理,积累更多的测试经验,以有效地提高测试水平。多的测试经验,以有效地提高测试水平。 以以下下是是各各种种测测试试方方法法选选择择的的综综合合策策略略,可供读者在实际应用过程中参考。可供读者在实际应用过程中参考。 首首先先进进行行等等价价类类划划分分,包包括括输输入入条条件件和和输输出出条条件件的的等等价价划划分分,将将无无限限测测试试变变成成有有限限测测试试,这这是是减减少少工工作作量量和和提提高高测测试试效率最有效的方法。效率最有效的方法。 在在任任何何情情况况下下都都必必须须使使用用边边界界值值分分析析方方法法。经经验验表表明明,用用这这种种方方法法设设计计出出的的测试用例发现程序错误的能力最强。测试用例发现程序错误的能力最强。 可可以以用用错错误误推推测测法法追追加加一一些些测测试试用用例例,这需要依靠测试工程师的智慧和经验。这需要依靠测试工程师的智慧和经验。 对对照照程程序序逻逻辑辑,检检查查已已设设计计出出的的测测试试用用例例的的逻逻辑辑覆覆盖盖程程度度。如如果果没没有有达达到到要要求求的的覆盖标准,应当再补充足够的测试用例。覆盖标准,应当再补充足够的测试用例。 如如果果程程序序的的功功能能说说明明中中含含有有输输入入条条件件的的组组合合情情况况,则则一一开开始始就就可可选选用用因因果果图图法法和和判定表驱动法。判定表驱动法。 对对于于参参数数配配置置类类的的软软件件,要要用用正正交交试验法选择较少的组合方式达到最佳效果。试验法选择较少的组合方式达到最佳效果。 功功能能图图法法也也是是很很好好的的测测试试用用例例设设计计方方法法,我我们们可可以以通通过过不不同同时时期期条条件件的的有有效效性设计不同的测试数据。性设计不同的测试数据。 对对于于业业务务流流清清晰晰的的系系统统,可可以以利利用用场场景景法法贯贯穿穿整整个个测测试试案案例例过过程程,在在案案例例中中综合使用各种测试方法。综合使用各种测试方法。3.3.5 场景法场景法 现现在在的的软软件件几几乎乎都都是是用用事事件件触触发发来来控控制制流流程程的的,事事件件触触发发时时的的情情景景便便形形成成了了场场景景,而而同同一一事事件件不不同同的的触触发发顺顺序序和和处处理理结结果果就就形形成成事事件件流流。这这种种在在软软件件设设计计方方面面的的思思想想也也可可以以引引入入到到软软件件测测试试中中,可可以以比比较较生生动动地地描描绘绘出出事事件件触触发发时时的的情情景景,有有利利于于测测试试设设计计者者设设计计测测试试用用例例,同同时时使使测测试试用用例例更更容易理解和执行。容易理解和执行。 用用例例场场景景用用来来描描述述流流经经用用例例的的路路径径,从从用用例例开开始始到到结结束束遍遍历历这这条条路路径径上上所所有有基基本本流和备选流。流和备选流。1基本流和备选流基本流和备选流 如如如如图图图图3-143-14所所所所示示示示,图图图图中中中中经经经经过过过过用用用用例例例例的的的的每每每每条条条条路路路路径径径径都都都都用用用用基基基基本本本本流流流流和和和和备备备备选选选选流流流流来来来来表表表表示示示示,直直直直黑黑黑黑线线线线表表表表示示示示基基基基本本本本流流流流,是是是是经经经经过过过过用用用用例例例例的的的的最最最最简简简简单单单单的的的的路路路路径径径径。备备备备选选选选流流流流用用用用不不不不同同同同的的的的色色色色彩彩彩彩表表表表示示示示,一一一一个个个个备备备备选选选选流流流流可可可可能能能能从从从从基基基基本本本本流流流流开开开开始始始始,在在在在某某某某个个个个特特特特定定定定条条条条件件件件下下下下执执执执行行行行,然然然然后后后后重重重重新新新新加加加加入入入入基基基基本本本本流流流流中中中中(如如如如备备备备选选选选流流流流1 1和和和和3 3);也也也也可可可可能能能能起起起起源源源源于于于于另另另另一一一一个个个个备备备备选选选选流流流流(如如如如备备备备选选选选流流流流2 2),或或或或者者者者终终终终止止止止用用用用例例例例而而而而不不不不再再再再重重重重新新新新加加加加入入入入到到到到某某某某个个个个流(如备选流流(如备选流流(如备选流流(如备选流2 2和和和和4 4)。)。)。)。图图3-14 基基本本流流和和备备选选流流2ATM例子例子(1)例子描述)例子描述图图3-15所示是所示是ATM例子的流程示意图。例子的流程示意图。图3-15 ATM流程示意图 (2)场景设计)场景设计 表表3-8所示是生成的场景。所示是生成的场景。(3)用例设计)用例设计 对对于于这这7个个场场景景中中的的每每一一个个场场景景都都需需要要确确定定测测试试用用例例。可可以以采采用用矩矩阵阵或或决决策策表表来来确确定定和和管管理理测测试试用用例例。下下面面显显示示了了一一种种通通用用格格式式,其其中中各各行行代代表表各各个个测测试试用用例例,而而各各列列则则代代表表测测试试用用例例的的信信息息。本本示示例例中中,对对于于每每个个测测试试用用例例,存存在在一一个个测测试试用用例例ID、条条件件(或或说说明明)、测测试试用用例例中中涉涉及及的的所所有有数数据据元元素素(作作为为输输入入或或已已经经存存在在于于数数据据库库中)以及预期结果。中)以及预期结果。(4)数据设计)数据设计 一一旦旦确确定定了了所所有有的的测测试试用用例例,则则应应对对这这些些用用例例进进行行复复审审和和验验证证以以确确保保其其准准确确且且适适度,并取消多余或等效的测试用例。度,并取消多余或等效的测试用例。 测测试试用用例例一一经经认认可可,就就可可以以确确定定实实际际数数据据值值(在在测测试试用用例例实实施施矩矩阵阵中中)并并且且设设定定测试数据,如表测试数据,如表3-10所示。所示。3.4 测测 试试 用用 例例 设设 计计 3.4.1 测试用例的基本概念测试用例的基本概念 简简单单地地说说,测测试试用用例例就就是是设设计计一一个个情情况况,软软件件程程序序在在这这种种情情况况下下,必必须须能能够够正正常常运运行并且达到程序所设计的执行结果。行并且达到程序所设计的执行结果。 如如果果程程序序在在这这种种情情况况下下不不能能正正常常运运行行,而而且且这这种种问问题题会会重重复复发发生生,那那就就表表示示已已经经测测出出软软件件有有缺缺陷陷,这这时时候候就就必必须须将将这这个个问问题题标标示示出出来来,并并且且输输入入到到问问题题跟跟踪踪系系统统内内,通通知知软软件件开开发发人人员员。软软件件开开发发人人员员接接到到通通知知后后,将将问问题题修修改改完完成成于于下下一一个个测测试试版版本本内内,测测试试工工程程师师取取得得新新的的测测试试版版本本后后,必必须须利利用用同同一一个个测测试试用用例例来来测测试试这这个个问问题题,确保该问题已修改完成。确保该问题已修改完成。 在在测测试试时时,不不可可能能进进行行穷穷举举测测试试,为为了了节节省省时时间间和和资资源源,提提高高测测试试效效率率,必必须须要要从从数数量量极极大大的的可可用用测测试试数数据据中中精精心心挑挑选选出出具具有有代表性或特殊性的测试数据来进行测试。代表性或特殊性的测试数据来进行测试。 使使用用测测试试用用例例的的好好处处主主要要体体现现在在以以下下几几个方面。个方面。 在在开开始始实实施施测测试试之之前前设设计计好好测测试试用用例,可以避免盲目测试并提高测试效率。例,可以避免盲目测试并提高测试效率。 测测试试用用例例的的使使用用令令软软件件测测试试的的实实施施重点突出、目的明确。重点突出、目的明确。 在在软软件件版版本本更更新新后后只只需需修修正正少少部部分分的的测测试试用用例例便便可可开开展展测测试试工工作作,降降低低工工作作强度,缩短项目周期。强度,缩短项目周期。 功功能能模模块块的的通通用用化化和和复复用用化化使使软软件件易易于于开开发发,而而测测试试用用例例的的通通用用化化和和复复用用化化则则会会使使软软件件测测试试易易于于开开展展,并并随随着着测测试试用用例的不断精化其效率也不断提高。例的不断精化其效率也不断提高。 测试用例主要有如下几种。测试用例主要有如下几种。 功功能能测测试试用用例例。包包含含功功能能测测试试、健健壮性测试、可靠性测试。壮性测试、可靠性测试。 性性能能测测试试用用例例。包包含含性性能能测测试试、压压力测试、强度测试。力测试、强度测试。 集集成成测测试试用用例例。包包含含接接口口测测试试、健健壮性测试、可靠性测试。壮性测试、可靠性测试。 安全测试用例。安全测试用例。安全测试用例。安全测试用例。 用用户户界界面面测测试试用用例例。用用户户界界面面测测试试用用例例、少量功能测试用例。少量功能测试用例。 安安装装/反反安安装装测测试试用用例例。安安装装/反反安安装装测测试试用用例。例。测试种类、阶段和用例的关系如表测试种类、阶段和用例的关系如表3-11所示。所示。 测测试试工工作作和和开开发发通通常常一一同同进进行行,所所以以在在完完成成测测试试计计划划编编写写后后,就就可可以以进进行行用用例例的的编编写写工工作作了了。测测试试和和开开发发的的对对应应关关系系如如表表3-12所示。所示。3.4.2 测试用例的设计步骤测试用例的设计步骤 测测试试按按照照阶阶段段分分为为单单元元测测试试、集集成成测测试试以以及及系系统统测测试试。而而各各阶阶段段都都有有相相应应的的测测试试用用例例。这这里里,以以单单元元测测试试的的用用例例设设计计为为依依据来说明测试用例的设计步骤。据来说明测试用例的设计步骤。 单单元元测测试试说说明明实实际际上上由由一一系系列列单单元元测测试试用用例例组组成成,每每个个测测试试用用例例应应该该包包含含以以下下4个个关键元素。关键元素。 被被测测单单元元模模块块初初始始状状态态声声明明,即即测测试试用用例例的的开开始始状状态态(仅仅适适用用于于被被测测单单元元维维持了调用间状态的情况)。持了调用间状态的情况)。 被被测测单单元元的的输输入入,包包含含由由被被测测单单元元读入的任何外部数据值。读入的任何外部数据值。 该该测测试试用用例例实实际际测测试试的的代代码码,用用被被测测单单元元的的功功能能和和测测试试用用例例设设计计中中使使用用的的分分析析来来说明,如单元中哪一个决策条件被测试。说明,如单元中哪一个决策条件被测试。 测测试试用用例例的的期期望望输输出出结结果果。测测试试用用例例的的期期望望输输出出结结果果总总是是应应该该在在测测试试进进行行之之前前在在测试说明中定义。测试说明中定义。下面说明测试用例的设计步骤。下面说明测试用例的设计步骤。(1)步骤)步骤1:使被测单元运行:使被测单元运行这个阶段适合的技术有:这个阶段适合的技术有: 模块设计导出的测试;模块设计导出的测试; 对等区间划分。对等区间划分。(2)步骤)步骤2:正面测试:正面测试(Positive Testing) 这个阶段适合的技术有:这个阶段适合的技术有: 设计说明导出的测试;设计说明导出的测试; 等价类分析;等价类分析; 状态转换测试。状态转换测试。(3)步骤)步骤3:负面测试:负面测试(Negative Testing) 这个阶段适合的技术有:这个阶段适合的技术有: 错误猜测;错误猜测; 边界值分析;边界值分析; 内部边界值测试;内部边界值测试; 状态转换测试。状态转换测试。(4)步骤)步骤4:需求中其他测试特性用例设计:需求中其他测试特性用例设计这个阶段适合的技术有:设计说明导出的测试。这个阶段适合的技术有:设计说明导出的测试。(5)步骤)步骤5:覆盖率测试用例设计:覆盖率测试用例设计 这个阶段适合的技术有:这个阶段适合的技术有: 分支测试;分支测试; 条件测试;条件测试; 数据定义数据定义使用测试;使用测试; 状态转换测试。状态转换测试。 其中其中和和均属于逻辑覆盖范畴。均属于逻辑覆盖范畴。(6)步骤)步骤6:测试执行:测试执行(7)步骤)步骤7:完善代码覆盖:完善代码覆盖 这个阶段适合的技术有:这个阶段适合的技术有: 分支测试;分支测试; 条件测试;条件测试; 设计定义设计定义试验测试;试验测试; 状态转换测试。状态转换测试。最后,总结一下用例设计的一般原则。最后,总结一下用例设计的一般原则。 通通常常应应该该避避免免依依赖赖先先前前测测试试用用例例的的输输出出,测测试试用用例例的的执执行行序序列列早早期期发发现现的的错错误误可可能能导导致致其其他他的的错错误误而而减减少少测测试试执执行行时时实实际测试的代码量。际测试的代码量。 测测试试用用例例设设计计过过程程中中,包包括括作作为为试试验验执执行行这这些些测测试试用用例例时时,常常常常可可以以在在软软件件构构建建前前就就发发现现BUG。还还有有可可能能在在测测试试设设计计阶阶段比测试执行阶段发现更多的段比测试执行阶段发现更多的BUG。 在整个单元测试设计中,主要的输在整个单元测试设计中,主要的输入应该是被测单元的设计文档。在某些情入应该是被测单元的设计文档。在某些情况下,需要将试验实际代码作为测试设计况下,需要将试验实际代码作为测试设计过程的输入,测试设计者必须意识到不是过程的输入,测试设计者必须意识到不是在测试代码本身。在测试代码本身。 3.4.3 测试用例的编写1测试用例计划的编写测试用例计划的编写2测试设计说明测试设计说明3测试用例说明测试用例说明测试用例的编写请参考表3-13。 表3-13测试用例 4测试程序说明测试程序说明 图图3-16所示是所示是“Windows计算器计算器”的测的测试程序说明的例子片断。试程序说明的例子片断。 图3-16 测试程序说明片断 3.4.4 测试用例设计实例测试用例设计实例1软件设计说明导出的测试软件设计说明导出的测试2基本路径测试基本路径测试3等价类划分等价类划分4因果图法因果图法5边界值分析边界值分析3.4.5 测试用例的管理测试用例的管理 可可以以把把测测试试用用例例看看成成程程序序测测试试工工程程师师编编写写的的程程序序,这这个个程程序序也也要要经经过过“设设计计”、“开开发发”、“测测试试”、“版版本本管管理理”、“发发布布”、“维护维护”等一系列操作。等一系列操作。 1用例评审用例评审有效的用例评审通常由下面两种形式组成。有效的用例评审通常由下面两种形式组成。 测试部门外部评审测试部门外部评审 测试部门内部评审测试部门内部评审 通常情况下先执行内部评审,然后执行外通常情况下先执行内部评审,然后执行外部评审。很多时候,内部评审会被忽略,建议部评审。很多时候,内部评审会被忽略,建议要进行内部评审。要进行内部评审。 2用例管理用例管理版版本本管管理理是是用用例例管管理理的的核核心心部部分分,建建议议采采用用工工具具(例例如如Visual SourceSafe)对对用用例例进进行行控制。建议用例参照图控制。建议用例参照图3-19进行管理。进行管理。图3-19 用例管理示意图 部分资料从网络收集整理而来,供大家参考,感谢您的关注!
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号