10

単体テストにフィードできる BNF 文法からテスト文字列を生成するツールを使用した経験のある人はいますか?

4

4 に答える 4

1

ツールの質問に対する答えはありませんが、任意のテキスト処理言語 (perl/python/etc) で BNF 文法から文をランダムに生成するのはかなり簡単で、より大きな言語ではもう少し冗長です ( Java/C/etc) ですが、自分で作成するのはそれほど難しくありません。

もちろん、これの問題は、文法で文字列しか生成できないことです。文法が非常に単純でない限り、テスト空間は無限に大きくなります。

于 2008-09-09T16:32:46.217 に答える
1

私は hazzen がコメントしたとおりに実行しました (スクリプト言語に埋め込まれた DSL を使用)。これはやや興味深い演習でしたが、構文解析などの最も基本的なテストを除いて、あまり役に立ちませんでした。私の最も興味深いテストのほとんどは、BNF (または他の文脈自由文法) で簡単に表現できるものよりも洗練された関係に関係しています。

于 2008-09-09T16:43:41.697 に答える
0

Gramtestは、任意のユーザー定義の BNF 文法から文字列を生成できるツールの 1 つです。Gramtest の背後にあるアルゴリズムの詳細については、こちらを参照してください。また、ツールに関する実用的なヒントについては、こちらを参照してください。

于 2015-09-17T01:49:45.723 に答える
0

たとえば、コンパイラを開発している場合、抽象構文ツリーのデータ型を使用している可能性があります。その場合、ランダムな AST を生成する関数を作成できます。これを使用して、それを文字列に出力し、それを単体テストにフィードできます。ASTから始めたので、このように有効なプログラムであることが保証されています。

Haskell や ML でコンパイラを書いていたら、QuickCheckを使ってこうします。

于 2008-09-17T17:21:59.883 に答える