论文部分内容阅读
在保证软件产品质量方面,软件测试是一种非常重要的手段,其可以增强软件产品的可靠性,但同时它也非常耗费人力和时间。类簇级测试又称集成测试,它是面向对象软件测试中不可或缺的部分,因为类簇中各类之间关系的正确实现是靠它来进行检查的。类簇测试需要对大量的类及类间交互做测试,使用传统的顺序测试方式,次只能测试一个待测对象,需要花费大量的时间。在类簇级测试中应用多线程技术,可以在多核系统中创建多个执行线程,以并行的方式执行集成测试用例。多线程技术可以使处理器资源得到充分的利用,从而会有效缩短软件测试所需的时间。传统的并行化集成测试策略是基于程序功能分解的方法,将较大的程序分解成多个相互独立的子任务,然后对子任务进行并行化处理。而面向对象程序的组成单位是类,类具有继承、封装和多态等特性,面向对象程序不再具有层次结构,各类之间的静态调用关系形成错综复杂的网。这使得传统的基于程序分解的并行化测试任务方法不再适用于类簇级测试。对类集成测试任务并行化就是让彼此间没有联系的类可以在多线程控制下同时进行测试,类簇测试顺序是研究中的重要的问题之一。采用适当的类簇测试顺序进行测试,可以有效降低构造测试桩花费的代价。类之间具有继承、聚集和关联等关系,复杂的类簇关系往往会形成有向的环路。为了确定测试的起始位置需要先将环路打破,关联关系是所有关系中耦合程度最弱的,因此,本文采取打破关联关系的边。为了计算打破的关联关系边的关联程度,使用类间耦合度量的方式计算构造的测试桩复杂度,并提出一种综合考虑节点度数、环路数和测试桩复杂度的破环方法。再对消除环路的对象关系图进行并行性分析,同时设计了两种并行算法,一种是分层并行算法,一种是扩展分层并行算法。前者在同一层中类节点测试任务执行时间相近的情况下效率最高,后者避免了分层算法中同一层节点相互等待而浪费时间,又考虑了线程数目对测试时间的影响。