用于自动生成输入的工具,用于有界穷举测试和生成测试输入的复杂数据结构。
inputgen的Python项目详细描述
关于
inputgen是一个提供自动输入生成的python包, 用于有界穷举测试和复杂数据的生成 测试输入结构。
这个工具最初是作为类项目验证和 与Sarfraz Khurshid-教授一起验证软件 以Korat及其related research为模型。Korat是一个输入生成 Java程序的工具。
除本自述文件外,目前缺乏正式文件;但是, 关联的class paper提供了 实施及相关研究。
功能
使用多个进程来加速输入生成。
搜索空间修剪:
回溯-生成的对象被检测以记录顺序 在检查 它们在已定义谓词中的结构拒绝输入时 组合,在最后一次访问时首先尝试替代值 字段。
此功能在默认情况下已启用,可以通过设置禁用 enable_backtracking=False在实例化Factory对象时。
非同构生成-只有具有唯一结构的对象 生成。两个输入是isomorphic,或者结构相同,如果它们 从根对象可到达的对象图是同构的。
例如,如果构建大小为2的二叉树,则可以使用5个 节点对象,则只有两个可能的有效的、非同构的 结构-根节点和左子节点,或根节点和右节点 孩子
此功能在默认情况下已启用,可以通过设置禁用 enable_iso_breaking=False在实例化Factory对象时
要求和安装
inputgen需要python 2.5或更高版本。如果使用python 2.6,inputgen 将安装并使用stand-alone ordereddict包。如果使用 python 2.5,inputgen将另外安装并使用 stand-alone multiprocessing包装。
要安装inputgen和所需的依赖项,请运行:
pip install inputgen
示例
下面是一个简单的例子。有关更多示例,请参见inputgen/examples/ 目录。
给定以下代码:
import inputgen class SquareTest(inputgen.TestCase): @staticmethod def repOK(factory): return True @staticmethod def fin(min=0, max=10): f = inputgen.Factory(enable_backtracking=False, enable_iso_breaking=False) f.set('number', range(min, max)) return f def run_method(self, factory): num = factory.number self.assertEqual(num * num, num ** 2) if __name__ == "__main__": import unittest unittest.main()
将代码保存到名为square.py的文件中,然后运行单元测试:
python square.py
运行时,inputgen将生成 限定字段。在上面的例子中,这将产生十个组合, 只有一个字段(number)从0到9。