Auther : Futa HIRAKOBA
仕様書からテストケースを生成する研究
- Spec2Testは日本語で記述された仕様書から、機械学習を用いて、日本語のテストケースを自動的に生成する、
- ただし、まだまともな文章は生成できません(ここ重要)。
- システムテストにおける、機能テストが対象です。
- Specification To Test の略
- Python3.6系で動作します。
- Spec2TestはOpenSourceSoftwareです。最新のソースコードはGitHubにあります。
Spec2TestはPython3.6系で動作します。また、いくつかのライブラリに依存しています。
必要なライブラリはrequirements.txtに書いています。
また、Spec2TestではMeCabを使用しているため、MeCabをインストールしている必要があります。
ソースコードのドキュメントはコチラ
Dockerを用いることで簡単に開発環境の構築をすることができます。
build/ディレクトリ内でdocker build .をすることで、Spec2Testが動作するDockerイメージを用意できます。
もしくは、docker pull korosuke613/spec2testをすることで、Docker Hubにある、最新のDockerイメージを入手する方法もあります。
Spec2Testを使用する前にいくつかの準備が必要です。以下の作業を行なってください。
- Spec2Testを使う前に、
/app/resource/txt内に、生成対象仕様書をテキスト形式にしたものを複数個いれてください。 1.で入れた、テキスト形式の生成対象仕様書群を分かち書きしてください。/app/gen_wakachi.pyを実行することで、/app/resource/wakachi内に分かち書きした仕様書が生成されます。2.で生成した分かち書きした仕様書群の、 70% のテキストを/app/resource/train.txtとして保存し、残りの 20% のテキストを/app/resource/valid.txtとして保存し、余ったの 10% のテキストを/app/resource/test.txtとして保存してください。/app/resourceに移動し、以下のコマンドを実行してください。
$ ../spec2test/trainptb.py -u 100 -e 100このコマンドを実行することで、3.で作成したファイルを基に、LSTM文章学習を行ないます。
-uがユニット数、-eがエポック数を表します。
学習終了後に、/app/resource/resultというディレクトリが生成されます。そのディレクトリ内の使いたい学習ファイル(例 model_iter_e100_u100_3112)を、自分で選択し、/app/resourceに移動してください。
テストケース生成を行ないます。以下のコマンドを実行してください。
spec2test
├── app # Spec2Test本体
│ ├── gen_all.py # 一通りの処理をするスクリプト
│ ├── gen_imporwords.py # 重要単語リストを生成するスクリプト
│ ├── gen_testsuite_evaluation.py # テストスイートの評価用スクリプト
│ ├── gen_testsuite.py # テストスイートを生成するスクリプト
│ ├── gen_tfidf.py # TF-IDF付き単語リストを生成するスクリプト
│ ├── gen_vector.py # 単語ベクトルを生成するスクリプト
│ ├── gen_wakachi.py # 分かち書きを行うスクリプト
│ ├── spec2test # Spec2Testライブラリ
│ │ ├── directory.py # ディレクトリに関するクラス
│ │ ├── evaluation.py # 評価に関するクラス
│ │ ├── file.py # ファイルに関するクラス
│ │ ├── imporwords.py # 重要単語リストに関するクラス
│ │ ├── iomanager.py # ファイル生成関係の抽象クラス
│ │ ├── testsuite.py # テストスイートに関するクラス
│ │ ├── tfidf.py # TF-IDF付き単語リストに関するクラス
│ │ ├── trainptb.py # LSTMに関するスクリプト
│ │ ├── vector.py # 単語ベクトルに関するクラス
│ │ └── wakachi.py # 分かち書きに関するクラス
│ ├── resource/ # 入出力ファイルを保管するディレクトリ
│ │ ├── imporwords/ # 重要単語リストの保存ディレクトリ
│ │ ├── testsuite/ # テストスイートの保存ディレクトリ
│ │ ├── txt/ # 生成対象仕様書群の保存ディレクトリ
│ │ ├── tfidf/ # TF-IDF付き単語リストの保存ディレクトリ
│ │ ├── vector/ # 単語ベクトルの保存ディレクトリ
│ │ └── wakachi/ # 分かち書き仕様書の保存ディレクトリ
│ └── test/ # Spec2Testライブラリのテストコード
├── build/ # Docker build用のディレクトリ
│ └── Dockerfile # Dockerfile
├── docs/ # Doxygenによって生成したドキュメント
├── Doxyfile # Doxygenの設定
├── images/ # Spec2Testに関する画像
├── LICENSE # ライセンス
├── py_filter # DoxygenのPython向け設定
├── pytest.ini # pytestの設定
├── README.md # このファイル
└── requirements.txt # 必要なPythonライブラリ
