/
単体テスト(テストケースエディター スタブの制御)

単体テスト(テストケースエディター スタブの制御)

本章では、テストケースエディターとスタブ機能を使用し、インポートした"Sensor"プロジェクトのソースファイルである"sensor.c"に実装されている"int addSignals()"関数が仕様に則って動作するかをテストする手順を記載します。
テスト対象関数である"int addSignals()"関数は下記のような仕様となります。

  • 外部関数である"needCompensation()"の戻り値が"0"以外の場合、引数の"signalA"、"signalB"、および"calcCompensation()"関数の戻り値を加算した値を返します。

  • 外部関数である"needCompensation()"の戻り値が"0"の場合、引数の"signalA"、"signalB"を加算した値を返します。

今回の単体テストには、テスト対象関数でコールしている関数に未実装の外部関数が含まれるため、単体テストの手順にスタブを作成する手順を加えて実施します。

このページの内容:

単体テスト対象のソースに対してテストスイートを作成

  1. テスト対象のソースファイル"sensor.c"を選択し、 青色の三角のボタンの右側にある▼ボタンを選択します。

  2. 展開されたメニューから[テストの実行] > [ユーザー定義] > [Unit Testing] > [01.テストスイート作成]を実行します。

  3. テストコンフィギュレーションが正常に完了することを確認します。

単体テスト対象のソースに対してシンボル情報を収集

  1. [Parasoft]メニュー> [ビューを表示] > [スタブ]を選択します。



  2. [スタブ]ビューが表示されます。

  3. テスト対象ソースファイルを選択し、 青色の三角のボタンの右側にある▼ボタンを選択します。

  4. [テストの実行] > [ユーザー定義] > [Unit Testing] > [File Scope] > [02.シンボル情報収集(File Scope)]メニューを選択します。

  5. シンボルデータが[スタブ]ビューに表示されます。 表示されたシンボルに対し、コンテキストメニューからスタブを作成できます。

スタブの作成

  1. [スタブ]ビューから、[定義]が[なし]となっているシンボルを選択後、右クリックし[自動スタブの作成] を選択します。

  2. スタブが作成されます。デフォルトでは空関数(戻り値がある場合、0を返す)となります。 



テストケースの作成

  1. [テストケース エクスプローラー]から、テストケースを追加するテストスイートを選択し右クリックします。

  2. [新規追加] > [エディターを使用したテストケース…]メニューを選択します。


  3. [テスト ケース名]に、"test_addSignals_editor"を入力した後、[OK]を選択します。

     

  4. 表示されるエディター画面上の[次のテスト ケースを作成]ドロップダウンメニューを選択します。

  5. ドロップダウンメニューから" int addSignals (int, int, int)"を選択し、右側のボタンを押下します。

     

  6. データソースの選択で、[外部データ ソース]を選択します。

  7. データソースの設定内容を示すウィンドウで[OK]を選択します。

  8. ご利用のPCでcsvを開くアプリケーションが起動します(今回はExcelを例にしております)。


テストデータを編集

  1. テストデータを追加します。


  2. 変更を保存します。

  3. エディターの中で、Ctrl + Sキーを押下しテストケースを保存します。

単体テストを実行

  1. [テストケース エクスプローラー]からテストケースを選択し、 青色の三角のボタンの右側にある▼ボタンを選択します。

  2. [テストの実行] > [ユーザー定義] > [Unit Testing] > [File Scope] > [03.単体テスト実行 (File Scope)]メニューを選択します。

単体テストの結果を確認

  1. [テストケース エクスプローラー]から結果を確認できます。


  2. ソースファイル上に、カバレッジ結果が実行箇所:緑色 / 未実行箇所:赤色でハイライトされます。

テストデータを編集して単体テストを実行 – スタブの戻り値を変更する –

前回の単体テストのカバレッジ結果より、実施したテストでは、"needCompensation()"関数が"0"以外を返した場合のテストができていないことがわかります。本章では、作成したスタブの振る舞いを設定して、"needCompensation()"関数の戻り値を変更するテストを行います。

  1. テストデータに、SV#I#_needCompensation列を追加します。

  2. テストデータを追加し保存します。


  3. テストケースエディターに戻り、[パラメーター]欄の右側にある[列名の更新]を選択して、SV#I#_needCompensationが追加されていることを確認します。ストではneedCompensation()関数が0を返し、3回目のテストでは1を返す動作になります。

     

  4. テストケースエディター右上の[新規追加]から、[スタブ設定]を選択し、右側のボタンを押下します。

     

     

  5. 追加されたスタブ設定の関数欄にカーソルを合わせ、CtrlキーとSpaceキーの同時押しで関数一覧を表示し、そこから"needCompensation"を選択します。


    ※スタブの作成をしているにも関わらず候補が表示されない場合、一度テストケースエディターを閉じて開きなおしてください。

  6. [アクション]の1行目を選択して、[SET VALUE]を選択します。

     

  7. [P1]列の1行目を選択し、<name>を削除して、CtrlキーとSpaceキーの同時押しで、[Variables]>[*__return]を選択します。

     

  8. [P2]列の1行目を選択し、<value>を削除して、Ctrl+Spaceキーを押下し、[Data Source API]>[CPPTEST_DS_GET_INTEGER(<column_name>)]を選択します。


  9. もう一度、[P2]列の1行目の[CPPTEST_DS_GET_INTEGER()の後にカーソルを合わせ、Ctrl+Spaceキーを押下し、[Data Source Columns] > [SV#I#_needCompensation]を選択します。

     

  10. テストケースを保存し、[テストケース エクスプローラー]からテストケースを選択し、右クリック > テスト履歴 > [03.単体テスト実行 (File Scope)]でテストを実行します。

     

  11. "needCompensation()"関数が"0"以外を返した場合のテストができていることを確認します。


テストデータを編集して単体テストを実行 – 条件に応じて、スタブの戻り値を変更する –

前回のテストにて、"needCompensation()"関数が"0"以外と返した場合のテストが実行できています。このときにコールされる"calcCompensation()"関数の引数"temp"に応じ、"calcCompensation()"関数の戻り値を変更するテストを行います。

  1. テストデータを追加します。


  2. テストケースエディター右上の[新規追加]から、[スタブ設定]を選択し、右側のボタンを押下します。
    追加されたスタブ設定の関数欄にカーソルを合わせ、CtrlキーとSpaceキーの同時押しで関数一覧を表示し、そこから"calcCompensation"の[スタブ設定]を追加します。

     

  3. [スタブ設定]の右側にある[Table]を[Code]に変更します。


  4. コードを追加し、"temp"によってスタブの返り値が変わるよう設定します。

    この設定により、"calcCompensation()"関数の引数"temp"が"0"より大きい場合は*__return に"100"を設定し、それ以外の場合は*__return に"0"を設定し、返す動作となります。(※ *__returnの”__”は アンダースコアが2つですのでご注意ください。)
    テストデータの5行目(4回目のテスト)では、"addSignals()"関数の引数"temp"が"0"のため、"calcCompensation()"関数の引数も"0"となります。
    そのため、"calcCompensation()"関数は"0"を返します。テストデータの6行目(5回目のテスト)では、"addSignals()"関数の引数"temp"が"10"のため、"calcCompensation()"関数の引数も"10"となります。そのため、"calcCompensation()"関数は"100"を返します。

  5. テストケースを保存し、[テストケース エクスプローラー]からテストケースを選択し、右クリック > テスト履歴 > [03.単体テスト実行 (File Scope)]でテストを実行します。

     

  6. 引数"temp"によって、"calcCompensation()"関数の戻り値が変わっていることが分かります。





Related content

単体テストチュートリアル:はじめに
単体テストチュートリアル:はじめに
Read with this
単体テスト(テストケースエディター スタブの制御)
単体テスト(テストケースエディター スタブの制御)
More like this
テストコンフィギュレーションの準備(環境共通)
テストコンフィギュレーションの準備(環境共通)
Read with this
単体テスト(テストケースエディター スタブの制御)
単体テスト(テストケースエディター スタブの制御)
More like this
実施手順
実施手順
Read with this
単体テスト(テストケースエディター 基本のテストケース)
単体テスト(テストケースエディター 基本のテストケース)
More like this

Copyright © 2023 TechMatrix Corporation. All rights reserved