Database-testing-techniques
提供:Dev Guides
データベースのテスト-テクニック
この章では、データベーステストの実行に使用される最も一般的な手法について説明します。
データベーススキーマテスト
前述のとおり、スキーマ内の各オブジェクトのテストが含まれます。
データベースとデバイスの検証
- データベースの名前を確認する
- データデバイス、ログデバイス、ダンプデバイスの検証
- 各データベースに十分なスペースが割り当てられているかどうかを確認する
- データベースオプション設定の確認
テーブル、列、列タイプのルールチェック
以下の項目を確認して、実際の設定と適用された設定の違いを見つけてください。
- データベース内のすべてのテーブルの名前
- 各テーブルの列名
- 各テーブルの列タイプ
- NULL 値がチェックされているかどうか
- デフォルトが正しいテーブル列にバインドされているかどうか
- テーブル名とアクセス権限を修正するルール定義
キーとインデックス
各テーブルのキーとインデックスを確認します-
- 各テーブルの主キー
- 各テーブルの外部キー
- 外部キー列と他のテーブルの列の間のデータ型、クラスター化または非クラスター化の一意または非一意
ストアドプロシージャテスト
ストアドプロシージャが定義されているかどうかを確認し、出力結果を比較します。 ストアドプロシージャテストでは、次の点がチェックされます-
- ストアドプロシージャ名
- パラメータ名、パラメータタイプなど
- 出力-出力に多くのレコードが含まれるかどうか。 ゼロ行が影響を受けるか、少数のレコードのみが抽出されます。
- ストアドプロシージャの機能と、ストアドプロシージャが実行すべきでないことは何ですか?
- サンプル入力クエリを渡して、ストアドプロシージャが正しいデータを抽出したかどうかを確認します。
- ストアドプロシージャパラメータ-境界データと有効なデータを使用してストアドプロシージャを呼び出します。 各パラメーターを一度無効にして、プロシージャーを実行します。
- 戻り値-ストアドプロシージャによって返される値を確認します。 失敗した場合、ゼロ以外を返す必要があります。
- エラーメッセージチェック-ストアドプロシージャが失敗するように変更を加え、すべてのエラーメッセージを少なくとも1回生成します。 定義済みのエラーメッセージがない場合は、例外シナリオを確認してください。
トリガーテスト
トリガーテストでは、テスターは次のタスクを実行する必要があります-
- トリガー名が正しいことを確認してください。
- 特定のテーブル列に対して生成されたトリガーを検証します。
- トリガーの更新検証。
- 有効なデータでレコードを更新します。
- 無効なデータでレコードを更新し、すべてのトリガーエラーをカバーします。
- 他のテーブルの行によってまだ参照されているレコードを更新します。
- 障害発生時にトランザクションを確実にロールバックします。
- トリガーがトランザクションをロールバックすることになっていないケースを見つけます。
サーバー設定スクリプト
2種類のテストを実行する必要があります-
- データベースをゼロからセットアップし、そして
- 既存のデータベースをセットアップします。
SQL Serverの統合テスト
統合テストは、コンポーネントテストを完了した後に実行する必要があります。
- ストアドプロシージャを集中的に呼び出して、異なるテーブルのレコードを選択、挿入、更新、および削除し、競合や非互換性を見つけてください。
- スキーマとトリガー間の競合。
- ストアドプロシージャとスキーマ間の競合。
- ストアドプロシージャとトリガー間の競合。
機能試験方法
機能テストは、機能ごとにデータベースをモジュールに分割することで実行できます。 機能は次の2つのタイプのものです-
- *タイプ1 *-タイプ1テストで、プロジェクトの機能を調べます。 主要な機能ごとに、その機能を実装するスキーマ、トリガー、ストアドプロシージャを見つけ、それらを機能グループに入れます。 次に、各グループを一緒にテストします。
- *タイプ2 *-タイプ2テストでは、バックエンドの機能グループの境界は明らかではありません。 データフローを確認し、データを確認できる場所を確認できます。 フロントエンドから開始します。
次のプロセスが行われます-
- サービスにリクエストがあるか、データを保存すると、一部のストアドプロシージャが呼び出されます。
- 手順により、いくつかのテーブルが更新されます。
- これらのストアドプロシージャはテストを開始する場所になり、これらのテーブルはテスト結果を確認する場所になります。
ストレステスト
ストレステストでは、主要なデータベース関数と対応するストアドプロシージャのリストを取得します。 ストレステストについては、以下の手順に従ってください-
- これらの機能を試すテストスクリプトを作成し、すべての機能をフルサイクルで少なくとも1回チェックする必要があります。
- 特定の期間、テストスクリプトを繰り返し実行します。
- ログファイルを確認して、デッドロック、メモリ不足、データ破損などを確認します。
ベンチマークテスト
データベースにデータの問題やバグがない場合は、システムのパフォーマンスを確認できます。 システムパフォーマンスの低下は、以下に示すパラメータを確認することにより、ベンチマークテストで見つけることができます-
- システムレベルのパフォーマンス
- 最も使用頻度の高い機能/機能を特定する
- タイミング-機能を実行するための最大時間、最小時間、および平均時間
- アクセス量
フロントエンドを介したデータベースのテスト
バックエンドのバグは、フロントエンドのテストを行うことによって発見されることもあります。 以下の簡単な手順に従って、フロントエンドテストでバグを検出できます。
- フロントエンドからクエリを作成し、検索を発行します。
- 既存のレコードを取得し、一部のフィールドの値を変更して、レコードを保存します。 (UPDATEステートメントを含むか、ストアドプロシージャと更新トリガーを更新します。)
- フロントエンドウィンドウに新しいメニュー項目を挿入します。 情報を入力し、レコードを保存します。 (INSERTステートメントまたは挿入ストアドプロシージャと削除トリガーが含まれます。)
- 既存のレコードを選択し、[削除]または[削除]ボタンをクリックして、削除を確認します。 (これには、DELETEステートメントまたは削除ストアドプロシージャと削除トリガーが含まれます。)
- 無効なデータでこれらのテストケースを繰り返し、データベースがどのように応答するかを確認します。