论文部分内容阅读
软件测试贯穿于整个软件开发生命周期,是保证软件质量的重要手段。测试过程中,穷举测试是不可能的,但是我们又希望达到测试的完备性,同时使测试不会出现冗余。虽然等价类划分法、边界值分析法等方法能够在设计测试用例的时候,减少最终生成的测试用例的数目,但是在庞大或者复杂的系统中仍然会产生大量的用例。所以根据测试需求,制定一个合理的测试策略,创建一个规模合适的测试用例集是测试成功的关键。组合测试方法能够在保证检错能力的前提下,使用较少的测试用例对系统中某些因素相互作用而导致的软件故障进行检测。虽然现在组合测试用例生成方面已经取得了一定的研究成果,但是组合测试领域中还存在以下问题:生成最优组合测试用例集问题是NP完全问题,现有算法都可以进行改进;实际系统的复杂性导致常规的组合测试方法不能够适用。本文以提高组合测试用例生成的效果和增强组合测试方法的实用性为目标对组合测试用例生成技术进行研究。本文首先介绍了国内外对组合测试用例生成技术的研究现状,对现有组合测试用例生成方法进行了分析、对比与总结,现有的基于one test at a time和inparameter order策略的方法生成的测试用例集都是近似最优,可以进行改进,基于此,本文提出了一种one pair at a time策略,该策略以配对为粒度进行测试用例集的生成,并在该策略下形成了一种基于贡献度的两两组合测试用例生成方法,该方法首先生成满足覆盖需求的有序配对集,然后根据有序配对集生成初始用例集,最后对初始用例集进行简约,获得最终测试用例集。实验结果表明该方法简单高效,而且生成的测试用例数目较少。同时对该方法进行扩展,使其能够处理N维组合测试和带种子用例的组合测试。其次,针对某些系统输入模型的各个输入参数之间存在相互依赖或者约束关系问题,分析了约束对现有用例生成方法的影响,提出一种带约束的组合测试用例生成方法。该方法首先对系统约束集进行处理,提取出蕴含约束,然后按照水平扩展和垂直扩展进行测试用例集的生成。实验验证了该算法不仅能够有效地处理参数之间的约束关系,而且能够减少常规IPO方法测试用例生成的步骤,使测试用例生成过程更加高效。最后基于上述方法,提出组合测试用例生成框架,并在该框架下开发了一个组合测试用例生成原型系统工具。该工具能够自动地生成较少的测试用例并且能够处理实际系统中的约束问题。