コマンドラインからテストを実行し自動化する方法
IAR Embedded Workbenchには、最先端のデバッガであるC-SPYが含まれています。C-SPYは、アプリケーションコードのデバッグ用に機能豊富なユーザインタフェースを備えています。開発環境が次第に自動化されているように、テスト自動化を図りたいケースがあります。このような場合、C-SPYコマンドラインユーティリティ(cspybat)を使用すれば、コマンドラインから組込みアプリケーションを実行・テストすることができます。
この記事では、cspybatを使用したランタイムテストで、標準I/Oインタフェースにパラメータを自動で入力する方法など、サンプルプロジェクトを通じてその活用法を紹介します。
テストプロジェクトの作成
最初のステップでは、IAR Embedded Workbenchで新しいCプロジェクトを作成します。次に、main.cファイルの内容を以下のコードに置き換えます。
#include <stdio.h>
typedef struct {
int r;
int g;
int b;
} rgb_t;
/* ITU BT.601 */
int rgb_to_luminance(const rgb_t *color) {
int luminance;
luminance = (int)(0.299f * color->r + 0.587f * color->g + 0.114f * color->b);
return luminance;
}
int main(void) {
int luminance;
rgb_t input;
printf("R:"); scanf("%d", &input.r); printf("%d\n", input.r);
printf("G:"); scanf("%d", &input.g); printf("%d\n", input.g);
printf("B:"); scanf("%d", &input.b); printf("%d\n", input.b);
luminance = rgb_to_luminance(&input);
printf("---\nLuminance:%d\n", luminance);
return 0;
}
このプロジェクトをproject.ewpとして保存します。
この小さなアプリケーションは標準入力からカラーパラメータr、g、bを受け取り、これらをITU B.601仕様に従って対応する輝度に変換します。この変換は、カラー画像からモノクロ画像への変換プロセスによく使われます。
注意
- この時点で、ターゲットデバイスやデバッガのドライバといった他のオプションを設定することを推奨します。
- IAR Embedded Workbench for Armでシミュレータを使用する場合には、下記に示すように、General Options(一般オプション)にあるプロジェクトのLibrary Configuration(ライブラリ設定)を設定時に、標準I/Oの低水準インタフェースに使用する実装としてSemihosted(セミホスティング)を選択します。
プロジェクトのセットアップが完了したら、Make(メイク)(F7)をクリックし、さらにDownload and Debug(ダウンロードしてデバッグ)(CTRL+D)をクリックします。
デバッグツールバーでGo(実行) (F5)をクリックするとTerminal I/O(ターミナルI/O)ウインドウとInput(入力)フィールドが表示され、ユーザからの入力待ち状態になります。
Input(入力)フィールドに50、100、150と入力します。
結果もTerminal I/O(ターミナルI/O)ウインドウに表示されます。
デバッグセッションを終了します。
テスト自動化のためのバッチファイルの作成
IAR Embedded Workbenchは、プロジェクトのsettingsフォルダ内に<project-name>.<build-configuration>.cspy.batという名前のバッチファイルを作成します。このバッチスクリプトは、同じビルドのコンフィグレーションを使ってアプリケーションを実行することができます。
コマンドプロンプトを使用して、プロジェクトのフォルダへ移動します。
C:\>cd <path-to>\project
自動的に生成されたバッチスクリプトをコマンドラインから起動し、cspybatを使ってアプリケーションを実行します。
C:\<path-to>\project>settings\project.Debug.cspy.bat
アプリケーションは起動するとすぐに、ユーザからのパラメータ入力を待ちます。
C:\project>"C:\IAR_Systems\EWARM\9.10.1\common\bin\cspybat" -f "C:\project\settings\project.Debug.general.xcl" --backend -f "C:\project\settings\project.Debug.driver.xcl"
IAR C-SPY Command Line Utility V9.0.4.7242
Copyright 2000-2021 IAR Systems AB.
R:
50、100、150を入力すると、対応する輝度値が計算されます。
IAR C-SPY Command Line Utility V9.0.4.7242
Copyright 2000-2021 IAR Systems AB.
R:50
50
G:100
100
B:150
150
---
Luminance:90
CSpyBat terminating.
テキストファイルを標準入力にリダイレクト
コマンドプロンプトではリダイレクタを使用できます。つまり、パラメータを含むテキストファイルをバッチスクリプトに入力することができます。
この例でパラメータを含むデータファイルを作るには、次のコマンドを使います。
C:\<path-to>\project>copy con data.txt
次に50と入力してENTERを押し、同じ要領で100と150を入力します。終わったらCTRL+Zを押してファイルを保存してください。
C:\<path-to>\project>copy con data.txt
50
100
150
^Z
1 file(s) copied.
以上が完了したら、自動化のテストを行います。リダイレクタを使い、データファイルをバッチスクリプトに入力してください。
C:\<path-to>\project>settings\project.Debug.cspy.bat < data.txt
以下のような結果が出力されるはずです。
C:\<path-to>\project>"C:\IAR_Systems\EWARM\9.10.1\common\bin\cspybat" -f "C:\project\settings\project.Debug.general.xcl" --backend -f "C:\project\settings\project.Debug.driver.xcl"
IAR C-SPY Command Line Utility V9.0.4.7242
Copyright 2000-2021 IAR Systems AB.
R:50
G:100
B:150
---
Luminance:90
CSpyBat terminating.
まとめ
アプリケーションのデバッグは、快適なGUIから行うのが便利ですが、C-SPYコマンドラインユーティリティを使用すればテスト自動化が容易にできます。
ここでは、簡単な例を用いて、テストを自動化するためのcspybatの使用方法を説明しました。単体テストを行う際にも、同様のあるいはもう少し複雑なセットアップをすれば、外部のパラメータデータをアプリケーションに入力することができます。また、生成される出力結果を使用して、アプリケーションを検証することも可能です。
この手法は、境界値テスト、計算精度の確認などに利用できる他、型キャストによる副作用のチェックも行えます。これ以外にも多くの目的のテストに活用できます。