JP2008135008A - プログラムモジュール検証方式 - Google Patents

プログラムモジュール検証方式 Download PDF

Info

Publication number
JP2008135008A
JP2008135008A JP2007257721A JP2007257721A JP2008135008A JP 2008135008 A JP2008135008 A JP 2008135008A JP 2007257721 A JP2007257721 A JP 2007257721A JP 2007257721 A JP2007257721 A JP 2007257721A JP 2008135008 A JP2008135008 A JP 2008135008A
Authority
JP
Japan
Prior art keywords
test
patch
program
debugger
code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2007257721A
Other languages
English (en)
Inventor
Katsumi Tsurumoto
克己 鶴本
Tsukasa Nagaki
司 永木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP2007257721A priority Critical patent/JP2008135008A/ja
Publication of JP2008135008A publication Critical patent/JP2008135008A/ja
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】テスト対象プログラム内のモジュールテストを行うために、テスト専用のスタブプログラムを組込むのだが、複数のモジュールテストを実行するために、テストするモジュール毎にコンパイルしデバッガにロードを繰返すためテスト工数がかかる。
【解決手段】テスト対象プログラムをデバッガにロードした状態で、モジュールテストに合わせてスタブプログラムをダイナミックにパッチ設定することで、デバッガにロードした状態で複数のモジュールテストが可能となるため、テスト工数が削減できる。また、テスト対象プログラムにスタブプログラムの記述が不要になり、プログラムが見易くなる。更に、自動化することで、プログラム品質が均一化し、テスト工数の削減も図れる。
【選択図】図1

Description

本発明は、マイコンシステムにおいてデバッガにICEまたは、マイコン命令シミュレータを接続した構成で、テスト対象プログラムを結合した状態でモジュールテストを行うときに、テスト対象プログラムをデバッガにロードした状態で、テストするモジュールに合わせてダイナミックにドライバプログラムやスタブプログラムのパッチを当ててテストする方式に関する。
テスト対象プログラムを結合した状態でのモジュールテストは、プログラム品質を保証するために、モジュールを実行する直前で、入力パラメータを設定してモジュールを実行したポイントで、出力結果を確認する操作を入力パラメータに様々なデータを設定して繰返しテストすることで、モジュールテストの網羅率を向上させる必要がある。さらに、モジュールは1つではなく、多数存在するため、モジュールの数だけテストを行うため、テスト項目数が膨大になる。
従来のモジュールテストは、図5に示すテスト対象プログラムを例にとると、テスト対象プログラムS10内のモジュールAをテストするには、モジュールAの直前にテストするためのドライバプログラムおよびモジュールAが呼出すスタブプログラムを実装してコンパイルし、デバッガにロードしてテストができる環境を作る。
モジュールAのテストは、モジュールAを実行する直前でドライバプログラムの実行や、ブレーク設定にてRAM変更するなど、様々な入力パラメータを設定してモジュールAおよびモジュールAが呼出すスタブプログラムを実行し、モジュールAの実行が完了するポイントで、出力データを確認する作業を繰返して実施する。更に、複数のモジュールテストを行う場合は、先にテストしたモジュールAのドライバプログラムおよびスタブプログラムを外し、次にテストするモジュールのドライバプログラムおよびスタブプログラムを実装し、コンパイルしてデバッガにロードしてテストすることになる。
すなわち、モジュールのテスト網羅率を向上するために様々なパラメータを設定してテストを繰返し行う必要がある。また、複数のモジュールがあれば、モジュールの数だけテストする必要があるため、手作業で実施するには、膨大なテスト工数が必要になる。また、テスト対象プログラムにモジュールテストするためのドライバプログラムおよびスタブプログラムを記述するためのプログラムソースが見づらくなる。
また、モジュールテストには、数行の簡単な関数モジュールテストから複数のオペレーティングシステム(以下OSと称する)を組込んだシステム結合した状態で、入力パラメータを設定するOSと出力結果を確認する出力ポイントのOSが違うような規模の大きなモジュールテストまである。簡単な関数モジュールのテストでれば、手作業でも比較的容易に時間をかければモジュールテストが可能だが、例えばマルチOSを搭載したシステムで、OS1の入力データをOS2で受けた出力を確認するような大規模なモジュールテストとなると、2つのデバッガを使って連携したテストを行う可能性もあり、マルチOSでの手作業テストは困難となる。
従来のテスト対象プログラムを結合した状態のモジュールテスト方法では、テスト対象プログラム内に多くのテストが必要なモジュールがある場合に、テストするモジュールの
数だけモジュールテストを行うためのドライバプログラムやおよびスタブプログラムおよびモジュールテスト毎にドライバプログラムおよびスタブプログラムをコンパイルするためのコンパイルオブジェクトの記述が必要になる。テスト対象プログラム内のモジュールテストの数が増えると、それにともなってドライバプログラムやスタブプログラムやコンパイルオプションが増えることになり、テスト対象プログラムのプログラムコーディングやデバッグのときに、テスト対象プログラムが見づらくなり、プログラム生産性が低下する。
また、テスト対象プログラム以内に複数のテストを行うモジュールがある場合は、モジュール毎にテストに合わせたコンパイルオプションを設定してコンパイルし、デバッガにロードしてテスト行う必要があり、テストを行うモジュールが多ければ、「コンパイルオプション設定」→「コンパイル」→「デバッガにロード」→「デバッグ」の繰返し作業が必要となり作業効率が悪くなる。
第1の発明のプログラムモジュール検証方式は、機器組込みマイコンシステム(以下マイコンシステムと称する)において、デバッガでインサーキットエミュレータ(以下ICEを称する)またはマイコン命令シミュレータを制御して、テスト対象プログラムをテストする方法であって、
テスト対象プログラムをテストするためプログラムにパッチをあてるプログラム命令を定義するパッチコード定義工程と、
前記パッチコード定義工程にて定義したプログラム命令からパッチを当てるプログラムコードを生成し、テスト対象プログラムの指定したアドレスにパッチを当てる指示を行うパッチ設定工程と、
前記パッチ設定工程で生成したパッチ命令コードと前記パッチ設定工程により指定されたパッチを当てるプログラムアドレスとにより、テスト対象プログラムにパッチを当てるプログラムコードを生成するコード読書き工程と、
テスト対象プログラムをテストするテストケースの作成や設定を行うために、前記パッチコード定義工程と前記パッチ設定工程を操作するテスト操作工程と、
を含む前記パッチを当てたテスト対象プログラムを実行してテストを行うものである。
第1の発明のプログラムモジュール検証方式によると、ダイナミックパッチをテスト対象プログラムに上書き設定することで、パッチを当てるコードやパッチアドレスをツールが処理するため作業効率が向上する。
第2の発明のプログラムモジュール検証方式は、前記パッチ設定工程によりテスト対象プログラムにパッチを当てる前に、パッチを当てる領域のコードを退避するパッチ退避工程をさらに含み、
前記テスト操作工程により前記パッチ退避工程の操作を行うことを特徴とする。
第2の発明のプログラムモジュール検証方式によると、テスト対象プログラムのロジックを壊さないように、プログラムを退避してパッチを当てることで、パッチを当てる領域のコードを退避したテスト対象プログラムを実行できるため、テスト対象以外のプログラムの実行ができ、システム結合した状態でモジュールテストが可能となる。
第3の発明のプログラムモジュール検証方式は、前記パッチ退避工程にてテスト対象プログラムにパッチを当てる前に、退避したプログラムコードを前記パッチ設定工程でパッチを当てる前のプログラムコードに戻すパッチ解除工程をさらに含み、
前記テスト操作工程により前記パッチ解除工程の操作を行うことを特徴とする。
第3の発明のプログラムモジュール検証方式によると、退避したパッチプログラムを元
に戻すことが可能となり、同じシステム状態で引き続き別のモジュールテストができる。
第4の発明のプログラムモジュール検証方式は、テスト対象プログラムに予めパッチを入れるための領域に無効コードなどのプログラムコードを実装し、前記無効コードをテスト対象プログラムから検索し、無効コードのアドレスを検出するパッチ検出工程をさらに含み、
前記テスト操作工程により前記パッチ検出工程の操作を行うことを特徴とする。
第4の発明のプログラムモジュール検証方式によると、テスト対象プログラムに予めパッチを入れる場所にNOPコードを入れて、パッチ命令を上書きしてもテスト対象プログラムが壊されず退避が簡単になり、簡単にツールを作成でき、さらにNOP場所を検索することで飛び先のアドレス検出ができる。
第5の発明のプログラムモジュール検証方式は、先にロードしたテスト対象プログラムに加えて、テスト対象プログラムをデバッガにロードした後にモジュールテストに必要なドライバプログラムコードおよびスタブプログラムコードを登録したデータベースであるドライバテーブルおよびスタブテーブルをロードするスタブロード工程をさらに含み、
前記テスト操作工程により前記スタブロード工程の操作を行うことを特徴とする。
第5の発明のプログラムモジュール検証方式によると、テスト対象プログラムに予めドライバプログラムやスタブプログラムを実装しなくても、デバッグ時にドライバプログラムやスタブプログラムをロードした後、前記第1の発明から第4の発明によるパッチ処理にて、テスト対象プログラムとドライバプログラムおよびスタブプログラムを関数呼び出し命令やジャンプ命令などで接続してテストすることで、テスト対象プログラムの改造が少なくなり、さらにデバッグ用プログラム領域を必要最小限に抑えることができる。
第6の発明のプログラムモジュール検証方式は、前記スタブテーブルに、複数のモジュールテストに対応した複数のドライバプログラムやスタブプログラムを登録することを特徴とする。
第6の発明のプログラムモジュール検証方式によると、複数のモジュールテストに対応して複数のドライバプログラムやスタブプログラムを設定できる。
第7の発明のプログラムモジュール検証方式は、テストを自動で連続実行するためにテストシナリオを登録したテストケースの作成や設定を自動で行う自動テスト工程をさらに含み、
前記自動テスト工程により前記テスト操作工程の操作を行うことを特徴とする。
第7の発明のプログラムモジュール検証方式によると、テストの自動実行によりテストを連続実行することができ、自動実行することでテスト工数の削減およびテスト品質が均一化する。
第8の発明のプログラムモジュール検証方式は、前記テストケースには、テスト対象プログラム内の複数のモジュールテストを自動で連続実行するために複数のテストデータを登録し、
前記自動テスト工程により複数のモジュールテストを自動で連続実行することを特徴とする。
第8の発明のプログラムモジュール検証方式によると、複数のモジュールテストを連続実行することができる。
第9の発明のプログラムモジュール検証方式は、前記自動テスト工程によりテストケースを連続実行した実行結果をデバッガから読込むリモートデバッガ工程と、
前記リモートデバッガ工程で読込んだデータを集計し、集計したデータを実行ログに記録する結果集計工程とをさらに含むことを特徴とする。
第9の発明のプログラムモジュール検証方式によると、テストを実行した結果を読込み、実行結果を効率よく集計することができる。
第10の発明のプログラムモジュール検証方式は、前記結果集計工程により集計した実行結果データと、比較基準となる期待値とを比較して判定し、判定結果を判定ログに記録する結果判定工程をさらに含むことを特徴とする。
第10の発明のプログラムモジュール検証方式によると、テストを実行した結果と期待値を比較し判定することができ、テスト工数を削減できる。
第11の発明のプログラムモジュール検証方式は、前記結果判定工程は、前記結果集計工程の実行結果データと対比する前記期待値が無ければ、当該実行結果データを期待値に記録することを特徴とする。
第11の発明のプログラムモジュール検証方式によると、テストを実行した結果と比較する期待値が無ければ、期待値を生成することができ、テスト工数を削減できる。
第12の発明のプログラムモジュール検証方式は、前記テスト操作工程により指定したデバッガに前記コード読書き工程により作成したプログラムコードの書込みなどのデバッガを制御するコマンドを転送するマイコンを選択するマイコン選択工程をさらに含むことを特徴とする。
第12の発明のプログラムモジュール検証方式によると、複数マイコンシステムを接続し連携してテストを行うことができる。
第13の発明のプログラムモジュール検証方式は、マイコンシステムと通信するためのセット制御工程をさらに含み、
前記テスト操作工程により前記セット制御工程の操作を行うことを特徴とする。
第13の発明のプログラムモジュール検証方式によると、マイコンシステムをUART通信で制御できる。
第14の発明のプログラムモジュール検証方式は、複数のマイコンシステムに対して、選択して通信するためのセット選択工程をさらに含み、
前記テスト操作工程により前記セット選択工程の操作を行うことを特徴とする。
第14の発明のプログラムモジュール検証方式によると、複数のマイコンシステムをUART通信で制御できる。
第15の発明のプログラムモジュール検証方式は、前記テストケースによりテストを実
行する手順を記述したテストシナリオにファイル名を記述することで、テストシナリオに
てテストケースファイルを階層化することを特徴とする。
第15の発明のプログラムモジュール検証方式によると、テストシナリオを階層化でき
る。
第16の発明のプログラムモジュール検証方式は、2つまたは複数のマイコンシステム間や、2つまたは複数のタスク間や、2つまたは複数のモジュール間のデータ転送を行う通信モジュールテストを効率よく行うために、通信データを受信する側からコールバック通知を行い、テスト操作にてコールバック通知を表示できることを特徴とする。
第16発明のプログラムモジュール検証方式によると、通信データを受信するテスト対象プログラムを制御するために各デバッガに発行したコマンドの完了を確認するために、ポーリングで各デバッガに確認していたが、コールバック通知ができることで、ポーリング処理が不要で、コマンド完了の確認を行う応答速度が向上する。
第17の発明のプログラムモジュール検証方式は、2つまたは複数のマイコンシステム間や、2つまたは複数のタスク間や、2つまたは複数のモジュール間の通信テストを連続で複数のコマンドを実行する時に、データを受信するモジュール側から各種イベント発生時にコールバッグする通知から受信処理完了した通知から完了判定を行う条件設定をコマンド発行する毎に行い、処理完了判定した場合は、待機している次のコマンドを発行することを特徴とする。
第17発明のプログラムモジュール検証方式によると、複数のテストを連続して行うときに、コマンドの連続発行を効率よく行うことができる。
第18の発明のプログラムモジュール検証方式は、通信テストを連続で複数実行する時に、データを受信する側から各種イベント発生時にコールバッグする通知をANDやORを使って複数組み合わせた条件で完了判定を行い、処理完了の条件と一致した場合は、待機している次のコマンドを発行することを特徴とする。
第18発明のプログラムモジュール検証方式によると、2つまたは複数のマイコンシステム間や、2つまたは複数のタスク間や、2つまたは複数のモジュール間の複数の通信が組み合わさったテストを連続して行う複雑なテストの場合でも、コマンドの連続発行を効率よく行うことができる。
第19の発明のプログラムモジュール検証方式は、モジュール間の通信テストを行うときに、データを受信するモジュール側から各種イベント発生時にコールバッグする通知から受信処理完了した通知から完了判定するための条件設定を通信テストコマンド発行する前に、テスト操作部から予め行うことで、コマンド発行時に都度行う完了判定の条件設定を不要にすることを特徴とする。
第19発明のプログラムモジュール検証方式によると、完了判定するための条件を予め設定することで、実行するコマンドを簡単化や、リモートデバッガでのコマンド実効処理の高速化ができる。
第20の発明のプログラムモジュール検証方式は、2つまたは複数のマイコンシステム間や、2つまたは複数のタスク間や、2つまたは複数のモジュール間の通信モジュールテストを高速に行う場合に、Excelに記述し複数のテストケースを一気に読込み、エージェントに渡して連続実行することを特徴とする。
第20発明のプログラムモジュール検証方式によると、テストケースを複数行まとめて、エージェントに渡して、連続実行することで、テストケースを都度読込むことが不要となり高速動作を行うことができる。
第21の発明のプログラムモジュール検証方式は、テスト対象プログラムに予めパッチを入れる場所にNOPコードを入れて、パッチ命令を上書きしてもテスト対象プログラムが壊されず退避が簡単になり、簡単にツールを作成できるが、テスト対象プログラム自体に検索する無効コードと同じパターンがある可能性がある。そこで、テスト対象プログラムにパッチを入れるための無効コードを入れないテスト対象プログラムをデバッガにロードして、全テスト対象プログラムコードに無効コードと同じコードがあるか確認し、無効コードと同じコードがあれば、警告表示を行うことを特徴とする。
第21発明のプログラムモジュール検証方式によると、テスト対象プログラムを壊すことが無くなり、意図した無効コード領域にパッチを当てることが可能となり、正確なテストが可能になる。
具体的には図5に示す通り、テスト対象プログラムS10のモジュールAS40をテストするためのドライバプログラムおよびスタブプログラムを、モジュールAS40を実行する直前に組込み、モジュールAS40を繰返し実行するために、モジュールAS40の出口で繰返し実行するジャンプ命令を組込む。この場合に、テスト対象プログラムのオブジェクトをデバッガにロードした後、自動でCALLpatchAS30のアドレスにドライバAS91の関数を呼び出すコール命令や、JMPpatchBS50のアドレスにモジュールAS40を繰返し実行するジャンプ命令のパッチプログラムコードを上書きすることで、モジュールCS80のテストができるため、ドライバプログラムおよびスタブプログラムの記述がなくなりテスト対象プログラムが見やすくなる(第1の発明)。
しかし、ドライバプログラムおよびスタブプログラムをテスト対象プログラムに上書きすると、連続して次のモジュールテストを行う場合は、オブジェクトの再ロードが必要となり時間がかかるため、テスト対象プログラムにパッチを当てる領域を退避させて、パッチプログラムコードをテスト対象プログラムに上書きし、テスト完了後にパッチを元に戻すことで、モジュールの再ロードが不要となりテスト効率が向上する(第2の発明)。さらに、テスト対象プログラムが上書きにより壊されず退避しているため、テスト対象プログラムを結合して実行できる状態でモジュールテストができるため、マイコンシステム動作の各状態におけるモジュールテストが可能となる。例えばDVDプレーヤシステムのモジュールAのテストを、システム状態がPLAY状態に限定したテストが可能となる。また、退避したパッチを元に戻した後、モジュールBをモジュールAと同じPLAY状態で連続してテストできるため、ドライバプログラムおよびスタブプログラムでPLAY状態を作成するより、テスト対象プログラムを実行してPLAY状態を作成するため、テスト精度を向上できる(第2,3の発明)。
しかし、テスト対象プログラムを退避させて、パッチを当てる方法は、退避するプログラム内に条件分岐やスタックを操作する命令があると、退避する処理が難しくなるため、図1に示す通り、テスト対象プログラムに予め分岐命令や関数呼び出し命令コードのパッチを当てるために必要な領域にNOP命令などの無効コードを記述する。モジュールテストに必要なスタブプログラムはテスト対象プログラムを一緒にコンパイルしデバッガにロードした後、モジュールテストするときに、テスト対象プログラムからドライバプログラムおよびスタブプログラムを実行する分岐命令や関数呼び出し命令コードを無効コードの領域にパッチを当てることで、パッチ処理が簡単になる(第4の発明)。
しかし、パッチを当てる無効コードと同じコードがテスト対象プログラム内にあると、テスト対象プログラムからドライバプログラムおよびスタブプログラムを実行する分岐命令や関数呼び出し命令コードを間違ってテスト対象プログラムにパッチを当てる可能性がある。そこで、パッチを当てる無効コードを入れないテスト対象プログラムをデバッガにロードして、パッチを当てる無効コードと同じコードがあるか全テスト対象プログラムコードを確認する。パッチを当てる無効コードと同じコードがテスト対象プログラムにある場合は、警告表示を行うことで、テスト対象プログラム自体にパッチを当てて、意図しないテストを行うことが回避できる(第21の発明)。
しかし、モジュールテストの数だけ、ドライバプログラムおよびスタブプログラムをテスト対象プログラムに加えるとプログラムサイズが大きくなり、デバッガにロードできずテストできなくなるため、テスト対象プログラムだけデバッガにロードした後、ドライバプログラムおよびスタブプログラムは、テストするモジュールに合わせて、必要なドライバプログラムおよびスタブプログラムコードをデバッガにロードすることで、少ないプログラムコードサイズでモジュールテストができる(第5,6の発明)。
テスト対象プログラムからドライバプログラムおよびスタブプログラムを切り離すことで、テスト対象プログラムは見易くなるとともに、モジュールテストを効率よくできることで、プログラムテスト効率が向上する。
さらに、手動操作で行っていたパッチプログラムの書換えなどの操作のテストケースを作成し、自動実行することで誰が実行しても操作が統一されるため、ソフト品質が均一化される(第7,8の発明)。また、自動実行した結果と期待値との比較を行い、判定結果をExcelファイルなどに保存することで、テスト成績書を自動生成できるため作業効率が向上する(第9,10,11の発明)。
さらに、図1に示す通り、複数のデバッガ経由でマイコンシステムを接続し、必要に応
じて、マイコンシステムと直接UARTやEther、USBなどで通信制御することで、例えばDVDプレーヤでシステム状態をPLAYなどの特定に状態に移行して、モジュールテストが可能になることで、マイコンシステム間の差異やバラツキなど、手動では困難なテストができる(第12,13,14の発明)。
さらに、図8に示す通り、マイコンシステム2とマイコンシステム3間で通信において、マイコンシステム2側のモジュールテストを行うときに、テストコマンドをテスト操作からリモートデバッガ経由でデバッガにマイコンシステム3に送信するテストデータを書き込み後に実行することで、マイコンシステム2からマイコンシステム3にデータが転送されるが、マイコンシステム3が受信処理を完了した時点で、デバッガBから受信処理完了のコールバックを受理することで、マイコンシステム3の受理状況をテスト操作にて表示できる(第16の発明)。
さらに、図8に示す通り、マイコンシステム2やマイコンシステム3からリセット時やマイコン実行時、ブレーク停止時などのイベントが発生したときにコールバックに受理するが、マイコンシステム3が受信処理を完了しことを判断するために、コールバックで受理したデータを完了判定に渡し完了有無の判定を行い、完了を判定した時は、リモートデバッガに通知することで、リモートデバッガから連続でテストコマンドを発行するときに、最初のテストコマンドを発行後、次の待機中のテストコマンドの発行タイミングを最小限の時間で発行できる。なお、完了有無の判定を行うための期待値は、テストコマンド発行する毎に、完了判定設定に設定する(第17の発明)。
さらに、通信テストを行うときに、マイコンシステム2からマイコンシステム3にデータ転送後、マイコンシステム3が受信処理を完了したことをコールバック通知する。さらに、マイコンシステム3は、処理した結果のデータをマイコンシステム2に返信し、マイコンシステム2が受理したとことをコールバック通知する。この複数のコールバックが期待通りの順序で発行されている確認するための複数の判定条件の設定ができる(第18の発明)。
さらに、図8に示す通り、リモートデバッガから連続でテストコマンドを発行するときに、テストコマンドの完了を判定するための期待値を同じにすることで、予めテスト操作から完了判定設定を行うことで、完了有無の判定を行うための期待値をテストコマンド発行する毎に設定が不要になり、動作を高速化できる(第19の発明)。
さらに、図8に示す通り、自動テストを行うときにテスト操作が都度、テストケースを自動テストから読込むのではなく、一度に複数のテストケースを読込みエージェントで一時的に保存する一括スクリプト実行にメモリし、テストコマンドをリモートデバッガ経由でデバッガやデバッガBに発行することで、都度テストケースの読み出しが不要になり高速動作が可能になる(第20の発明)。
本発明に係るプログラムモジュール検証方式によると、モジュールテストをテストに応じてドライバプログラムおよびスタブプログラムをコンパイルしデバッガにロードする操作を繰返すことなく、テスト対象プロラムとモジュールテストに必要なドライバプログラムおよびスタブプログラムを必要に応じてデバッガにロードした状態で、テストケースに応じてダイナミックにテストすることが可能となり、モジュールテストのテスト工数の短縮が可能となる。更に従来の様にモジュールテスト毎にテスト対象プログラムのオブジェクトのロードが不要なため、複数のモジュールテストを例えばDVDプレーヤであれば、再生状態など、同じプログラム状態でのテストができるため、テスト精度が向上する。
最初に、以下の実施形態で用いる用語を説明する。
マイコンシステムとは、機器組込みマイコンを搭載したセットである。
ICEとは、マイコンシステムに搭載したマイコンをエミュレートするインサーキットエミュレータである。
仮想マイコンとは、マイコンシステムに搭載したマイコンと同等の動作を行うマイコンシミュレータである。
デバッグセットとは、マイコンシステムで動作するプログラムをデバッグするための評価ボードやICEなどを含めたセットである。
テスト対象プログラムとは、テスト対象となるマイコンシステムに組込まれた全プログラムである。
オブジェクトとは、テスト対象プログラムをコンパイラやアセンブラ、リンカーなどを使って生成するマイコン上で動作するオブジェクトコードである。
モジュールとは、テスト対象プログラムの中でテストを行うための関数モジュールや機能モジュールである。
デバッガとは、テスト対象プログラムを実行するためのマイコンやICEのプログラムの実行開始/停止や、RAM/レジスタの読書き、ブレーク設定などの制御を行う。構成例として、テスト対象プログラムの実行するためのICEの制御や、テスト対象プログラムにテスト対象プログラムを制御するモニタプログラムを組込み、UART/Etherなどの通信を経由してモニタプログラムにコマンドを転送することで、テスト対象プログラムの制御を行う。
ドライバプログラムとは、テスト対象プログラムがモジュールの場合、モジュールを実行できるようにするテスト専用のプログラムである。
スタブプログラムとは、モジュールテストを行うときに、テスト対象プログラムとなるモジュールが呼出すサブルーチンなどのプログラムの代わりにモジュールテストを行うために代用するテスト専用のプログラムである。テスト対象プログラムをテストするために、ドライバプログラムとスタブプログラムを利用することで、モジュールの入口で入力変数などのパラメータを変更して、モジュールを実行し、モジュールの出口で実行結果を判断する動作を繰返して、テスト効率やテスト網羅性をあげることができる。
パッチとは、デバッガにロードしたテスト対象プログラムのオブジェクトのプログラム命令コードを、直接別のプログラム命令コードに書き換えることである。書き換えることで、テスト対象プログラムの動作は、書き換えられたプログラム命令を実行することになる。
パッチマークとは、テスト対象プログラム内にパッチを当てる場所に予めプログラム実行には影響しない無効命令コードを実装することである。例えば、無効命令コードとして、NOP命令を5個入れると5バイトのパッチ領域を確保できる。
2段ジャンプとは、パッチプログラムを当てるときに、パッチを当てるアドレスにある命令コードをプログラム空き領域に退避したとき、退避したプログラム内に分岐命令がある場合に、分岐命令やコール命令ではジャンプするアドレス先まで届かないことがある。そこで、分岐命令から近くのプログラム空き領域にジャンプして、そこからロングジャンプ命令で本来ジャンプすべきアドレスにジャンプすることである。
ActiveXとは、Internet対応のOLEドキュメントオブジェクトであるActiveXドキュメントや、Internetアクセス機能を持ったクライアントアプリケーションを開発するためのAPIである。
OLEとは、Object Linking and Embeddingの略で、アプリケーションが別のアプリケーションの機能を呼出して自分自身の機能のように利用したりできる。後述の実施形態では、HTAからMicrosoft社のExcelアプリケーションを利用する例を説明する。
(第一の実施形態)
本発明の第一の実施形態のプログラムモジュール検証方式について図1ないし図7、図12を参照しながら説明する。
図1はモジュール検証システムのブロック図、図2は複数のテストケースを記述したファイル画像、図3はテストシーケンスのフローチャート、図4はテストスクリプト、図5はテスト対象プログラムのフローチャート、図6は自動検証の操作パネル画像、図7はテスト操作の操作パネル画像、図12はリモートデバッガからデバッガ制御する変換コマンド一覧である。
(システム構成)
本実施形態にかかるモジュール検証システムは、図1に示すように、自動検証11、パッチ制御80、デバッガ200,230、マイコンシステム2,3からなる。
i) 実行し結果を記録し、判断を行う自動検証11としては、テストケース10、テストスクリプト12、実行ログ20、判定ログ30、期待値40、自動テスト50、結果集計60、結果判定70からなる。
テストケース10は、複数モジュールテスト項目と、複数のモジュールテストを連続で自動実行する手順を蓄積したデータをExcelファイルなどに保存する。
テストスクリプト12は、テストケース10内の個々のテストを行う手順を記述したシナリオファイル名に対応した実際のテストシナリオファイル名である。
自動テスト50は、Excelファイルで作成されたテストケース10をActiveXで接続してテストケース10を読書き可能にして、テストケース10のテストスクリプトを順次読込んで連続で自動実行する。
結果集計60は、自動実行した結果データを集計し、結果判定70が接続されていると集計した結果データを結果判定70に渡す。
実行ログ20は、結果集計60で集計した結果データをActiveXで接続したExcelファイルに記録する。
期待値40は、テストケース10に従って自動テストで実行した結果を判定するための基準データである。
判定ログ30は、結果集計60から受けた実行結果データと期待値40を比較して判定した結果を記録する。
ii) テストケース10のテストスクリプトを自動テスト50で実行したパッチ設定やRAM読書き、マイコン実行/停止などのコマンドをデバッガに指示するパッチ制御80と
しては、テスト操作90、パッチコード定義100、パッチ設定110、パッチ退避120、パッチ解除130、パッチ検出140、パッチ検索変更142、リモートデバッガ150、コード読書き160、スタブロード170、スタブテーブル180、マイコン選択190、セット制御290、セット選択300からなる。
テスト操作90は、自動テスト50から受けたコマンドを解析して、パッチに関するコマンド以外のRAM読書き、マイコン実行/停止などは、図12に示すリモートデバッガ150でデバッガを制御できるコマンドに変換して、マイコン選択190経由でコマンド引数で指定されたデバッガにコマンドを発行し、パッチ設定に関するコマンドの場合は、パッチ処理するためにパッチコード定義100やパッチ設定110やパッチ退避120やパッチ解除130やパッチ検出140やパッチ検索変更142やリモートデバッガ150やスタブロード170やセット制御290の各パッチ処理の実行を指示する。
パッチコード定義100は、テスト操作90からパッチを当てる無効命令コードや、パッチマークを検出するプログラムコードサイズなどの環境設定を行う。
パッチ設定110は、テスト操作90からテスト対象プログラムにパッチを当てるコール命令やジャンプ命令のなどの命令コードやパッチアドレスや飛び先アドレスやパッチを当てるパッチマークの場所などの指定により、パッチを当てるジャンプ命令や関数コール命令などのコードを生成する。
パッチ退避120は、テスト操作90からパッチを当てるアドレス領域の命令コードの退避と、退避する命令に分岐命令がある場合は、退避後に退避プログラムが正常に動作するように2段ジャンプなどの分岐命令コードを生成する。
パッチ解除130は、テスト操作90からパッチを元に戻す指示を受けると、パッチ退避120でパッチを当てる前に退避したプログラムコードを読込んで元に戻す。
パッチ検出140は、テスト操作90からデバッガに読込んだテスト対象プログラムのパッチマークのアドレスを検出するために、検索を開始するアドレスと、検索するコードの長さ、検索する命令コード、検索開始するアドレスから何番目のパッチマークを検索するかのインデックスを元にパッチマークを検出する。
パッチ検索変更142は、テスト対象プログラムのテストを開始する前に、パッチを入れるための無効コードを入れていないテスト対象プログラムをテスト操作90からリモートデバッガ150からデバッガ200にロードした後、パッチ検索変更142で、パッチを入れるための無効コードと同じコードがあるか全テスト対象プログラムを検索し、無効コードと同じコードがある場合は、テスト操作90で警告表示をする。無効コードと同じコードがテスト対象プログラムに無ければモジュールテスト可能となる。
コード読書き160は、パッチ設定110やパッチ退避120などで生成した命令コードをデバッガにロードしたテスト対象プログラムからパッチを当てるために書換えと、パッチ検出140にてテスト対象プログラムコードからパッチマークを検出するために、デ
バッガにロードされているテスト対象プログラムコードを読み書きする。
マイコン選択190は、コード読書き160から指示を受けたデバッガのオブジェクトの命令コードの読書き及び、パッチに関するコマンド以外のRAM読書き、マイコン実行/停止などをテスト操作90から受けたコマンドでデバッガを制御するために、ActiveXでデバッガと接続する。
リモートデバッガ150は、図12に示すテストコマンドをデバッガ制御できるコマンドに変換する機能を有する。動作は、自動テスト50でテストスクリプトを実行して、テスト操作90に受けたテストコマンドが、結果データを読込むコマンドであれば、テスト対象のデバッガを制御してICEからRAMデータを読み込む。また、デバッガにテスト対象プログラムのロードや、マイコンリセット、マイコン実行、ブレーク設定などデバッガをリモートコントロールできる。
スタブテーブル180は、デバッガにロードしたテスト対象プログラムのオブジェクトのモジュールテストを行うために、追加するドライバプログラムおよびスタブプログラムオブジェクトをモジュールテストの数だけ格納する。
スタブロード170は、モジュールテスト実行時に、テスト操作90で指定されたドライバプログラムおよびスタブプログラムのオブジェクトをスタブテーブル180から読込み、コード読書き160にドライバプログラムおよびスタブプログラムのオブジェクトを渡す。
セット制御290は、テスト操作90からマイコンシステムを制御するコマンドデータを生成する。
セット選択300は、モジュールテストを行う際に、UARTやEtherなどの通信を使って、マイコンシステムをモジュールテストする状態に移行させるために、テスト操作90から制御するマイコンシステム番号と通信方法と通信データをセット制御290に渡して、選択したマイコンシステムに指定した通信方法とデータで、マイコンシステムを制御する。
iii) デバッガ200は、マイコン選択190からの指示されたパッチセットやRA
M読書きのなどのコマンドをデバッガに渡し制御するために、ActiveXで接続されている。
iv) テスト対象プログラムを実行するマイコンシステム2としては、ICE210、テスト対象プログラム220からなる。
ICE210は、マイコンをエミュレートする。
テスト対象プログラム220は、テストするモジュールを実行するために、ICE210で動作する。
v) デバッガB230は、マイコン選択190からの指示されたパッチセットやRAM読書きのなどのコマンドをデバッガに渡し制御するために、ActiveXで接続されている。
vi) テスト対象プログラムを実行するマイコンシステム3としては、ICE−B240、テスト対象プログラムB250からなる。
ICE−B240は、マイコンをエミュレートする。
テスト対象プログラムB250は、テストするモジュールを実行するために、ICE−
B240で動作する。
(テストシーケンス)
本実施形態にかかるモジュール自動検証方式は、先ずテスト対象プログラムにパッチを当てることが可能か確認するため、パッチを当てるための無効コードを入れていないテスト対象プログラムをテスト操作90からリモートデバッガ150経由でデバッガにロードした後、テスト操作90からパッチ検索変更142からデバッガにロードしたテスト対象プログラムにパッチを入れた無効コードと同じコードがないか全テスト対象プログラムのコードを検索する。無効コードと同じコードがあれば、テスト操作90にて警告表示する。無効コードと同じコードがなければ、モジュールのテストが可能となり、パッチを入れるための無効コードが入ったテスト対象プログラムをテスト操作90からリモートデバッガ150経由でデバッガにロードする。
図1に示すテストケース10の書式の一例として、複数のモジュールテストを連続して実行するために、図2に示すように、複数のテストケース(モジュールテストAのテストケース10−1、モジュールテストBのテストケース10−2、モジュールテストCのテストケース10−3、モジュールテストDのテストケース10−4)をExcelファイルに記述している。なお、Excelファイルに記述したテストケースは、複数のモジュールテストを行うときに、共通のテストシナリオを実行する場合がある。そこで、Excelファイルに記述したテストケースをテストスクリプト12のファイルに保存し、Excelファイルには、テストスクリプト12のファイル名を記述することで、Excelファイルに同じテストシナリオを記述する必要がなくなる。
テストケース10のExcelファイルに設定したテストシーケンスとして、例えば、図5に示すテスト対象プログラム220において、CALLpatchAS30のアドレスにドライバAS91へ関数呼び出しする命令およびJMPpatchBS50のアドレスにCALLpatchAS30にジャンプするパッチを当ててテストするシーケンスについて説明する。
(テスト環境設定S200)
テストシーケンスは、図3に示す通り、テスト環境設定S200で、テストケース10のExcelファイルを自動テスト50からActiveXを使って開き、図4に示す通りのテスト環境を設定するテストスクリプトをテストケース10のExcelから読込み、自動テスト50で実行し、各コマンドをテスト操作90に転送する。
自動検証11の操作例として、図6に示す通り、「CPU Select」11−1でマイコンシステムを制御するデバッガを選択し、「ファイル選択」11−2でテストケース10のExcelファイルを読込み、「シート選択」11−3でExcelファイル内のテストするシートを選択し、「モジュール」11−4で複数のモジュールテストを表示したリストからテストするモジュールを選択した後、「開始」ボタン11−5で自動テストを開始する。
自動検証を開始すると、テスト操作90で実行するコマンド、すなわちテスト対象プログラムからパッチを当てる無効コードの検索条件を変更するコマンド例として、
cpuSTATUS(1,3,”patchReplace=”00000000”);
の場合は、テスト操作90でコマンドを解析して、パッチを当てるテスト対象プログラムからパッチマークを検索する命令コードとして、”00000000”をパッチコード定義100にて変更する。
また、テスト対象プログラムに実装した無効命令コードであるパッチマークを指定したシンボル名から検索するバイト数の長さを指定するコマンド例として、
cpuSTATUS(1,3,”patchSerch=”0x200”);
の場合は、テスト操作90でコマンド解析してパッチマークを検索する最大バイト数を0x200バイトに変更する。
テスト環境設定するテスト操作90の手動操作例として、図7の90−1,90−2に示す通り、「CPU Select」でマイコンシステムを制御するデバッガを選択した後、「StatusSet」の「Send」で設定するコマンドを記述し、「StatusSet」ボタンをクリックすることで、選択したデバッガにテスト環境を設定する。なお、自動テスト50から指示を受けると、手動操作と同じ動作を自動で行う。
(システム状態設定S205)
テスト対象プログラムを結合した状態でモジュールテストする場合に、モジュールをテストする状態にマイコンシステムを移行させるために、デバッガを介さずマイコンシステムを直接制御するUARTやEtherなどの通信を使ってテストできる状態に移行する。例えばDVDプレーヤでPLAYにした状態でモジュールテストを行う場合、テストケース10にPLAY状態にする記述したテストスクリプトを自動テスト50が読込み、テスト操作90でコマンド解析して、マイコンシステムをUART通信で直接制御するコマンドであれば、UART制御コマンドとUART通信するマイコンシステム番号をセット制御290に渡す。セット制御290は、制御するマイコンシステムの番号に合わせてセット選択300からマイコンシステムとして例えば、マイコンシステム2のセットをモジュールテストする状態になるように制御するコマンド例として、
tput(1,”playmode”);
の場合は、1番のマイコンシステムにUART通信で”playmode”文字列を送信することになる。
また、マイコンシステムにUART通信でコマンドを送信した後、返信データにて状態を確認するコマンド例として、
twait(1,”end”,6000);
の場合は、1番のマイコンシステムからUART受信データとして6000ミリ秒以内に”end”文字を受けるまで待つが、6000ミリ秒以上経過するとタイムオーバーとして異常処理を行う。
システム状態を設定するテスト操作90の手動操作例として、図7の90−3に示す通り、「Function」でマイコンシステムにUART通信経由で制御するコマンドを記述し、「Function」ボタンをクリックすることで、選択したマイコンシステムにUART通信経由で制御する。なお、自動テスト50から指示を受けると、手動操作と同じ動作を自動で行う。
(パッチ設定S210)
モジュールテストする状態に移行した後、モジュールテストができるようにドライバプログラムおよびスタブプログラムを実行するためのパッチの設定を行う。パッチの書込みアドレス指定方法には、直接指定するアドレス値と、間接にパッチアドレスを取得する2通りの方法がある。
CALLpatchAS30のアドレスにドライバAS91へ関数呼び出しする命令を入れるパッチのコマンド例では、直接アドレス指定する方法は、
cpuPATCHSET(1,”main”+20,”DrvA”,”DCALL”);
となり、テスト操作90でコマンドを解析して、パッチ設定110にパッチを設定する(1,”main”+20,”DrvA”,”DCALL”)のパラメータを渡す。第4引数の”DCALL”より、第2引数の”main”+20アドレスに、”DrvA”の関数呼び出しするパッチを書込む。
間接的にパッチアドレスを取得する方法は、
cpuPATCHSET(1,”main”,”DrvA”,”CALL”,A);
となり、テスト操作90でコマンドを解析して、パッチ設定110にパッチを設定する(1,”main”,”DrvA”,”CALL”,A)のパラメータを渡す。このパラメータの動作は、第2引数の”main”アドレスから第5引数のA番目のパッチマークのアドレスに、第3引数の”DrvA”関数を呼び出す命令をパッチ設定することになる。この動作を行うために、”main”アドレスより、パッチコード定義100に設定したパッチマークの命令コードと同じコードをテスト対象プログラムから検出するために、コード読書き160から第1引数で指定したデバッガ200のテスト対象プログラムの”main”アドレスを先頭にパッチマークを検出するために、パッチコード定義100で設定したサイズの命令コードをデバッガ200から読込み、読込んだコードからパッチ設定110でパッチマークをサーチする。サーチにあたり、第5引数のA番目のパッチマークを検出するまでサーチを行い、A番目のパッチマークのアドレスを検出する。
パッチを書込むアドレスを検出すると、そのアドレスをパッチ設定110からパッチ退避120に退避番号を付けて退避し、”DrvA”関数を呼び出す”CALL”命令コードを生成し、パッチアドレスとパッチ命令コードとパッチを当てるデバッガ番号をコード読書き160へ渡す。
コード読書き160は、パッチ設定110から受けたテスト対象プログラムの命令コードを書き換えるパッチアドレスとパッチ命令コードをマイコン選択190に渡す。
マイコン選択190は、ActiveXで接続したデバッガ200からICE210で動作するテスト対象プログラム220の命令コードに書き換える。
次に、JMPpatchBS50のアドレスにCALLpatchAS30にジャンプする命令を入れるパッチを設定するために、パッチの書込みアドレス指定方法は、直接指定するアドレス値と、間接にパッチアドレスを取得する2通りの方法がある。
JMPpatchBS50のアドレスにCALLpatchAS30のアドレスにジャンプする命令を入れるパッチのコマンド例では、直接アドレス指定する方法は、
cpuPATCHSET(1,”main”+30,”CALLpatchA”,”DJMP”);
により、テスト操作90でコマンドを解析して、パッチ設定110にパッチを設定する(1,”main”+30,”CALLpatchA”,”DJMP”)のパラメータを渡す。第4引数の”DJMP”より、第2引数の”main”+30アドレスに、CALLpatchAS30へジャンプするパッチを書込む。
間接的にパッチアドレスを取得する方法は、
cpuPATCHSET(1,”main”,”CALLpatchA”,”JMP”,A);
により、テスト操作90でコマンドを解析して、パッチ設定110にパッチを設定する(1,”main”,”CALLpatchA”,”JMP”,A)のパラメータを渡す。このパラメータの動作は、第2引数の”main”アドレスから第5引数のA番目のパッチマークのアドレスに、第3引数の”CALLpatchA”アドレスにジャンプする命令をパッチ設定することになる。
この動作を行うために、”main”アドレスより、パッチコード定義100に設定したパッチマークの命令コードと同じコードをテスト対象プログラムから検出するために、コード読書き160から第1引数で指定したデバッガ200のテスト対象プログラムの”main”アドレスを先頭にパッチマークを検出するために、パッチコード定義100で設定したサイズの命令コードをデバッガ200から読込み、読込んだコードからパッチ設定110でパッチマークをサーチする。サーチにあたり、第5引数のA番目のパッチマークを検出するまでサーチを行い、A番目のパッチマークのアドレスを検出する。
パッチを書込むアドレスを検出すると、そのアドレスをパッチ設定110からパッチ退
避120に退避番号を付けて退避し、”CALLpatchA”アドレスにジャンプする”JMP”命令コードを生成し、パッチアドレスとパッチ命令コードとパッチを当てるデバッガ番号をコード読書き160へ渡す。
コード読書き160は、パッチ設定110から受けたテスト対象プログラムの命令コードを書き換えるパッチアドレスとパッチ命令コードをマイコン選択190に渡す。
マイコン選択190は、ActiveXで接続したデバッガ200からICE210で動作するテスト対象プログラム220の命令コードに書き換える。
以上により、図5に示す通り、初期設定S20を実行後に、モジュールAS40をテストするためのドライバプログラムであるDrvA関数を呼び出し、モジュールAS40を実行後に、繰返しモジュールAS40を実行するためにCALLpatchAS30にジャンプすることで、モジュールAS40のテストができるプログラムにダイナミックに変更したとなる。
また、テスト対象プログラムに予めドライバプログラムを組み込んでデバッガにロードするときに、プログラムコードサイズが大き過ぎて、全てのドライバプログラムがデバッガに入りきらない場合に、例えば、予めモジュールAのテストに必要なドライバプログラムAS100のオブジェクトおよび、シンボル情報をスタブテーブル180に登録しておき、モジュールAS40のテストを実行するときに、ドライバプログラムAS100のオブジェクトをデバッガにロードする。
ドライバプログラムAS100のオブジェクトをデバッガにロードする動作として、テストケース10に記述してテストスクリプトを自動テスト50が読込み、テスト操作90が受けたスタブロードコマンド例として、
cpuSTUBSET(1,”DrvA”);
を受けた場合は、スタブロード170にパラメータ(1,”DrvA”)を渡し、スタブテーブル180に定義したDrvAオブジェクトと、そのシンボル情報を読込み、コード読書き160にプログラム空き領域に設定する指示で渡す。コード読書き160は、テスト対象プログラムコードの空き領域にドライバプログラムを書込み、マイコン選択190から指定したデバッガとして例えばデバッガ200にドライバプログラムおよびシンボル情報をロードすることで、ドライバプログラムを予めテスト対象プログラムに書込む場合と同じ状態にできる。
パッチ設定するテスト操作90の手動操作例として、図7の90−4に示す通り、「PatchSet」でパッチを当てる無効命令コードを検索開始するアドレスまたはシンボル名を記述し、無効コードを記述した無効命令コードのアドレスに、Call/Brのチェックボックスに設定し、「から」にCall/Brのチェックボックスで指定した命令でジャンプ先のアドレスに飛ぶ命令コードのパッチを書込んだ後、「PatchSet」ボタンをクリックすることで、選択したマイコンシステムのデバッガを制御する。なお、自動テスト50から指示を受けると、手動操作と同じ動作を自動で行う。
(モジュール入口ブレーク設定S220)
DrvAS90を実行する前に、モジュールAの入力パラメータを設定するために、ブレーク設定を行うために、図4に示す通りのテストスクリプトで、
cpuBREAKSET(1,”CALLpatchA”);
をテスト操作90でコマンド解析し、パッチ設定以外のコマンドであれば、図12に示すリモートデバッガ150でデバッガを制御できるコマンドに変換して、マイコン選択190を通して、コマンドの第一引数より1番のデバッガ200にCALLpatchAアドレスでブレーク設定を指示する。
ブレーク設定するテスト操作90の手動操作例として、図7の90−5に示す通り、「BreakSet」の「addres」でブレークポイントを設定するアドレスまたはシンボル名を記述し、「BreakSet」ボタンをクリックすることで、選択したマイコンシステムのデバッガを制御する。なお、自動テスト50から指示を受けると、手動操作と同じ動作を自動で行う。
(入口ブレーク停止操作S230)
ブレーク設定後、モジュールAS40の入口で、ブレーク停止させるために、デバッガを制御するスクリプトをテストケース10から自動テスト50で読出したテストスクリプトを実行する。実行するテストスクリプト例として、マイコンをリセットして実行開始し、リモコンなどから受信したデータからキーコードを格納するRAMに直接キーコードデータを書込むなどで、ブレーク停止させる。
マイコンをリセットして実行開始キーコード書込むテストスクリプト例として、
cpuRESET(1);
cpuGO(1);
cpuPUT(1,”keycode”,1,0x1e);
を記述すれば、自動テスト50でテストスクリプト12を実行し、コマンドをテスト操作90に渡して、コマンド解析した結果、全てのコマンドがパッチ設定以外のコマンドのため、図12に示すリモートデバッガ150でデバッガを制御できるコマンドに変換して、マイコン選択190を通して、コマンドの第一引数より1番のデバッガ200にマイコンリセットし、マイコン実行し、keycode変数に1バイトデータの0x1eを書込む指示を行う。
ブレーク停止操作を行うためにデバッガの実行制御を行うテスト操作90の手動操作例として、図7の90−6に示す通り、「RESET」ボタンをクリックすることで、マイコンをリセットできる。また、「GO」コマンドでマイコンの実行を開始する。なお、自動テスト50から指示を受けると、手動操作と同じ動作を自動で行う。
(入力パラメータ設定S250)
モジュールAS40の入口でブレーク停止した後、モジュールAをテストするための入力パラメータを設定したテストケース10からテストスクリプトを自動テスト50が読込む。テストスクリプトに記述したモジュールAS40の実行を制御する自動変数やグローバル変数などをテスト操作90でコマンド解析し、パッチ以外のコマンドなので、リモートデバッガ150からマイコン選択190で指定したデバッガのテスト対象プログラムのRAMデータに書込む。
入力パラメータの設定として、関数の引数や構造体のポインタのデータを設定するテストスクリプト例として、
cpuVALEXEC(1,”param1=0x123”);
cpuVALEXEC(1,”ptr−>data=0xa2”);
を記述すれば、自動テスト50でテストスクリプトを実行し、コマンドをテスト操作90に渡す。テスト操作90にてコマンド解析した結果、全てのコマンドがパッチ設定以外のコマンドのため、リモートデバッガ150からマイコン選択190を通して、コマンドの第一引数より1番のデバッガ200にparam1変数に0x123を書込み、ptr−>data構造体のポインタに0xa2データを書込む指示を行う。
ブレーク停止後、入力パラメータを設定するためのテスト操作90の手動操作例として、図7の90−7に示す通り、「ValCmd」ボタンで自動変数の書き込みや、「RAM−RW」ボタンでグローバル変数の書き込みができる。なお、自動テスト50から指示を受けると、手動操作と同じ動作を自動で行う。
(モジュール出口ブレーク設定S260)
モジュールAS40をテストするための入力パラメータのデータ書き込みを完了すると、モジュールAS40を実行完了する出口にブレーク設定を行うために、図4に示す通りのテストスクリプト例として、
cpuBREAKSET(1,”JMPpatchB”);
を記述すれば、自動テスト50でテストスクリプトを実行し、コマンドをテスト操作90に渡す。テスト操作90にてコマンド解析した結果、全てのコマンドがパッチ設定以外のコマンドのため、リモートデバッガ150からマイコン選択190を通して、コマンドの第一引数より1番のデバッガ200にJMPpatchBアドレスにブレーク設定を指示する。
ブレーク設定するテスト操作90の手動操作例として、図7の90−5に示す通り、「BreakSet」の「addres」でブレークポイントを設定するアドレスまたはシンボル名を記述し、「BreakSet」ボタンをクリックすることで、選択したマイコンシステムのデバッガを制御する。なお、自動テスト50から指示を受けると、手動操作と同じ動作を自動で行う。
(出口ブレーク停止操作S270)
ブレーク設定後、モジュールAS40を実行してブレーク停止させるために、デバッガを制御するスクリプトをテストケース10から自動テスト50で読出してテストスクリプトを実行する。実行するテストスクリプト例として、
cpuPUT(1,”Event”,1,0x3a);
を記述すれば、自動テスト50でテストスクリプトを実行し、コマンドをテスト操作90に渡す。テスト操作90にてコマンド解析した結果、全てのコマンドがパッチ設定以外のコマンドのため、リモートデバッガ150からマイコン選択190を通して、コマンドの第一引数より1番のデバッガ200にEvent変数の1バイトの0x3aデータを書込む指示を行う。
ブレーク停止操作を行うためにデバッガの実行制御を行うテスト操作90の手動操作例として、図7の90−6に示す通り、「RESET」ボタンをクリックすることで、マイコンをリセットできる。また、「GO」コマンドでマイコンの実行を開始する。なお、自動テスト50から指示を受けると、手動操作と同じ動作を自動で行う。
(実行結果データ読込みS290、実行結果判定S300)
ブレーク停止後、テストケース10から自動テスト50で読出したテストスクリプトを実行する。実行するテスト結果をデバッガから読込むテストスクリプト例として、
rdBuf=cpuGET(”seg7_buf”,4,0);
rdCal=cpuVALEXEC(1,”iCal”);
を記述すれば、自動テスト50でテストスクリプトを実行し、コマンドをテスト操作90に渡す。テスト操作90にてコマンド解析した結果、全てのコマンドがパッチ設定以外のコマンドのため、リモートデバッガ150からマイコン選択190を通して、コマンドの第一引数より1番のデバッガ200にグローバルのseg7_buf変数とローカルのiCal変数を読み出すコマンドを発行する。ICE210からseg7_buf変数とCal変数のデータを読み出し、デバッガ200からリモートデバッガ150にて読込み、テスト操作90を経由して、結果集計60に実行した結果のRAMデータを渡す。結果集計60は、実行結果として実行ログ20に記録する。また、期待値40で自動比較するためのデータが設定されている場合は、結果判定70が期待値40よりテスト項目に対応したデータを読込み判定する。判定した結果は、結果判定70により判定ログ30に書込む。
また、テスト項目に対応した期待値40が設定されて無ければ、実行結果を期待値40に書込み、次回のテストを行うときの期待値データとすることができる。
ブレーク停止後、出力パラメータ設定するためのテスト操作90の手動操作例として、図7の90−7に示す通り、「ValCmd」ボタンで自動変数の読み込みや、「RAM−RW」ボタンでグローバル変数の読み込みができる。なお、自動テスト50から指示を受けると、手動操作と同じ動作を自動で行う。
(テスト項目完了S310)
モジュールAS40の複数のテスト項目を実行する場合に繰返し実行するかの判定を行う。終了判定は、テストケース10のテスト項目に終了記号を設定することで、自動テスト50がテスト項目を読込んだ時点で、テスト完了か判断する。また、自動テストの操作で中断操作をした場合にも完了となる。
(パッチ設定解除S320)
モジュールAS40のテストを完了すると、プログラム動作を元に戻すため、テストケース10から自動テストで読込んだテストスクリプトを実行し、パッチやブレークポイント設定の解除を行う。
パッチ設定を解除するテストスクリプトの例として、cpuPATCHCLR(1,0)でパッチ設定した全てを元に戻すコマンドは、テスト操作90でコマンド解析した後、コマンドのパラメータ(1,0)をパッチ解除130に渡す。パッチ解除130は、パラメータの第二引数の番号に応じて、全てのパッチ設定または特定のパッチ設定の命令コード領域を元に戻す動作を行う。パッチ設定を元に戻すために、パッチ退避120から退避した番号に対応したパッチアドレスと命令コードを読込み、パッチ解除130からコード読書き160に、元に戻すアドレスと命令コードを渡す。コード読書き160は、書き換えるデバッガ番号と、書き換えるアドレスと命令コードをマイコン選択190に渡す。マイコン選択190は、指定したデバッガとして例えば、デバッガ200に接続したICE210のテスト対象プログラムの命令コードを書き換える。
ブレークポイントの解除や、RAMデータを元に戻すコマンドは、テスト操作90からマイコン選択190を通して、指定したデバッガを制御することで元に戻す。
パッチ設定解除の操作を行うためのテスト操作90の手動操作例として、図7の90−8に示す通り、パッチ設定時の戻り値であるパッチ設定番号を使って、「PatchClr」の「ClrNo」にパッチ番号を記述し、「PatchClr」ボタンをクリックすることで、パッチ前の状態に戻せる。また、ブレーク解除の操作は、図7の90−9に示す通り、ブレーク設定時の戻り値のブレーク設定番号を「BreakClr」の「No」に設定し、「BreakClr」ボタンをクリックすることで、ブレークポイントを解除できる。なお、自動テスト50から指示を受けると、手動操作と同じ動作を自動で行う。
(モジュールテスト完了S330)
テストケース10に図2に示す通り、複数モジュールのテストケース10−1〜10−4を定義した場合に、モジュールテストを繰返し実行するかの判断を行う。テストケースを自動テスト50が読込んだ結果、モジュールテストの終了マークが無く、自動テスト50の操作によりテスト中断操作がされなければ、モジュールテストを繰返し実施する。モジュールテストの終了マークを検出したときにテスト完了となる。
(第二の実施形態)
本発明の第二の実施形態のプログラムモジュール検証方式について図2,6,7,12、図8ないし図11を参照しながら説明する。
図8はマイコンシステム2とマイコンシステム3間の通信をテストするためのモジュール検証システムのブロック図、図9はテストシーケンスのフローチャート、図10はテストスクリプト、図11は2つマイコンシステム間の通信テストを行うテスト対象プログラムのフローチャートである。
(システム構成)
本実施形態にかかるモジュール検証システムは、図8に示すように、自動検証11、パッチ制御80、デバッガ200,230、マイコンシステム2,3からなる。
i) 実行し結果を記録し、判断を行う自動検証11としては、テストケース10、テストスクリプト12、実行ログ20、判定ログ30、期待値40、自動テスト50、結果集計60、結果判定70からなる。
テストケース10は、複数モジュールテスト項目と、複数のモジュールテストを連続で自動実行する手順を蓄積したデータをExcelファイルなどに保存する。
テストスクリプト12は、テストケース10内の個々のテストを行う手順を記述したシナリオファイル名に対応した実際のテストシナリオファイル名である。
自動テスト50は、Excelファイルで作成されたテストケース10をActiveXで接続してテストケース10を読書き可能にして、テストケース10のテストスクリプトを順次読込んで連続で自動実行する。
結果集計60は、自動実行した結果データを集計し、結果判定70が接続されていると集計した結果データを結果判定70に渡す。
実行ログ20は、結果集計60で集計した結果データをActiveXで接続したExcelファイルに記録する。
期待値40は、テストケース10に従って自動テストで実行した結果を判定するための基準データである。
判定ログ30は、結果集計60から受けた実行結果データと期待値40を比較して判定した結果を記録する。
ii) テストケース10のテストスクリプトを自動テスト50で実行したパッチ設定やRAM読書き、マイコン実行/停止などのコマンドをデバッガに指示するパッチ制御80と
しては、テスト操作90、パッチコード定義100、パッチ設定110、パッチ退避120、パッチ解除130、パッチ検出140、リモートデバッガ150、コールバック152、完了判定設定153、完了判定154、エージェント156、一括スクリプト実行158、コード読書き160、マイコン選択190からなる。
テスト操作90は、自動テスト50から受けたコマンドを解析して、パッチに関するコマンド以外のRAM読書き、マイコン実行/停止などは、図12に示すリモートデバッガ150でデバッガを制御できるコマンドに変換して、マイコン選択190経由でコマンド引数で指定されたデバッガにコマンドを発行し、パッチ設定に関するコマンドの場合は、パッチ処理するためにパッチコード定義100やパッチ設定110やパッチ退避120やパッチ解除130やパッチ検出140やリモートデバッガ150の各パッチ処理の実行を指示する。
パッチコード定義100は、テスト操作90からパッチを当てる無効命令コードや、パッチマークを検出するプログラムコードサイズなどの環境設定を行う。
パッチ設定110は、テスト操作90からテスト対象プログラムにパッチを当てるコール命令やジャンプ命令のなどの命令コードやパッチアドレスや飛び先アドレスやパッチを当てるパッチマークの場所などの指定により、パッチを当てるジャンプ命令や関数コール命令などのコードを生成する。
パッチ退避120は、テスト操作90からパッチを当てるアドレス領域の命令コードの退避と、退避する命令に分岐命令がある場合は、退避後に退避プログラムが正常に動作するように2段ジャンプなどの分岐命令コードを生成する。
パッチ解除130は、テスト操作90からパッチを元に戻す指示を受けると、パッチ退避120でパッチを当てる前に退避したプログラムコードを読込んで元に戻す。
パッチ検出140は、テスト操作90からデバッガに読込んだテスト対象プログラムのパッチマークのアドレスを検出するために、検索を開始するアドレスと、検索するコードの長さ、検索する命令コード、検索開始するアドレスから何番目のパッチマークを検索するかのインデックスを元にパッチマークを検出する。
コード読書き160は、パッチ設定110やパッチ退避120などで生成した命令コードをデバッガにロードしたテスト対象プログラムからパッチを当てるために書換えと、パッチ検出140にてテスト対象プログラムコードからパッチマークを検出するために、デ
バッガにロードされているテスト対象プログラムコードを読み書きする。
マイコン選択190は、コード読書き160から指示を受けたデバッガのオブジェクトの命令コードの読書き及び、パッチに関するコマンド以外のRAM読書き、マイコン実行/停止などをテスト操作90から受けたコマンドでデバッガを制御するために、ActiveXでデバッガと接続する。
リモートデバッガ150は、自動テスト50でテストスクリプトを実行して、テスト操作90に受けたコマンドが、結果データを読込むコマンドであれば、テスト対象のデバッガを制御してICEからRAMデータを読み込む。また、デバッガにテスト対象プログラムのロードや、マイコンリセット、マイコン実行、ブレーク設定などデバッガをリモートコントロールできる。
コールバック152は、各デバッガがリセットやマイコン実行やブレーク停止などが発生したときに、デバッガ200またはデバッガB230からコールバック152にメッセージを通知する。コールバッグ152で受理したメッセージは、テスト操作90に転送して表示する。また、完了判定154に送りリモートデバッガ150から発行したコマンド完了の判定を行う。
完了判定設定153は、各デバッガにてイベントが発生した場合に、コールバック152に返信する。コールバック152で受理したデータは完了判定154に転送され完了判定設定153で設定した期待値と比較し、一致する有無の判定に使う。また、テスト操作90から直接、完了判定設定153に設定できる。
完了判定154は、各デバッガにてイベントが発生した場合に、コールバック152に返信する。コールバック152で受理したデータは完了判定154に転送され完了判定設定153で設定した期待値と比較し、一致する有無の判定に使う。一致した場合は、リモートデバッガ150に対して、次のテストコマンドを発行可能になったことを通知する。リモートデバッガ150は、テストコマンドの発行待機を解除して、各デバッガにコマンド発行可能となる。
エージェント156は、自動テスト50が読込むテストケース10から複数のテストを読込みテスト操作90からエージェント156渡す。エージェント156は、一括スクリプト実行158のメモリを一時的に保存して、自動テスト50を解さずエージェント156からリモートデバッガ150に順次テストコマンドを転送して連続実行できる。
iii) デバッガ200は、マイコン選択190からの指示されたパッチセットやRA
M読書きのなどのコマンドをデバッガに渡し制御するために、ActiveXで接続されている。また、デバッガでブレーク停止などが発生した場合は、コールバック152にイベントを通知する。
iv) テスト対象プログラムを実行するマイコンシステム2としては、ICE210、テスト対象プログラム225からなり、マイコンシステム3とUARTで接続し通信できる。
ICE210は、マイコンをエミュレートする。
テスト対象プログラム225は、テストするモジュールを実行するために、ICE210で動作する。
v) デバッガB230は、マイコン選択190からの指示されたパッチセットやRAM読書きのなどのコマンドをデバッガに渡し制御するために、ActiveXで接続されている。また、デバッガでブレーク停止などが発生した場合は、コールバック152にイベントを通知する。
vi) テスト対象プログラムB255を実行するマイコンシステム3としては、ICE−B240、テスト対象プログラムB255からなり、マイコンシステム2とUARTで接続し通信できる。
ICE−B240は、マイコンをエミュレートする。
テスト対象プログラムB255は、テストするモジュールを実行するために、ICE−
B240で動作する。
(テストシーケンス)
本実施形態にかかるモジュール自動検証方式は、2つまたは複数のマイコンシステム間や、2つまたは複数のタスク間や、2つまたは複数のモジュール間のデータ転送を行う場合に、それぞれにおいて通信を行うための送信側と受信側のテスト対象プログラムをテストすることを目的としている。
図8に示すテストケース10の書式の一例として、複数のモジュールテストを連続して実行するために、図2に示すように、複数のテストケース(モジュールテストAのテストケース10−1、モジュールテストBのテストケース10−2、モジュールテストCのテストケース10−3、モジュールテストDのテストケース10−4)をExcelファイルに記述している。なお、Excelファイルに記述したテストケースは、複数のモジュールテストを行うときに、共通のテストシナリオを実行する場合がある。そこで、Excelファイルに記述したテストケースをテストスクリプト12のファイルに保存し、Excelファイルには、テストスクリプト12のファイル名を記述することで、Excelファイルに同じテストシナリオを記述する必要がなくなる。
テストケース10のExcelファイルに設定したテストシーケンスとして、例えば、2つのマイコン間の通信モジュールのテストを行うために、図11に示すテスト対象プログラム225において、CALLpatchAS32のアドレスにドライバAS93へ関数呼び出しする命令およびJMPpatchDS76のアドレスにCALLpatchAS32にジャンプするパッチを当てて、テスト対象プロラム225からデータを送信してテスト対象プログラムB255が受信したデータが正常に処理されるかのテストするシーケンスについて説明する。
(テスト環境設定S202)
テストシーケンスは、図9に示す通り、テスト環境設定S202で、テストケース10のExcelファイルを自動テスト50からActiveXを使って開き、図10に示す通りのテスト環境を設定するテストスクリプトをテストケース10のExcelから読込み、自動テスト50で実行し、各コマンドをテスト操作90に転送する。
自動検証11の操作例として、図6に示す通り、「CPU Select」11−1でマイコンシステムを制御するデバッガを選択し、「ファイル選択」11−2でテストケース10のExcelファイルを読込み、「シート選択」11−3でExcelファイル内のテストするシートを選択し、「モジュール」11−4で複数のモジュールテストを表示したリストからテストするモジュールを選択した後、「開始」ボタン11−5で自動テストを開始する。
自動検証を開始すると、テスト操作90で実行するコマンド、すなわちテスト対象プログラム225からパッチを当てる無効コードの検索条件を変更するコマンド例として、
dcpuSTATUS(2,3,”patchReplace=”00000000”);
の場合は、テスト操作90でコマンドを解析して、第1引数でマイコンシステム2を選択し、第2引数でテスト環境の設定モードを指定し、第3引数で、パッチを当てるテスト対象プログラム225からパッチマークを検索する命令コードとして、”00000000”をパッチコード定義100にて変更する。
また、テスト対象プログラム225に実装した無効命令コードであるパッチマークを指定したシンボル名から検索するバイト数の長さを指定するコマンド例として、
dcpuSTATUS(2,3,”patchSerch=”0x200”);
の場合は、第1引数でマイコンシステム2を選択し、第2引数でテスト環境の設定モードを指定し、第3引数で、テスト操作90でコマンド解析してパッチマークを検索する最大バイト数を0x200バイトに変更する。
テスト環境設定するテスト操作90の手動操作例として、図7の90−1,90−2に示す通り、「CPU Select」でマイコンシステムを制御するデバッガを選択した後、「StatusSet」の「Send」で設定するコマンドを記述し、「StatusSet」ボタンをクリックすることで、選択したデバッガにテスト環境を設定する。なお、自動テスト50から指示を受けると、手動操作と同じ動作を自動で行う。
(パッチ設定S212)
モジュールテストする状態に移行した後、モジュールテストができるようにドライバプログラムおよびスタブプログラムを実行するためのパッチの設定を行う。パッチの書込みアドレス指定方法には、直接指定するアドレス値と、間接にパッチアドレスを取得する2通りの方法がある。
CALLpatchAS32のアドレスにドライバAS93へ関数呼び出しする命令を入れるパッチのコマンド例では、直接アドレス指定する方法は、
dcpuPATCHSET(2,”main”,”DrvA”,”DCALL”);
となり、テスト操作90でコマンドを解析して、パッチ設定110にパッチを設定する(2,”main”,”StubA”,”DCALL”)のパラメータを渡す。第1引数の2より、マイコンシステム2に対してコマンドを発行する。第4引数の”DCALL”より、第2引数の”main”アドレスに、”DrvA”へ関数呼び出しするパッチを書込む。
間接的にパッチアドレスを取得する方法は、
dcpuPATCHGET(2,”main”,”DrvA”,”CALL”,A);
となり、テスト操作90でコマンドを解析して、パッチ設定110にパッチを設定する(2,”main”,”DrvA”,”CALL”,A)のパラメータを渡す。このパラメータの動作は、第1引数でマイコンシステム2を選択し、第2引数の”main”アドレスから第5引数のA番目のパッチマークのアドレスに、第3引数の”DrvA”関数を呼び出す命令をパッチ設定することになる。この動作を行うために、”main”アドレスより、パッチコード定義100に設定したパッチマークの命令コードと同じコードをテスト対象プログラム225から検出するために、コード読書き160から第1引数で指定したデバッガ200のテスト対象プログラム225の”main”アドレスを先頭にパッチマークを検出するために、パッチコード定義100で設定したサイズの命令コードをテスト対象プログラム225から読込み、読込んだコードからパッチ設定110でパッチマークをサーチする。サーチにあたり、第5引数のA番目のパッチマークを検出するまでサーチを行い、A番目のパッチマークのアドレスを検出する。
パッチを書込むアドレスを検出すると、そのアドレスをパッチ設定110からパッチ退避120に退避番号を付けて退避し、”DrvA”関数を呼び出す”CALL”命令コードを生成し、パッチアドレスとパッチ命令コードとパッチを当てるデバッガ番号をコード読書き160へ渡す。
コード読書き160は、パッチ設定110から受けたテスト対象プログラム225の命令コードを書き換えるパッチアドレスとパッチ命令コードをマイコン選択190に渡す。
マイコン選択190は、ActiveXで接続したデバッガ200からICE210で動作するテスト対象プログラム225の命令コードに書き換える。
次に、JMPpatchDS76のアドレスにCALLpatchAS32にジャンプする命令を入れるパッチを設定するために、パッチの書込みアドレス指定方法は、直接指定するアドレス値と、間接にパッチアドレスを取得する2通りの方法がある。
JMPpatchDS76のアドレスにCALLpatchAS32のアドレスにジャンプする命令を入れるパッチのコマンド例では、直接アドレス指定する方法は、
dcpuPATCHSET(2,”main,”CALLpatchA”,”DJMP”);
により、テスト操作90でコマンドを解析して、パッチ設定110にパッチを設定する(2,”main”,”CALLpatchA”,”DJMP”)のパラメータを渡す。第1引数でマイコンシステム2を選択し、第4引数の”DJMP”より、第2引数の”main”アドレスに、CALLpatchAS32へジャンプするパッチを書込む。
間接的にパッチアドレスを取得する方法は、
dcpuPATCHSET(2,”main”,”CALLpatchA”,”JMP”,A);により、テスト操作90でコマンドを解析して、パッチ設定110にパッチを設定する(2,”main”,”CALLpatchA”,”JMP”,A)のパラメータを渡す。このパラメータの動作は、第1引数でマイコンシステム2を選択し、第2引数の”main”アドレスから第5引数のA番目のパッチマークのアドレスに、第3引数の”CALLpatchA”アドレスにジャンプする命令をパッチ設定することになる。
この動作を行うために、”main”アドレスより、パッチコード定義100に設定したパッチマークの命令コードと同じコードをテスト対象プログラム225から検出するために、コード読書き160から第1引数で指定したデバッガ200のテスト対象プログラム225の”main”アドレスを先頭にパッチマークを検出するために、パッチコード定義100で設定したサイズの命令コードをデバッガ200から読込み、読込んだコードからパッチ設定110でパッチマークをサーチする。サーチにあたり、第5引数のA番目のパッチマークを検出するまでサーチを行い、A番目のパッチマークのアドレスを検出する。
パッチを書込むアドレスを検出すると、そのアドレスをパッチ設定110からパッチ退
避120に退避番号を付けて退避し、”CALLpatchA”アドレスにジャンプする”JMP”命令コードを生成し、パッチアドレスとパッチ命令コードとパッチを当てるデバッガ番号をコード読書き160へ渡す。
コード読書き160は、パッチ設定110から受けたテスト対象プログラム225の命令コードを書き換えるパッチアドレスとパッチ命令コードをマイコン選択190に渡す。
マイコン選択190は、ActiveXで接続したデバッガ200からICE210で動作するテスト対象プログラム225の命令コードに書き換える。
以上により、図11に示す通り、初期設定AS22を実行後に、送信準備AS42、送受信AS62、受信処理AS82のテストするためのドライバプログラムであるDrvA関数を呼び出し、送信準備AS42、送受信AS62、受信処理S82を実行後に、繰返し実行するためにCALLpatchAS32にジャンプすることで、送信準備AS42、送受信AS62、受信処理S82の各モジュール結合したテストができるテスト対象プログラム225に変更したとなる。
パッチ設定するテスト操作90の手動操作例として、図7の90−4に示す通り、「PatchSet」でパッチを当てる無効命令コードを検索開始するアドレスまたはシンボル名を記述し、無効コードを記述した無効命令コードのアドレスに、Call/Brのチェックボックスに設定し、「から」にCall/Brのチェックボックスで指定した命令でジャンプ先のアドレスに飛ぶ命令コードのパッチを書込んだ後、「PatchSet」ボタンをクリックすることで、選択したマイコンシステムのデバッガを制御する。なお、自動テスト50から指示を受けると、手動操作と同じ動作を自動で行う。
(マイコンシステム2のモジュール入口ブレーク設定S222)
DrvAS94を実行する前に、テスト対象プログラム225の入力パラメータを設定するために、CALLpatchAを実行する直前でブレーク停止させるため、ブレーク設定を行うために、図10に示す通りのテストスクリプトで、
dcpuBREAKSET(2,”CALLpatchA”);
をテスト操作90でコマンド解析し、パッチ設定以外のコマンドであれば、リモートデバッガ150からマイコン選択190を通して、コマンドの第1引数によりデバッガ200を選択し、CALLpatchAHアドレスでブレーク設定指示をする。
リモートデバッガ150からデバッガ200にブレーク設定するときに、合わせてブレーク停止判定を行うために、完了判定設定にブレーク停止時に、デバッガ200からコールバック152に通知されるデータと同じ値を設定する。
具体的には、リモートデバッガ150からデバッガ200にブレーク設定するときに、合わせてブレーク停止判定を行うために完了判定設定153に、ブレーク停止時に、デバッガ200からコールバック152に通知されるデータと同じデータを設定する。例えば、ブレーク停止した場合にコールバッグ152に通知データは25を設定する。通知データの2桁目の2がデバッガ200からの通知となり、1桁目の5がブレーク停止したことを示す。また、リモートデバッガ150が発行した後のデバッガからコールバッグ152に通知し、完了判定154でリモートデバッガ150が発行したコマンドの完了したデータを予めテスト操作90から完了判定設定153に設定するテストスクリプトコマンドとして、例えば、
dcpuCBWAIT(25,3000);
がある。第1引数で、デバッガ200からのブレーク停止の通知の期待値で、第2引数が3000ミリ秒以内に通知が来なければタイムアウト時間になる。
ブレーク設定するテスト操作90の手動操作例として、図7の90−1でデバッガ200を選択し、90−5に示す通り、「BreakSet」の「addres」でブレークポイントを設定するアドレスまたはシンボル名を記述し、「BreakSet」ボタンをクリックすることで、選択したマイコンシステムのデバッガを制御する。なお、自動テスト50から指示を受けると、手動操作と同じ動作を自動で行う。
(入口ブレーク停止操作S232)
ブレーク設定後、送信準備AS42の入口で、ブレーク停止させるために、デバッガを制御するスクリプトをテストケース10から自動テスト50で読出したテストスクリプトを実行する。実行するテストスクリプト例として、マイコンをリセットして実行開始し、リモコンなどから受信したデータからキーコードを格納するRAMに直接キーコードデータを書込むなどで、ブレーク停止させる。
ブレーク停止時にデバッガ200からブレーク停止したことをコールバック152に通知し、テスト操作90でブレーク停止を表示する。また、完了判定154にブレーク停止した通知データを送る。完了判定154は、リモートデバッガ150がブレーク設定コマンドを発行時に完了判定設定153に設定したブレーク停止の期待値の通知データと同じか判定する。同じであれば、リモートデバッガ150が、次のデバッガ200または、デバッガB230を制御するRAM読書きなどのコマンド待ちを解除し、各デバッガを制御することができる。
マイコンをリセットして実行開始キーコード書込むテストスクリプト例として、
dcpuRESET(2);
dcpuGO(2);
dPUT(2,”keycode”,1,0x1e);
を記述すれば、自動テスト50でテストスクリプト12を実行し、コマンドをテスト操作90に渡して、コマンド解析した結果、全てのコマンドがパッチ設定以外のコマンドのため、リモートデバッガ150からマイコン選択190を通して、コマンドの第1引数よりデバッガ200にマイコンリセットし、マイコン実行し、keycode変数に1バイトデータの0x1eを書込む指示を行う。
ブレーク停止操作を行うためにデバッガの実行制御を行うテスト操作90の手動操作例として、図7の90−1でデバッガ200を選択し、90−6に示す通り、「RESET」ボタンをクリックすることで、マイコンをリセットできる。また、「GO」コマンドでマイコンの実行を開始する。なお、自動テスト50から指示を受けると、手動操作と同じ動作を自動で行う。
(入力パラメータ設定S252)
送信準備AS42の入口でブレーク停止した後、テスト対象プログラム225の通信テストするための入力パラメータを設定したテストケース10からテストスクリプトを自動テスト50が読込む。テストスクリプトに記述した送信準備AS42の実行を制御する自動変数やグローバル変数などをテスト操作90でコマンド解析し、パッチ以外のコマンドなので、リモートデバッガ150からマイコン選択190で指定したデバッガのテスト対象プログラム225のRAMデータに書込む。
入力パラメータの設定として、関数の引数や構造体のポインタのデータを設定するテストスクリプト例として、
dcpuVALEXEC(2,”param1=0x123”);
dcpuVALEXEC(2,”ptr−>data=0xa2”);
を記述すれば、自動テスト50でテストスクリプトを実行し、コマンドをテスト操作90に渡す。テスト操作90にてコマンド解析した結果、全てのコマンドがパッチ設定以外のコマンドのため、リモートデバッガ150からマイコン選択190を通して、コマンドの第1引数よりデバッガ200にparam1変数に0x123を書込み、ptr−>data構造体のポインタに0xa2データを書込む指示を行う。
ブレーク停止後、入力パラメータを設定するためのテスト操作90の手動操作例として、図7の90−7に示す通り、「ValCmd」ボタンで自動変数の書き込みや、「RAM−RW」ボタンでグローバル変数の書き込みができる。なお、自動テスト50から指示を受けると、手動操作と同じ動作を自動で行う。
(マイコンシステム3のモジュール出口ブレーク設定S262)
送信準備AS42をテストするための入力パラメータのデータ書き込みを完了すると、送信準備AS42を実行し、送受信AS62でテスト対象システムB255にデータを送信した後、テスト対象プログラムB255の送受信BS64で受け取ったデータを受信処理BS84で実行完了する出口にブレーク設定を行うために、図10に示す通りのテストスクリプト例として、
dcpuBREAKSET(3,”JMPpatchH”);
を記述すれば、自動テスト50でテストスクリプトを実行し、コマンドをテスト操作90に渡す。テスト操作90にてコマンド解析した結果、全てのコマンドがパッチ設定以外のコマンドのため、リモートデバッガ150からマイコン選択190を通して、コマンドの第1引数よりデバッガB230のJMPpatchHアドレスにブレーク設定を指示する。
リモートデバッガ150からデバッガB230にブレーク設定するときに、合わせてブレーク停止判定を行うために完了判定設定153に、ブレーク停止時に、デバッガB230からコールバック152に通知されるデータと同じデータを設定する。例えば、ブレーク停止した場合にコールバッグ152に通知データは35を設定する。通知データの2桁目の3がデバッガB230からの通知となり、1桁目の5がブレーク停止したことを示す。また、リモートデバッガ150が発行した後のデバッガからコールバッグ152に通知し、完了判定154でリモートデバッガ150が発行したコマンドの完了したデータを予めテスト操作90から完了判定設定153に設定するテストスクリプトコマンドとして、例えば、
iRet=dcpuCBWAIT(35,3000);
がある。第1引数で、デバッガB230からのブレーク停止の通知の期待値で、第2引数が3000ミリ秒以内に通知が来なければタイムアウト時間になる。
ブレーク設定するテスト操作90の手動操作例として、図7の90−1でデバッガB230を選択し、90−5に示す通り、「BreakSet」の「addres」でブレークポイントを設定するアドレスまたはシンボル名を記述し、「BreakSet」ボタンをクリックすることで、選択したマイコンシステムのデバッガを制御する。なお、自動テスト50から指示を受けると、手動操作と同じ動作を自動で行う。
(出口ブレーク停止操作S272)
出口ブレーク停止させるために、デバッガ200およびデバッガB230を制御するスクリプトをテストケース10から自動テスト50で読出してテストスクリプトを実行する。
出口ブレーク停止させるために実行するテストスクリプト例として、
dcpuPUT(2,”Event”,1,0x3a);
dcpuGO(3);
dcpuGO(2);
を記述すれば、自動テスト50でテストスクリプトを実行し、コマンドをテスト操作90に渡す。テスト操作90にてコマンド解析した結果、全てのコマンドがパッチ設定以外のコマンドのため、リモートデバッガ150からマイコン選択190を通して、コマンドの第1引数よりデバッガ200にEvent変数に1バイトの0x3aデータを書込む指示を行う。続いて、dcpuGO(3)で、デバッガB230を実行しテスト対象プログラムB255を先に実行して、テスト対象プログラム225から送受信AS62から送信データを受ける実行状態にする。続いて、dcpuGO(2)で、デバッガ200を実行しテスト対象プログラム225を実行して、テスト対象プログラムB255に送受信AS62からデータ転送する。テスト対象プログラムB255は、送受信BS64で受信したデータを受信処理BS84で処理完了するとブレーク停止する。
ブレーク停止時にデバッガB230からブレーク停止した事をコールバック152に通知し、テスト操作90でブレーク停止を表示する。また、完了判定154にブレーク停止した通知データを送る。完了判定154は、リモートデバッガ150がブレーク設定コマンドを発行時に完了判定設定153に設定したブレーク停止の期待値の通知データと同じか判定する。同じであれば、リモートデバッガ150が、次のデバッガ200または、デバッガB230を制御するRAM読書きなどのコマンド待ちを解除し、各デバッガを制御することができる。
ブレーク停止操作を行うためにデバッガの実行制御を行うテスト操作90の手動操作例として、図7の90−1でデバッガ200を選択し、90−6に示す通り、「RAM−RW」ボタンをクリックすることで”Event”変数のRAMに0x3aを書き込み、90−1でデバッガB230を選択し、「GO」コマンドでデバッガB230の実行を開始する。続いて、90−1でデバッガ200を選択し、「GO」コマンドでデバッガ200の実行を開始する。なお、自動テスト50から指示を受けると、手動操作と同じ動作を自動で行う。
(実行結果データ読込みS292、実行結果判定S302)
ブレーク停止後、テストケース10から自動テスト50で読出したテストスクリプトを実行する。実行するテスト結果をデバッガから読込むテストスクリプト例として、
rdBuf=dcpuGET(3,”seg7_buf”,4,0);
rdCal=dcpuVALEXEC(3,”iCal”);
を記述すれば、自動テスト50でテストスクリプトを実行し、コマンドをテスト操作90に渡す。テスト操作90にてコマンド解析した結果、全てのコマンドがパッチ設定以外のコマンドのため、リモートデバッガ150からマイコン選択190を通して、コマンドの第1引数よりデバッガB230からグローバルのseg7_buf変数とローカルのiCal変数を読み出すコマンドを発行する。ICE−B240からseg7_buf変数とCal変数のデータを読み出し、デバッガB230からリモートデバッガ150にて読込み、テスト操作90を経由して、結果集計60に実行した結果のRAMデータを渡す。結果集計60は、実行結果として実行ログ20に記録する。また、期待値40で自動比較するためのデータが設定されている場合は、結果判定70が期待値40よりテスト項目に対応したデータを読込み判定する。判定した結果は、結果判定70により判定ログ30に書込む。
また、テスト項目に対応した期待値40が設定されて無ければ、実行結果を期待値40に書込み、次回のテストを行うときの期待値データとすることができる。
ブレーク停止後、出力パラメータ設定するためのテスト操作90の手動操作例として、図7の90−7に示す通り、「ValCmd」ボタンで自動変数の読み込みや、「RAM−RW」ボタンでグローバル変数の読み込みができる。なお、自動テスト50から指示を受けると、手動操作と同じ動作を自動で行う。
(テスト項目完了S312)
送信準備AS42の複数のテスト項目を実行する場合に繰返し実行するかの判定を行う。終了判定は、テストケース10のテスト項目に終了記号を設定することで、自動テスト50がテスト項目を読込んだ時点で、テスト完了か判断する。また、自動テストの操作で中断操作をした場合にも完了となる。
(パッチ設定解除S322)
特定のモードにおいて、送信準備AS42のテストを完了すると、プログラム動作を元に戻すため、テストケース10から自動テストで読込んだテストスクリプトを実行し、パッチやブレークポイント設定の解除を行う。
パッチ設定を解除するテストスクリプトの例として、cpuPATCHCLR(1,0)でパッチ設定した全てを元に戻すコマンドは、テスト操作90でコマンド解析した後、コマンドのパラメータ(1,0)をパッチ解除130に渡す。パッチ解除130は、パラメータの第二引数の番号に応じて、全てのパッチ設定または特定のパッチ設定の命令コード領域を元に戻す動作を行う。パッチ設定を元に戻すために、パッチ退避120から退避した番号に対応したパッチアドレスと命令コードを読込み、パッチ解除130からコード読書き160に、元に戻すアドレスと命令コードを渡す。コード読書き160は、書き換えるデバッガ番号と、書き換えるアドレスと命令コードをマイコン選択190に渡す。マイコン選択190は、指定したデバッガとして例えば、デバッガ200に接続したICE210のテスト対象プログラム225の命令コードを書き換える。
ブレークポイントの解除や、RAMデータを元に戻すコマンドは、テスト操作90からマイコン選択190を通して、指定したデバッガを制御することで元に戻す。
パッチ設定解除の操作を行うためのテスト操作90の手動操作例として、図7の90−8に示す通り、パッチ設定時の戻り値であるパッチ設定番号を使って、「PatchClr」の「ClrNo」にパッチ番号を記述し、「PatchClr」ボタンをクリックすることで、パッチ前の状態に戻せる。また、ブレーク解除の操作は、図7の90−9に示す通り、ブレーク設定時の戻り値のブレーク設定番号を「BreakClr」の「No」に設定し、「BreakClr」ボタンをクリックすることで、ブレークポイントを解除できる。なお、自動テスト50から指示を受けると、手動操作と同じ動作を自動で行う。
なお、図9に示す、パッチ設定S212やマイコンシステム2モジュール入口ブレーク設定S222や入口ブレーク停止操作S232などで実行する複数のテストスクリプトを一括して実行するために、エージェント156に渡して一時的に一括スクリプト実行158のメモリに置き、エージェント156からリモートデバッガ150に順次スクリプトを渡すことで、テスト操作90を介さず一気に実行できる。複数のテストスクリプトを一括して実行する例として、
funcEvent()

dcpuPUT(2,”Event”,1,0x3a);
dcpuGO(3);
dcpuGO(2);
iRet=dcpuCBWAIT(35,3000);
if(−1==iRet)
return(”OK”);
else
return(”NG”);

テストスクリプトである、dcpuPUT(2,”Event”,1,0x3a)やdcpuGO(3)などの複数のテストスクリプトのコマンドをfuncEvent()関数で囲み、funcEvent()関数自体を、エージェント156に渡して自動テスト50やテスト操作90を介さずに、dcpuPUT(2,”Event”,1,0x3a)やdcpuGO(3)などの複数のテストスクリプトのコマンドをリモートデバッガ150に順次渡して連続実行できる。また、連続実行を完了したときに、正常にテストスクリプトを実行できたいのか判断するために、funcEvent()関数の戻り値をreturn()で設定できる。funcEvent()関数の戻り値は、テスト操作90に返信され、テスト操作90がエージェント156でテストスクリプトを正常に実行したのか確認できる。
本発明は、テスト対象プログラム内の複数のモジュールテストを行う際に、テスト対象プログラムをデバッガにロードした状態で、個々のモジュールテストに合わせて、ダイナミックにドライバプログラムおよびスタブプログラムのパッチを当てて、テストできるため、システムテストにおいて、テスト対象プログラム動作を停止させることなく、各システム状態に合わせて、テスト対象プログラムに強制的に異常検知するなどのパッチを当てたシステムテストが簡単にでき、テスト網羅性が向上したプログラムモジュール検証方式に有用である。
本発明の実施形態におけるモジュール検証システムのブロック図 本発明の実施形態における複数のテストケースを記述したファイル画像 本発明の実施形態におけるテストシーケンスのフローチャート 本発明の実施形態におけるテストスクリプト 本発明の実施形態におけるテスト対象プログラムのフローチャート 本発明の実施形態における自動検証の操作パネル画像 本発明の実施形態におけるテスト操作の操作パネル画像 本発明の実施形態における複数マイコンシステム間の通信をテストするためのモジュール検証システムのブロック図 本発明の実施形態における複数のマイコン間の通信テストシーケンスのフローチャート 本発明の実施形態における複数のマイコン間でテストするスクリプト 本発明の実施形態における複数マイコン間の通信テスト行うテスト対象プログラムのフローチャート 本発明の実施形態におけるリモートデバッガからデバッガ制御する変換コマンド一覧
符号の説明
2,3 マイコンシステム
10 テストケース
11 自動検証
12 テストスクリプト
20 実行ログ
30 判定ログ
40 期待値
50 自動テスト
60 結果集計
70 結果判定
80 パッチ制御
90 テスト操作
100 パッチコード定義
110 パッチ設定
120 パッチ退避
130 パッチ解除
140 パッチ検出
150 リモートデバッガ
160 コード読書き
170 スタブロード
180 スタブテーブル
190 マイコン選択
200,230 デバッガ
210,240 ICE
220,225,250,255 テスト対象プログラム
290 セット制御
300 セット選択

Claims (21)

  1. 機器組込みマイコンシステム(以下マイコンシステムと称する)において、デバッガでインサーキットエミュレータ(以下ICEを称する)またはマイコン命令シミュレータを制御して、テスト対象プログラムをテストする方法であって、
    テスト対象プログラムをテストするためプログラムにパッチをあてるプログラム命令を定義するパッチコード定義工程と、
    前記パッチコード定義工程にて定義したプログラム命令からパッチを当てるプログラムコードを生成し、テスト対象プログラムの指定したアドレスにパッチを当てる指示を行うパッチ設定工程と、
    前記パッチ設定工程で生成したパッチ命令コードと前記パッチ設定工程により指定されたパッチを当てるプログラムアドレスとにより、テスト対象プログラムにパッチを当てるプログラムコードを生成するコード読書き工程と、
    テスト対象プログラムをテストするテストケースの作成や設定を行うために、前記パッチコード定義工程と前記パッチ設定工程を操作するテスト操作工程と、
    を含む前記パッチを当てたテスト対象プログラムを実行してテストを行うプログラムモジュール検証方式。
  2. 前記パッチ設定工程によりテスト対象プログラムにパッチを当てる前に、パッチを当てる領域のコードを退避するパッチ退避工程をさらに含み、
    前記テスト操作工程により前記パッチ退避工程の操作を行うことを特徴とする請求項1に記載のプログラムモジュール検証方式。
  3. 前記パッチ退避工程にてテスト対象プログラムにパッチを当てる前に、退避したプログラムコードを前記パッチ設定工程でパッチを当てる前のプログラムコードに戻すパッチ解除工程をさらに含み、
    前記テスト操作工程により前記パッチ解除工程の操作を行うことを特徴とする請求項2に記載のプログラムモジュール検証方式。
  4. テスト対象プログラムに予めパッチを入れるための領域に無効コードなどのプログラムコードを実装し、前記無効コードをテスト対象プログラムから検索し、無効コードのアドレスを検出するパッチ検出工程をさらに含み、
    前記テスト操作工程により前記パッチ検出工程の操作を行うことを特徴とする請求項1に記載のプログラムモジュール検証方式。
  5. 先にロードしたテスト対象プログラムに加えて、テスト対象プログラムをデバッガにロードした後にモジュールテストに必要なドライバプログラムコードやスタブプログラムコードを登録したデータベースであるドライバテーブルやスタブテーブルをロードするスタブロード工程をさらに含み、
    前記テスト操作工程により前記スタブロード工程の操作を行うことを特徴とする請求項1に記載のプログラムモジュール検証方式。
  6. 前記スタブテーブルに、複数のモジュールテストに対応した複数のドライバプログラムコードやスタブプログラムを登録することを特徴とする請求項5に記載のプログラムモジュール検証方式。
  7. テストを自動で連続実行するためにテストシナリオを登録したテストケースの作成や設定を自動で行う自動テスト工程をさらに含み、
    前記自動テスト工程により前記テスト操作工程の操作を行うことを特徴とする請求項1に記載のプログラムモジュール検証方式。
  8. 前記テストケースには、テスト対象プログラム内の複数のモジュールテストを自動で連
    続実行するために複数のテストデータを登録し、
    前記自動テスト工程により複数のモジュールテストを自動で連続実行することを特徴とする請求項7に記載のプログラムモジュール検証方式。
  9. 前記自動テスト工程によりテストケースを連続実行した実行結果をデバッガから読込むリモートデバッガ工程と、
    前記リモートデバッガ工程で読込んだデータを集計し、集計したデータを実行ログに記録する結果集計工程と、
    をさらに含むことを特徴とする請求項7に記載のプログラムモジュール検証方式。
  10. 前記結果集計工程により集計した実行結果データと、比較基準となる期待値とを比較して判定し、判定結果を判定ログに記録する結果判定工程をさらに含むことを特徴とする請求項9に記載のプログラムモジュール検証方式。
  11. 前記結果判定工程は、前記結果集計工程の実行結果データと対比する前記期待値が無ければ、当該実行結果データを期待値に記録することを特徴とする請求項10に記載のプログラムモジュール検証方式。
  12. 前記テスト操作工程により指定したデバッガに前記コード読書き工程により作成したプログラムコードの書込みなどのデバッガを制御するコマンドを転送するマイコンを選択するマイコン選択工程をさらに含むことを特徴とする請求項1に記載のプログラムモジュール検証方式。
  13. マイコンシステムと通信するためのセット制御工程をさらに含み、
    前記テスト操作工程により前記セット制御工程の操作を行うことを特徴とする請求項1に記載のプログラムモジュール検証方式。
  14. 複数のマイコンシステムに対して、選択して通信するためのセット選択工程をさらに含み、
    前記テスト操作工程により前記セット選択工程の操作を行うことを特徴とする請求項13に記載のプログラムモジュール検証方式。
  15. 前記テストケースによりテストを実行する手順を記述したテストシナリオにファイル名
    を記述することで、テストシナリオにてテストケースファイルを階層化することを特徴と
    する請求項7に記載のプログラムモジュール検証方式。
  16. 前記テスト操作工程からマイコンシステムに接続したデバッガを制御するリモートデバッガ工程と、
    前記リモートデバッガ工程からマイコンシステムを制御するコマンドを発行した後の応答を受信するコールバック工程をさらに含み、
    前記テスト操作工程にて前記コールバック工程でマイコンシステムから受理するデータを表示することを特徴とする請求項1に記載のプログラムモジュール検証方式。
  17. 前記リモートデバッガ工程にて、前記マイコンシステムにコマンド発行し、マイコンシステムからコマンド実行完了と同じ期待値の設定を行う完了判定設定工程と、
    前記マイコンシステムにコマンド発行した後にコマンド実行完了時の応答を受ける前記コールバック工程で受理したデータと、前記完了判定設定工程で設定したデータを比較判定する完了判定工程をさらに含み、
    前記マイコンシステムに連続でコマンドを発行するときに、前記完了判定工程から前記リモートデバッガ工程にコマンド実行完了を通知し、待機中の前記マイコンシステムにコマンド発行を許可することで、連続コマンド発行時の間隔を最短時間で行うことを特徴とする請求項16に記載のプログラムモジュール検証方式。
  18. 前記完了判定工程で複数の前記マイコンシステムから複数のコマンド完了条件を組みわせて検知するときに、複数の期待値をANDやORを使った判定条件に一致したときに、前記マイコンシステムを制御する次のコマンド発行許可ができる前記完了判定工程であることを特徴とする請求項17に記載のプログラムモジュール検証方式。
  19. 前記完了判定工程で判定する期待値を前記テスト操作工程から前記完了判定設定工程に設定できることで、
    前記リモートデバッガ工程でコマンドを発行する毎の前記完了判定設定工程を不要としたことを特徴とする請求項17に記載のプログラムモジュール検証方式。
  20. 前記自動テスト工程から前記テスト操作工程を操作してテストケースを連続実行するときに、複数の前記テストケースを一度に呼出して、前記リモートデバッガ工程でスクリプトを連続実行するエージェント工程をさらに含むことで、
    前記自動テスト工程や前記テスト操作工程からテストケースの都度読み出しを不要としたことを特徴とする請求項9に記載のプログラムモジュール検証方式。
  21. 前記パッチ検出工程で検索する無効コードがテスト対象プログラムに含むかを検出するパッチ検索変更工程をさらに含むことを特徴とする請求項4に記載のプログラムモジュール検証方式。
JP2007257721A 2006-11-01 2007-10-01 プログラムモジュール検証方式 Withdrawn JP2008135008A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007257721A JP2008135008A (ja) 2006-11-01 2007-10-01 プログラムモジュール検証方式

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2006297677 2006-11-01
JP2007257721A JP2008135008A (ja) 2006-11-01 2007-10-01 プログラムモジュール検証方式

Publications (1)

Publication Number Publication Date
JP2008135008A true JP2008135008A (ja) 2008-06-12

Family

ID=39559793

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007257721A Withdrawn JP2008135008A (ja) 2006-11-01 2007-10-01 プログラムモジュール検証方式

Country Status (1)

Country Link
JP (1) JP2008135008A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010198479A (ja) * 2009-02-26 2010-09-09 Hitachi Software Eng Co Ltd アプリケーションのテスト自動実行システム
JP2011159084A (ja) * 2010-01-29 2011-08-18 Toshiba Corp 情報処理装置及びプログラム書き込み方法
JP2014517378A (ja) * 2011-04-30 2014-07-17 ダイムラー・アクチェンゲゼルシャフト 車両内のコンポーネントを診断するシステム
JP2015176363A (ja) * 2014-03-14 2015-10-05 株式会社Pfu デバッグ対象装置、制御方法及び制御プログラム
WO2023093198A1 (zh) * 2021-11-29 2023-06-01 上海同星智能科技有限公司 基于 excel 文件加载的测试方法、系统及设备

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010198479A (ja) * 2009-02-26 2010-09-09 Hitachi Software Eng Co Ltd アプリケーションのテスト自動実行システム
JP2011159084A (ja) * 2010-01-29 2011-08-18 Toshiba Corp 情報処理装置及びプログラム書き込み方法
JP2014517378A (ja) * 2011-04-30 2014-07-17 ダイムラー・アクチェンゲゼルシャフト 車両内のコンポーネントを診断するシステム
US9460565B2 (en) 2011-04-30 2016-10-04 Daimler Ag System for diagnosing faults of a component in a vehicle
JP2015176363A (ja) * 2014-03-14 2015-10-05 株式会社Pfu デバッグ対象装置、制御方法及び制御プログラム
WO2023093198A1 (zh) * 2021-11-29 2023-06-01 上海同星智能科技有限公司 基于 excel 文件加载的测试方法、系统及设备

Similar Documents

Publication Publication Date Title
KR101019210B1 (ko) 이뮬레이트를 활용한 임베디드 소프트웨어 테스트 장치 및그 방법
US8930912B2 (en) Method and system for performing software verification
US6539501B1 (en) Method, system, and program for logging statements to monitor execution of a program
US7415699B2 (en) Method and apparatus for controlling execution of a child process generated by a modified parent process
US20050268195A1 (en) Apparatus and method for improving emulation speed of high-level languages in on-chip emulation systems
CN111026601A (zh) Java应用系统的监控方法、装置、电子设备及存储介质
TW201312340A (zh) 手持式電子裝置的測試系統及方法
CN112732576B (zh) 基于用户界面的自动化测试方法、装置及设备
US8533683B2 (en) Stack walking enhancements using sensorpoints
KR20120139403A (ko) 게임 서버의 작업 파일 실행 장치 및 방법
TW201616356A (zh) 偵錯韌體/軟體以產生追蹤資料之系統與方法、記錄媒體及電腦程式產品
US20080127119A1 (en) Method and system for dynamic debugging of software
JP2008135008A (ja) プログラムモジュール検証方式
US20080127118A1 (en) Method and system for dynamic patching of software
CN113157508A (zh) 嵌入式系统的测试方法、系统、装置、设备及存储介质
US20080127061A1 (en) Method and system for editing code
US20040168157A1 (en) System and method for creating a process invocation tree
CN116627850B (zh) 函数调试方法、装置、存储介质以及电子设备
US20190034259A1 (en) Systems and Methods for Implementing a Thread Trace Log
CN112765018B (zh) 一种仪器仪表调试系统及方法
KR101251792B1 (ko) 디버거를 이용한 임베디드 소프트웨어 단위 테스트 자동화 장치 및 방법
KR100428712B1 (ko) 멀티 태스크 프로그램의 논스톱 디버깅을 위한트레이스포인트 설정 방법
CN117422026B (zh) 一种基于risc-v架构的处理器验证系统
JP2007004516A (ja) 組込みシステムのプログラムデバッグ方法
JPH10326203A (ja) 複数のハードウェア環境上においてプログラムを別々に動作させつつも、ハードウェア環境間で動作状態を継承し合うことができるデバッグ装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100805

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20110914