论文部分内容阅读
依赖性分析和程序切片,是一种程序分解技术,在软件工程的诸多领域都有广泛应用。现代软件规模的巨大和复杂使得设计和测试这些软件极其困难,其中软件测试通常要占到开发成本的50%甚至更多,提高软件测试效率,对于降低软件开发成本,加快软件开发周期有直接的作用。由于现代软件系统的巨大规模,真正的实用的测试方法总是根据情况和要求,有侧重点的进行,这就使得依赖性分析在软件测试过程中有着重要意义。平衡软件测试的效率和效果是当前软件测试具有理论意义和实际价值的热点问题。程序切片和依赖性分析是重要的程序分解技术,将依赖性分析应用于软件测试可以使得软件测试更有目的性和针对性,在有条件的保证软件测试效果的前提下,有效地提高软件测试效率。基于对依赖性分析在软件测试中的应用能力分析,本文进行了以下一些研究工作:软件测试数据自动生成是软件测试的一个重要研究领域,其中数组变量和指针变量导致的变量不确定问题是测试数据自动生成中的一个困难问题,本文通过理论分析得出非定态路径约束解空间可进一步划分为多个子空间的结论。基于分析结论,利用一种特殊的程序切片技术,本文给出一个将非定态路径的测试转换为定态路径测试的算法。通过分析EFSM不同测试序列的依赖关系模式(切片),可以有效的约减测试集,提高测试效率。由于EFSM依赖关系的特殊性,对于EFSM依赖图,现有的基于标志已访问节点的遍历算法不适于解决该问题。本文对EFSM的依赖关系的传递性进行了分析,并给出一个基于变迁的EFSM后向切片算法。修改影响分析本质上也属于约减测试用例的范畴,通过分析修改的软件部分与软件其他部分的依赖性关系,确定需要重新测试的部分,从而避免了对整个软件的完全重新测试,提高了测试效率。本文针对面向对象程序,提出类成员后向切片方法以找出所有被修改所影响的类成员。该方法比类防火墙技术的精度要高,复杂度低于语句级粒度分析方法。现代软件中,并发程序设计得到越来越普遍的应用。然而,并发程序的依赖性分析有着其特殊的复杂性,在这方面,本文进行的研究工作有:为了使程序切片技术能应用于更广泛的并发程序,我们在现有算法的基础上,并进一步考虑到互斥体间可能存在的同时有定义和引用关系的情况,将现有的并发程序切片算法推广到可以计算有互斥机制的并发程序的程序切片,得到了更为精确的切片算法。