关于Fault Modeling using the Program Dependence Graph 的读书笔记(4)
MSE 2004,perdubug,2004.6.1
E. Mutation Testing(变异测试)
14.Mutation testing is a fault-based testing technique [10, 19] that is based on the assumption that a program is well tested if all simple faults are predicted and removed; complex faults are coupled to simple faults and are thus, detected by tests that detects simple faults [10, 28, 38]. Mutation operators introduce simple faults into the program. Each change or mutation that is performed by a mutation operator produces a mutant program or simply, a mutant. A mutant is killed by a test that forces it to produce output that is different from the original program.
变异测试是一种基于故障的测试技术,它是基于这样一种假设:如果一个程序中所有的简单故障被预判和解决那么这个程序就称为是经过良好测试的;复杂的故障是由简单的故障组成的,也就是说复杂的故障可以和简单故障一样被检测到。Mutation operators将简单故障导入到被测试程序中,此时程序也可以被称为是一个”变形(mutant)”,一个变形被测试程序kill然后会产生输出,这是变形和原始程序的不同之处。
15.Figure 3 shows an example program with four mutants, in which each mutant has exactly one mutation.Equivalent mutants are mutant programs that are functionally equivalent to the original program and therefore cannot be killed by any test. In Figure 3, mutant 3 is an equivalent mutant because, if the value of X is 8, it makes no difference whether we check X > 0 or X >= 0.
Figure 3显示了一个例子程序,它具有四种变形,每一种变形确切的只包含一种变化。Equivalent mutants指的是功能上和原始程序等价的变形,所以它不能被任何测试程序kill。在Figure 3中的变形3就是一个Equivalent mutants,因为如果X=8的话那么X>0和X>=0这两个判别式就没有区别了。
16.Budd[5] defined mutation analysis as a method for evaluating the degree to which a set of tests exercise a program. His suggested procedure extends the test set until all nonequivalent mutants have been killed.Because the method of test generation is not significant here, we use the terms mutation analysis and mutation testing interchangeably.
Budd定义了一种叫做mutation analysis(变形分析)的方法来评价测试程序。他的建议扩展
测试集合直到所有的非等价的变形都被kill。因为测试方法的发展对这篇文章没有很大的意义所以我们可以混用”变形分析”和”变形”这两个术语。
F.Modeling Faults using the PDG(使用PDG来故障建模)
17.We characterize the types of faults that we model using the PDG as extensions to the domain/computation classification scheme developed by Howden [22]. Our goal in extending this scheme is to establish a relationship between existing fault categories and their PDG representations - not to provide an exhaustive fault classification. Section 3.1 details our extensions to the domain/computation classification that are based on fault manifestations in the PDG.
我们用Howden创立的PDG来刻画故障的类型。我们的目标是扩展Howden他老人家的设计:在现存的故障类型和它们(指的是现存的那些故障)的PDG之间建立一种关系而不是提供一个完备的故障分类。关于我们的扩展参看Section 3.1。
18.The relationship between our PDG-based fault classification and the domain/computation scheme is shown in our extended fault classification, given in Figure 4. We consider only faults that occur within procedures; we do not consider interface faults. In section 3.2, we describe
algorithms that transform the PDG to model the structural fault types detailed in Section 3.1. For these transformation algorithms, we consider only fault types that affect the PDG structure; we do not consider statement-level faults because they are modeled extensively by other methods such as mutation.
我们的基于PDG的故障分类和区域/计算方案之间的关系在Figure 4中体现出来。我们只考虑故障发生在过程内部,我们没有考虑接口故障。在Section 3.2中我们描述了将PDG转换到的Section 3.1中提到的故障类型的算法。对于这些转换算法我们只考虑影响PDG结构的故障类型,我们不考虑语句层面的故障,因为它们可以被其他的方法很好的处理,比如前面我们提到的变异测试法。