随机数据生成算法
随机数据生成是最简单的方法,适用于无需特定分布的场景。通过随机函数生成任意值,常用于压力测试或边界测试。
import random
def generate_random_data(size):
return [random.randint(0, 100) for _ in range(size)]
基于分布的数据生成
对于需要特定统计分布的测试场景,可使用概率分布模型生成数据。正态分布适用于模拟自然现象,泊松分布适合事件发生率测试。
import numpy as np
# 正态分布数据
normal_data = np.random.normal(loc=50, scale=10, size=1000)
# 泊松分布数据
poisson_data = np.random.poisson(lam=5, size=1000)
组合测试数据生成
Pairwise算法可高效覆盖参数组合,显著减少测试用例数量。适用于多参数系统的高效测试覆盖。
from allpairspy import AllPairs
parameters = [
["BrandA", "BrandB"],
[50, 100, 200],
["Yes", "No"]
]
for pairs in AllPairs(parameters):
print(pairs)
模糊测试数据生成
通过变异合法输入产生异常数据,专门测试系统鲁棒性。字符串模糊测试常用字符替换、删除等操作。
import random
def fuzz_string(input_str):
mutations = [
lambda s: s[:random.randint(0,len(s))], # 截断
lambda s: s + chr(random.randint(0,255)), # 追加随机字符
lambda s: s.replace(random.choice(s), '') # 随机删除
]
return random.choice(mutations)(input_str)
基于模型的数据生成
使用机器学习模型生成符合特定模式的数据。LSTM可学习序列模式,GAN能生成高仿真数据。
from keras.models import Sequential
from keras.layers import LSTM, Dense
import numpy as np
# 简化的LSTM数据生成模型示例
model = Sequential()
model.add(LSTM(50, input_shape=(10,1)))
model.add(Dense(1))
model.compile(loss='mae', optimizer='adam')
边界值数据生成
针对系统边界条件设计测试数据,包含最小、最大和临界值。特别适用于数值输入验证。
def generate_boundary_values(min_val, max_val):
return [
min_val - 1, # 最小值边界
min_val,
min_val + 1,
(min_val + max_val) // 2, # 中间值
max_val - 1,
max_val,
max_val + 1 # 最大值边界
]