表題の内容に関するツールを作成しました。
残課題がありますが一旦の区切りとしてコミットしました。
ソースリポジトリ(Git)
https://github.com/miwa-m/decision_generator/tree/develop実行可能jar
https://github.com/miwa-m/decision_generator/releases/download/0.0.2/DecisionMatrixGenerator.jar動作環境
Java 16(Open JDK 16)-
概要/使用方法(Git上のREADMEから)
decision_generator
(Desicion Matrix Generator)
Overview
Desicion Matrix Generatorは指定のJavaファイルからホワイトボックステストにおけるカバレッジを担保するテストケース表をxlsxに出力するツールです
Specification
Usage
Parameters
name | alias | default | explain | required |
---|---|---|---|---|
-T | --target | - | 解析対象リソースのトップディレクトリ(例:c:/hoge/fuga/target) | Y |
-M | --mode | C1 | 網羅度の指定(C0/C1/C2/MCC) ※2021/11/13 現在 C1のみ対応 | N |
-D | --directory | (カレントディレクトリ) | 生成ファイルの出力先ディレクトリ | N |
-F | --file | decision_matrix | 生成ファイル名(生成時に.xlsx が付与されます) | N |
Execute
java コマンドでjarを実行します
C:\hoge> java -jar DecisionMatrixGenerator.jar
-T "C:\target\directory"^
-M C1
-D "C:\output\directory"^
-F example
実行例
Details
-
処理仕様について
対象ファイルには、
-Tで指定したディレクトリ内の配下のディレクトリ内のファイル、ディレクトリ配下のファイル... も含まれますパラメータで網羅度の指定ができるが、現在はC1のみ対応
-
出力ファイルについて
出力されるxlsxファイルには、-Tに指定したディレクトリ配下に存在するjavaファイル毎にシートが作成されます。
シート内には、対応するjavaファイルに内に定義されているクラス、その内部に定義されているメソッド毎にテストケースが出力されます。 -
出力内容について
(C1の為)各判定文が、真/偽となるための、判定文を構成する条件の真偽値を出力します。
各判定文が真の時、そのブロック内での各判定文に対しても同様に解析を行い条件の真偽値を出力します。-
ブロックについて
if/else if/else
for/while/do while
(switch内の)case/default
try/catch/finally
を1ブロックとしています。各ブロック内への遷移(判定文が真)が発生する為の各条件の真偽の組み合わせは
if / else if : 判定文が真となるような条件の真偽の組み合わせ
else : 対応するif/else ifがそれぞれ偽となる組み合わせ
for / while / do while : 繰り返しの判定が真となる条件の真偽の組み合わせ
case : caseで指定された値に一致
default : 対応するswitch内のcaseのいずれかに一致しない
try : 対応するcatch内で指定されている例外が発生しない
catch : 指定されている例外のいずれかが発生する
finally : tryと同様
となるように出力しています
-
- その他
あるブロックからみて、上に存在するブロック内にreturnやthrowがあったケースに関しては考慮されていません (⇒場合によっては各条件の真偽を揃えてテストを実行すると、あるブロックに処理が到達しない) 三項演算子・lambdaには非対応となっています (上記いずれも残課題になります)