PL/SQL 기본 블록 커버리지 개요
PL/SQL 기본 블록 커버리지는 PL/SQL 코드의 품질, 예측 가능성 및 일관성을 보장하는 데 도움을 주는 테스팅 도구입니다. 이 기능은 자동화된 테스팅을 통해 실행되는 코드의 범위를 측정하고, 코드베이스의 어느 부분이 테스트되었는지, 어느 부분이 테스트되지 않았는지를 식별합니다.
Oracle은 애플리케이션 개발 및 테스트 환경에서 PL/SQL 개발자가 PL/SQL 코드 품질을 유지하고 개선하는 데 도움이 되는 다양한 도구를 제공합니다. PL/Scope 및 PL/SQL 계층적 프로파일러와 함께 PL/SQL 기본 블록 커버리지는 개발자가 코드 품질을 평가하고 테스트 노력을 개선하는 데 사용할 수 있는 중요한 지표를 제공합니다.
PL/SQL 기본 블록 커버리지 기능
- 테스트 환경에서 PL/SQL 컴파일 단위가 실행될 때 소스 라인 및 PL/SQL 블록 수준에서 테스트 실행의 범위에 대한 정보를 제공합니다.
- PL/SQL 코드가 실행될 때 라인 및 블록을 기반으로 데이터 수집을 위한 API를 제공합니다.
- 테스트 실행의 라인 범위, PL/SQL 블록 범위, 통계 및 PL/SQL 단위 이름을 포함하는 보고서를 제공합니다.
PL/SQL 기본 블록 커버리지 사용 방법
PL/SQL 기본 블록 커버리지를 사용하려면 다음과 같은 단계를 따릅니다.
- 커버리지 데이터 수집을 위한 테이블 생성: 먼저 커버리지 데이터를 저장할 테이블을 생성해야 합니다. 다음은 테이블을 생성하는 스크립트 예시입니다.
- 커버리지 데이터 수집 시작:
DBMS_CODE_COVERAGE.START_COVERAGE
프로시저를 사용하여 커버리지 데이터 수집을 시작합니다. - 테스트 실행: 테스트를 실행하여 PL/SQL 코드를 실행합니다.
- 커버리지 데이터 수집 중단 및 결과 저장: 테스트가 완료되면
DBMS_CODE_COVERAGE.STOP_COVERAGE
프로시저를 사용하여 커버리지 데이터 수집을 중단하고 결과를 테이블에 저장합니다. - 커버리지 결과 분석: 저장된 데이터를 사용하여 코드 커버리지 보고서를 생성합니다.
예시 코드
다음은 PL/SQL 기본 블록 커버리지를 사용하는 예시 코드입니다.
-- 1. 커버리지 데이터 수집을 위한 테이블 생성
CREATE TABLE plsql_coverage_data (
run_id NUMBER,
unit_name VARCHAR2(128),
unit_type VARCHAR2(30),
line NUMBER,
block NUMBER,
cnt NUMBER
);
-- 2. 커버리지 데이터 수집 시작
DECLARE
v_run_id NUMBER;
BEGIN
v_run_id := 1; -- 실행 ID 지정
DBMS_CODE_COVERAGE.START_COVERAGE(v_run_id);
END;
/
-- 3. 테스트 실행 (예시로 간단한 프로시저 실행)
DECLARE
v_result NUMBER;
BEGIN
v_result := my_procedure(10, 20);
DBMS_OUTPUT.PUT_LINE('Result: ' || v_result);
END;
/
-- 4. 커버리지 데이터 수집 중단 및 결과 저장
DECLARE
v_run_id NUMBER;
BEGIN
v_run_id := 1; -- 실행 ID 지정
DBMS_CODE_COVERAGE.STOP_COVERAGE(v_run_id, 'PLSQL_COVERAGE_DATA');
END;
/
-- 5. 커버리지 결과 분석 (예시로 데이터 조회)
SELECT unit_name, unit_type, line, block, cnt
FROM plsql_coverage_data
WHERE run_id = 1;
실행 결과 예시
위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다 (실제 결과는 실행한 PL/SQL 코드에 따라 달라집니다).
UNIT_NAME UNIT_TYPE LINE BLOCK CNT ---------- ---------- ---- ---------- --- MY_PROCEDURE PROCEDURE 5 1 1 MY_PROCEDURE PROCEDURE 6 1 1 MY_PROCEDURE PROCEDURE 7 1 1 MY_PROCEDURE PROCEDURE 8 1 1 MY_PROCEDURE PROCEDURE 9 1 1
PL/SQL 기본 블록 커버리지와 관련된 데이터 사전 뷰
다음은 PL/SQL 기본 블록 커버리지와 관련된 데이터 사전 뷰입니다.
DBA_CODE_COVERAGE_RUNS
: 커버리지 실행에 대한 정보를 제공합니다.DBA_CODE_COVERAGE_LINES
: 각 실행에 대한 라인 커버리지 정보를 제공합니다.DBA_CODE_COVERAGE_BLOCKS
: 각 실행에 대한 블록 커버리지 정보를 제공합니다.
이러한 데이터 뷰를 사용하여 보다 상세한 커버리지 정보를 쿼리할 수 있습니다.
PL/SQL 기본 블록 커버리지 활용 시 주의사항
- 커버리지 데이터는 성능에 영향을 줄 수 있으므로, 프로덕션 환경보다는 테스트 환경에서 사용하는 것이 좋습니다.
- 커버리지 결과는 테스트 케이스의 품질에 따라 달라지므로, 다양한 테스트 케이스를 작성하여 코드의 모든 부분을 테스트해야 합니다.
DBMS_CODE_COVERAGE
패키지의 프로시저를 실행하려면 적절한 권한이 필요합니다.
PL/SQL 기본 블록 커버리지 FAQ
- Q: 커버리지 데이터 수집을 특정 사용자에게만 제한할 수 있나요?
A: 네,DBMS_CODE_COVERAGE
패키지를 사용하여 커버리지 데이터 수집을 시작할 때 사용자 필터를 지정할 수 있습니다. - Q: 커버리지 결과를 HTML 형식으로 내보낼 수 있나요?
A:DBMS_CODE_COVERAGE
패키지는 텍스트 형식의 결과만 제공합니다. HTML 형식으로 내보내려면 결과를 별도 스크립트를 사용하여 변환해야 합니다. - Q: 동적 SQL에 대한 커버리지 정보도 수집할 수 있나요?
A: 네, 동적 SQL을 포함하는 PL/SQL 코드에 대해서도 커버리지 정보가 수집됩니다.
결론
PL/SQL 기본 블록 커버리지는 PL/SQL 코드의 품질을 향상시키고, 테스트 노력을 개선하는 데 유용한 도구입니다. 이 가이드를 통해 PL/SQL 기본 블록 커버리지를 효과적으로 활용하여 더욱 안정적이고 효율적인 PL/SQL 애플리케이션을 개발할 수 있기를 바랍니다.