软件测试中,测试用例要怎么分析才能全部覆盖而不遗漏?请分别对黑...
测试是无法全尽的,无法遍历的。
但是我们可以通过一定的测试方法,设计测试用例,用较少的测试用例覆盖最大的范围,发现最多的bug。
黑盒测试(等价类划分法,边界值分析法)和白盒测试 (语句覆盖,判定覆盖,条件覆盖 ,基本路径覆盖,等等)都是从不同的角度来思考如何用较少的测试用例覆盖最大的范围。
在实际测试当中,通常为了提高覆盖,我们需要组合使用这些测试方法,并不一定只采用一个。
边界值分析法:? 如果输入了条件规定了值的范围,则应取刚达到这个范围的边界值,以及刚刚超越这个边界范围的值作为测试输入数据;? 如果输入条件规定了值的个数,则用最大个数、最小个数、比最大多1、比最小小1的数作为测试输入数据;? 根据规格说明的每个输出条件,使用前面的原则;? 如果程序的规格说明给出的输入输出域是有序集合,则应选取集合的每一个元素和最后一个元素作为测试用列;? 如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试案例;? 分析规格说明,找出其他可能的边界条件。
边界条件是指软件计划的操作界限所在的边缘条件。
等价类划分法:? 如果输入条件决定了取值范围,或值的个数,则可以确立一个有效等价类和两个无效等价类。
? 如果输入条件规定了输入值的集合,或者规定了“必须如何”的条件,此时可确立一个有效等价类和一个无效等价类;? 如果输入条件是一个布尔量,则可以确定一个有效等价类和一个无效等价类;? 如果规定了输入数据的一组值,而且程序对每个输入值分别进行处理,此时可为每一个输入值确立一个有效等价类,此外,针对这组值确立一个无效等价类,它是所有不允许输入值的集合;? 如果规定了输入数据必须遵守的规则,则可以确立一个有效等价类(符合规则)和若干个无效等价类(从不同的角度违反规则)。
? 如果确知,已划分的等价类中各元素在程序中的处理方式不同,则应将此等价类进一步划分成更小的等价类。
基本路径覆盖:在程序控制流图的基础上,通过分析程序控制流图的环路复杂性,导出基本可执行路径的集合,然后据此设计测试用例。
设计出的测试用例要保证在测试中程序的每一条可执行语句至少执行一次。
条件判定组合覆盖:设计足够多的测试用例,使得判定中的每个条件的所有可能(真/假)至少出现一次,并且每个判定本身的判定结果也至少出现一次。
软件测试白盒测试数据流问题
一般数据流测试要求有比较强的开发能力,而且对目标软件的设计结构要很了解。
测试软件应当相当于驱动开发,并且能够:1、定义一个路径格式文件;2、调用一个数据插入的格式化文件,毕竟各节点的收据不能手工输入,也不能每次都改测试驱动程序;3、把路径和数据的读入、创建过程(一般调用测试目标)和验证过程分开,每行用例参数中必须制定一个预期结果(理论输出指标,如果是模拟系统就要详细考虑精度问题了);4、最后白盒自动化测试要考虑有,有测试数据清除的功能。
我谈的是实现,如果想学习数据流测试的理论方法,可以参考:http://wenku.baidu.com/link?url=TXBLvODidmNwrToiQC6-5GwQWMLaN-6gbFO_OLw2qXDmNWKDuCfWzhWXq2BkFOls64uDNhCBuy5eIQbq34f_vnd9TaXACPkyqiHpCJZZzva希望回答对您有帮助。
软件测试中什么是白盒测试 黑盒测试
白盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作。
这一方法是把测试对象看作一个打开的盒子,测试人员依据程序内部逻辑结构相关信息,设计或选择测试用例,对程序所有逻辑路径进行测试,通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。
采用什么方法对软件进行测试呢?常用的软件测试方法有两大类:静态测试方法和动态测试方法。
其中软件的静态测试不要求在计算机上实际执行所测程序,主要以一些人工的模拟技术对软件进行分析和测试;而软件的动态测试是通过输入一组预先按照一定的测试准则构造的实例数据来动态运行程序,而达到发现程序错误的过程。
白盒测试的测试方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、Z路径覆盖、程序变异。
白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。
其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。
六种覆盖标准:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖发现错误的能力呈由弱至强的变化。
语句覆盖每条语句至少执行一次。
判定覆盖每个判定的每个分支至少执行一次。
条件覆盖每个判定的每个条件应取到各种可能的值。
判定/条件覆盖同时满足判定覆盖条件覆盖。
条件组合覆盖每个判定中各条件的每一种组合至少出现一次。
路径覆盖使程序中每一条可能的路径至少执行一次。
"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。
"白盒"法是穷举路径测试。
在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。
贯穿程序的独立路径数是天文数字。
但即使每条路径都测试了仍然可能有错误。
第一,穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。
第二,穷举路径测试不可能查出程序中因遗漏路径而出错。
第三,穷举路径测试可能发现不了一些与数据相关的错误。
如何挑选白盒测试工具 白盒测试目前主要用在具有高可靠性要求的软件领域,例如:军工软件、航天航空软件、工业控制软件等等。
白盒测试工具在选购时应当主要是对开发语言的支持、代码覆盖的深度、嵌入式软件的测试、测试的可视化等。
对开发语言的支持:白盒测试工具是对源代码进行的测试,测试的主要内容包括词法分析与语法分析、静态错误分析、动态检测等。
但是对于不同的开发语言,测试工具实现的方式和内容差别是较大的。
目前测试工具主要支持的开发语言包括:标准C、C++、Visual C++、Java、Visual J++等。
代码的覆盖深度:从覆盖源程序语句的详尽程度分析,逻辑覆盖标准包括以下不同的覆盖标准:语句覆盖、判定覆盖、条件覆盖、条件判定组合覆盖、多条件覆盖和修正判定条件覆盖。
·语句覆盖 为了暴露程序中的错误,程序中的每条语句至少应该执行一次。
因此语句覆盖(Statement Coverage)的含义是:选择足够多的测试数据,使被测程序中每条语句至少执行一次。
语句覆盖是很弱的逻辑覆盖。
·判定覆盖 比语句覆盖稍强的覆盖标准是判定覆盖(Decision Coverage)。
判定覆盖的含义是:设计足够的测试用例,使得程序中的每个判定至少都获得一次“真值”或“假值”,或者说使得程序中的每一个取“真”分支和取“假”分支至少经历一次,因此判定覆盖又称为分支覆盖。
·条件覆盖 在设计程序中,一个判定语句是由多个条件组合而成的复合判定。
为了更彻底地实现逻辑覆盖,可以采用条件覆盖(Condition Coverage)的标准。
条件覆盖的含义是:构造一组测试用例,使得每一判定语句中每个逻辑条件的可能值至少满足一次。
·多条件覆盖 多条件覆盖也称条件组合覆盖,它的含义是:设计足够的测试用例,使得每个判定中条件的各种可能组合都至少出现一次。
显然满足多条件覆盖的测试用例是一定满足判定覆盖、条件覆盖和条件判定组合覆盖的。
·修正条件判定覆盖 修正条件判定覆盖是由欧美的航空/航天制造厂商和使用单位联合制定的“航空运输和装备系统软件认证标准”,目前在国外的国防、航空航天领域应用广泛。
这个覆盖度量需要足够的测试用例来确定各个条件能够影响到包含的判定的结果。
它要求满足两个条件:首先,每一个程序模块的入口和出口点都要考虑至少要被调用一次,每个程序的判定到所有可能的结果值要至少转换一次;其次,程序的判定被分解为通过逻辑操作符(and、or)连接的布尔条件,每个条件对于判定的结果值是独立的。
不同的测试工具对于代码的覆盖能力也是不同的,通常能够支持修正条件判定覆盖的测试工具价格是极其昂贵的。
嵌入式软件的测试:对于嵌入式软件的测试,我们还需要一方面进一步考虑测试工具对于嵌入式操作系统的支持能力,例如DOS、Vxworks、Neculeus、Linux和Windows CE等;另一方面还需要考虑测试工具对于硬件平台的支持能力,包括是...
如何搭建软件白盒测试环境
白盒测试环境主要有驱动、桩、测试用例和测试结果四个部分,测试环境模型如下: 上图可以看出,被测模块通过桩的支撑,被测试驱动通过预定的测试用例控制运行,由于被测模块的运行过程是可控状态下的,所以其结果是也可预期的,使驱动最终自动给出测试结果成为可能。
按上图的提示,完成一个简单的软件模块(比如单个函数或者几个函数)测试是比较轻松的事,但是事实上我们面临的测试往往是针对一个大的项目的,不是几个函数那么简单,大的项目中模块一般分好多种类并且可扩充的。
所以我们在搭建测试环境的时候还需要考虑很多问题,比如测试驱动的扩展、用例的扩展、回归测试的自动实现等。
下面基于IPLD平台测试项目,就如何搭建一个相对完美的测试环境进行技术的探讨。
1、被测项目分析 XLD平台是####装置保护程序运行平台,为装置上应用程序的运行提供底层功能支撑,该平台包含多个模块,每个模块下面有多个函数,这些模块和函数都是可以扩展的。
下面列出两个模块进行示例(每个模块暂列出两个函数): 1)双向链表模块 对应头文件:lb.h,实现文件:lb.c 包含函数:增加节点函数:Lb_add 删除节点函数:Lb_del 2)数据队列模块 对应头文件:gm.h,实现文件:gm.c 包含函数:初始化函数:gm_init() 周期发送函数:gm_retranse 2、测试用例设计 作为参数或者其他条件,通过驱动控制被测模块按特定的路径运行,达到测试要求。
考虑到回归测试及团队协作等因素,用例的设计采用和代码脱离的原则,这样一方面修改测试用例的时候不用重新编译代码,另一方面测试组内成员可以在各自测试范围内设计自己的测试用例。
由于测试用例的量不是特别大,还不至于需要用数据库,所以测试用例采用文件的方式实现。
这里用例文件采用配置文件(后缀名*.ini)格式,比如双向链表模块的测试用例,设计如下: 文件名”双向链表.ini” 文件内容按被测函数分块,每一块代表一个函数的测试用例,如下: [Lb_add]用例1 = 用例1信息用例2 =用例2信息 [Lb_del]用例1 = 用例1信息用例2 =用例2信息 出于便捷和可维护性考虑,这里测试用例定义统一的文件格式。
我们可以在驱动中设计可重用的用例读取函数,以便测试组内人员重用。
软件白盒测试的软件白盒测试法的覆盖标准
六种覆盖标准:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖发现错误的能力呈由弱至强的变化。
语句覆盖每条语句至少执行一次。
判定覆盖每个判定的每个分支至少执行一次。
条件覆盖每个判定的每个条件应取到各种可能的值。
判定/条件覆盖同时满足判定覆盖条件覆盖。
条件组合覆盖每个判定中各条件的每一种组合至少出现一次。
路径覆盖使程序中每一条可能的路径至少执行一次。
请问软件测试的白盒和黑盒有什么区别啊,有人知道吗?
黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。
白盒测试:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否以经过检查。
瑭锦学院解释软件的黑盒测试意味着测试要在软件的接口处进行。
这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。
因此黑盒测试又叫功能测试或数据驱动测试。
瑭锦学院软件的白盒测试是对软件的过程性细节做细致的检查。
这种方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。
通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。
因此白盒测试又称为结构测试或逻辑驱动测试
黑盒测试与白盒测试的区别
首先纠正 这个问题不属于“硬件”类的什么是黑盒测试和白盒测试?任何工程产品(注意是任何工程产品)都可以使用以下两种方法之一进行测试。
黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。
白盒测试:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否以经过检查。
软件的黑盒测试意味着测试要在软件的接口处进行。
这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。
因此黑盒测试又叫功能测试或数据驱动测试。
黑盒测试主要是为了发现以下几类错误:1、是否有不正确或遗漏的功能?2、在接口上,输入是否能正确的接受?能否输出正确的结果?3、是否有数据结构错误或外部信息(例如数据文件)访问错误?4、性能上是否能够满足要求?5、是否有初始化或终止性错误?软件的白盒测试是对软件的过程性细节做细致的检查。
这种方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。
通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。
因此白盒测试又称为结构测试或逻辑驱动测试。
白盒测试主要是想对程序模块进行如下检查:1、对程序模块的所有独立的执行路径至少测试一遍。
2、对所有的逻辑判定,取“真”与取“假”的两种情况都能至少测一遍。
3、在循环的边界和运行的界限内执行循环体。
4、测试内部数据结构的有效性,等等。
以上事实说明,软件测试有一个致命的缺陷,即测试的不完全、不彻底性。
由于任何程序只能进行少量(相对于穷举的巨大数量而言)的有限的测试,在未发现错误时,不能说明程序中没有错误。
什么是白盒测试?
白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。
白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。
"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。
"白盒"法是穷举路径测试。
在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。
贯穿程序的独立路径数是天文数字。
白盒测试的工具挑选
白盒测试主要用在具有高可靠性要求的软件领域,例如:军工软件、航天航空软件、工业控制软件等等。
白盒测试工具在选购时应当主要是对开发语言的支持、代码覆盖的深度、嵌入式软件的测试和测试的可视化等。
从覆盖源程序语句的详尽程度分析,逻辑覆盖标准包括以下不同的覆盖标准:语句覆盖、判定覆盖、条件覆盖、条件判定组合覆盖、多条件覆盖和修正判定条件覆盖。
1.语句覆盖 为了暴露程序中的错误,程序中的每条语句至少应该执行一次。
因此语句覆盖(Statement Coverage)的含义是:选择足够多的测试数据,使被测程序中每条语句至少执行一次。
语句覆盖是很弱的逻辑覆盖。
2.判定覆盖比语句覆盖稍强的覆盖标准是判定覆盖(Decision Coverage)。
判定覆盖的含义是:设计足够的测试用例,使得程序中的每个判定至少都获得一次“真值”或“假值”,或者说使得程序中的每一个取“真”分支和取“假”分支至少经历一次,因此判定覆盖又称为分支覆盖。
3.条件覆盖在设计程序中,一个判定语句是由多个条件组合而成的复合判定。
为了更彻底地实现逻辑覆盖,可以采用条件覆盖(Condition Coverage)的标准。
条件覆盖的含义是:构造一组测试用例,使得每一判定语句中每个逻辑条件的可能值至少满足一次。
4.多条件覆盖。
多条件覆盖也称条件组合覆盖,它的含义是:设计足够的测试用例,使得每个判定中条件的各种可能组合都至少出现一次。
显然满足多条件覆盖的测试用例是一定满足判定覆盖、条件覆盖和条件判定组合覆盖的。
5.修正条件判定覆盖。
修正条件判定覆盖是由欧美的航空/航天制造厂商和使用单位联合制定的“航空运输和装备系统软件认证标准”,在国外的国防、航空航天领域应用广泛。
这个覆盖度量需要足够的测试用例来确定各个条件能够影响到包含的判定的结果。
它要求满足两个条件:首先,每一个程序模块的入口和出口点都要考虑至少要被调用一次,每个程序的判定到所有可能的结果值要至少转换一次;其次,程序的判定被分解为通过逻辑操作符(and、or)连接的布尔条件,每个条件对于判定的结果值是独立的。
不同的测试工具对于代码的覆盖能力也是不同的,通常能够支持修正条件判定覆盖的测试工具价格是极其昂贵的。
白盒测试是工作量巨大并且枯燥的工作,可视化的设计对于测试来说是十分重要的。
在选购白盒测试工具时,应当考虑该款测试工具的可视化是否良好,例如:测试过程中是否可以显示覆盖率的函数分布图和上升趋势图,是否使用不同的颜色区分已执行和未执行的代码段显示分配内存情况实时图表等,这些对于测试效率和测试质量的提高是具有很大的作用的。
关于软件测试的测试用例应该学习哪些内容?
首先记好测试用例的八大编写必备要素:模块、版本、时间、编号、流程、输入数据、预期结果、实际输出编写测试用例时能够运用到的方法有黑盒:等价类划分法、场景分析法、边界值法、错误推测法、因果图法。
白盒:逻辑法、条件判断法、语句覆盖法