用于自动生成输入的工具,用于有界穷举测试和生成测试输入的复杂数据结构。

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

来源可以在这里找到:https://bitbucket.org/gdub/python-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。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java我可以在J2EE1.4中使用JAXR吗   YouTube数据API超出了未经验证的java每日使用限制   java RED5 RTMPConnManager未设置applicationContext局部变量。这会导致NullPointerException   java多部分/formdata,加载图像(安卓)   java Struts 2<s:select>填充表单中的其他字段   java Eclipse在迁移后不会将邮件属性传递给Spring Boot   java如何检查请求的TLS版本   java如何从包中导入相同的类   如何在java中将BLOB字符串转换为人类可读的格式字符串   java使用Play映射特定的文件路径!框架   java Eclipse重构   在子字符串上使用“预定义字符类”的java   java如何在SeleniumWebDriver中选择li中的锚定标记?   jspjava。木卫一。FileNotFoundException:系统找不到指定的路径   java Hi,在启动cmd\design javafx\cmd eclipse时,我的文件不是删除的,也不是复制的   java Selenium Web驱动程序异常“找不到:taskkill的可执行文件”   java如何获得数组的迭代器?