PL/SQL 기본 블록 커버리지 사용

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 기본 블록 커버리지를 사용하려면 다음과 같은 단계를 따릅니다.

  1. 커버리지 데이터 수집을 위한 테이블 생성: 먼저 커버리지 데이터를 저장할 테이블을 생성해야 합니다. 다음은 테이블을 생성하는 스크립트 예시입니다.
  2. 커버리지 데이터 수집 시작: DBMS_CODE_COVERAGE.START_COVERAGE 프로시저를 사용하여 커버리지 데이터 수집을 시작합니다.
  3. 테스트 실행: 테스트를 실행하여 PL/SQL 코드를 실행합니다.
  4. 커버리지 데이터 수집 중단 및 결과 저장: 테스트가 완료되면 DBMS_CODE_COVERAGE.STOP_COVERAGE 프로시저를 사용하여 커버리지 데이터 수집을 중단하고 결과를 테이블에 저장합니다.
  5. 커버리지 결과 분석: 저장된 데이터를 사용하여 코드 커버리지 보고서를 생성합니다.

예시 코드

다음은 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 애플리케이션을 개발할 수 있기를 바랍니다.

위로 스크롤