CrissChan

V1

2022/03/31阅读:23主题:绿意

变异测试的常用的变异算子的构造方法

if条件修改成相反的


def checkout(cart):
  if cart.items:
    throw Error("cart empty")
  return checkout_internal(cart)

变异测试,修改成如下:

def checkout(cart): if not cart.items:
    throw Error("cart empty")
  return checkout_internal(cart)

改变一些运算符

例子1

 print(a/b)

变异测试中修改成如下代码:

 print(a-b)

例子2

 info='age:'+age

变异测试中修改成如下代码:

  info='age:'*age

例子3

    __TIMEOUT = 60*10

变异测试中修改成如下代码:

 __TIMEOUT = 60/10

改变一些比较方法

例子1

if len(member.get_items()>0)

变异测试中修改成

if len(member.get_items()<0)

例子2: 一些module的

if __name__ == '__main__':

变异测试中修改成

if __name__ != '__main__':

追加或者清空输出内容

例子1: error message的追加

try:
    a=b/c
except ZeroDivisionError as err:
    print(err)

变异测试中修改成

try:
    a=b/c
except ZeroDivisionError as err:
    print(err+’infor‘)

例子2

sec=20*time.Second

变异测试中修改成

sec=20*time.Second+1

例子3:

df = df.replace(
  [numpy.inf, -numpy.inf],
  numpy.nan
)

变异测试中修改成

df = df.replace(
[numpy.inf, -numpy.inf - 1], numpy.nan
)

如果变异了SUT的代码,测试Fail了,那就说明我们的测试是有效的,否则测试就是无效的。

分类:

后端

标签:

后端

作者介绍

CrissChan
V1