데이터베이스 테스트 – 면접 질문
데이터베이스 테스트에는 데이터 유효성, 데이터 무결성 테스트, 데이터베이스와 관련된 성능 검사 및 데이터베이스의 절차, 트리거 및 기능 테스트가 포함됩니다.
데이터베이스 테스트가 수행되는 이유는 여러 가지가 있습니다. 백엔드 시스템은 데이터를 저장하고 다목적으로 액세스하므로 데이터베이스에서 데이터 무결성, 유효성 검사 및 데이터 일관성 검사를 수행해야합니다.
데이터베이스 테스트를 수행해야하는 일반적인 이유는 다음과 같습니다.
데이터베이스 백엔드 호출의 복잡성을 완화하기 위해 개발자는 View 과 Stored 절차.
이들 Stored 절차 및 Views고객 세부 정보 (이름, 연락처 정보 등) 및 판매 데이터 삽입과 같은 중요한 작업을 포함합니다. 이러한 작업은 여러 수준에서 테스트해야합니다.
프런트 엔드에서 수행되는 블랙 박스 테스트는 중요하지만 문제를 격리하기 어렵습니다. 백엔드 시스템에서 테스트하면 데이터의 견고성이 향상됩니다. 이것이 데이터베이스 테스트가 백엔드 시스템에서 수행되는 이유입니다.
데이터베이스에서 데이터는 여러 응용 프로그램에서 가져 오며 유해하거나 잘못된 데이터가 데이터베이스에 저장 될 가능성이 있습니다. 따라서 정기적으로 데이터베이스 구성 요소를 확인해야합니다. 또한 데이터 무결성과 일관성을 정기적으로 확인해야합니다.
데이터베이스 테스트를 수행하는 동안 따라야 할 단계는 다음과 같습니다.
- 데이터베이스에있는 데이터를 확인해야합니다.
- 제약 조건이 유지되는지 확인합니다.
- 프로 시저의 성능과 트리거 실행을 확인해야합니다.
- 롤백 및 트랜잭션 커밋을 확인해야합니다.
데이터베이스의 기능과 구조에 따라 DB 테스트는 다음과 같은 범주로 나눌 수 있습니다.
Structural Database testing − 테이블 및 열 테스트, 스키마 테스트, 저장 프로 시저 및 뷰 테스트, 트리거 확인 등을 다룹니다.
Functional Testing− 사용자 관점에서 데이터베이스의 기능을 확인하는 작업입니다. 가장 일반적인 유형의 기능 테스트는 화이트 박스 및 블랙 박스 테스트입니다.
Nonfunctional Testing − 여기에는 부하 테스트, 데이터베이스의 위험 테스트, 스트레스 테스트, 최소 시스템 요구 사항 및 데이터베이스 성능 저하가 포함됩니다.
저장 프로 시저 테스트를 수행하는 데 사용되는 가장 일반적인 도구는 LINQ, SP 테스트 도구 등입니다.
조인은 논리적 방식으로 둘 이상의 테이블을 연결하는 데 사용됩니다. 일반적인 조인 유형에는 내부 조인, 비동 등 조인, 외부 조인, 자체 조인 및 교차 조인이 포함됩니다.
단일 테이블을 자신에 조인 할 수 있습니다. 이 경우 동일한 테이블을 두 번 사용하고 있습니다.
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 수동 쿼리 옵션을 선택해야합니다. 여기에서 선택 쿼리를 작성할 수 있습니다.
먼저 저장 프로 시저의 요구 사항을 확인합니다. 다음 단계는 저장 프로 시저에 언급 된 테이블과 비교하여 인덱스, 조인, 삭제, 업데이트가 올바른지 확인하는 것입니다.
다음으로, 다음 작업을 수행하십시오-
호출 프로 시저 이름, 호출 매개 변수 및 다른 입력 매개 변수 세트에 대한 예상 응답의 유효성을 검증하십시오.
TOAD 또는 MySQL 또는 쿼리 분석기로 프로 시저를 실행하십시오.
다른 매개 변수를 전송하여 사용 가능한 프로 시저를 다시 실행하고 예상 값과 비교하여 결과를 확인하십시오.
프로세스를 마치고 WinRunner로 테스트를 자동화하십시오.
테스터는 EXEC 명령을 사용하여 데이터베이스의 저장 프로 시저를 호출해야합니다. 매개 변수가 필요한 경우 전달해야합니다. 저장 프로 시저의 실행 여부를 확인하려면 다른 매개 변수 값을 전달해야합니다. 이 명령을 호출 할 때 데이터베이스의 특성과 동작을 확인하고 확인해야합니다.
Example − 일부 테이블을 채우기 위해 저장 프로 시저가 작성된 경우 테이블 값을 확인해야합니다.
세 가지 유형의 SQL 문이 있습니다.
- 데이터 조작 언어 (DML)
- 데이터 정의 언어 (DDL)
- 데이터 제어 언어 (DCL)
DDL 문은 데이터베이스 구조 또는 스키마를 정의하는 데 사용됩니다. 몇 가지 예-
CREATE − 데이터베이스에 개체 생성
ALTER − 데이터베이스 구조 변경
DROP − 데이터베이스에서 개체 삭제
연산자는 SQL 문에서 조건을 지정하고 명령문에서 여러 조건에 대한 접속사 역할을하는 데 사용됩니다.
- 산술 연산자
- 비교 / 관계 연산자
- 논리 연산자
- 집합 연산자
- 조건을 부정하는 데 사용되는 연산자
Union은 둘 이상의 Select 문의 결과를 결합하는 데 사용됩니다. 그러나 중복 행을 제거합니다. Union은 집합 연산자입니다.
Union둘 이상의 Select 문의 결과를 결합하는 데 사용됩니다. 그러나 중복 행을 제거합니다.
Union All 작업은 Union과 유사하지만 중복 행도 표시합니다.
트리거는 데이터베이스의 무결성을 유지하는 데 사용됩니다. 트리거가 실행되었는지 확인하려면 감사 로그를 확인할 수 있습니다.
요청시 트리거를 호출 할 수 없습니다. 연관된 조치 (삽입, 삭제 및 업데이트)가 정의 된 테이블에서 발생할 때 호출됩니다. 트리거는 비즈니스 규칙, 감사 및 참조 무결성 검사를 적용하는 데 사용됩니다.
먼저 기능적 요구 사항을 확인하십시오. 그런 다음 테이블 구조, 조인, 커서 및 트리거, 사용 된 저장 프로 시저 및 기타 매개 변수를 이해하십시오. 다음으로 이러한 개체에 대한 입력으로 다른 값을 사용하여 테스트 케이스를 작성할 수 있습니다.
DB 테스트에는 사용자에게 보이지 않는 백엔드 구성 요소 테스트가 포함됩니다. 여기에는 MySQL 및 Oracle과 같은 데이터베이스 구성 요소와 DBMS 시스템이 포함됩니다.
프런트 엔드 테스트에는 양식, 그래프, 메뉴, 보고서 등과 같은 응용 프로그램 및 구성 요소의 기능 확인이 포함됩니다. 이러한 구성 요소는 VB.net, C #, Delphi 등과 같은 프런트 엔드 개발 도구를 사용하여 생성됩니다.
데이터베이스 테스트를 수행하는 프로세스는 다른 응용 프로그램의 테스트와 유사합니다. DB 테스트는 다음과 같은 주요 프로세스로 설명 할 수 있습니다.
- 환경 설정
- 테스트 실행
- 테스트 결과 확인
- 예상 결과에 따라 검증
- 결과를 각 이해 관계자에게보고하십시오.
테스트 케이스를 개발하기 위해 다양한 SQL 문이 사용됩니다. DB 테스트를 수행하는 데 사용되는 가장 일반적인 SQL 문은 select 문입니다. 이 외에도 다양한 DDL, DML, DCL 문도 사용할 수 있습니다.
Example − 생성, 삽입, 선택, 업데이트 등
뷰는 그 자체로 실제로 존재하지 않지만 대신 하나 이상의 기본 테이블에서 파생되는 테이블입니다. 즉, 뷰 정의가 데이터 사전에 저장되는 대신 뷰를 직접 나타내는 저장된 파일이 없습니다.
기본 테이블의 성장 및 재구성은 뷰에 반영되지 않습니다. 따라서 뷰는 데이터베이스의 변경 사항으로부터 사용자를 격리시킬 수 있습니다. 따라서 논리적 데이터 독립성을 설명합니다.
사용자보기와 개념적 스키마에 대한 매핑을 지정합니다.
정보 손실없이 테이블을 여러 테이블로 분해하는 프로세스입니다. 정규화는 다음 목표를 달성하기 위해 수행됩니다.
- 중복성을 최소화합니다.
- 삽입, 삭제 및 업데이트 이상을 최소화합니다.
인덱싱은 특정 데이터를 얼마나 빨리 찾을 수 있는지 결정하는 기술입니다. 쿼리 성능 최적화에 사용됩니다. 인덱싱은 다음과 같은 유형이 될 수 있습니다.
- 이진 검색 스타일 인덱싱
- B- 트리 인덱싱
- 반전 된 목록 인덱싱
- 메모리 상주 테이블
- 테이블 인덱싱
SQL은 정규화 된 관계형 데이터베이스 구조에 대한 데이터 액세스 작업을 위해 특별히 설계된 구조적 쿼리 언어입니다.
SQL과 다른 기존 프로그래밍 언어의 주요 차이점은 SQL 문이 데이터 작업을 수행하는 방법이 아니라 수행해야하는 데이터 작업을 지정한다는 것입니다.
저장 프로시 저는 사용자 정의 작업을 수행하는 데 사용됩니다. 스토어드 프로 시저에는 복합 SQL 문 세트가있을 수 있습니다. 저장 프로시 저는 SQL 명령을 실행하고 그 결과를 클라이언트에 반환합니다.
PL / SQL은 모든 데이터베이스 정보 액세스 명령문에 커서를 사용합니다. 이 언어는 암시 적 및 명시 적 두 가지 유형의 커서 사용을 지원합니다.
Cold Backup− 콜드 백은 인스턴스가 종료 될 때 데이터베이스 파일, 리두 로그 및 제어 파일을 백업하는 것으로 알려져 있습니다. 일반적으로 디스크에서 테이프로 직접 복사하는 파일입니다. 일관된 복사본을 보장하려면 인스턴스를 종료해야합니다.
콜드 백업을 수행하는 경우 데이터 파일 손실시 사용할 수있는 유일한 옵션은 최신 백업에서 모든 파일을 복원하는 것입니다. 마지막 백업 이후에 수행 된 모든 변경 사항이 손실됩니다.
Hot Backup− 일부 데이터베이스는 파일의 백업 복사본을 만드는 동안 종료 할 수 없으므로 콜드 백업을 사용할 수 없습니다. 이러한 유형의 데이터베이스에는 핫 백업을 사용합니다.
SQL 하위 쿼리는 두 개 이상의 테이블을 동시에 쿼리하는 수단입니다. 하위 쿼리 자체는 다른 SQL SELECT 문의 WHERE 절에 포함 된 SQL SELECT 문이며 괄호로 묶여 구분됩니다. 일부 하위 쿼리에는 동등한 SQL 조인 구조가 있지만 상관 된 하위 쿼리는 조인으로 복제 할 수 없습니다.
이 경우 다음과 같은 측면을 테스트해야합니다.
- 다중 값 종속성
- 기능적 종속성
- 후보 키
- 기본 키
- 외래 키
데이터베이스로 이동하여 관련 SQL 쿼리를 실행할 수 있습니다. WinRunner에서는 데이터베이스 체크 포인트 기능을 사용할 수 있습니다. 응용 프로그램이보기 기능을 제공하는 경우 프런트 엔드에서 동일하게 확인할 수 있습니다.
데이터 기반 테스트는 애플리케이션이 여러 테스트 데이터로 테스트되는 자동화 테스트 프로세스로 정의됩니다. 테스터가 시스템 앞에 앉아 프런트 엔드 인터페이스에서 수동으로 다른 새 입력 값을 입력하는 재 테스트보다 간단하고 쉽습니다.
테스트 케이스를 실행하고 이미 감지 및 수정 된 결함을 찾으면. 원래 결함이 성공적으로 제거되었는지 확인하기 위해 다른 입력 값으로 동일한 테스트를 다시 실행하는 것을 재 테스트라고합니다.
재 테스트는 약간의 차이가있는 데이터 기반 테스트라고도합니다.
Retesting − 완전히 새로운 데이터 세트로 애플리케이션 테스트를 수행하는 반면 수동 테스트 프로세스입니다.
Data-driven Testing− 여러 테스트 데이터로 애플리케이션을 테스트하는 자동화 테스트 프로세스입니다. 테스터가 시스템 앞에 앉아 프런트 엔드 인터페이스에서 수동으로 다른 새 입력 값을 입력하는 재 테스트보다 간단하고 쉽습니다.
데이터 기반 테스트에는 네 가지 유형이 있습니다.
- 키보드를 통한 동적 테스트 데이터 제출
- .txt, .doc 플랫 파일을 통한 데이터 기반 테스트
- 프런트 엔드 개체를 통한 데이터 기반 테스트
- 엑셀 시트를 통한 데이터 기반 테스트
성능 테스트는 과중한 작업 부하에서 속도, 감도 및 안정성 측면에서 시스템 성능을 결정하는 소프트웨어 테스트 기술입니다.
데이터베이스 복구 테스트를 수행하는 동안 다음 핵심 사항을 고려해야합니다.
데이터베이스 시스템에서 변경 또는 수정이 발생하는 시간 범위입니다.
복구 계획을 수행 할 기간입니다.
데이터베이스 시스템에서 데이터의 민감도. 데이터가 더 중요할수록 소프트웨어를 더 정기적으로 테스트해야합니다.
다음 도구는 테스트 데이터를 생성하는 데 사용됩니다-
- 데이터 팩토리
- DTM 데이터 생성기
- 터보 데이터
사용할 수있는 백업에는 두 가지 유형이 있습니다.
Physical Backups- 물리적 백업은 3 사용하여 다시 복용 포함 RD 베리타스 넷 다시는 IBM Tivoli 관리자 또는 OS 유틸리티를 사용하여 사용자 관리자 백업과 같은 파티 백업 도구를.
Logical Backups − 데이터베이스의 논리적 백업에는 테이블, 인덱스, 절차 등과 같은 논리적 개체의 백업이 포함됩니다.
데이터 백업을 수행하는 일반적인 도구는 데이터베이스 백업을 수행하는 Oracle 유틸리티 인 Oracle Recovery Manager (RMAN)입니다.
다음 작업은 데이터베이스 복구 테스트에서 수행됩니다-
- 데이터베이스 시스템 테스트
- SQL 파일 테스트
- 부분 파일 테스트
- 데이터 백업 테스트
- 백업 도구 테스트
- 로그 백업 테스트
데이터베이스 보안 테스트는 보안 메커니즘의 루프 구멍을 찾고 데이터베이스 시스템의 취약성 또는 약점을 찾기 위해 수행됩니다.
다음 측면을 확인하기 위해 데이터베이스 보안 테스트가 수행됩니다.
- Authentication
- Authorization
- Confidentiality
- Availability
- Integrity
- Resilience
SQL 인젝션 위협은 데이터베이스 시스템에서 악성 SQL 문이 삽입되어 데이터베이스 시스템에서 중요한 정보를 얻기 위해 실행되는 데이터베이스 시스템에서 가장 일반적인 유형의 공격입니다. 이 공격은 사용자 애플리케이션 구현의 허점을 이용합니다. 이를 방지하려면 사용자 입력 필드를 신중하게 처리해야합니다.
다음 도구를 사용하여 데이터베이스 보안 테스트를 수행 할 수 있습니다 : Zed Attack Proxy, Paros, Social Engineer Toolkit, Skipfish, Vega, Wapiti 및 Web Scarab.
데이터베이스 테스트를 수행하는 동안 직면하는 일반적인 문제는 다음과 같습니다.
- 테스트 범위가 너무 큽니다.
- 축소 된 테스트 데이터베이스
- 데이터베이스 구조 변경
- 복잡한 테스트 계획
- SQL에 대한 좋은 이해