データベーステスト–面接の質問

データベーステストには、データの有効性、データの整合性テスト、データベースに関連するパフォーマンスチェック、およびデータベース内のプロシージャ、トリガー、機能のテストの実行が含まれます。

データベーステストが実行される理由は複数あります。バックエンドシステムはデータの保存を担当し、複数の目的でアクセスされるため、データベースでデータの整合性、検証、およびデータの整合性チェックを実行する必要があります。

データベーステストを実行する必要がある一般的な理由のいくつかは次のとおりです。

  • データベースバックエンドへの呼び出しの複雑さを緩和するために、開発者は View そして Stored 手順。

  • これら Stored 手順と Views顧客の詳細(名前、連絡先情報など)や販売データの挿入などの重要なタスクが含まれています。これらのタスクは、いくつかのレベルでテストする必要があります。

  • フロントエンドで実行されるブラックボックステストは重要ですが、問題を特定することは困難です。バックエンドシステムでテストすると、データの堅牢性が向上します。これが、データベーステストがバックエンドシステムで実行される理由です。

  • データベースでは、データは複数のアプリケーションから取得され、有害または不正確なデータがデータベースに保存される可能性があります。したがって、データベースコンポーネントを定期的にチェックする必要があります。さらに、データの整合性と整合性を定期的にチェックする必要があります。

データベーステストを実行する際に従う必要のある手順は次のとおりです。

  • データベースにあるデータを確認する必要があります。
  • 制約が維持されているかどうかを確認します。
  • プロシージャのパフォーマンスとトリガーの実行を確認する必要があります。
  • ロールバックしてトランザクションのコミットをチェックする必要があります。

データベースの機能と構造に基づいて、DBテストは次のカテゴリに分類できます-

  • Structural Database testing −テーブルと列のテスト、スキーマのテスト、ストアドプロシージャとビューのテスト、トリガーのチェックなどを扱います。

  • Functional Testing−ユーザーの観点からデータベースの機能をチェックする必要があります。機能テストの最も一般的なタイプは、ホワイトボックステストとブラックボックステストです。

  • Nonfunctional Testing −負荷テスト、データベースでのリスクテスト、ストレステスト、最小システム要件が含まれ、データベースのパフォーマンスを向上させます。

ストアドプロシージャのテストを実行するために使用される最も一般的なツールは、LINQ、SPテストツールなどです。

結合は、論理的な方法で2つ以上のテーブルを接続するために使用されます。結合の一般的なタイプには、内部結合、非等結合、外部結合、自己結合、および相互結合が含まれます。

単一のテーブルをそれ自体に結合できます。この場合、同じテーブルを2回使用しています。

Step 1 −データベースに接続します

db_connect(query1 DRIVER {drivername};SERVER server_name;UID uidname;
   PWD password;DBQ database_name );

Step 2 −データベースのクエリを実行します−

db_excecute_query (write the required query that is to execute); Specify the appropriate condition

Step 3 −を使用してデータベース接続を切断します

db_disconnect(query);

出力データベースチェックポイントを使用して、SQL手動クエリオプションを選択する必要があります。ここでは、selectクエリを記述できます。

まず、ストアドプロシージャの要件を確認します。次のステップは、ストアドプロシージャに記載されているテーブルと比較して、インデックス、結合、削除、更新が正しいかどうかを確認することです。

次に、次のタスクを実行します-

  • 入力パラメーターのさまざまなセットについて、呼び出し元のプロシージャー名、呼び出し側パラメーター、および予期される応答を検証します。

  • TOADまたはMySQLまたはQueryAnalyzerを使用して手順を実行します。

  • さまざまなパラメーターを送信して使用可能な手順を再実行し、期待値に対して結果を確認します。

  • プロセスを終了して、WinRunnerでテストを自動化します。

テスターは、EXECコマンドを使用してデータベース内のストアドプロシージャを呼び出す必要があります。パラメータが必要な場合は、それらを渡す必要があります。ストアドプロシージャが実行されるかどうかを確認するには、さまざまな値のパラメータを渡す必要があります。このコマンドを呼び出すときは、データベースの性質と動作を確認および検証する必要があります。

Example −ストアドプロシージャがテーブルにデータを入力するように記述されている場合は、テーブルの値を確認する必要があります。

SQLステートメントには3つのタイプがあります-

  • データ操作言語(DML)
  • データ定義言語(DDL)
  • データ制御言語(DCL)

DDLステートメントは、データベース構造またはスキーマを定義するために使用されます。いくつかの例-

  • CREATE −データベースにオブジェクトを作成する

  • ALTER −データベースの構造を変更します

  • DROP −データベースからオブジェクトを削除します

演算子は、SQLステートメントで条件を指定し、ステートメントで複数の条件の接続詞として機能するために使用されます。

  • 算術演算子
  • 比較/関係演算子
  • 論理演算子
  • 演算子の設定
  • 条件を否定するために使用される演算子

共用体は、2つ以上のSelectステートメントの結果を組み合わせるために使用されます。ただし、重複する行は削除されます。ユニオンは集合演算子です。

Union2つ以上のSelectステートメントの結果を組み合わせるために使用されます。ただし、重複する行は削除されます

Union All 操作はUnionに似ていますが、重複する行も表示されます。

トリガーは、データベースの整合性を維持するために使用されます。トリガーが起動されているかどうかを確認するには、監査ログを確認します。

トリガーはオンデマンドで呼び出すことはできません。それらは、それらが定義されているテーブルで関連するアクション(挿入、削除、および更新)が発生したときに呼び出されます。トリガーは、ビジネスルールの適用、監査、および参照整合性チェックに使用されます。

まず、機能要件を取得します。次に、テーブル構造、結合、カーソルとトリガー、使用されるストアドプロシージャ、およびその他のパラメーターを理解します。次に、これらのオブジェクトへの入力としてさまざまな値を使用してテストケースを作成できます。

DBテストには、ユーザーには表示されないバックエンドコンポーネントのテストが含まれます。これには、データベースコンポーネントとMySQLやOracleなどのDBMSシステムが含まれます。

フロントエンドテストでは、アプリケーションと、フォーム、グラフ、メニュー、レポートなどのコンポーネントの機能をチェックします。これらのコンポーネントは、VB.net、C#、Delphiなどのフロントエンド開発ツールを使用して作成されます。

データベーステストを実行するプロセスは、他のアプリケーションのテストと同様です。DBテストは、次の主要なプロセスで説明できます。

  • 環境の設定
  • テストを実行する
  • テスト結果を確認する
  • 期待される結果に従って検証する
  • 調査結果をそれぞれの利害関係者に報告する

テストケースの開発には、さまざまなSQLステートメントが使用されます。DBテストの実行に使用される最も一般的なSQLステートメントはselectステートメントです。これとは別に、さまざまなDDL、DML、DCLステートメントも使用できます。

Example −作成、挿入、選択、更新など。

A view is a table that does not really exist in its own right but is instead derived from one or more base table. In other words, there is no stored file that direct represents the view instead a definition of view is stored in data dictionary.

Growth and restructuring of base tables is not reflected in views. Thus the view can insulate users from the changes in the database. Hence accounts for logical data independence.

It specifies user views and their mappings to the conceptual schema.

It is a process of decomposing a table into multiple tables without losing any information. Normalization is done to achieve the following goals −

  • To minimize redundancy.
  • To minimize insertion, deletion and update anomalies.

Indexing is a technique for determining how quickly specific data can be found. It is used for query performance optimization. Indexing can be of the following types −

  • Binary search style indexing
  • B-Tree indexing
  • Inverted list indexing
  • Memory resident table
  • Table indexing

SQL is a Structured Query language that is designed specifically for data access operations on normalized relational database structures.

The primary difference between SQL and other conventional programming languages is that SQL statements specify what data operations should be performed rather than how to perform them.

Stored procedures are used to perform a user defined operation. A stored procedure can have a set of compound SQL statements. A stored procedure executes the SQL commands and returns the result to the client.

PL/SQL uses cursors for all database information accesses statements. The language supports the use two types of cursors − implicit and explicit.

Cold Backup − Cold back is known as taking back up of database files, redo logs, and control file when the instance is shut down. This is a file copy, usually from the disk directly to tape. You must shut down the instance to guarantee a consistent copy.

If a cold backup is performed, the only option available in the event of data file loss is restoring all the files from the latest backup. All the changes that are performed after the last backup is lost.

Hot Backup − Some databases can’t shut down while making a backup copy of the files, so cold backup is not an available option. For these types of database we use hot backup.

SQL subquery is a means of querying two or more tables at the same time. The subquery itself is an SQL SELECT statement contained within the WHERE clause of another SQL SELECT statement, and separated by being enclosed in parenthesis. Some subqueries have equivalent SQL join structures, but correlated subqueries cannot be duplicated by a join

In such a case, you need to test the following aspects −

  • Multivalued dependencies
  • Functional dependencies
  • Candidate keys
  • Primary keys
  • Foreign keys

You can go to the database and run a relevant SQL query. In WinRunner, you can use database checkpoint function. If the application provides view function, then you can verify the same from the front-end.

Data-driven testing is defined as an automation testing process where application will be tested with multiple test data. It is simple and easy than retesting where tester just sit in front of system and enter different new input values manually from front-end interface.

Once you execute the test-cases and find the defects that has been already detected and fixed. Re-execution of the same test with different input values to confirm the original defect has been successfully removed is called Re-testing.

Retesting is also called Data Driven Testing with a small difference −

  • Retesting − It is a manual testing process whereas application testing done with entire new set of data.

  • Data-driven Testing − It is an Automation testing process where application will be tested with multiple test data. It is simple and easy than retesting where tester just sit in front of system and enter different new input values manually from front-end interface.

There are four types of data driven testing −

  • Dynamic test data submission through keyboard
  • Data Driven Tests via .txt, .doc flat files
  • Data Driven Tests via front-end objects
  • Data Driven Tests via excel sheet

Performance testing is a software testing technique to determine how a system performs in terms of speed, sensitivity and stability under a heavy workload.

The following key points are to be considered while performing database recovery testing −

  • Time span when changes or modifications occurs in database system.

  • The period by which you want your recovery plan conducted.

  • The sensitivity of data in database system. More critical the data is, the more regularly you will need to test the software.

The following tools are used to generate test data −

  • Data Factory
  • DTM Data Generator
  • Turbo Data

There are two types of backup that can be used −

  • Physical Backups − Physical backup includes taking back up using 3rd party backup tools like Veritas net back, IBM Tivoli Manager or user manager backups using OS utilities.

  • Logical Backups − Logical backup of database includes taking back up of logical objects like tables, indexes, procedures, etc.

A common tool to take data backup is Oracle Recovery Manager (RMAN) that is an Oracle utility to take database backup.

The following actions are performed in database recovery testing −

  • Testing of database system
  • Testing of the SQL files
  • Testing of partial files
  • Testing of data backup
  • Testing of Backup tool
  • Testing log backups

Database security testing is performed to find the loop holes in security mechanisms and also about finding the vulnerabilities or weaknesses of database system.

Database security testing is performed to check the following aspects −

  • Authentication
  • Authorization
  • Confidentiality
  • Availability
  • Integrity
  • Resilience

SQL Injection threat is the most common type of attack in a database system where malicious SQL statements are inserted in database system and executed to get critical information from database system. This attack takes advantage of loopholes in implementation of user applications. To prevent this user inputs fields should be carefully handled.

The following tools can be used to perform database security testing: Zed Attack Proxy, Paros, Social Engineer Toolkit, Skipfish, Vega, Wapiti, and Web Scarab.

The common challenges that one faces while performing database testing are as follows −

  • Testing scope is too large
  • Scaled-down test database
  • Changes in database structure
  • Complex Test Plans
  • Good understanding of SQL