Main Content

カスタム データ ストアのテストのガイドライン

カスタム データ ストア クラスから派生したすべてのデータ ストアには共通の動作があります。このテスト手順は、すべてのカスタム データ ストアが備えていなければならない最小限の動作と機能のセットをテストするためのガイドラインを提供します。カスタム データ ストア固有の機能を検定するためには、追加のテストが必要です。

カスタム データ ストアの開発の指示に基づいてカスタム データ ストアを作成した場合は、以下のテスト手順に従ってカスタム データ ストアを検定します。最初にユニット テストを実行してから、ワークフロー テストを実行します。

  • ユニット テストではデータ ストアのコンストラクターとメソッドを検定します。

  • ワークフロー テストではデータ ストアの使用方法を検定します。

これらのすべてのテスト ケースには以下の共通点があります。

  • テストの説明で指定されている場合を除き、空でないデータ ストア ds をテストしていることが想定されています。

  • カスタム データストアで設計上サポートされているファイルの拡張子、ファイルのエンコード、およびデータの場所 (Hadoop® など) についてテスト ケースを検証します。

ユニット テスト

構築

データ ストアのコンストラクターに関するユニット テストのガイドラインは以下のとおりです。

テスト ケースの説明期待される出力

カスタム データ ストアのコンストラクターが最低限の必須入力で動作するかどうかをチェックします。

期待される最小限のプロパティとメソッドをもつカスタム データ ストア タイプのデータ ストア オブジェクト

データストア オブジェクト ds のスーパークラスの 1 つが matlab.io.Datastore であるかどうかをチェックします。

以下のコマンドを実行します。

isa(ds,'matlab.io.Datastore') 

1 または true

カスタム データ ストア コンストラクターを、必須入力と任意のサポートされる入力引数、および名前と値の引数ペアで呼び出します。

期待される最小限のプロパティとメソッドをもつカスタム データ ストア タイプのデータ ストア オブジェクト

read

read メソッドのユニット テストのガイドライン

テスト ケースの説明期待される出力

データ ストア オブジェクト ds に対して read メソッドを呼び出します。

t = read(ds);

データ ストアの先頭からのデータ

読み取りサイズを指定する場合は、返されるデータのサイズが読み取りサイズと同等になります。

データ ストア オブジェクトに対して read メソッドを再度呼び出します。

t = read(ds);

前回の読み取り操作の終了点から開始するデータ

読み取りサイズを指定する場合は、返されるデータのサイズが読み取りサイズと同等になります。

データ ストア オブジェクトに対して、while ループ内で read メソッドを連続して呼び出します。

while(hasdata(ds))
  t = read(ds);
end

エラーなし

正しい形式の正しいデータ

読み取り可能なデータがある場合、read メソッドの info 出力 (ある場合) をチェックします。

データ ストア オブジェクト ds を呼び出します。

[t,info] = read(ds);

エラーなし

info には期待される情報が含まれています。

t には期待されるデータが含まれています。

読み取り可能なデータがなくなった場合に、データ ストア オブジェクトに対して read を呼び出します。

カスタム データ ストアの実装に基づき、期待される出力またはエラー メッセージ。

readall

readall メソッドのユニット テストのガイドライン

テスト ケースの説明期待される出力

データ ストア オブジェクトに対して readall メソッドを呼び出します。

すべてのデータ

hasdata(ds)false のときに readall メソッドをデータ ストア オブジェクトに対して呼び出します。

hasdata(ds)false になるまでデータ ストアから読み取り、次に readall メソッドを呼び出します。

while(hasdata(ds))
  t = read(ds);
end
readall(ds)

すべてのデータ

hasdata

hasdata メソッドのユニット テストのガイドライン

テスト ケースの説明期待される出力

read を呼び出す前に、データ ストア オブジェクトに対して hasdata メソッドを呼び出します。

true

read を何回か呼び出した後、すべてのデータが読み取られる前に、データ ストア オブジェクトに対して hasdata メソッドを呼び出します。

true

読み取り可能なデータがまだある場合に、readall メソッドを呼び出してから、hasdata メソッドを呼び出します。

true

読み取り可能なデータがなくなった場合に、hasdata メソッドを呼び出します。

false

reset

reset メソッドのユニット テストのガイドライン

テスト ケースの説明期待される出力

read メソッドを呼び出す前にデータ ストア オブジェクトに対して reset メソッドを呼び出します。

reset メソッドに対する呼び出しの後で read メソッドが適切なデータを返すかどうかを検証します。

reset(ds);
t = read(ds);

エラーなし

read はデータ ストアの先頭からデータを返します。

読み取りサイズを指定する場合は、返されるデータのサイズが読み取りサイズと同等になります。

読み取り可能なデータがまだある場合に、read メソッドを数回呼び出してから、reset メソッドを呼び出します。

reset メソッドに対する呼び出しの後で read メソッドが適切なデータを返すかどうかを検証します。

エラーなし

read メソッドはデータ ストアの先頭からデータを返します。

読み取りサイズを指定する場合は、返されるデータのサイズが読み取りサイズと同等になります。

読み取り可能な追加のデータがまだある場合に、readall メソッドを 1 回呼び出してから、reset メソッドを呼び出します。

reset メソッドに対する呼び出しの後で read メソッドが適切なデータを返すかどうかを検証します。

エラーなし

read メソッドはデータ ストアの先頭からデータを返します。

読み取りサイズを指定する場合は、返されるデータのサイズが読み取りサイズと同等になります。

読み取り可能なデータがなくなった場合に、データ ストア オブジェクトに対して reset メソッドを呼び出してから、read メソッドを呼び出します。

reset メソッドに対する呼び出しの後で read が適切なデータを返すかどうかを検証します。

エラーなし

read メソッドはデータ ストアの先頭からデータを返します。

読み取りサイズを指定する場合は、返されるデータのサイズが読み取りサイズと同等になります。

progress

progress メソッドのユニット テストのガイドライン

テスト ケースの説明期待される出力

read メソッドを呼び出す前にデータ ストア オブジェクトに対して progress メソッドを呼び出します。

0 またはカスタム データ ストアの実装に基づく期待される出力。

readall を呼び出した後、read を呼び出す前に、データ ストア オブジェクトに対して progress メソッドを呼び出します。

readall(ds);
progress(ds)

0 またはカスタム データ ストアの実装に基づく期待される出力。

read を何回か呼び出した後、読み取り可能なデータがまだある間に、データ ストア オブジェクトに対して progress メソッドを呼び出します。

01 の間の小数またはカスタム データ ストアの実装に基づく期待される出力。

読み取り可能なデータがなくなった場合に、データ ストア オブジェクトに対して progress メソッドを呼び出します。

1 またはカスタム データ ストアの実装に基づく期待される出力。

preview

preview メソッドのユニット テストのガイドライン

テスト ケースの説明期待される出力

read を呼び出す前に、データ ストア オブジェクトに対して preview を呼び出します。

preview メソッドはカスタム データ ストアの実装に基づき、データ ストアの先頭から期待されるデータを返します。

read を何回か呼び出した後、読み取り可能なデータがまだある間に、データ ストア オブジェクトに対して preview を呼び出します。

preview メソッドはカスタム データ ストアの実装に基づき、データ ストアの先頭から期待されるデータを返します。

readall を呼び出した後、読み取り可能なデータがまだある間に、データ ストア オブジェクトに対して preview を呼び出します。

preview メソッドはカスタム データ ストアの実装に基づき、データ ストアの先頭から期待されるデータを返します。

read を何回か呼び出し、reset を 1 回呼び出した後、データ ストア オブジェクトに対して preview を呼び出します。

preview メソッドはカスタム データ ストアの実装に基づき、データ ストアの先頭から期待されるデータを返します。

読み取り可能なデータがなくなった場合に、データ ストア オブジェクトに対して preview を呼び出します。

preview メソッドはカスタム データ ストアの実装に基づき、データ ストアの先頭から期待されるデータを返します。

read メソッドを何回か呼び出し、preview を呼び出した後で、再び read を呼び出します。

read メソッドは前回の読み取り操作の終了点から開始するデータを返します。

読み取りサイズを指定する場合は、返されるデータのサイズが読み取りサイズと同等になります。

preview を呼び出してから、データ ストアに対して readall を呼び出します。

readall メソッドは、データ ストアからすべてのデータを返します。

データ ストアに読み取り可能なデータがある間に、preview を呼び出してから hasdata を呼び出します。

hasdata メソッドは true を返します。

partition

partition メソッドのユニット テストのガイドライン

テスト ケースの説明期待される出力

有効な区画数と有効な分割インデックスを指定して、データ ストア オブジェクト ds に対して partition を呼び出します。

データ ストアの区画に対して read を呼び出し、データを検証します。

subds = partition(ds,n,index)
read(subds)

区画が有効であることを検証します。

isequal(properties(ds),properties(subds))
isequal(methods(ds),methods(subds))

partition メソッドはデータ ストアを n 個の区画に分割し、指定された index に対応する区画を返します。

返される区画 subds はカスタム データ ストアのデータ ストア オブジェクトでなければなりません。

分割されたデータ ストア subds には元のデータ ストアと同じメソッドとプロパティがなければなりません。

isequal ステートメントは true を返します。

区画に対して read を呼び出すと、区画の先頭から開始するデータが返されます。

読み取りサイズを指定する場合は、返されるデータのサイズが読み取りサイズと同等になります。

区画数を 1 に指定し、返される区画の index1 に指定して、データ ストア オブジェクト ds に対して partition を呼び出します。

分割されたデータ ストアの区画に対して read および preview を呼び出した場合に返されるデータを検証します。

subds = partition(ds,1,1)
isequal(properties(ds),properties(subds))
isequal(methods(ds),methods(subds))
isequaln(read(subds),read(ds))
isequaln(preview(subds),preview(ds))

区画 subds はカスタム データ ストアのデータ ストア オブジェクトでなければなりません。

区画 subds には元のデータ ストア ds と同じメソッドとプロパティがなければなりません。

isequal および isequaln ステートメントは true を返します。

有効な区画数と有効な分割インデックスを指定して、区画 subds に対して partition を呼び出します。

データ ストアの区画の再分割はエラーなしで動作しなければなりません。

initializeDatastore

データ ストアが matlab.io.datastore.HadoopFileBased から継承している場合は、次の表のガイドラインを使用して initializeDatastore の動作を検証してください。

テスト ケースの説明期待される出力

有効な info struct を使用して、データ ストア オブジェクト ds に対し initializeDatastore を呼び出します。

info struct には次のフィールドがあります。

  • FileName

  • Offset

  • Size

FileName のデータ型は char で、Offset および Size フィールドのデータ型は double です。

たとえば、info struct を初期化してから、データ ストア オブジェクト ds に対して initializeDatastore を呼び出します。

info = struct('FileName','myFileName.ext',...
                       'Offset',0,'Size',500)
initializeDatastore(ds,info)

データ ストア オブジェクトのプロパティを確認することで初期化を検証します。

ds

initializeDatastore メソッドは、info struct からの必要な情報を使用してカスタム データ ストア オブジェクト ds を初期化します。

getLocation

データストアが matlab.io.datastore.HadoopFileBased から継承している場合は、以下のガイドラインを使用して getLocation の動作を検証します。

テスト ケースの説明期待される出力

データ ストア オブジェクトに対して getLocation を呼び出します。

location = getLocation(ds)

カスタム データ ストアの実装に基づき、location の出力は以下のいずれかになります。

  • ファイルまたはディレクトリのリスト

  • matlab.io.datastore.DsFileSet オブジェクト

locationmatlab.io.datastore.DsFileSet オブジェクトの場合は、resolve を呼び出して location 出力内のファイルを検証します。

resolve(location)

getLocation メソッドは Hadoop のファイルの場所を返します。

isfullfile

データストアが matlab.io.datastore.HadoopFileBased から継承している場合は、以下のガイドラインを使用して isfullfile の動作を検証します。

テスト ケースの説明期待される出力

データ ストア オブジェクトに対して isfullfile を呼び出します。

カスタム データ ストアの実装に基づき、isfullfile メソッドは、true または false を返します。

ワークフロー テスト

適切な環境下でワークフロー テストを検証します。

  • データストアが matlab.io.Datastore からのみ継承している場合は、すべてのワークフロー テストをローカル MATLAB® セッションで検証します。

  • データストアが並列処理をサポートしている場合 (matlab.io.datastore.Partitionable から継承) は、Parallel Computing Toolbox™、MATLAB Parallel Server™ などの並列実行環境でワークフロー テストを検証します。

  • データストアが Hadoop をサポートしている場合 (matlab.io.datastore.HadoopFileBased) は、Hadoop クラスター内でワークフロー テストを検証します。

tall ワークフロー

tall ワークフローのテスト ガイドライン

テスト ケースの説明期待される出力

データ ストア オブジェクト ds に対して tall を呼び出し、tall 配列を作成します。

t = tall(ds)

関数 tall はデータ ストアの read メソッドの出力と同じデータ型の出力を返します。

このテスト ステップでは、システム メモリに収まるサイズのデータを含むデータ ストア オブジェクトを作成します。次に、このデータ ストア オブジェクトを使用して tall 配列を作成します。

t = tall(ds)

データが数値の場合は、dst の両方に対して関数 mean などの適切な関数を適用してから、結果を比較します。

データが string 型や categorical 型の場合は、ds の列と t の列に関数 unique を適用してから結果を比較します。

gather を適用して結果を検証します。

たとえば、tall 配列およびデータ ストアを使用するビッグ データのワークフロー (Parallel Computing Toolbox)を参照してください。

エラーなし

関数は正しいデータ型の出力を返します (tall データ型ではない)。

ds に適用した場合でも t に適用した場合でも、関数は同じ結果を返します。

MapReduce ワークフロー

MapReduce ワークフローのテスト ガイドライン

テスト ケースの説明期待される出力

データ ストア オブジェクト ds に対して mapreduce を呼び出します。

outds = mapreduce(ds,@mapper,@reducer)
詳細については、mapreduce を参照してください。

関数 mapreduce の使用をサポートするには、カスタム データ ストアの read メソッドが infodata の両方の出力引数を返さなければなりません。

エラーなし

MapReduce 演算は期待される結果を返します。

次のステップ

メモ

このテスト手順は、カスタム データ ストアの最小限の動作と機能のセットをテストするためのガイドラインを提供します。カスタム データ ストア固有の機能を検定するためには追加のテストが必要です。

実装と検証が完了したらカスタム データ ストアの使用を開始できます。

参考

| |

関連するトピック