Database-testing-quick-guide
データベーステスト-概要
データベースのテストには、データの有効性、データの整合性テスト、データベースに関連するパフォーマンスチェック、およびデータベース内のプロシージャ、トリガー、機能のテストが含まれます。
例
ユーザーの日々のトランザクションの詳細をキャプチャし、その詳細をデータベースに保存するアプリケーションを検討してください。 データベースのテストの観点から、次のチェックを実行する必要があります-
- アプリケーションからのトランザクション情報はデータベースに保存され、ユーザーに正しい情報を提供する必要があります。
- 情報がデータベースにロードされるときに失われるべきではありません。
- 完了したトランザクションのみを保存し、不完全な操作はすべてアプリケーションによって中止する必要があります。
- データベースへのアクセス許可を維持する必要があります。 ユーザー情報への未承認または無許可のアクセスを提供しないでください。
データベーステストを実行する必要がある理由
データベースのテストが実行される理由は複数あります。 バックエンドシステムはデータを保存し、複数の目的でアクセスされるため、データベースのデータ整合性、検証、およびデータ整合性チェックを実行する必要があります。
以下に、データベーステストの一般的な理由をいくつか示します-
- データベースバックエンドの呼び出しの複雑さを軽減するために、開発者は View および Stored プロシージャの使用を増やします。
- これらの Stored プロシージャおよび Views には、顧客の詳細(名前、連絡先情報など)および販売データの挿入などの重要なタスクが含まれています。 これらのタスクは、いくつかのレベルでテストする必要があります。
- フロントエンドで実行される*ブラックボックステスト*は重要ですが、問題を特定することは困難です。 バックエンドシステムでのテストにより、データの堅牢性が向上します。 これが、データベーステストがバックエンドシステムで実行される理由です。
- データベースでは、データは複数のアプリケーションから取得されるため、有害または誤ったデータがデータベースに保存される可能性があります。 したがって、データベースコンポーネントを定期的にチェックする必要があります。 さらに、データの整合性と一貫性を定期的にチェックする必要があります。
データベーステストとフロントエンドテスト
データベースのテストは、フロントエンドのUIテストとは異なります。 次の表は、主な違いを強調しています-
Database Testing | UI Testing |
---|---|
Database testing is known as data validation and integrity testing or back-end testing. | UI testing or front-end testing is also called Application testing or GUI testing. |
Database testing involves testing of back-end components, which are not visible to users. これには、データベースコンポーネントと、My SQL、OracleなどのDBMSシステムが含まれます。 a |
UIテストには、アプリケーションの機能と、フォーム、グラフ、メニュー、レポートなどのコンポーネントのチェックが含まれます。 これらのコンポーネントは、VB.net、C#、Delphiなどのフロントエンド開発ツールを使用して作成されます。 |
Database testing involves checking stored procedures, views, schemas in database, tables, indexes, keys, triggers, data validations and data consistence check. | UI testing involves checking the functionality of application, buttons, forms and fields, calendar and images, navigation from one page to other, and the overall functionality of the application. |
To perform DB testing, a tester needs a thorough knowledge of database concept − like procedures and functions, views, indexes, keys and good hands-on SQL. | To perform UI testing, a tester needs a good understanding of business requirements, application functional knowledge, coding, etc. |
Data comes from multiple heterogeneous data sources over web applications, Intranet applications and various other applications. | Data is entered manually into applications. It involves functional testing of front-end applications. |
データベースのテスト-タイプ
データベースの機能と構造に基づいて、DBテストは3つのカテゴリに分類することができます-
- 構造データベースのテスト-テーブルと列のテスト、スキーマのテスト、ストアドプロシージャとビューのテスト、トリガーのチェックなどを扱います。
- 機能テスト-ユーザーの観点からデータベースの機能をチェックします。 機能テストの最も一般的なタイプは、ホワイトボックステストとブラックボックステストです。
- 非機能テスト-負荷テスト、データベースでのリスクテスト、ストレステスト、最小システム要件を含み、データベースのパフォーマンスを扱います。
構造データベースのテスト
構造データベースのテストでは、エンドユーザーに公開されていないデータベースのコンポーネントを検証します。 これには、リポジトリのすべてのコンポーネントが含まれます。これらのコンポーネントは、データの保存に使用され、エンドユーザーによって変更されることはありません。 通常、このテストは、SQLストアドプロシージャやその他の概念に対する優れたコマンドを持つデータベース管理者が実行します。
構造テストに関してテストされた一般的なコンポーネントについて説明します-
スキーマ/マッピングのテスト
データベースオブジェクトマッピングを使用して、フロントエンドアプリケーションのオブジェクトを検証する必要があります。
スキーマテスト-
- エンドユーザーアプリケーションオブジェクトが正しくマッピングされていないか、データベースオブジェクトと互換性がない場合があります。 したがって、データベースに関連付けられているさまざまなスキーマ形式の検証を確認する必要があります。
- テーブル、ビュー、列など、データベース内でマップされていないオブジェクトを見つける必要があります。 必要とされている。
市場には、スキーマでオブジェクトマッピングを実行するために使用できるさまざまなツールがあります。
例-Microsoft SQL Serverでは、テスターはデータベース内のスキーマをチェックおよび検証するための簡単なクエリを作成できます。
テスターがテーブル構造を変更する場合、そのテーブルを持つすべての*ストアドプロシージャがこの変更と互換性があることを確認する必要があります。
ストアドプロシージャとビューのテスト
このテストでは、テスターがストアドプロシージャとビューの手動実行により必要な結果が生成されることを確認します。
テスターは確認します-
- 必要なトリガーを期待どおりに実行できる場合。
- 開発チームが手順のアプリケーションに入力を渡すことで、すべてのループと条件をカバーした場合。
- データベースに未使用のストアドプロシージャがある場合。
- データベース内の必要なテーブルからデータがフェッチされると、TRIM操作が適切に適用されます。
- テスト対象のアプリケーションの要件に応じたストアドプロシージャモジュールの全体的な統合の検証。
- 例外およびエラー処理メカニズムが続きます。
ストアドプロシージャテストの実行に使用される最も一般的なツールは、 LINQ 、* SPテストツール*などです。
トリガーテスト
トリガーテストでは、テスターは以下を確認する必要があります-
- トリガーのコーディング段階でコーディング規則に従うかどうか。
- 実行されたトリガーが必要な条件を満たしていることを確認してください。
- トリガーが実行されると、トリガーがデータを正しく更新するかどうか。
- 更新/挿入/削除の検証は、テスト中のアプリケーションで機能をトリガーします。
テーブルと列のテスト
このテストでカバーされる主要な領域は次のとおりです-
- データベース内のデータ型をフロントエンドアプリケーションのフィールド値に検証します。
- データベース内のデータフィールドの長さを、アプリケーション内のデータ型の長さに検証します。
- アプリケーションフィールドオブジェクトからデータベースにマップされていないテーブルまたは列があるかどうかを確認します。
- データベースのテーブルと列の命名規則は、ビジネス要件に準拠しているかどうかにかかわらず検証されます。
- データベース内のキーとインデックス、つまりテーブル内のプライマリキーと外部キーの検証は、要件に従って定義されます。
- 主キーとそれに対応する外部キーが2つのテーブルで同じかどうかを確認します。
- キーの一意およびNOT NULL特性が維持されていることを確認します。
- キーとインデックスの長さとデータ型は、要件に従って維持されます。
データベースサーバーチェック
データベースサーバーのチェックには検証が含まれます-
- データベースサーバーがビジネス要件に従ってトランザクションの予想数を処理できる場合。
- データベースサーバーの構成の詳細がビジネス要件を満たしている場合。
- ユーザーの承認が要件に従って維持されている場合。
機能テスト
機能テストは、エンドユーザーの視点を念頭に置いて実行されます。エンドユーザーが実行する必要なトランザクションと操作がビジネス仕様を満たしているかどうか。
ブラックボックステスト
ブラックボックステストでは、データベースの統合を検証して機能を確認します。 テストケースは単純で、関数からの着信データと発信データを検証するために使用されます。
データベースの機能をテストするために、因果関係のグラフ作成手法、等価分割、境界値分析などのさまざまな手法が使用されます。
その*利点*は次のとおりです-
- これはかなり単純で、開発の初期段階で実行されます。
- テストボックスの開発コストは、ホワイトボックステストに比べて低くなります。
その欠点は次のとおりです-
- いくつかのエラーを検出できません
- どのくらいのプログラムをテストする必要があるかは不明です。
ホワイトボックステスト
ホワイトボックステストは、データベースの内部構造を処理し、仕様の詳細はユーザーには表示されません。 データベースリファクタリングをサポートするデータベーストリガーと論理ビューのテストが含まれます。
データベース関数、トリガー、ビュー、SQLクエリなどのモジュールテストを実行します。 このタイプのテストでは、データベーステーブル、データモデル、データベーススキーマなどを検証します。 参照整合性のルールをチェックします。 デフォルトのテーブル値を選択して、データベースの一貫性をチェックします。
ホワイトボックステストの実行に使用される最も一般的な手法は、条件カバレッジ、決定カバレッジ、ステートメントカバレッジなどです。
ホワイトボックステストでコーディングエラーを検出できるため、データベースの内部バグを排除できます。 ホワイトボックステストの制限は、SQLステートメントがカバーされないことです。
非機能テスト
機能しないテストには、負荷テスト、ストレステスト、ビジネス仕様を満たすための最小システム要件の確認、データベースのリスク発見およびパフォーマンス最適化が含まれます。
負荷テスト
負荷テストの主な目的は、実行中のトランザクションのほとんどがデータベースのパフォーマンスに影響するかどうかを確認することです。
負荷テストでは、テスターがチェックします-
- 複数のリモートユーザーのトランザクションを実行するための応答時間。
- データベースが特定のレコードをフェッチするのにかかった時間。
さまざまなテストタイプでの負荷テストの例-
- 最もよく使用されるトランザクションを繰り返し実行して、データベースシステムのパフォーマンスを確認します。
- インターネットから一連の大きなファイルをダウンロードします。
- コンピューターまたはサーバーで同時に複数のアプリケーションを実行します。
ストレステスト
システムブレークポイントを識別するために、ストレステストが実行されます。 このテストでは、ある時点でシステムに障害が発生するようにアプリケーションがロードされます。 このポイントは、データベースシステムの*ブレークポイント*と呼ばれます。
データベーストランザクションの状態を判断するには、多大な労力が必要です。 時間とコストに基づく問題を回避するには、適切な計画が必要です。
最も一般的に使用されるストレステストツールは、 LoadRunner および WinRunner です。
ストレステストの*例*を見てみましょう。 CRMアプリケーションは、最大50000の同時ユーザーのユーザー負荷を取得できます。 負荷を51000に増やし、レコードの更新やエントリの追加などのトランザクションを実行するとします。 トランザクションを実行するとすぐに、アプリケーションはデータベースシステムと同期できます。 したがって、次のテストは、52000のユーザー負荷で実行することです。 ストレステストは*疲労テスト*と呼ばれることもあります。
データベースのテスト-プロセス
データベースのテストを実行するプロセスは、他のアプリケーションのテストと同様です。 DBテストは、以下の主要プロセスで説明できます。
- 環境をセットアップする
- テストを実行する
- テスト結果を確認する
- 期待される結果に従って検証する
- 調査結果をそれぞれの利害関係者に報告する
テストケースの開発には、さまざまなSQLステートメントが使用されます。 DBテストの実行に使用される最も一般的なSQLステートメントは、 Select ステートメントです。 これとは別に、さまざまなDDL、DML、DCLステートメントも使用できます。
例-作成、挿入、選択、更新など
データベースのテスト段階
DBテストは面倒なプロセスではなく、テストプロセスに応じたデータベーステストライフサイクルのさまざまな段階が含まれます。
データベーステストの重要な段階は次のとおりです-
- 初期状態の確認
- テスト走行
- 期待される結果による結果の検証
- 結果を生成する
DBテストの*最初の段階*は、テストプロセスを開始する前にデータベースの初期状態を確認することです。 次に、定義されたテストケースのデータベースの動作がテストされます。 得られた結果に応じて、テストケースがカスタマイズされます。
データベースのテストを成功させるには、以下のワークフローがすべてのテストで実行されます。
- データベースのクリーンアップ-データベースにテスト可能なデータがある場合は、空にする必要があります。
- フィクスチャのセットアップ-これには、データベースにデータを入力し、データベースの現在の状態を確認することが含まれます。
- テストの実行、結果の検証、結果の生成-テストが実行され、出力が検証されます。 出力が期待どおりの結果である場合、次のステップは要件に従って結果を生成することです。 それ以外の場合は、データベース内のバグを見つけるためにテストが繰り返されます。
データベースのテスト-テクニック
この章では、データベーステストの実行に使用される最も一般的な手法について説明します。
データベーススキーマテスト
前述のとおり、スキーマ内の各オブジェクトのテストが含まれます。
データベースとデバイスの検証
- データベースの名前を確認する
- データデバイス、ログデバイス、ダンプデバイスの検証
- 各データベースに十分なスペースが割り当てられているかどうかを確認する
- データベースオプション設定の確認
テーブル、列、列タイプのルールチェック
以下の項目を確認して、実際の設定と適用された設定の違いを見つけてください。
- データベース内のすべてのテーブルの名前
- 各テーブルの列名
- 各テーブルの列タイプ
- NULL 値がチェックされているかどうか
- デフォルトが正しいテーブル列にバインドされているかどうか
- テーブル名とアクセス権限を修正するルール定義
キーとインデックス
各テーブルのキーとインデックスを確認します-
- 各テーブルの主キー
- 各テーブルの外部キー
- 外部キー列と他のテーブルの列の間のデータ型、クラスター化または非クラスター化の一意または非一意
ストアドプロシージャテスト
ストアドプロシージャが定義されているかどうかを確認し、出力結果を比較します。 ストアドプロシージャテストでは、次の点がチェックされます-
- ストアドプロシージャ名
- パラメータ名、パラメータタイプなど
- 出力-出力に多くのレコードが含まれるかどうか。 ゼロ行が影響を受けるか、少数のレコードのみが抽出されます。
- ストアドプロシージャの機能と、ストアドプロシージャが実行すべきでないことは何ですか?
- サンプル入力クエリを渡して、ストアドプロシージャが正しいデータを抽出したかどうかを確認します。
- ストアドプロシージャパラメータ-境界データと有効なデータを使用してストアドプロシージャを呼び出します。 各パラメーターを一度無効にして、プロシージャーを実行します。
- 戻り値-ストアドプロシージャによって返される値を確認します。 失敗した場合、ゼロ以外を返す必要があります。
- エラーメッセージチェック-ストアドプロシージャが失敗するように変更を加え、すべてのエラーメッセージを少なくとも1回生成します。 定義済みのエラーメッセージがない場合は、例外シナリオを確認してください。
トリガーテスト
トリガーテストでは、テスターは次のタスクを実行する必要があります-
- トリガー名が正しいことを確認してください。
- 特定のテーブル列に対して生成されたトリガーを検証します。
- トリガーの更新検証。
- 有効なデータでレコードを更新します。
- 無効なデータでレコードを更新し、すべてのトリガーエラーをカバーします。
- 他のテーブルの行によってまだ参照されているレコードを更新します。
- 障害発生時にトランザクションを確実にロールバックします。
- トリガーがトランザクションをロールバックすることになっていないケースを見つけます。
サーバー設定スクリプト
2種類のテストを実行する必要があります-
- データベースをゼロからセットアップし、そして
- 既存のデータベースをセットアップします。
SQL Serverの統合テスト
統合テストは、コンポーネントテストを完了した後に実行する必要があります。
- ストアドプロシージャを集中的に呼び出して、異なるテーブルのレコードを選択、挿入、更新、および削除し、競合や非互換性を見つけてください。
- スキーマとトリガー間の競合。
- ストアドプロシージャとスキーマ間の競合。
- ストアドプロシージャとトリガー間の競合。
機能試験方法
機能テストは、機能ごとにデータベースをモジュールに分割することで実行できます。 機能は次の2つのタイプのものです-
- *タイプ1 *-タイプ1テストで、プロジェクトの機能を調べます。 主要な機能ごとに、その機能を実装するスキーマ、トリガー、ストアドプロシージャを見つけ、それらを機能グループに入れます。 次に、各グループを一緒にテストします。
- *タイプ2 *-タイプ2テストでは、バックエンドの機能グループの境界は明らかではありません。 データフローを確認し、データを確認できる場所を確認できます。 フロントエンドから開始します。
次のプロセスが行われます-
- サービスにリクエストがあるか、データを保存すると、一部のストアドプロシージャが呼び出されます。
- 手順により、いくつかのテーブルが更新されます。
- これらのストアドプロシージャはテストを開始する場所になり、これらのテーブルはテスト結果を確認する場所になります。
ストレステスト
ストレステストでは、主要なデータベース関数と対応するストアドプロシージャのリストを取得します。 ストレステストについては、以下の手順に従ってください-
- これらの機能を試すテストスクリプトを作成し、すべての機能をフルサイクルで少なくとも1回チェックする必要があります。
- 特定の期間、テストスクリプトを繰り返し実行します。
- ログファイルを確認して、デッドロック、メモリ不足、データ破損などを確認します。
ベンチマークテスト
データベースにデータの問題やバグがない場合は、システムのパフォーマンスを確認できます。 システムパフォーマンスの低下は、以下に示すパラメータを確認することにより、ベンチマークテストで見つけることができます-
- システムレベルのパフォーマンス
- 最も使用頻度の高い機能/機能を特定する
- タイミング-機能を実行するための最大時間、最小時間、および平均時間
- アクセス量
フロントエンドを介したデータベースのテスト
バックエンドのバグは、フロントエンドのテストを行うことによって発見されることもあります。 以下の簡単な手順に従って、フロントエンドテストでバグを検出できます。
- フロントエンドからクエリを作成し、検索を発行します。
- 既存のレコードを取得し、一部のフィールドの値を変更して、レコードを保存します。 (UPDATEステートメントを含むか、ストアドプロシージャと更新トリガーを更新します。)
- フロントエンドウィンドウに新しいメニュー項目を挿入します。 情報を入力し、レコードを保存します。 (INSERTステートメントまたは挿入ストアドプロシージャと削除トリガーが含まれます。)
- 既存のレコードを選択し、[削除]または[削除]ボタンをクリックして、削除を確認します。 (これには、DELETEステートメントまたは削除ストアドプロシージャと削除トリガーが含まれます。)
- 無効なデータでこれらのテストケースを繰り返し、データベースがどのように応答するかを確認します。
データベーステスト-シナリオ
この章では、さまざまなテスト方法に関するいくつかの一般的なデータベーステストシナリオについて説明します。
構造化データベースのテスト
構造化データベーステストに関する一般的なデータベースシナリオを以下に示します-
- データベースの名前の確認、データデバイス、ログデバイス、およびダンプデバイスの確認、各データベースに十分なスペースが割り当てられているかどうかの確認、およびデータベースオプション設定の確認。
- データベース内のすべてのテーブルの名前、各テーブルの列名、各テーブルの列タイプ、null値のチェックの有無。 各テーブルのキーとインデックスを確認します。各テーブルの主キー、各テーブルの外部キー。
- 外部キー列と他のテーブルインデックスの列との間のデータ型、クラスター化または非クラスター化の一意または非一意。
機能データベースのテスト
- 機能的なデータベーステスト*に関する一般的なデータベーステストシナリオは次のとおりです-
- その機能を実装し、それらを機能グループにした後、各グループを一緒にテストできるスキーマ、トリガー、およびストアドプロシージャを見つけます。
- データフローを確認し、データを確認できる場所を確認します。 フロントエンドから開始します。
機能しないデータベースのテスト
- 非機能データベーステスト*に関する一般的なデータベーステストシナリオは次のとおりです-
- 主要な機能を試すためのテストスクリプトを作成し、すべての機能をフルサイクルで少なくとも1回チェックする必要があります。
- 特定の期間、テストスクリプトを繰り返し実行します。
- ログファイルを検証して、デッドロック、メモリ不足、データ破損などをチェックします。
- フロントエンドからクエリを作成し、検索を発行します。 既存のレコードを取得し、一部のフィールドの値を変更して、レコードを保存します。 (UPDATEステートメントを含むか、ストアドプロシージャを更新し、トリガーを更新します。)
- フロントエンドウィンドウに新しいメニュー項目を挿入します。 情報を入力し、レコードを保存します。 (INSERTステートメントまたは挿入ストアドプロシージャ、削除トリガーが含まれます。)
- 既存のレコードを選択し、[削除]または[削除]ボタンをクリックして、削除を確認します。 (これには、DELETEステートメントまたは削除ストアドプロシージャ、削除トリガーが含まれます。)
- 無効なデータでこれらのテストケースを繰り返し、データベースがどのように応答するかを確認します。
データベーステスト-オブジェクト
スキーマ、テーブル、ストアドプロシージャ、および*トリガー*はデータベースの主要なオブジェクトです。 これらのデータベースオブジェクトのDBテストタイプとテストシナリオを既に共有しています。
スキーマ
データベーススキーマは、データベース管理システムでサポートされている形式でデータベースシステムの構造を定義します。 スキーマは、データベースがどのように構成されているかを示します(リレーショナルデータベースの場合はデータベーステーブルで構成されます)。
データベーススキーマは、データベースに課せられる整合性制約と呼ばれる一連の式です。 これらの整合性制約により、スキーマの部分間の互換性が確保されます。
リレーショナルデータベースでは、スキーマはテーブル、フィールド、ビュー、インデックス、パッケージ、プロシージャ、関数、トリガー、タイプ、マテリアライズドビュー、シノニム、データベースリンク、およびその他の要素で構成されます。
スキーマは通常、データディクショナリに格納されます。 スキーマはテキストデータベース言語で定義されますが、この用語はデータベース構造のグラフィカルな描写を指すためによく使用されます。 つまり、スキーマは、データベース内のオブジェクトを定義するデータベースの構造です。
データウェアハウスで使用されるスキーマの一般的なタイプは-
- スタースキーマ
- 雪片のスキーマ
- Galaxy Schema
データベース内のテーブル
リレーショナルデータベースでは、テーブルを使用して情報を行と列に整理します。
例-顧客テーブルには、顧客ID、住所、電話番号などの情報が一連の列として含まれています。
各データは、テーブル内のフィールドです。 列は、すべての顧客の電話番号など、単一フィールドのすべてのエントリで構成されます。 フィールドはレコードとして整理されます。レコードは完全な情報セット(特定の顧客に関する情報セットなど)であり、それぞれが行で構成されています。
ストアドプロシージャ
ストアドプロシージャは、コンパイルされた形式でデータベースに格納された一連のSQLステートメントであり、複数のプログラムで共有できます。 ストアドプロシージャの使用は、データの整合性の維持、データ制御アクセス、および生産性の向上に役立ちます。
トリガー
データベーストリガーは、データベース内の特定のテーブルまたはビューの特定のイベントに応答して実行されるコードです。 トリガーは主に、データベース上の情報の整合性を維持するために使用されます。
データベーステスト-データの整合性
データベースではデータの整合性が重要です。 挿入、更新、削除の前のデータ検証が含まれます。 参照テーブルレコードを検証するには、トリガーを設定する必要があります。
データの整合性をチェックするには、次の操作を実行する必要があります-
- 各テーブルの主要な列をチェックし、不正なデータが存在するかどうかを確認する必要があります。 (名前フィールドの文字、負の割合など)
- 一貫性のないデータを見つけて関連するテーブルに挿入し、障害が発生するかどうかを確認します。
- 親のデータを挿入する前に子データを挿入します。 別のテーブルのデータによってまだ参照されているレコードを削除してください。
- テーブル内のデータが更新された場合、他の関連データも更新されているかどうかを確認してください。 レプリケートされたサーバーまたはデータベースが同期され、一貫した情報が含まれていることを確認する必要があります。
データベーステスト-データマッピング
データベース内のデータマッピングは、すべてのテスターが検証する必要がある重要な概念の1つです。 通常、テスターは、ユーザーインターフェイスのフロントエンドフィールドマッピングを対応するバックエンドデータベースフィールドと検証する必要があります。
この情報は、ソフトウェア要件仕様書またはビジネス要件仕様書SRS/BRS文書に記載されています。 マッピングが提供されない場合は、コーディング部分を確認する必要があります。
フロントエンドアプリケーションでアクションを実行すると、対応するCRUDアクションが呼び出されます。テスターは、呼び出されたすべてのアクションが成功したかどうかを確認する必要があります。
データマッピングの主要な側面
以下は、データマッピングの重要な側面です-
- UI/フロントエンドフォームのフィールドを確認し、対応するDBテーブルと一貫してマッピングする。 このマッピング情報は、上記の要件文書で定義されています。
- アプリケーションのフロントエンドで実行されるアクションの場合、対応するCRUDの「作成、取得、更新、削除」アクションがバックエンドで開始されます。
- テスターは、正しいアクションが呼び出され、呼び出されたアクション自体が成功したかどうかを確認する必要があります。
データマッピングテストの手順
以下に、データマッピングテストの手順を示します-
- *ステップ1 *-最初に各スクリプトの構文エラーをチェックします。
- *ステップ2 *-次に、テーブルマッピング、列マッピング、およびデータ型マッピングを確認します。
- *ステップ3 *-ルックアップデータのマッピングを確認します。
- *ステップ4 *-レコードが宛先テーブルに存在しない場合、各スクリプトを実行します。
- *ステップ5 *-レコードが宛先テーブルに既に存在する場合、各スクリプトを実行します。
データベーステスト-パフォーマンス
応答時間が長く、パフォーマンスが低いアプリケーションは、大きな問題につながる可能性があります。 データベースアプリケーションをエンドユーザーに展開する前に、データベース負荷テストを使用してパフォーマンスの問題を見つけます。
データベース負荷テストは、パフォーマンス、信頼性、およびスケーラビリティのためのデータベースアプリケーションの設計に役立ちます。 データベースアプリケーションの負荷テストでは、さまざまなユーザー負荷でデータベースアプリケーションのパフォーマンスとスケーラビリティをテストします。
データベース負荷テストでは、ターゲットデータベースアプリケーションの実際のユーザー負荷をシミュレートします。 複数のユーザーが同時にヒットしたときのデータベースアプリケーションの動作を決定するのに役立ちます。
負荷テスト
負荷テストの主な目的は、実行中のトランザクションのほとんどがデータベースのパフォーマンスに影響を与えるかどうかを確認することです。 負荷テストでは、次の側面を確認する必要があります-
- 複数のリモートユーザーのトランザクションを実行するための応答時間を確認する必要があります。
- 通常のトランザクションでは、1つの編集可能なトランザクションを含めて、これらのタイプpfトランザクションのデータベースのパフォーマンスを確認する必要があります。
- 通常のトランザクションでは、これらのタイプのトランザクションのデータベースのパフォーマンスを確認するために、1つの非編集トランザクションを含める必要があります。
- データベースが特定のレコードを取得するのにかかる時間を確認する必要があります。
ストレステスト
ストレステストを実行して、システムの*ブレークポイント*を特定します。 ここで、アプリケーションは、ある時点でシステムに障害が発生するようにロードされます。 このポイントは、データベースシステムのブレークポイントと呼ばれます。 ストレステストは*疲労テスト*とも呼ばれます。
データベーストランザクションの状態を判断するには、多大な労力が必要です。 時間ベースおよびコストベースの問題を回避するには、適切な計画が必要です。
最も一般的なストレステストツールは、 LoadRunner および WinRunner です。
データベーステスト–ツール
ベンダーが提供するさまざまなツールを使用して、テストデータを生成したり、テストデータを管理したり、負荷テストや回帰テストなどのデータベーステストを実行したりできます。
使用されるいくつかの一般的なツールを以下に示します。
Sr.No | Category & Description | Examples |
---|---|---|
1 |
Load Testing Tools これらのツールは、データベースに高い使用負荷をかけるために使用されます。これにより、システムのランドスケープがビジネスニーズに対応できるかどうかを判断できます。 a |
ウェブパフォーマンス Radビュー 水銀 |
2 |
Data Security Tools これらのツールは、情報セキュリティ規制に従ってコンプライアンスと標準を実装するために使用されます。 |
IBM Optim Data Privacy |
3 |
Test Data generator tools テスターはこれらのツールを使用して、データベースシステムのテストデータを生成します。 これらは、大量のデータがあり、DBテストを実行するためにサンプルが必要な場合にほとんど必要です。 通常、負荷およびストレステストに使用されます。 a |
データファクトリー DTMデータジェネレーター ターボデータ |
4 |
Test Data Management Tool これらのツールは、テストデータのバージョン管理を維持するために使用されます。 期待される結果を定義してから、テストの実際の結果と比較する必要があります。 |
IBM Optim Test Data Management |
5 |
Tools to perform Unit Testing これらのツールは、データベースで回帰テストを実行するために使用されます。 a |
SQLUnit TSQLUnit DBFit DBUnit |
データベースのテスト-バックアップ
組織の成長の最も重要な部分は、そのデータです。 システム障害が発生した場合、データを復元する必要があります。 バックアップはデータベースの正確なコピーであり、データが失われた場合にデータを復元するのに役立ちます。
A/C番号、顧客名、クレジットとデビット、期間などの顧客に関連するデータを持っている金融会社を考えます。 そのような組織は、データ障害の場合にそのような重要な情報を失うというプレッシャーにどのように対処しますか?
これが、ディスク、ディスクコントローラーなどに障害が発生した場合にデータをバックアップする理由です。 バックアップを使用してデータベースに復元できます。
データバックアップの種類
使用できるバックアップの2種類があります-
- 物理バックアップ-物理バックアップには、Veritas Net Back、IBM Tivoli Manager、OSユーティリティを使用したユーザーマネージャーバックアップなどのサードパーティバックアップツールを使用したバックアップが含まれます。
- 論理バックアップ-データベースの論理バックアップには、テーブル、インデックス、プロシージャなどの論理オブジェクトのバックアップが含まれます。
例-データバックアップを取るための一般的なツールの1つは、データベースバックアップを取るためのOracleユーティリティである* Oracle Recovery Manager(RMAN)*です。
*RMAN* は2つのコンポーネントで構成されています-
バックアップが必要な対象データベース。
RMAN クライアントは、コマンドを実行してデータのバックアップを取るために使用されます。
*BACKUP VALIDATE* は、データベースファイルの有効なバックアップを作成できるかどうかをテストするために使用されます。 それは保証します-
データベースの物理オブジェクトまたは論理オブジェクトのバックアップが適切に行われている場合。
貴重なデータの定期的なバックアップが設定されている場合。
バックアップツールが組織のバックアップ要件を満たしている場合。
データベースのテスト-回復
- データベースの回復テスト*は、データベースが回復されたことを確認するために使用されます。 リカバリテストを使用すると、アプリケーションが正常に実行されているかどうかを確認し、リカバリ方法が適切に設定されていない場合に失われる貴重なデータの取得を確認できます。
また、いくつかの重要なプロセスがスムーズに実行されているかどうかを確認して、データリカバリがテストフェーズをスムーズに通過するようにします。
あなたは、データベースの回復のために次のチェックを実行することができます-
- バックアップソフトウェアにエラーや間違いがある場合、これらの問題を早期に解決する必要があります。
- 緊急事態が発生した場合の対処方法を把握できるように、回復テストを実施する必要があります。
- 回復テストのニーズを確認して、効果的な回復戦略を計画できるようにする必要があります。
- また、ドキュメントを回復する方法を知っている必要があります。
プロジェクトの初期段階で回復テストを実行する必要があります。 これにより、システムからすべてのタイプのエラーを削除および破棄できます。 ここにいくつかの重要なポイントのリストがあります。これらはテスト時に考慮する必要があります-
- データベースシステムで変更または修正が発生する期間。
- 復旧計画を実施する期間。
- データベースシステムのデータの機密性。 データの重要性が高いほど、ソフトウェアのテストが定期的に必要になります。
データベースのバックアップおよび回復テストの一般的な手順
データベース回復テストでは、実際の環境でテストを実行して、ビジネス環境で災害やその他の予期しないイベントが発生した場合にシステムまたはデータを実際に回復できるかどうかを確認する必要があります。
以下は、データベース回復テストで実行される一般的なアクションです-
- データベースシステムのテスト
- SQLファイルのテスト
- 部分ファイルのテスト
- データバックアップのテスト
- バックアップツールのテスト
- ログバックアップのテスト
データベーステスト-セキュリティ
データベースのセキュリティテストは、セキュリティメカニズムの抜け穴を見つけるために、またデータベースシステムの脆弱性または弱点を見つけるために行われます。
データベースセキュリティテストの主な目的は、システムの脆弱性を発見し、そのデータとリソースが潜在的な侵入者から保護されているかどうかを判断することです。 セキュリティテストは、定期的に実行される場合、潜在的な脆弱性を効果的に識別する方法を定義します。
データベースセキュリティテストを実行する主な目的は次のとおりです-
- 認証
- 承認
- 守秘義務
- 可用性
- 誠実さ
- 回復力
データベースシステム上の脅威の種類
SQLインジェクション
これは、悪意のあるSQLステートメントがデータベースシステムに挿入され、データベースシステムから重要な情報を取得するために実行されるデータベースシステムでの最も一般的な攻撃です。 この攻撃は、ユーザーアプリケーションの実装で抜け穴を利用します。 これを防ぐには、ユーザー入力フィールドを慎重に処理する必要があります。
データベースの特権の昇格
この攻撃では、ユーザーは既にデータベースシステムで何らかのアクセス権を持っているため、データベースシステムで許可されていないアクティビティを実行できるように、このアクセスのレベルを上げることのみを試みます。
サービス拒否
このタイプの攻撃では、攻撃者は正当なユーザーがデータベースシステムまたはアプリケーションリソースを利用できないようにします。 また、アプリケーションを攻撃することもできます。これにより、アプリケーションが、場合によってはマシン全体が使用できなくなります。
データへの不正アクセス
別のタイプの攻撃は、アプリケーションまたはデータベースシステム内のデータへの不正アクセスを取得することです。 不正アクセスには次が含まれます-
- ユーザーベースのアプリケーションを介したデータへの不正アクセス
- 他人のアクセスを監視することによる、への不正アクセス
- 再利用可能なクライアント認証情報への不正アクセス
なりすまし
アイデンティティスプーフィングでは、ハッカーはユーザーまたはデバイスの資格情報を使用して、ネットワークホストに対する攻撃を開始したり、データを盗んだり、データベースシステムへのアクセス制御をバイパスしたりします。 この攻撃を防ぐには、ITインフラストラクチャとネットワークレベルの軽減が必要です。
データ操作
データ操作攻撃では、ハッカーがデータを変更して何らかの利点を得るか、データベース所有者のイメージを傷つけます。
データベースセキュリティテストのテクニック
侵入テスト
侵入テストは、セキュリティの抜け穴を見つけ、潜在的にシステム、その機能、およびデータへのアクセスを取得することを目的とした、コンピューターシステムに対する攻撃です。
リスク発見
リスク発見は、損失の種類と脆弱性の発生の可能性に関連するリスクを評価および決定するプロセスです。 これは、さまざまなインタビュー、ディスカッション、分析によって組織内で決定されます。
SQLインジェクションテスト
これには、アプリケーションフィールドでのユーザー入力の確認が含まれます。 たとえば、ユーザーアプリケーションのテキストボックスに「、」や「;」などの特殊文字を入力することは許可されません。 データベースエラーが発生すると、ユーザー入力が何らかのクエリに挿入され、アプリケーションによって実行されます。 このような場合、アプリケーションはSQLインジェクションに対して脆弱です。
攻撃者はサーバーデータベースから重要な情報にアクセスできるため、これらの攻撃はデータに対する大きな脅威です。 WebアプリケーションへのSQLインジェクションエントリポイントを確認するには、いくつかのユーザー入力を受け入れて、データベースで直接MySQLクエリが実行されるコードベースからコードを見つけます。
SQLインジェクションテストは、ブラケット、カンマ、および引用符に対して実行できます。
パスワードクラッキング
これは、データベースシステムのテストを実行する際の最も重要なチェックです。 重要な情報にアクセスするために、ハッカーはパスワード解読ツールを使用するか、一般的なユーザー名/パスワードを推測できます。 これらの一般的なパスワードはインターネットで簡単に入手でき、パスワードクラッキングツールも自由に使用できます。
したがって、テスト時にパスワードポリシーがシステムで維持されているかどうかを確認する必要があります。 銀行および金融アプリケーションの場合、すべての重要な情報データベースシステムに厳格なパスワードポリシーを設定する必要があります。
データベースシステムのセキュリティ監査
セキュリティ監査は、定期的な間隔で会社のセキュリティポリシーを評価し、必要な基準が守られているかどうかを判断するプロセスです。 セキュリティポリシーを定義するために、ビジネス要件ごとにさまざまなセキュリティ標準に従うことができ、それらの標準に対する設定されたポリシーの評価を行うことができます。
最も一般的なセキュリティ標準の例は、ISO 27001、BS15999などです。
データベースセキュリティテストツール
市場にはさまざまなシステムテストツールがあり、OSおよびアプリケーションチェックのテストに使用できます。 最も一般的なツールのいくつかを以下で説明します。
Zed Attack Proxy
Webアプリケーションの脆弱性を見つけるための侵入テストツールです。 幅広いセキュリティ経験を持つ人々が使用するように設計されているため、侵入テストを初めて使用する開発者や機能テスターに最適です。 通常、Windows、Linux、Mac OSで使用されます。
パロス
Cookieやフォームフィールドなど、サーバーとクライアント間のすべてのHTTPおよびHTTPSデータは、これらのスキャナーを使用して傍受および変更できます。 クロスプラットフォームのJava JRE/JDK 1.4.2以上で使用されます。
ソーシャルエンジニアツールキット
これはオープンソースのツールであり、システム要素ではなく人間の要素が攻撃されます。 電子メール、Javaアプレットなどを送信できます。 攻撃コードが含まれています。 Linux、Apple Mac OS X、Microsoft Windowsに適しています。
スキップフィッシュ
このツールは、サイトの脆弱性をスキャンするために使用されます。 ツールによって生成されたレポートは、専門的なWebアプリケーションのセキュリティ評価の基盤として機能することを目的としています。 Linux、FreeBSD、MacOS X、およびWindowsに適しています。
Vega
これは、WebアプリケーションのSQLインジェクション、クロスサイトスクリプティング(XSS)、およびその他の脆弱性のインスタンスを見つけるために使用される、オープンソースのマルチプラットフォームWebセキュリティツールです。 Java、Linux、およびWindowsに適しています。
ワピチ
Wapitiは、WebアプリケーションのWebページをスキャンし、データを挿入できるスクリプトとフォームをチェックする、オープンソースのWebベースのツールです。 Pythonで構築され、ファイル処理エラー、データベース、XSS、LDAPおよびCRLFインジェクション、コマンド実行検出を検出できます。
Webスカラベ
Javaで書かれており、HTTP/HTTPSプロトコルを介して通信するアプリケーションの分析に使用されます。 このツールは、主に自分でコードを作成できる開発者向けに設計されています。 このツールはOSに依存しません。
データベーステスト-課題
データベースのテストを正常に実行するには、テスターは技術的および機能的要件など、すべてのソースから要件を収集する必要があります。 いくつかの要件が高いレベルにある可能性があるため、それらの要件を小さな部品に分解する必要があります。 データベースのテストは複雑なタスクであり、テスターはこのテストの実行中に多くの課題に直面します。 最も一般的なデータベーステストの課題は次のとおりです-
テスト範囲が大きすぎます
テスターは、データベーステストでテスト項目を識別する必要があります。そうしないと、テストする対象とテストしない対象を明確に理解できない場合があります。 したがって、要件が明確な場合、データベース内の重要でないオブジェクトのテストに多くの時間を費やす可能性があります。
テストするオブジェクトのリストがある場合、次にテストを設計し、各テスト項目のテストを実行するために必要な労力を見積もります。 設計とデータサイズによっては、一部のデータベーステストの実行に時間がかかる場合があります。
データベースのサイズが大きすぎるため、テストする必要があるオブジェクトと除外するオブジェクトを見つけることは大きな課題になります。
縮小テストデータベース
通常、テスターにはテスト用の開発データベースのコピーが提供されます。 そのデータベースにはデータがほとんどなく、アプリケーションを実行するのに十分です。 そのため、開発、ステージング、および実稼働データベースシステムをテストする必要があります。
データベース構造の変更
これは、DBテストの一般的な課題の1つです。 時には、テストを設計または実行し、その時点でデータベース構造が変更されていることがあります。 これは、テスト中にデータベースに加えられた変更を認識する必要があるためです。
データベース構造が変更されたら、変更の影響を分析し、テストを変更する必要があります。 さらに、複数のユーザーがテストデータベースを使用する場合、テスト結果が不明なため、テストデータベースがテスト目的のみに使用されるようにする必要があります。
DBテストのもう1つの課題は、複数のテストを同時に実行することです。 少なくともパフォーマンステストのために、一度に1つのテストを実行する必要があります。 データベースで複数のタスクを実行し、パフォーマンスを過少に報告することは望ましくありません。
複雑なテスト計画
データベース構造は通常複雑であり、膨大なデータがあるため、不完全なテストまたは同じテストを繰り返し実行している可能性があります。 そのため、テスト計画を作成し、それに応じて続行し、定期的に進捗を確認する必要があります。
SQLの十分な理解
データベースをテストするには、SQLクエリと必要なデータベース管理ツールに関する十分な知識が必要です。 Database-testing-interview-questions