JP6246022B2 - ソフトウェア試験装置及びソフトウェア試験プログラム - Google Patents

ソフトウェア試験装置及びソフトウェア試験プログラム Download PDF

Info

Publication number
JP6246022B2
JP6246022B2 JP2014038474A JP2014038474A JP6246022B2 JP 6246022 B2 JP6246022 B2 JP 6246022B2 JP 2014038474 A JP2014038474 A JP 2014038474A JP 2014038474 A JP2014038474 A JP 2014038474A JP 6246022 B2 JP6246022 B2 JP 6246022B2
Authority
JP
Japan
Prior art keywords
memory
software
copy
error
data
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.)
Active
Application number
JP2014038474A
Other languages
English (en)
Other versions
JP2015162191A (ja
Inventor
孝祐 水野
孝祐 水野
佳奈子 行田
佳奈子 行田
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2014038474A priority Critical patent/JP6246022B2/ja
Publication of JP2015162191A publication Critical patent/JP2015162191A/ja
Application granted granted Critical
Publication of JP6246022B2 publication Critical patent/JP6246022B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Description

この発明は、ソフトウェアの品質を試験するソフトウェア試験プログラムに関する。
組込みソフトウェア試験(以下、ソフトウェアはS/Wと記す)では一般的に、コードカバレッジなどのテストカバレッジを利用することによって、S/W品質評価が行われる。例えば特許文献1では、複数のモジュールで構成されたコンピュータシステムが組み込まれた組込みシステムの保守支援装置において、クラスタのテストを行ない、その結果に対して評価指標となるテスト網羅率を示すテストカバレッジを表示する技術が提案されている。特許文献2では、新たなコードカバレッジを用いて、コード間の一致と不一致とを明確に区別することができる一致性検査方法などが提案されている。特許文献3では、デバイスAPI呼び出しカバレッジを計算することにより、テストシナリオを評価する技術が提案されている。
特開2012−073692号公報 特開2009−163636号公報 特開2012−103745号公報
コードカバレッジを利用した従来のS/W品質評価では、多様な条件で発生するデータコピー漏れを検出できないという課題があった。特許文献1〜3はコードカバレッジを利用しているため、データコピー処理が適切に実装されていない場合においても、誤って品質に問題が無いと判断してしまう。なぜなら、コードカバレッジはソースコードにおいて、通り得る論理パスの網羅率を示す指標であり、一つ一つの命令の正誤までは判断しないからである。
この発明は、S/W品質評価におけるデータコピー処理の正確性を保証することを目的とする。
この発明のソフトウェア試験装置は、
ソフトウェアを実行して前記ソフトウェアを模擬するソフトウェア模擬部と、
前記ソフトウェア模擬部が模擬する前記ソフトウェアによってアクセスされるメモリの動作を模擬するメモリ模擬部と、
前記ソフトウェアによる前記メモリ模擬部へのアクセスを監視し、監視したアクセス監視結果を記録し、記録した前記アクセス監視結果に基づいて、前記ソフトウェアによる処理であってコピー元となるコピー元メモリのデータを読み出してコピー先となるコピー先メモリへ書き込む処理であるデータコピー処理に、予め定義されたエラーが発生したかどうかを検出するエラー検出部と
を備えたことを特徴とする。
この発明によれば、S/W品質評価におけるデータコピー処理の正確性を保証することができる。
実施の形態1の図で、システムシミュレータ10の構成図。 実施の形態1の図で、システムシミュレータ10を用いた際の、コピー漏れ検出手順を示すフローチャート。 実施の形態1の図で、コピー漏れ検出部200の構成図。 図2のコピー漏れ検出S11の内容を示す詳細フローチャート。 実施の形態1の図で、メモリマップ400を示す図。 実施の形態1の図で、コピー漏れ検出結果500を示す図。 実施の形態1の図で、コピー漏エラーリストを示す図。 図4のテーブル初期化S110の内容を示す詳細フローチャート。 図4のメモリアクセス監視S111の内容を示す詳細フローチャート。 図9のS1112の内容を示す詳細フローチャート。 図9のS1114の内容を示す詳細フローチャート。 図9のS1116の内容を示す詳細フローチャート。 図4のエラー検出S114の内容を示す詳細フローチャート。 実施の形態2のシステムシミュレータ20の構成図。 実施の形態2の図で、システムシミュレータ20を用いた際の、コピー漏れ検出手順を示すフローチャート。 実施の形態2の図で、システムシミュレータ10,20のハードウェア構成の一例を示す図。
実施の形態1.
[システムシミュレータ10の構成]
図1は、システムシミュレータ10(ソフトウェア試験装置)の構成図である。図1を参照してシステムシミュレータ10の構成を説明する。システムシミュレータ10は、命令セットシミュレータ(Instruction Set Simulator)100、コピー漏れ検出部200(エラー検出部)、メモリモデル300(メモリ模擬部)を備える。図2でシステムシミュレータ10の動作を後述する。
(命令セットシミュレータ100)
命令セットシミュレータ100(ソフトウェア模擬部)は、S/Wとテストパタンを読み込み、命令処理、メモリアクセス、及びプログラムカウンタの動作をシミュレーション(模擬)する機能を有する。
(コピー漏れ検出部200)
コピー漏れ検出部200は、S/Wによるメモリモデル300へのアクセスを監視し、監視したアクセス監視結果を後述のメモリマップレコード211に記録し、メモリマップレコード211に基づいて、模擬されているS/Wによるデータコピー処理に、予め定義されたエラーが発生したかどうかを検出する。なおデータコピー処理とは、S/Wによる処理であり、コピー元となるSourceメモリのデータを読み出して、コピー先となるDestinationメモリへ書き込む処理である。具体的には、コピー漏れ検出部200は、命令セットシミュレータ100から出力される実行命令アドレス、メモリモデルへのR/W(リード・ライト)リクエスト、アドレス、データ、及びメモリマップ400を基にコピー漏れ検出を行う。検出結果はコピー漏れ検出結果500に出力される。図3、図4で、コピー漏れ検出部200の内部構成及び動作を後述する。
(メモリモデル300)
メモリモデル300は、システムに実装されるメモリの動作を模擬する機能を有する。システムシミュレータ10では、データのコピー元となるSourceメモリと、データのコピー先となるDestinationメモリの2種類を想定する。この2種類のメモリは同一メモリでもよいし、または独立した2枚のメモリを用いて構成される。メモリの動作を正しく模擬できるのであれば、システムシミュレータ10に適用するためのメモリモデルの実装方法は特に制限されない。
(メモリマップ400)
メモリマップ400は、SourceメモリのR/Wトリガ設定、Sourceメモリのアドレスと、Destinationメモリのアドレスのペアを定義したファイルである。
図5は、メモリマップ400のイメージを示す。
(コピー漏れ検出結果500)
コピー漏れ検出結果500は、コピー漏れ検出部200が検出したコピー漏れに関する詳細情報の出力である。
図6は、コピー漏れ検出結果の出力イメージを示す。
図7は、検出可能なエラーのリストを示す。
[システムシミュレータ10の全体動作フローチャート]
図2は、システムシミュレータ10を用いた際の、コピー漏れ検出手順を示すフローチャートである。図2を参照してシステムシミュレータ10の動作を説明する。
(1)S10では、命令セットシミュレータ100がS/Wシミュレーションを実行する。
(2)S11では、コピー漏れの検出を行う。コピー漏れの検出の詳細フローは、図4、図8、図9、図10、図11、図12、図13で説明する。図2のS11の詳細が図4である。図4はさらに、図8、図9、図13で詳しく説明(後述)する。図4のS110、S111、S114の詳細が、それぞれ図8、図9、図13である。また、図9のS1112、S1114、S1116の詳細が、それぞれ図10〜図12である(後述)。
(3)S12では、コピー漏れが0かどうか(コピー漏れが無いかどうか)の判断を行う。S12が真である(コピー漏れが無い)場合、テストを終了する。S12が偽である(コピー漏れがある)場合、S13に分岐する。
(4)S13では、例えば担当者が、コピー漏れ検出結果500を評価し、コピー漏れ原因箇所を特定する。
(5)S14では、例えば担当者が、コピー漏れ原因箇所を修正する。修正後、再びS10を実行する。
(6)以上のプロセスをS12において、コピー漏れが0と判断されるまで実行する。
[コピー漏れ検出部200の構成]
図3は、コピー漏れ検出部200の構成図である。図3を参照してコピー漏れ検出部200の内部構成について説明する。コピー漏れ検出部200は、メモリマップテーブル210、テーブル初期化部220、メモリアクセス監視部230、エラー検出部240を備える。
(メモリマップテーブル210)
メモリマップテーブル210は、メモリマップレコード211(メモリマップ情報)をSourceメモリアドレスとDestinationメモリアドレスの組み合わせ数分保持する。SourceメモリアドレスとDestinationメモリアドレスの組み合わせは、メモリマップ400で定義される。メモリマップレコード211は、Sourceメモリアドレス、またはDestinationメモリアドレスをキーとして検索できるように、登録される。
なおメモリマップテーブル210はシステムシミュレータ10のハードウェア構成を示す実施の形態3における磁気ディスク装置960(メモリマップ情報格納部の一例)あるいはRAM952(メモリマップ情報格納部の一例)に格納される。
(メモリマップレコード211)
メモリマップレコード211は、SourceメモリR/Wトリガ設定212、SourceメモリPUSHフラグ213(第1のフラグ)、SourceメモリPOPフラグ214(第2のフラグ)、Sourceメモリアドレス215、Destinationメモリアドレス216、実行命令アドレス217、及びメモリデータ218から構成される。
SourceメモリR/Wトリガ設定212、Sourceメモリアドレス215、Destinationメモリアドレス216は、後述(テーブル初期化処理)のようにそれぞれメモリマップ400の値が記載される。SourceメモリPUSHフラグ213、SourceメモリPOPフラグ214、実行命令アドレス217、及びメモリデータ218等は、後述(S11142,S11163)のように、メモリアクセスの監視結果に応じて記録される。
(1)SourceメモリR/Wトリガ設定212は、Sourceメモリのリードとライトどちらの発生タイミングでデータを登録するのかを表す。
(2)SourceメモリPUSHフラグ213は、Sourceメモリのデータがテーブルに登録された状態かどうかを表す。
(3)SourceメモリPOPフラグ214は、Sourceメモリのデータがテーブルから削除された状態かどうかを表す。
(4)Sourceメモリアドレス215は、Sourceメモリのアドレスを表す。
(5)Destinationメモリアドレス216は、Destinationメモリのアドレスを表す。
(6)実行命令アドレス217は、Sourceメモリにアクセスをおこなった命令のアドレスを表す。
(7)メモリデータ218は、Sourceメモリに書き込まれたデータ、またはSourceメモリから読みだされたデータを表す。
(テーブル初期化部220)
テーブル初期化部220は、メモリアクセス監視部230がメモリマップテーブル210上をSourceメモリアドレス、またはDestinationメモリアドレスをキーとして検索を行えるように、メモリマップテーブル210を初期化する。初期化はS/Wシミュレーション開始時に実行される。テーブル初期化部220は、メモリマップ400に記述されたSourceメモリアドレスとDestinationメモリアドレスを1セットとして、1つのレコードのSourceメモリアドレス215とDestinationメモリアドレス216に値を設定する。またテーブル初期化部220は、メモリマップ400に記述されたSourceメモリR/Wトリガ設定をSourceメモリR/Wトリガ設定212に設定する。テーブル初期化部220は、SourceメモリPUSHフラグ213、SourceメモリPOPフラグ214、実行命令アドレス217、及びメモリデータ218は、0に設定する。データの設定完了後、テーブル初期化部220は、メモリマップテーブル210にメモリマップレコード211を登録する。テーブル初期化部220の動作のフローチャートは、図8で後述する。
(メモリアクセス監視部230)
メモリアクセス監視部230は、メモリR/Wリクエストの発生をトリガとしてメモリマップテーブル210上を検索する。メモリアドレスをキーとしてメモリマップテーブル210の検索を行い、ヒットするレコードが存在すれば、データの登録・削除を行う。シミュレーションの途中でコピー漏れが発生した場合は、メモリアクセス監視部230は、エラー検出部240に通知し、コピー漏れ検出結果500に検出結果を出力させる。メモリアクセス監視部230の動作は、図9、図10、図11、図12の説明で後述する。
(エラー検出部240)
エラー検出部240は、メモリアクセス監視部230からのエラー通知、またはシミュレーション終了のタイミングで動作する。エラー検出部240は、各メモリマップレコード211の状態を基に、コピー漏れの原因を検出し、コピー漏れ検出結果500に検出結果を出力する。エラー検出部240の動作は、図13で後述する。
[コピー漏れ検出S11の詳細動作]
図4はコピー漏れ検出S11の詳細フローチャートである。図4を参照してコピー漏れ検出S11の詳細動作を説明する。
(1)S110では、テーブル初期化部220がテーブルの初期化を行う。このテーブル初期化部220の動作詳細は図8で後述する。
(2)S111では、メモリアクセス監視部230が、ソフトウェアのメモリアクセスを監視し、アクセスがあればメモリマップテーブル210の検索・更新を行う。メモリアクセス監視部230の動作詳細は図9、図10、図11、図12で後述する。
(3)S112では、メモリアクセス監視部230が、エラーが起こったかどうかを判定し、S111でエラーが起こったかどうかで分岐する。S112が真(エラーが発生)の場合、S114へ進む。S112が偽である(エラーが発生していない)場合、S113へ進む。
(4)S113では、シミュレーションが終了したかどうかで分岐する。S113が真である(シミュレーション終了)場合、S114へ進む。S113が偽である(シミュレーションが終了していない)場合、S111に戻る。
(5)S114では、メモリアクセス監視部230によるメモリアクセス監視(S111)でエラーが発生した場合に、エラー検出部240が、詳細情報をコピー漏れ検出結果500に出力する。また、エラー検出部240は、シミュレーション終了後に、メモリマップテーブル210中の各メモリマップレコード211のフラグをチェックし、エラーが発生していないかどうかチェックする。この詳細は図13で後述する。
[テーブル初期化S110の詳細動作]
図8は、テーブル初期化部220が実行するテーブル初期化(S110)の詳細フローチャートである。図を参照してテーブル初期化部220によるテーブル初期化S110の動作について説明する。図8の動作主体はテーブル初期化部220である。
(1)S1100では、テーブル初期化部220は、メモリマップ400からメモリマップデータを読み出す。
(2)S1101では、テーブル初期化部220は、メモリマップレコード211を生成し、全ての設定(212)、フラグ(213、214)、アドレス(215〜217)、データ(218)を0にクリアする。
(3)S1102では、テーブル初期化部220は、S11001で生成したメモリマップレコード211の各項目(212,215,216)に、S1100で読み出したSourceメモリR/Wトリガ設定、Sourceメモリアドレス、Destinationメモリアドレスを設定する。
(4)S1103では、テーブル初期化部220は、S1101で生成したメモリマップレコード211をメモリマップテーブル210に登録する。
(5)S1104では、メモリマップ400の全データを読み出したかどうかで分岐する。
S1104が真(読出し完了)であれば、終了する。S1104が偽(読出し未完了)であれば、S1100に戻る。
[メモリアクセス監視S111の詳細動作]
図9は、メモリアクセス監視部230によるメモリアクセス監視S111の詳細フローチャートであり、動作主体はメモリアクセス監視部230である。図9を参照してメモリアクセス監視部230が行うメモリアクセス監視S111の詳細動作を説明する。図9におけるS1111,S1113、S1115等の判断は、メモリアクセス監視部230が、図3のメモリR/Wリクエスト、メモリアドレス等の入力されるデータをメモリマップテーブル210で参照することで判断できる。
(1)S1110では、メモリアクセスがあるかどうか判断する。エラー検出部240は図2においてメモリR/Wリクエスト等が入力されたかどうかで判断可能である。S1110が真(メモリアクセスあり)であれば、S1111へ分岐する。S1110が偽(メモリアクセスなし)であれば、終了する。
(2)S1111では、メモリアクセス監視部230は、Destinationメモリからの読出しかどうか判断する。S1111が真(Destinationメモリからの読出しである)であれば、S1112に分岐する。S1111が偽(Destinationメモリからの読出しではない)であれば、S1113に分岐する。
(3)S1112では、メモリアクセス監視部230はDestinationメモリ読出し時の処理を行う。詳細は図10で後述する。
(4)S1113では、メモリアクセス監視部230は、Sourceメモリへの書込みかどうか判断する。S1113が真(Sourceメモリへの書込みである)であれば、S1114に分岐する。S1113が偽(Sourceメモリへの書込みではない)であれば、S1115に分岐する。
(5)S1114では、メモリアクセス監視部230は、Sourceメモリ書込み時の処理を行う。詳細動作は図11で後述する。
(6)S1115では、メモリアクセス監視部230は、Destinationメモリへの書込みかどうか判断する。S1115が真(Destinationメモリへの書込みである)であれば、S1116に分岐する。S1115が偽(Destinationメモリへの書込みではない)であれば、終了する。
(7)S1116では、メモリアクセス監視部230は、Destinationメモリ書込み時の処理を行う。詳細は図12で後述する。
[Destinationメモリ読出し時の処理S1112の詳細]
図10は、Destinationメモリ読出し時の処理S1112の詳細フローチャートである。動作主体はメモリアクセス監視部230である。図10を参照して、メモリアクセス監視部230による、Destinationメモリ読出し時の処理S1112の詳細内容を説明する。
(1)S11120では、メモリアクセス監視部230は、メモリマップテーブル210に、入力されたメモリアドレスに対してヒットするメモリマップレコードが存在するかどうか検索する。S11120が真(該当レコードが存在する)であれば、処理はS11121に分岐する。S11120が偽(該当レコードが存在しない)であれば、処理は終了する。
(2)S11121では、メモリアクセス監視部230は、SourceメモリPUSHフラグ213が無効かどうかで処理を分岐する。S11121が真(SourceメモリPUSHフラグ213が無効)であれば、終了する。S11121が偽(SourceメモリPUSHフラグ213が有効)であれば、S11122に分岐する。なおSourceメモリPUSHフラグ213は、図11のS11142で有効にされる。
(3)S11122では、読出しタイミングエラーを発生する。読出しタイミングエラーは、割り込みや外部からの非同期の読出しによって、SourceメモリへのデータをDestinationメモリにコピーする前に、誤ってDestinationメモリが読み出されたことを示す。つまりS11121でS11121が偽(SourceメモリPUSHフラグ213が有効)とは、メモリマップテーブル210にSourceメモリのデータが登録状態(図12のS1113の処理を経ていない)にあることを示す。なお図10〜図13では、メモリアクセス監視部230は,エラー発生の場合(S11122,S11143、S11164,S11167,S11168、S11169、S11143)、エラー検出リクエストを、エラー検出部240に送信する(図2、図3)が、「S11122,S11143、S11164,S11167,S11168、S11169、S11143」の各エラーは、エラーとして検出するために、「予め定義されたエラー」である。
[Sourceメモリ書込み時の処理S1114の詳細]
図11を参照して、Sourceメモリ書込み時の処理S1114の詳細を説明する。図11は、Sourceメモリ書込み時の処理S1114の詳細フローチャートである。図11の動作主体はメモリアクセス監視部230である。
(1)S11140では、メモリアクセス監視部230は、メモリマップテーブル210に、入力されたメモリアドレスにヒットするレコードが存在するかどうか検索する。S11140が真(該当レコードが存在する)であれば、S11141に分岐する。S11140が偽(該当レコードが存在しない)であれば、終了する。
(2)S11141では、メモリアクセス監視部230は、SourceメモリPUSHフラグ213が無効かどうかで分岐する。S11141が真(SourceメモリPUSHフラグ213が無効)であれば、S11142に分岐する。S11141が偽(SourceメモリPUSHフラグ213が有効)であれば、S11143に分岐する。
(3)S11142では、メモリアクセス監視部230は、入力されたSourceメモリデータ、入力された実行命令アドレスを登録し、SourceメモリPUSHフラグ213を有効にする。
(4)S11143では、メモリアクセス監視部230は、コピー漏れエラーを出力する。コピー漏れエラーは、Sourceメモリの有効データをDestinationメモリにコピーする前に、Sourceメモリへの書込みを行ったことを示す。
[Destinationメモリ書込み時の処理S1116の詳細]
図12は、Destinationメモリ書込み時の処理S1116の詳細フローチャートである。動作主体はメモリアクセス監視部230である。図12を参照してDestinationメモリ書込み時の処理S1116の動作について説明する。
(1)S11160では、メモリアクセス監視部230は、メモリマップテーブル210に入力されたメモリアドレスにヒットするレコードが存在するかどうか検索する。S11160が真(該当レコードが存在する)であれば、S11161に分岐する。S11160が偽(該当レコードが存在しない)であれば、終了する。
(2)S11161では、メモリアクセス監視部230はSourceメモリPUSHフラグ213が有効かどうかで処理を分岐する。S11161が真(SourceメモリPUSHフラグ213が有効)であれば、S11162に分岐する。S11161が偽(SourceメモリPUSHフラグ213が無効)であれば、S11165に分岐する。
(3)S11162では、メモリアクセス監視部230は、メモリマップレコードのDestinationメモリデータと、入力されたSourceメモリデータとが一致するかどうかで分岐する。S11162が真(DestinationメモリデータとSourceメモリデータ218が一致する)であれば、S11163に分岐する。S11162が偽(DestinationメモリデータとSourceメモリデータ218が一致しない)であれば、S11164に分岐する。
(4)S11163では、メモリアクセス監視部230はSourceメモリPUSHフラグ213を無効、SourceメモリPOPフラグ214を有効にする。S11163ではエラーは発生しないが、これは、メモリマップレコード211が存在し、SourceメモリデータPUSHフラグが有効(Sourceメモリにはデータが格納済み)であり、Destinationメモリデータ(図3左側の、入力されたデータ)とSourceメモリデータ(メモリマップレコード211のDestinationメモリアドレス216の値)とが同一のためである。
(5)S11164では、メモリアクセス監視部230は、Destinationメモリデータエラーを出力する。Destinationメモリデータエラーは、Destinationメモリへの書込みにおいて、コピー元のSourceメモリデータと異なるデータの書込みが行われたことを示す。
(6)S11165では、メモリアクセス監視部230はSourceメモリPOPフラグ214が有効かどうかで処理を分岐する。S11165が真(SourceメモリPOPフラグ214が有効)であれば、S11166に分岐する。S11165が偽(SourceメモリPOPフラグ214が無効)であれば、S11169に分岐する。
(7)S11166では、メモリアクセス監視部230は、DestinationメモリデータとSourceメモリデータ218が一致するかどうかで処理を分岐する。S11166が真(DestinationメモリデータとSourceメモリデータ218が一致する)であれば、S11167に分岐する。S11166が偽(DestinationメモリデータとSourceメモリデータ218が一致しない)であれば、S11168に分岐する。
(8)S11167では、メモリアクセス監視部230は、Destinationメモリ多重書込みエラーを出力する。Destinationメモリ多重書込みエラーは、Destinationメモリへの書き込みにおいて、既にコピーされているDestinationメモリアドレスへ、再度書込みをおこなったことを示す。
(9)S11168では、メモリアクセス監視部230は、コピー順序エラーを出力する。コピー順序エラーはSourceメモリにデータが格納される前に、Destinationメモリに書込みをおこなったことを示す。
(10)S11169では、メモリアクセス監視部230は、コピー順序エラーを出力する。コピー順序エラーはSourceメモリにデータが格納される前に、Destinationメモリに書込みをおこなったことを示す。
[エラー検出S114の詳細]
図13は、エラー検出部240が行う、エラー検出S114の詳細フローチャートである。図13の動作主体はエラー検出部240である。図13を参照してエラー検出S114の動作について説明する。
(1)S1140では、エラー検出部240は、メモリアクセス監視でエラーが発生したかどうかで分岐する。上記のように(図3、図4)、メモリアクセス監視部230はエラーを検出すると、エラー検出部240にエラー出力として、エラー検出リクエストを送信する。S1140が真であれば、S1141に分岐する。S1140が偽であれば、S1142に分岐する。
(2)S1141では、エラー検出部240は、コピー漏れ検出結果500にエラーの詳細を出力する。
(3)S1142では、エラー検出部240は、メモリマップテーブル210からメモリマップレコード211の取得を行う(図2)。
(4)S1143では、エラー検出部240はSourceメモリPUSHフラグ213が有効かどうか判断する。S1143が真であれば、S1144に分岐する。S1143が偽であれば、S1145に進む。
(5)S1144では、エラー検出部240はコピー未実行エラーを出力する。コピー未実行エラーはコピー記述漏れ、コピー記述のアドレス指定ミス等の理由により、正常なコピーが行われなかったことを表す。
(6)S1145でエラー検出部240はコピー漏れ検出結果500にエラーの詳細を出力する。
(7)S1146ではメモリマップテーブル210に含まれる全レコードのチェックが完了したかどうかで分岐する。S1146が真であれば、終了する。S1146が偽であれば、S1142に戻る。
以上のように、システムシミュレータ10はコピー漏れ検出部200を備えたので、さまざまな要因、及びタイミングで発生するコピー漏れを検出することが可能となる。またシステムシミュレータ10によれば、多様な条件で発生するデータコピー漏れが検出可能となり、S/W品質評価におけるデータコピー処理の正確性を保証する手段を提供できる。
実施の形態2.
図14、図15を参照して実施の形態2のシステムシミュレータ20を説明する。実施の形態1のシステムシミュレータ10はコピー漏れ検出部200を備えるが、実施の形態2のシステムシミュレータ20は、コピー漏れ検出部200に加え、コードカバレッジ測定部600を備える。以下の説明では、実施の形態1と異なる部分についてのみ説明する。
図14は、システムシミュレータ20の構成図である。図14を参照してシステムシミュレータ20の全体構成について説明する。システムシミュレータ20は、システムシミュレータ10に対して、さらにコードカバレッジ測定部600を備える。命令セットシミュレータ100、コピー漏れ検出部200、メモリモデル300、メモリマップ400、コピー漏れ検出結果500等は実施の形態1と同様である。
(コードカバレッジ測定部600)
コードカバレッジ測定部600は、命令セットシミュレータ100から出力される実行命令アドレスを基に、命令網羅率を測定する機能を有数する。コードカバレッジ測定部600による測定結果は、コードカバレッジ測定結果700に出力される。コードカバレッジを正しく測定できるのであれば、本システムに適用するためのコードカバレッジ測定部600の実装方法は特に制限されない。コードカバレッジ測定結果700は、コードカバレッジ測定部600が計測したコードカバレッジに関する詳細情報の出力である。
図15は、システムシミュレータ20の全体動作を示すフローチャートである。図15を参照してシステムシミュレータ20の動作について説明する。コードカバレッジ測定、コピー漏れ検出の2フェーズで構成されている。
<フェーズ1>
(1)S20で命令セットシミュレータ100がS/Wシミュレーションを実行する。
(2)S21で、コードカバレッジ測定部600がコードカバレッジの測定を行う。
(3)S22で、コードカバレッジ測定部600は、コードカバレッジが100%(閾値の一例)かどうかの判断を行う。S22が真である(カバレッジが100%である)場合、S25に進む。なおコードカバレッジが100%は一例であり、90%以上でもよいし80%以上でも構わない。閾値としてのコードカバレッジの値は自由に設定すればよい。S22が偽である(カバレッジが100%ではない)場合、S23に分岐する。
(3)S23で例えば担当者が、コードカバレッジ測定結果700を評価する。S24で、例えば担当者が、該当箇所を修正する。修正後、再びS20を実行する。以上のプロセスをS22において、カバレッジが100%と判断されるまで実行する。カバレッジが100%と判断されれば、処理は、フェーズ2に進む。
<フェーズ2>
フェーズ2は実施の形態1の図2と同様である。
(1)S25で命令セットシミュレータ100がS/Wシミュレーションを実行する。
(2)S26でコピー漏れの検出を行う。
(3)S27でコピー漏れが0かどうか(コピー漏れが無いかどうか)の判断を行う。S27が真である(コピー漏れなし)場合、終了する。S27が偽である(コピー漏れがある)場合、S28に分岐する。
(4)S28で例えば担当者がコピー漏れ検出結果500を評価し、コピー漏れ原因箇所を特定する。
(5)S29で、例えば担当者がコピー漏れ原因箇所を修正する。修正後、再びS25を実行する。
(6)以上のプロセスをS27において、コピー漏れが0と判断されるまで実行する。
実施の形態2のシステムシミュレータ20は、コピー漏れ検出部とコードカバレッジ計測部とを備えたので、以下のような2つのフェーズの検証が可能となり、S/W品質を保証することができる。
<フェーズ1>
コードカバレッジ計測の結果が100%になるまで、テストパタンの修正を行う。本フェーズでテストパタンの妥当性を保証することができる。
<フェーズ2>
コピー漏れが0になるまで、ソースコードのコピー漏れ原因箇所の修正を行う。本フェーズでコピー処理の正確性を保証することができる。
実施の形態3.
図16は、システムシミュレータ10、20のハードウェア構成の一例を示す図である。図16を参照して実施の形態4を説明する。実施の形態4は、コンピュータであるシステムシミュレータ10、20のハードウェア構成を説明する。システムシミュレータ10、20のハードウェア構成は同様であるので、システムシミュレータ10について説明する。
ハードウェア資源を示す図16において、コンピュータであるシステムシミュレータ10は、プログラムを実行するCPU950(Central Processing Unit)を備えている。CPU950は、バス958を介してROM(Read Only Memory)951、RAM(Random Access Memory)952、表示装置953、キーボード954、マウス955、通信ボード956、CDD957、磁気ディスク装置960と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置960の代わりに、光ディスク装置、フラッシュメモリなどの記憶装置でもよい。
RAM952は、揮発性メモリの一例である。ROM951、CDD957、磁気ディスク装置960等の記録媒体は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部、格納部、バッファの一例である。通信ボード956、キーボード954などは、入力部、入力装置の一例である。また、通信ボード956、表示装置953などは、出力部、出力装置の一例である。通信ボード956は、ネットワークに接続されている。
磁気ディスク装置960には、オペレーティングシステム961(OS)、プログラム群962、ファイル群963が記憶されている。プログラム群962のプログラムは、CPU950、オペレーティングシステム961により実行される。
上記プログラム群962には、以上の実施の形態の説明において「〜部」として説明した機能を実行するプログラムが記憶されている。プログラムは、CPU950により読み出され実行される。
ファイル群963には、以上の実施の形態の説明において、「〜の判定結果」、「〜の算出結果」、「〜の抽出結果」、「〜の生成結果」、「〜の処理結果」として説明した情報や、データや信号値や変数値やパラメータなどが、「〜ファイル」や「〜データベース」の各項目として記憶されている。「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。また、ディスクやメモリなどの記録媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU950によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのCPUの動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
また、以上に述べた実施の形態の説明において、データや信号値は、RAM952のメモリ、CDD957のコンパクトディスク、磁気ディスク装置960の磁気ディスク、その他光ディスク、ミニディスク、DVD(Digital Versatile Disk)等の記録媒体に記録される。また、データや信号は、バス958や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
また、以上の実施の形態の説明において、「〜部」、「命令セットシミュレータ」及び「メモリモデル」として説明したものは、「〜手段」、であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明したものは、ソフトウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記録媒体に記憶される。プログラムはCPU950により読み出され、CPU950により実行される。すなわち、プログラムは、以上に述べた「〜部」としてコンピュータを機能させるものである。あるいは、以上に述べた「〜部」の手順や方法をコンピュータに実行させるものである。
以上の実施の形態では、システムシミュレータ10を説明したが、この動作は、プログラムとしても把握できることは以上の説明から当然である。また、システムシミュレータ10の各「〜部」の動作は方法としても把握できることは以上の説明により明らかである。
10,20 システムシミュレータ、100 命令セットシミュレータ、200 コピー漏れ検出部、210 メモリマップテーブル、211 メモリマップレコード、212 SourceメモリR/Wトリガ設定、213 SourceメモリPUSHフラグ、214 SourceメモリPOPフラグ、215 Sourceメモリアドレス、216 Destinationメモリアドレス、217 実行命令アドレス、218 メモリデータ、220 テーブル初期化部、230 メモリアクセス監視部、240 エラー検出部、300 メモリモデル、400 メモリマップ、500 コピー漏れ検出結果、600 コードカバレッジ測定部、700 コードカバレッジ測定結果。

Claims (7)

  1. ソフトウェアを実行して前記ソフトウェアを模擬するソフトウェア模擬部と、
    前記ソフトウェア模擬部が模擬する前記ソフトウェアによってアクセスされるメモリの動作を模擬するメモリ模擬部と、
    前記ソフトウェアによる前記メモリ模擬部へのアクセスを監視し、監視したアクセス監視結果を記録し、記録した前記アクセス監視結果に基づいて、前記ソフトウェアによる処理であってコピー元となるコピー元メモリのデータを読み出してコピー先となるコピー先メモリへ書き込む処理であるデータコピー処理に、予め定義されたエラーが発生したかどうかを検出するエラー検出部と
    を備えたことを特徴とするソフトウェア試験装置。
  2. 前記ソフトウェア試験装置は、
    前記データコピー処理において前記コピー元メモリのアドレスと、前記コピー先メモリのアドレスとの組を含むメモリマップ情報が予め格納されたメモリマップ情報格納部を備え、
    前記エラー検出部は、
    前記アクセス監視結果を前記メモリマップ情報に記録し、前記アクセス監視結果が記録された前記メモリマップ情報に基づいて、前記エラーを検出することを特徴とする請求項1記載のソフトウェア試験装置。
  3. 前記メモリマップ情報格納部が格納する前記メモリマップ情報は、
    有効と無効との2つの状態のいずれにあるかを示す第1のフラグを含み、
    前記エラー検出部は、
    前記ソフトウェアによって前記メモリ模擬部へ前記コピー元メモリへのデータの書き込み指示が送信されたか監視し、前記コピー元メモリへのデータの書き込み指示の検出に基づき前記第1のフラグを有効にすると共に、前記第1のフラグの状態に基づいて、前記エラーを検出することを特徴とする請求項2記載のソフトウェア試験装置。
  4. 前記メモリマップ情報格納部が格納する前記メモリマップ情報は、
    有効と無効との2つの状態のいずれにあるかを示す第2のフラグを含み、
    前記エラー検出部は、
    前記ソフトウェアによって前記メモリ模擬部へ前記コピー先メモリへのデータの書き込み指示が送信されたかどうかを監視し、前記コピー先メモリへのデータの書き込み指示の検出に基づき前記第2のフラグの状態を有効にすると共に、前記第1のフラグと前記第2のフラグとの状態に基づいて、前記エラーを検出することを特徴とする請求項3記載のソフトウェア試験装置。
  5. 前記ソフトウェア試験装置は、さらに、
    前記ソフトウェアを模擬するソフトウェア模擬部から出力される実行命令アドレスに基づいて、命令網羅率を示すコードカバレッジを測定するコードカバレッジ測定部を備えたことを特徴とする請求項1〜4のいずれかに記載のソフトウェア試験装置。
  6. 前記エラー検出部は、
    前記コードカバレッジ測定部による前記コードカバレッジの測定結果が予め設定された閾値を超える場合に、前記アクセス監視結果に基づいて、前記予め定義されたエラーが発生したかどうかを検出することを特徴とする請求項5記載のソフトウェア試験装置。
  7. コンピュータに、
    ソフトウェアを実行して前記ソフトウェアを模擬する処理、
    模擬される前記ソフトウェアによってアクセスされるメモリの動作を模擬する処理、
    模擬される前記ソフトウェアによるメモリアクセス処理を監視し、監視したアクセス監視結果を記録し、記録した前記アクセス監視結果に基づいて、前記ソフトウェアによる処理であってコピー元となるコピー元メモリのデータを読み出してコピー先となるコピー先メモリへ書き込む処理であるデータコピー処理に、予め定義されたエラーが発生したかどうかを検出する処理
    を実行させるためのソフトウェア試験プログラム。
JP2014038474A 2014-02-28 2014-02-28 ソフトウェア試験装置及びソフトウェア試験プログラム Active JP6246022B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014038474A JP6246022B2 (ja) 2014-02-28 2014-02-28 ソフトウェア試験装置及びソフトウェア試験プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014038474A JP6246022B2 (ja) 2014-02-28 2014-02-28 ソフトウェア試験装置及びソフトウェア試験プログラム

Publications (2)

Publication Number Publication Date
JP2015162191A JP2015162191A (ja) 2015-09-07
JP6246022B2 true JP6246022B2 (ja) 2017-12-13

Family

ID=54185222

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014038474A Active JP6246022B2 (ja) 2014-02-28 2014-02-28 ソフトウェア試験装置及びソフトウェア試験プログラム

Country Status (1)

Country Link
JP (1) JP6246022B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7052096B2 (ja) 2014-10-19 2022-04-11 イートン コーポレーション 振動伝達が高められたゴルフグリップ

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116028338A (zh) * 2021-10-26 2023-04-28 上海华为技术有限公司 一种不友好访存检测方法及相关设备

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3848171B2 (ja) * 2002-02-01 2006-11-22 富士通株式会社 計算機シミュレーションプログラム、プロセッサのモデルの検証方法、及び計算機シミュレーション方法
JP2005338892A (ja) * 2004-05-24 2005-12-08 Toshiba Corp メモリ異常使用検知装置
JP2007272303A (ja) * 2006-03-30 2007-10-18 Matsushita Electric Ind Co Ltd メモリ破壊検出機能付きシミュレータ
US7836435B2 (en) * 2006-03-31 2010-11-16 Intel Corporation Checking for memory access collisions in a multi-processor architecture

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7052096B2 (ja) 2014-10-19 2022-04-11 イートン コーポレーション 振動伝達が高められたゴルフグリップ

Also Published As

Publication number Publication date
JP2015162191A (ja) 2015-09-07

Similar Documents

Publication Publication Date Title
US8001432B2 (en) Uninitialized memory detection using error correction codes and built-in self test
US10761963B2 (en) Object monitoring in code debugging
US9804948B2 (en) System, method, and computer program product for simulating at least one of a virtual environment and a debugging environment to prevent unwanted code from executing
US10049031B2 (en) Correlation of violating change sets in regression testing of computer software
US9292652B2 (en) Generic design rule checking (DRC) test case extraction
US20100180263A1 (en) Apparatus and method for detecting software error
CN103150506A (zh) 一种恶意程序检测的方法和装置
JP5692414B2 (ja) 検知装置、検知プログラムおよび検知方法
US11003817B2 (en) Hard error simulation and usage thereof
CA2811617C (en) Commit sensitive tests
US20150143342A1 (en) Functional validation of software
US20160292307A1 (en) Temporal logic robustness guided testing for cyber-physical systems
JP6246022B2 (ja) ソフトウェア試験装置及びソフトウェア試験プログラム
WO2019182803A1 (en) Testing kernel mode computer code by executing the computer code in user mode
US8739091B1 (en) Techniques for segmenting of hardware trace and verification of individual trace segments
WO2023273637A1 (zh) 一种故障检测方法及装置
CN114625663A (zh) 一种测试方法、装置、计算机设备以及存储介质
JPWO2012137323A1 (ja) 情報処理装置及び疑似障害発生方法
US10372589B2 (en) Multi environment aware debugger
EP3553681A1 (en) Method and apparatus for error test coverage determination for a circuit by simulation
US10228995B2 (en) Last writers of datasets in storage array errors
CN112380127B (zh) 测试用例回归方法、装置、设备和存储介质
CN107766221B (zh) 一种读时延测试方法、系统、设备及计算机存储介质
JP6234640B2 (ja) シミュレーション装置及びシミュレーション方法及びシミュレーションプログラム
JP6331400B2 (ja) 検証方法、検証装置および検証プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161128

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170915

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20171017

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171114

R150 Certificate of patent or registration of utility model

Ref document number: 6246022

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250