*

単体テストの効率化を考える(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)-スタブの自動生成ツール

関連記事

eclipse-juno-logo

C言語でEV3開発(2)

どもです。 今回のエントリーの内容は、前回に引き続き「EV3の開発環境の構築」の追記です。

記事を読む

MY_MFC_LOGO

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

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

記事を読む

no image

Objective-CからC++コードを呼び出す

どもどもです。 今回は、突然ながらMacに関係する投稿です。 ソフト関係のことを勉強していて

記事を読む

Arduino_Logo

ホールセンサーの種類と使い方

どもです。 今回のエントリは、表題にある「ホールセンサー」についてです。 1.「ホールセンサ

記事を読む

iot_at_home_eye_catch

IoT開発(14)
ESP-WROOM-02の稼働時間を延ばす工夫をしてみる

どもです。この記事は、以下の続きです。 IoT開発(4)-ESP-WROOM-02を電池で駆動

記事を読む

iot_at_home_eye_catch

IoT開発(11)
ESP-WROOM-02を長時間駆動させた

どもです。この記事は、下記の記事の続き、「測定可能な期間」の結果発表です。IoT開発(5) ESP-

記事を読む

raspberry-pi

QtでRaspberryPi/GUI開発(9)-SPI通信をしてみた

どもです。 えー。 「Qtで…」とか書いておきながら、今回はQtは出てきません。 今回のエ

記事を読む

DSC01629

はじめまして

田舎出身のエンジニアです。 大学進学に伴い上京、その後10年以上を東京で過ごし、 転職と配属に

記事を読む

GitHub

Windowsでのカバレッジ測定-OpenCppCoverageを使ってみた(2)

どもです。 前回のエントリーで、OpenCppCoverageというカバレッジを測定する、フリーの

記事を読む

iot_at_home_eye_catch

IoT開発(1)-ESP-WROOM-02のセットアップ

どもです。 前回までのエントリで、「DHT11の測定結果をクラウドで見える化する」という内容を書い

記事を読む

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="">

arduino_relay_switch_002_ae_g5v_drv_eye_catch
Arduinoでリレースイッチ(2)-AE-G5V-DRV

どもです。 前回の記事では、「フォトカプラリレー」を使用したLチ

tlp222af_001_eye_catch
Arduinoでリレースイッチ(1)-TLP222AF

どもです。 つい先日、やっとのことでリレースイッチを手に入れるこ

c_sharp_eye_catch
外部からMariaDbにアクセスする(2)-C#からMariaDbにアクセスする。

どもです。 前回のエントリで、外部からMariaDbにアクセスす

c_sharp_eye_catch
外部からMariaDbにアクセスする(1)-データベースの設定

どもです。 今回は、Linux上のMariaDbにWindows

think_about_utest
middle_unit
最小…よりも(ほんの)少し大きいテストフレームワーク

どもです。 今回は、単体テストのフレームワークについて書きます。

→もっと見る

PAGE TOP ↑