1
0

More than 1 year has passed since last update.

Javaファイルを解析してホワイトボックステストのテストケースを生成するツールを作成(※C1のみ 2021/11/13 現在)

Last updated at Posted at 2021-11-13

表題の内容に関するツールを作成しました。
残課題がありますが一旦の区切りとしてコミットしました。

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

実行例

execute_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と同様
      となるように出力しています

explain1

explain2

explain3

  • その他
    あるブロックからみて、上に存在するブロック内にreturnやthrowがあったケースに関しては考慮されていません (⇒場合によっては各条件の真偽を揃えてテストを実行すると、あるブロックに処理が到達しない) 三項演算子・lambdaには非対応となっています (上記いずれも残課題になります)
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0