hoa / praspel
Hoa\Praspel 库。
Requires
- hoa/compiler: ~3.0
- hoa/consistency: ~1.0
- hoa/exception: ~1.0
- hoa/file: ~1.0
- hoa/iterator: ~2.0
- hoa/protocol: ~1.0
- hoa/realdom: ~1.0
- hoa/ustring: ~4.0
- hoa/visitor: ~2.0
Requires (Dev)
- hoa/math: ~1.0
This package is auto-updated.
Last update: 2021-09-20 08:31:33 UTC
README
Hoa 是一套 模块化、可扩展 和 结构化 的 PHP 库。
此外,Hoa 旨在成为工业界和研究界之间的桥梁。
Hoa\Praspel
Praspel 和现实域
Praspel (PHP 现实注释和规范语言) 是一种用于 PHP 的 形式化规范语言。它基于设计-by-Contract 范式,并使用前件、后件、不变量等。规范以 PHP 代码的注释形式编写。Praspel 用于手动、自动或 自动软件验证和验证。
这种语言受到 JML 的启发,但区别在于指定数据的方式。PHP 是动态和弱类型。为了指定数据,Praspel 依赖于 现实域:允许验证和生成数据的结构,能够将它们组合起来表示更 复杂的数据。现实域在 Hoa\Realdom
库 中实现。
数据生成器
可以使用契约自动生成单元测试。一个测试由 2 个部分组成:测试数据和预言。测试数据至关重要,因为它必须尽可能地反映“现实”数据,并且能够在极限情况下生成数据也非常重要。现实域通过能够生成整数、实数、字符串(基于正则表达式或语法等)、数组(基于约束求解器)或对象,为 PHP 语言类型提供了解决方案。因此,可以将这些现实域组合起来生成更复杂的数据(如日期、对象模型等)。
契约覆盖率标准
契约语言可以评估以验证和验证程序操作的数据。另一方面,我们有能够从契约的一部分自动生成测试数据的算法。为了确保契约是否被正确覆盖,我们定义了几个契约覆盖率标准。
因此,我们可以生成满足这些契约覆盖率标准的单元测试套件,从而确保生成的单元测试套件反映了契约中表达的所有行为。
研究论文
这种语言是几个研究论文、期刊和博士论文的结果。
- Praspel: 一种用于PHP合同驱动测试的规范语言,在ICTSS 2011(巴黎,法国)上展示(文章,演示),
- 在PHP中使用现实域进行基于语法的测试,在A-MOST 2012(蒙特利尔,加拿大)上展示(文章,演示,详情),
- PHP数组的约束求解器,在CSTVA 2013(卢森堡,卢森堡)上展示(文章,演示,详情)。
了解更多.
安装
使用Composer,要将此库包含到依赖中,您需要要求hoa/praspel
$ composer require hoa/praspel '~1.0'
有关更多安装说明,请参阅源页面。
测试
在运行测试套件之前,必须安装开发依赖项
$ composer install
然后,要运行所有测试套件
$ vendor/bin/hoa test:run
有关更多信息,请参阅贡献指南。
文档
《Hoa\Praspel》的黑客手册包含了有关如何使用此库及其工作原理的详细信息。
要本地生成文档,请执行以下命令
$ composer require --dev hoa/devtools $ vendor/bin/hoa devtools:documentation --open
更多文档可以在项目网站上找到: hoa-project.net。
获取帮助
获取帮助主要有两种方式
- 在
#hoaproject
IRC频道上, - 在users.hoa-project.net的论坛上。
贡献
你想贡献吗?谢谢!一个详细的贡献指南解释了你需要知道的一切。
许可
Hoa采用新BSD许可证(BSD-3-Clause)。请参阅LICENSE
以获取详细信息。
相关项目
以下项目正在使用此库
atoum/praspel-extension
,在atoum内部生成测试数据和单元测试套件。