论文部分内容阅读
软件测试对于检测软件开发和维护过程中的软件故障至关重要。软件测试的有效性主要由测试用例集的质量决定,高质量的测试用例集可以有效发现被测软件(SUT)的故障。另一方面在验证测试充分性和有效性时,通常采用测试覆盖准则。在软件测试中,模型是软件在特定层面的抽象表示,例如被测软件的期望行为、测试策略和测试环境。EFSM模型是一种常用的模型,能够更准确的描述被测软件。EFSM模型中常用的测试覆盖准则包括基于状态或迁移的覆盖准则。依赖分析是一种重要的分析技术,可以用于测试覆盖准则。有研究表明,在EFSM模型中利用数据依赖作为覆盖准则能够很好的检测出数据流的故障,但EFSM模型由于具有非终止性和非决定性,传统基于程序的控制依赖关系不能用于EFSM模型。控制依赖可以反映EFSM模型中最为重要的结构信息,基于控制依赖的测试覆盖准则相比于基于状态或迁移的覆盖准则,能更好地检测出控制流的故障,同时避免在EFSM模型采用基于数据流的覆盖准则检测故障的测试不完备性。课题组前序研究提出了 EFSM新型控制依赖关系,本课题在研究基于控制依赖关系的测试覆盖准则的基础上,进一步结合EFSM模型中的数据依赖关系提出了基于复合依赖关系的覆盖准则,解决了数据流和控制流故障检测上存在的测试不完备性。本课题还研究了控制依赖和数据依赖的包含关系并给出了证明过程。通过实例分析得出:基于控制依赖生成的路径能够发现基于数据依赖生成的路径未能发现的故障。本课题进一步给出了基于复合依赖关系覆盖准则的测试方法框架,介绍了复合依赖关系生成的算法以及路径生成的规则。为了对覆盖准则的有效性进行进一步验证,本课题选取了 EFSM模型中十个常用的基准模型,实验验证了控制依赖和数据依赖的非相互包含关系;相比于数据依赖覆盖和迁移覆盖这两种常用测试覆盖准则,基于复合依赖关系覆盖准则具有更高的故障检测率。实验同时对比了三种新型控制依赖覆盖准则生成的测试用例集的故障检测率,发现NTSCD和UNTICD更适合应用于复合依赖关系覆盖准则中。