Skip to main content

Picirany 分层 Delta 调试框架

项目描述

分层 Delta 调试框架

https://img.shields.io/pypi/v/picirany?logo=python&logoColor=white https://img.shields.io/pypi/l/picirany?logo=open-source-initiative&logoColor=white https://img.shields.io/github/workflow/status/renatahodovan/picireny/main/master?logo=github&logoColor=white https://img.shields.io/coveralls/github/renatahodovan/picirany/master?logo=coveralls&logoColor=white

Picireny是分层增量调试(简称 HDD)算法的 Python 实现,适用于使用ANTLR v4 来解析输入和描述输入格式的语法。它依靠Picire 提供核心 Delta 调试算法的实现以及并行化等各种调整。就像Picire框架一样, Picireny也可以用作命令行工具或库。

Hierarchical Delta Debugging 和 Delta Debugging 都会自动减少“有趣”的测试,同时保持“有趣”的行为。(例如,“有趣”可能意味着对被测系统的故障诱导输入。)然而,HDD 是一种改进,它试图通过利用输入结构的知识在缩减过程中研究较少的测试用例。

该工具(和算法)以多种方式迭代工作。作为第一步,它将输入拆分为标记,并将它们组织成语法定义的树结构。然后,迭代地,它在树的每一层从上到下调用​​ Delta Debugging,而 DD 本身也是一个迭代过程。最后,保留在树中的节点“未解析”以产生减少但仍然“有趣”的输出。

要求

  • 蟒蛇> = 3.5

  • Java SE >= 7 JRE 或 JDK(后者是可选的,仅当使用 Java 作为解析器语言时才需要)

安装

要在另一个项目中使用Picireny,可以将其添加到setup.cfg作为安装要求(如果使用带有声明性配置的setuptools):

[options]
install_requires =
    picireny

要手动安装Picireny,例如,安装到虚拟环境中,请使用pip

pip install picireny

上述方法从PyPI安装最新版本的Picireny。或者,对于开发版本,克隆项目并执行本地安装:

pip install .

用法

Picireny使用与Picire相同的 CLI ,因此接受相同的 选项。除了继承的那些,Picireny还接受了几个进一步的论点:

  • --grammar(可选):描述输入格式的语法列表。(您可以手动编写它们,也可以直接从 ANTLR v4 语法库下载它们。)

  • --start(可选):开始规则的名称(可选以语法名称为前缀)为[grammarname:]rulename

  • --replacements(可选):包含规则名称和最少替换字符串的 Json 文件(否则这些会自动计算)(参见 schema)。

  • --format(可选):描述输入格式的 Json 文件(参见架构示例)。该描述符可以包含上述所有( --grammar -- start和--replacements)属性,以及岛语法定义的可能性。如果同时存在--format和上述参数,则后者将覆盖格式文件的适当值。

  • --antlr(可选):ANTLR 工具 jar 的路径。

  • --parser(可选):生成的解析器的语言。目前支持“python”(默认)和“java”目标(更快,但需要 JDK)。

注意:尽管所有参数都是可选的,但顶级解析器的语法文件和开始规则必须使用 --format--grammars--start参数的任意组合来定义。

减少 HTML 文件的示例用法:

picireny --input=<path/to/the/input.html> --test=<path/to/the/tester> \
         --grammar HTMLLexer.g4 HTMLParser.g4 --start htmlDocument \
         --parallel --subset-iterator=skip --complement-iterator=backward

兼容性

Picireny在以下方面进行了测试:

  • Linux (Ubuntu 14.04 / 16.04 / 18.04 / 20.04)

  • OS X / macOS (10.11 / 10.12 / 10.13 / 10.14 / 10.15 / 11)

  • Windows(服务器 2012 R2/服务器版本 1809/Windows 10)

致谢和引文

Picireny的动机是分层 Delta 调试的想法:

  • 加桑·米舍吉和苏振东。HDD:分层增量调试。第 28 届国际软件工程会议论文集 (ICSE '06),第 142-151 页,中国上海,2006 年 5 月。ACM。 https://doi.org/10.1145/1134285.1134307

现代化重新实施和进一步改进的详细信息发布在:

  • 雷娜塔霍多万和阿科斯之吻。现代化分层增量调试。在第 7 届自动化测试用例设计、选择和评估国际研讨会(A-TEST 2016)的会议记录中,第 31-37 页,西雅图,华盛顿,美国,2016 年 11 月。ACM。 https://doi.org/10.1145/2994291.2994296

  • Renata Hodovan、Akos Kiss 和 Tibor Gyimothy。用于高效分层 Delta 调试的树预处理和测试结果缓存。在第 12 届 IEEE/ACM 软件测试自动化国际研讨会论文集 (AST 2017),第 23-29 页,阿根廷布宜诺斯艾利斯,2017 年 5 月。IEEE。 https://doi.org/10.1109/AST.2017.4

  • Renata Hodovan、Akos Kiss 和 Tibor Gyimothy。粗略的分层 Delta 调试。在第 33 届 IEEE 软件维护与演进国际会议 (ICSME 2017) 论文集上,第 194-203 页,中国上海,2017 年 9 月。IEEE。 https://doi.org/10.1109/ICSME.2017.26

  • Akos Kiss、Renata Hodovan 和 Tibor Gyimothy。HDDr:分层增量调试算法的递归变体。在第 9 届 ACM SIGSOFT 自动化测试用例设计、选择和评估国际研讨会(A-TEST 2018)的会议记录中,第 16-22 页,美国佛罗里达州布埃纳维斯塔湖,2018 年 11 月。ACM。 https://doi.org/10.1145/3278186.3278189

  • Daniel Vince、Renata Hodovan、Daniella Barsony 和 Akos Kiss。通过提升扩展分层 Delta 调试。在第二届 ACM/IEEE 软件测试自动化国际会议 (AST 2021) 论文集上,第 60-69 页,西班牙马德里(虚拟),2021 年 5 月。IEEE。 https://doi.org/10.1109/AST52587.2021.00015

下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

picirany-21.8.tar.gz (51.4 kB 查看哈希

已上传 source

内置分布

picirany-21.8-py3-none-any.whl (79.6 kB 查看哈希

已上传 py3