*

単体テストの効率化を考える(5)-スタブの自動生成への入力

公開日: : 最終更新日:2020/05/10 徒然, 開発

どもです。

「単体テストの効率化について考える」の5回目です。
1回目から4回目はコチラ:
単体テストの効率化を考える(1)-はじめに
単体テストの効率化を考える(2)-スタブの戻り値
単体テストの効率化を考える(3)-スタブの引数
単体テストの効率化を考える(4)-スタブの引数(ダブルポインタ)

1.振り返り

前回(4回目)までで、スタブを自動生成して単体テストを効率化するために、スタブで行うべき処理は明確にできたかと思います。
それらを(ざっくりですが)まとめてみると、以下のようになります。

  • 呼び出し回数のカウント
  • 関数(スタブ)に戻り値がある場合には、戻り値用バッファから値を取得し、返す。
  • 引数は、引数保持用バッファに値を格納する。
  • 引数がポインタかつ出力の場合には、ポインタの実体に設定する値用のバッファから値を取得して設定する。
  • 引数がダブルポインタの場合には、ダブルポインタの実体用に用意した2次元配列の特定の領域のアドレスを、ダブルポインタの実体に設定する。

それぞれの詳細については、それぞれ1回目から4回目のエントリを確認してください。
これらの「行うべき処理」を実装したスタブの自動生成について考えます。

2.ツールの概要

まず、ツールの本当の基本的な概要です。
ツールの入力と出力を、下図に示します。
think_about_unit_test_005_01
この図のうち、「生成されるスタブのコード」については、(ほぼほぼ)内容が決定してします。
そこで次に、「対象の関数一覧」、特に「作成するツール」が「処理のしやすいフォーマット」、かつ「ユーザが入力しやすいフォーマット」となるように決定します。

3.対象関数一覧

前項より、対象関数の一覧に求められる要件は、下記の通りです。

  • ユーザが入力しやすいフォーマット
  • ツールが処理しやすいフォーマット

です。

3.1.ユーザが入力しやすいフォーマット

ユーザが入力しやすいフォーマットですが、一番最初に考え付くのは、「エクセル」です。
エクセル上に、入力用の「表のフォーマット」を決定して、そこに必要な情報を入力するのがよいかと考えます。

3.2.処理のしやすいフォーマット

「ユーザが入力し易いフォーマット」として、「エクセルの表」を挙げましたが、これはツールが「処理のしやすいフォーマット」か否かを考えます。
結論からいうと、「Yes!」です。
ずいぶん前ですが、Microsoft Office OpenXMLの内容を解析するためのSDKが公開されています。
また、さらにエクセルの解析に特化したSDK?ライブラリ?としてClosedXMLというライブラリも公開されています。
これらのことから、「エクセルの表」は、「処理のしやすいフォーマット」になり得ると言えます。

3.3.表のフォーマット

以下のように決めます(決めました)。
think_about_unit_test_005_02
実際の入力は、下記のようにします。
think_about_unit_test_005_03
入力している関数の定義は、下記の通りです。

3.4.表の解説

この表の各セルに入力する場合には、

列名 内容
Name スタブを生成する関数の名前
Data type 関数の戻り値のデータ型
戻り値がポインタの場合は、このセルに「*」を入力する。
Prefix 関数の戻り値の(前置)修飾子
constなど
Postfix 関数の戻り値の(後置)修飾子
constなど
Argument Name 関数の引数名
Data type 関数の引数のデータ型
データ型がポインタの場合には、このセルに「*」を入力する。
Prefix 関数の引数の前置修飾子
constなど
Postfix 関数の引数の後置修飾子
constなど
Mode
(in/
out/
both)
関数の引数の入出力情報
入力:in
出力:out
both:入力かつ出力

関数が引数を複数持つ場合、2番目以降の引数は、各行の関数の情報(関数名や戻り値)には何も入力せず、引数情報を入力します。

4.まとめ

今回は、スタブの自動生成ツールに入力するデータのフォーマットについて考えてみました。
結論としては、エクセルの表に入力していくのが、よいと考えています。
具体的なフォーマットは、前出の画像を確認して下さい。

今回のエントリで、スタブの自動化のための入力と出力が(ほとんど)決定できました。
次回は、いよいよ自動生成のツールについて書きます。

ではっ!

続きはコチラ

単体テストの効率化を考える(6)-スタブの自動生成ツール

関連記事

no image

C言語でEV3開発(10)-opOUTPUT_CLEAR_COUNTコマンド

どもです。 前回のエントリーのラストで、「モーターを動かすコマンド」と書きましたが、今回紹介するコ

記事を読む

eclipse_oxygen

Linux/EclipseでRaspberryPiのクロス環境を構築してみた…がっ!

どもです。 前回のエントリでは、WindowsにRaspberryPi3のクロスコンパイル環境の構

記事を読む

MY_MFC_LOGO

MFCプログラミング(4):Enter(ESC)キーでダイアログが閉じないようにする

どもです。 今回は、キーボード入力の処理、特にEnterキー/ESCキーでダイアログが閉じられるこ

記事を読む

c_sharp_eye_catch

Windowsでのカバレッジ測定-OpenCoverageを使ってみた

どもです。 以前、OpenCppCoverageを使用してWindows上でカバレッジ測定する方法

記事を読む

raspberry-pi

RaspberryPi3を購入しました

どもです。 突然ですが、「Raspberry Pi3 model B」を購入しました。 今回のエ

記事を読む

toppers

C言語でEV3開発(23)-モーターの性能確認

どもです。 今回は、EV3に付属しているモーター(Lモーター/Mモーター)の性能について調べてみた

記事を読む

EF_GRY-OR_png

Eclipseで単体テストするときの注意点(?)

どもです。 今回のエントリは、Eclipse/cygwinで単体テストを行う際にハマってしまっ

記事を読む

raspberry-pi

QtでRaspberryPi/GUI開発(1):ためしに時計を作ってみた

どもです。 また更新の間隔が空いてしまいました。 久しぶりの更新です。 前回のエントリーで

記事を読む

think_about_utest

単体テストの効率化を考える(3)-スタブの引数

どもです。 「単体テストの効率化について考える」の3回目です。 1回目、2回目はコチラ:

記事を読む

toppers

C言語でEV3開発(24)-APIの実行時間を測定してみた。

どもです。 今回、以前から気になっていた、開発環境/プラットフォームであるTOPPERS HRP2

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

think_about_utest
VisualStudioで実行した単体テストの結果の出力(3)-テスト実行からレポート生成までをツールで自動化

どもです。 前々回、前回と、VisualStudio/C#での単

think_about_utest
VisualStudioで実行した単体テストの結果の出力(2)-出力ファイルの読める化

どもです。 前回の続きです。 前回は、VisualStud

think_about_utest
VisualStudioで実行した単体テストの結果の出力(1)-ファイルへの出力

どもです。 最近、VisualStudio/C#でよく開発してい

think_about_utest
単体テストの効率化を考える(6)-スタブの自動生成ツール

どもです。 「単体テストの効率化について考える」の6回目です。

think_about_utest
単体テストの効率化を考える(5)-スタブの自動生成への入力

どもです。 「単体テストの効率化について考える」の5回目です。

→もっと見る

PAGE TOP ↑