2014组合测试解析.ppt

上传人:得****1 文档编号:74918694 上传时间:2023-03-01 格式:PPT 页数:24 大小:607.50KB
返回 下载 相关 举报
2014组合测试解析.ppt_第1页
第1页 / 共24页
2014组合测试解析.ppt_第2页
第2页 / 共24页
点击查看更多>>
资源描述

《2014组合测试解析.ppt》由会员分享,可在线阅读,更多相关《2014组合测试解析.ppt(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、 组合测试绪论n软件系统的故障往往是由一些难以预料的系统因素及其相互作用而引起的,为了检测这些故障,必须设计一组测试用例,对系统因素的各种组合情况进行充分覆盖的测试。n通过对各个参数的不同输入数据进行组合,可以验证软件系统在不同条件下的行为。例如:对于微软的 Word 软件,其字体设置对话框总共有19个输入参数需要设置.n经过等价类划分和边界值处理后,如果进行全组合的测试,那么会产生上万个测试用例。n充分组合测试的最终测试用例数是庞大的,如何从中选择一个规模较小的、能更有效的找出软件故障的子集作为测试用例集是测试用例生成中一个很重要的问题。绪论n根据研究统计表明,很多程序的错误都是由少数几个参

2、数及参数之间的相互作用而导致。Willace 和 Kuhn 等人在美国国家标准与技术协会(NIST)期刊上发表的论文指出:经过大量的调查研究后发现,在软件控制的医疗系统中,98%的故障是由变量对之间的交互所导致的;Kuhn 和 Reilly 等人在对 Mozilla 浏览器的错误报告进行分析和研究后表明:该系统的 70%以上的错误是由 2 个以内的参数相互作用而引发的,90%以上的错误是由 3个以内的参数相互作用而引发的。绪论n组合测试其基本思想是从统计学的角度对测试实验进行设计。该方法设计的测试用例以参数及参数之间的交互为覆盖标准,虽然不能够进行完全的测试,但是利用该方法进行的测试得到的结果

3、能够在一定程度上反映系统的内部规律,具有一定的代表性。n这种方法对由系统输入、外部事件等相互作用而产生的故障系统,具有较强的检错能力。n目前,对组合测试用例生成方法的研究主要包括:n两两组合测试用例生成技术nN 维组合测试用例生成技术n变力度组合测试用例生成技术n带优先级的组合测试用例生成技术n带约束的组合测试用例生成技术n组合测试中错误定位技术绪论两两组合覆盖测试用例生成示例n假设系统有3个因素,每个因素有3个不同的取值,分别为A1,A2,A3;B1,B2,B3;C1,C2,C3。对于测试用例 t=(A1,B1,C1),其对应的两两组合表示是一个集合S=(A1,B1),(A1,C1),(B1

4、,C1),如图所示:测试用例 t=(A1,B1,C1)覆盖了(A1,B1),(A1,C1),(B1,C1)3个两两组合元素。两两组合覆盖测试举例n一个网络信息系统如表所示,需要进行兼容性测试,如果需要进行完全的测试,那么该系统需要 81 个测试用例,但是如果采用两两组合测试技术进行测试,只需要 9 个测试用例。两两组合覆盖测试举例两两组合覆盖测试举例两两组合测试用例设计方法n生成最优的两两组合测试用例集的问题已经被证明是一个 NP 问题。n在实际的测试用例生成过程中,一般尝试用各种近似算法求解。这些方法大致可以分为如下几类:数学构造法、贪心算法、元启发式算法。n不同的测试用例集所覆盖的两两组合

5、元素数量不同。在同样大小的测试用例集的条件下,覆盖的两两组合元素数量越多,表明该测试用例集的测试效果越好。n 数学构造法 目前的数学构造方法基本上都是基于正交矩阵,并在此基础上开发了组合测试用例生成工具。比如:Bell 实验室研发的 CATS 工具,Williams 开发的 Tconfig 工具,IBM Haifa 研究院的 WHITCH 项目。代数方法由于各种代数结构的限制,仅适用于成对组合覆盖测试用例的自动生成,不容易被扩展到更高维数的组合覆盖的测试用例的自动生成中。两两组合测试用例设计方法开始时,由于A、B、C三个元素的最低水平数为2,我们则以因素为3,水平数为2来选择正交表,并进行用例

6、的生成。此时测试用例集为(A1,B1,C1),(A1,B2,C2),(A2,B1,C2),(A2,B2,C2)。此时,未被覆盖的成对组合W=(A1,C3),(A2,C3),(B1,C3),(B2,C3)。在W中,A1出现1次,A2出现1次,B1出现1次,B2出现1次,C3出现3次,因此,选择出现次数最多的C3产生测试用例T5=(*,*,C3)。接下来,要从A1,A2中挑选一个作为因素A的水平值。若选择A1,则可以覆盖(A1,C3);若选择A2,则可以覆盖(A2,C3)。不妨选择A1,则T5=(A1,*,C3)。下面要从B1,B2中挑选一个作为因素B的水平值。若选择B1,则可以覆盖W中的(B1,

7、C3);若选择B2,则可以覆盖W中的(B2,C3)。由于选择B1,B2所覆盖的W中的成对组合个数相同,不妨选择B2,即T5=(A1,B2,C3),此时未被覆盖的成对组合集合W=(A2,C3),(B1,C3)。按照同样方法,可得到T6=(A2,B1,C3)。加入T6后,W为空。生成过程结束。n正交设计法举例 存在不足:1)正交矩阵问题一直是组合数学界研究的问题,目前小规模的正交表已经被构造出来,但是对于大规模的正交矩阵的构造目前还没有很好的方法。2)现在学术界对于对称正交表的研究较多,对于混合水平的正交表的构造研究较少,而混合水平的正交表更加符合实际项目的组合测试需求。3)在正交矩阵中每个组合出

8、现的次数是一样的,这在组合测试中不是必须的,只需要每个组合被覆盖一次就可以,所以依据正交实验设计得到的两两组合测试用例集中可能含有冗余的测试用例。n正交设计法 贪心算法的思想是从空矩阵开始,逐行或者逐列地扩展矩阵,直到所有的t组合都被覆 盖。按 照 策 略 的 不 同,些 贪 心 算 法 可 以 分 为 使 用 逐 条 生 成 测 试 用 例(one-test-at-a-time)策略和逐参数扩展(in-parameter-order)策略两种不同的策略。其中,one-test-at-a-time策略是使用一维扩展的扩展方式,IPO策略是一种二维扩展的扩展方式。n贪心算法基于one-test-

9、at-a-time策略的算法n即一维扩展方式,是在构造覆盖数组时,按照贪心策略依次增加一行,使得这一行覆盖一些未覆盖的t元组,直到所有t元组都被覆盖。使用one-test-at-a-time策略,理想的情况是使用全局贪心算法,即在每次选择测试用例时,选择能最大限度覆盖Uncover中组合的用例。nAETG是美国贝尔实验室的D.M.Cohen和S.R.Dalal等人根据启发式方法研制的测试数据生成工具。该工具可以根据测试要求,产生满足因素的成对组合覆盖或多个因素的组合覆盖测试数据。nAETG开始于一个空的测试用例集,每次往测试用例集加入一个测试用例。为了得到一个新的测试用例,首先根据贪心算产生一

10、组候选用例,然后从中选择能够覆盖最多未被覆盖的成对组合的用例。n类似算法有:CAST,TCG,DDA,PSSA等。基于one-test-at-a-time策略的算法n设某个被测系统有3个因素(A、B、C),因素A有2个值(A1和A2),因素B有2个值(B1和B2),因素C有3个值(C1、C2、C3)。n根据AETG算法,测试用例生成过程如下图所示。基于one-test-at-a-time策略的算法基于one-test-at-a-time策略的算法(2)逐参数扩展策略 逐参数扩展策略与逐条用例扩展策略的不同之处在于逐参数扩展是以参数为单位进行扩展,如果只有一个参数需要扩展,那么直接添加到系统中即

11、可,当有多个参数需要扩展时,就要对参数进行排序,然后将参数取值个数最多的一个的参数作为候选的参数。由于每个参数都有不同的取值,使用贪心算法来选择合适的参数值添加到相应的测试用例中,当仍然有未被覆盖的组合时,需要添加新的测试用例来覆盖这些漏掉的组合。n贪心算法nIPO 算法 美国北卡罗莱纳大学计算机系的 Y.Lei 和 K.C.Tal 提出一种基于参数顺序的渐进扩展的两两组合覆盖测试数据生成方法。与 AETG 算法不同,IPO 算法的基本思想是以参数为对象,初始时先生成满足组合覆盖的测试要求的用例集合 T,然后一个个扩展剩余的参数,直至所有的参数都被包涵到测试用例中,并在算法中时刻都尽可能使测试

12、集个数大小保持最优。n贪心算法nIPO算法包括两个核心步骤:水平扩展和垂直扩展。在这两个维度的扩展上,算法根据一定的因素来决定参数扩展和取值的次序。以两两组合覆盖为例,从这两个维度来讨论IPO算法的影响因素及可扩展点。n在水平扩展时,算法需要为矩阵增加一个参数列,给这一列上的每一项赋值,尽可能的覆盖更多的未覆盖t元组。因此,从以下三个影响因子:新增参数列的选择、已有测试用例集的扩展次序、新增参数的取值选择进行分析。n水平扩展后,算法可能还未完全覆盖已扩展参数的两两组合,因此,还需要进行垂直扩展,即增加新的测试用例以覆盖尚未覆盖的二元组。从上述例子中可以看出,垂直扩展是将尚未扩展的用例直接作为新

13、增用例加入。这将形成新增用例中存在一些no-care位,如何在后续扩展中为这些no-care位赋值也将影响IPO算法的结果。nIPO 算法nIPO 算法举例nIPO 算法举例n贪心算法的基本思想是从小到大构造矩阵,直到所有的覆盖条件都得到满足另外一种寻找最优的(或者较优的)覆盖数组的方法是,利用一个已有的数组,通过合适的变换得到一个更优的覆盖矩阵这样,通过逐次变换得到较优的矩阵为了避免陷入局部最优,算法采用了一些启发式的策略,通过多样化或变异的方法跳出局部最优点元启发式搜索算法n元启发式算法主要可以分为两类:个体搜索算法(Individual Search)和群体搜索算法(Population Search)。其中,个体搜索算法以单个可行解进行迭代,包括常见的爬山算法、模拟退火算法、洪水算法、禁忌搜索算法等。群体搜索算法以可行解的集合进行迭代,包括常见的遗传算法、蚁群算法等。n相对于贪心算法,元启发式搜索算法能够给出较优的近似结果。但是大部分元启发式搜索算法都需要同时变换多个矩阵,进行多次变换,因而运行时间一般比较长。目前元启发式搜索算法主要停留在研究阶段,很少有实用的工具采用启发式搜索算法。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作报告

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁