DATOR


PL/SQL에 TDD를 적용하자! #1/3

 TDD(Test Driven Development)란 XP 방법론으로 유명한 Kent Beck이 개발한 xUnit 테스팅 프레임워크를 이용한 테스트 주도 개발 방법론으로, 유명한 오픈 소스 개발에 대부분 적용이 되고 있으며 자바 개발자들이 표준처럼 사용하고 있는 스프링 프레임웍도 대부분의 API 개발에 TDD를 적용한 단위테스트가 적용되어져 있다. 자바 개발자들에게는 jUnit 이라는 프레임웍으로 잘 알려져 있으며 nUnit 등 다른 언어로의 포팅도 활발하게 이루어지고 있는 상황이다.

 

TDD라는 방법론이 등장한지 벌써 10년 가까이 흘렀군요. 처음 TDD 책을 보면서 무릎을 치며 감탄하던때가 엊그제 같은데 벌써 수년이 지나버렸네요. TDD를 적용할 수 있는 환경이라면 적용하는 것이 맞다고 생각하지만, 현실적으로 적용할 수 있는 분야가 한정적이고 적용이 쉽지는 않습니다. 하지만 코드 품질이나 개발 생산성에 있어서 굉장히 매력이 있는 방법론임에는 틀림이 없습니다. PL/SQL에도 이러한 방법론을 적용시킬 수 없을까 고민해봤었지만.. 여러가지로 제한적인 환경때문에 이클립스처럼 시원하게 해결할 수 있는 마땅한 방법이 없었죠.

그런데, 오라클에서 제공하는 SQL Developer 라는 툴을 이용해서 단위 테스트 작성이 가능해 졌습니다. ioi ~

그래서 3회 정도에 걸쳐서 PL/SQL 단위테스트를 작성하는 방법을 연재하고자 합니다. 

"The SQL Developer unit testing feature provides a framework for testing PL/SQL objects, such as functions and procedures, and monitoring the results of such objects over time. You create tests, and for each you provide information about what is to be tested and what result is expected. The SQL Developer implementation of unit testing is modeled on the classic and well known xUnit collection of unit test frameworks."

오라클 SQL Developer 메뉴얼에 나와있는 내용입니다. SQL Developer의 단위 테스트에서 PL/SQL 객체(패키지, 프로시져, 펑션)에 대해 시간의 흐름에 따라 추적할 수 있는 프레임워크를 제공해 준다라고 하네요. 툴에서 많은 부분 지원해 주는 덕분에  PL/SQL의 단위테스트를 손쉽게(?) 작성할 수 있게 되었습니다.

PL/SQL 단위 테스트를 진행하기 위한 절차는 다음과 같습니다.

1. 단위 테스트 저장소를 생성
2. 최대한 신속히 단위 테스트 대상인 프로시져, 펑션, 패키지를 작성
     (당연히 단위 테스트에 실패할 수준의 코드입니다.)
3. 단위 테스트 작성/수정
4. 단위 테스트 대상 선택
5. 단위 테스트 실행
6. 코드 완성시까지 2번  과정과 5번 과정 반복..

기본적인 작성 방법은 일반적인 단위 테스트를 만드는것과 크게 다르지 않습니다만 1번 과정인 단위 테스트 저장소를 만드는 과정이 추가적으로 필요합니다.

첫 회는 이 단위 테스트 저장소를 만드는 방법에 대해서 설명을 하도록 하겠습니다.  

"The unit test repository is a set of tables, views, indexes, and other schema objects that SQL Developer maintains to manage the use of the unit testing feature. (Most of these objects have UT_ in their names.) You can create a separate database user for a repository or use the schema of an existing database user; but for simplicity and convenience in an environment with a single main shared repository, you may want to create a separate database user"

메뉴얼에 나와있는 것처럼 단위 테스트를 만들기 위해서는 단위 테스트를 위한 저장소 역할을 할 계정이 필요합니다.

그러면 단위 테스트 저장소를 만들기 위한 계정을 만들겠습니다. 계정명은 'UNIT_TEST_REPOS', 계정을 따로 만들지 않고도 단위 테스트 저장소를 만들고 진행할 수도 있으나 실행계정에 단위테스트와 관련된 테이블들이 여러 개 만들어지기 때문에 별도의 계정을 만들기를 추천합니다.

 plsql_unit_01.png

 

계정 생성이 완료되었으면 메뉴 Tools > Unit Test > Select Current Repository 를 선택합니다.
Repository Connection 팝업이 뜨면 미리 만들어둔 unit_test_repos 계정을 선택하여 진행합니다.

 plsql_unit_02.png

 

진행과정에서 레파지토리에 필요한 오브젝트 생성 및 권한을 부여하는 팝업이 등장합니다.
이 과정에서 sysdba의 권한이 필요합니다.

  plsql_unit_03.png

 plsql_unit_04.png

plsql_unit_05.png

 

단위 테스트 저장소의 생성이 완료되면 아래 그림과 같이 단위 테스트 라이브러리 트리와 리포트, Suites, Tests 등의 항목이 보여집니다. 뭔가 익숙하지 않은가요? :)

plsql_unit_06.png

 

여기까지 완성하셨으면 단위 테스트 작성을 위한 준비가 되었습니다.

그럼 다음 회에는 프로시져를 코딩하면서 단위 테스트를 작성해 보도록 하겠습니다.

 

Leave Comments

댓글 쓰기 권한이 없습니다. 회원 가입후에 사용 가능합니다