Select 所有可能组合的测试用例子集
Select subset of test cases from all possible combinations
假设我正在编写一个接受约 40 个输入的寿命预测计算器:
sex = ['Male', 'Female']
smoking_status = [True, False]
...
最终,将有数万亿个可能的测试用例可以使用 itertools
公开,但这些是通过从左到右逐渐调整每个字段来计算的:
for test_case in itertools.product(sex, smoking_status):
assert(myfunc(test_case) = trueval(test_case)
输出(未随机化):
['Male', True]
['Male', False]
['Female', True]
['Female', False]
如何从所有可能的组合中随机 select N=1000
个测试用例?
编辑:
约束 #1:由于我担心我的笔记本电脑的健康和福祉,我添加了一个约束,我无法生成包含数百万亿个元素的列表,然后随机 select 它的一个子集 :)
我的解决方案最终是将所有变量存储在字典中,其中键是变量名称,值是所有可能值的列表
然后我遍历每个项目,(Pseudo-code:) [k:v[randint(0, len(v))] for k, v in mydict.items()]
并使用随机整数函数随机选择一个索引
注意:这不考虑重叠;可以生成 2 个相同的测试用例,但对我来说这是可以接受的,因为有数万亿个可能的测试用例
假设我正在编写一个接受约 40 个输入的寿命预测计算器:
sex = ['Male', 'Female']
smoking_status = [True, False]
...
最终,将有数万亿个可能的测试用例可以使用 itertools
公开,但这些是通过从左到右逐渐调整每个字段来计算的:
for test_case in itertools.product(sex, smoking_status):
assert(myfunc(test_case) = trueval(test_case)
输出(未随机化):
['Male', True]
['Male', False]
['Female', True]
['Female', False]
如何从所有可能的组合中随机 select N=1000
个测试用例?
编辑: 约束 #1:由于我担心我的笔记本电脑的健康和福祉,我添加了一个约束,我无法生成包含数百万亿个元素的列表,然后随机 select 它的一个子集 :)
我的解决方案最终是将所有变量存储在字典中,其中键是变量名称,值是所有可能值的列表
然后我遍历每个项目,(Pseudo-code:) [k:v[randint(0, len(v))] for k, v in mydict.items()]
并使用随机整数函数随机选择一个索引
注意:这不考虑重叠;可以生成 2 个相同的测试用例,但对我来说这是可以接受的,因为有数万亿个可能的测试用例