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