구현하다보면 설계했던거 보다 더 좋은 방법이 떠오르거나 또 그것으로 인해 생각이 복잡해지는 경우가 많습니다. 이럴때 조심해야 할게 있는데, 설계 변경 시도를 코드로써 풀어내려 하면 안된다는 것입니다.

실제로 전 기수 프로젝트 때 설계에 대한 부분을 중요시 생각 안하고 생각 나는대로 코드로써 풀어나갔었습니다. 막히는 부분도 많았고 점점 알수 없는 코드들로 변해갔습니다. 원하던 결과 값은 나왔으나 알수없는 계산식들...

지금 다시 그 코드를 보면 정말 무식하게 코딩했구나 라는 생각이 들고 또 느낀것도 많았는데, 일단은 설계했던 대로 구현해서 테스트를 통해 기능이 제대로 작동되는지를 우선시 하고, 그 이후에 보완하는식으로 하는게 가장 좋을꺼 같단 생각을 했습니다.

그래서 이번 프로젝트는 단위 테스트(Junit4.4)에 비중을 많이 두고서 진행하고 있고, 안정적이면서 최대한 빠르게 구현하고, 그 이후에 좀 더 나은 방법으로 보완해 나가면서 버전업을 할 계획입니다.

일단 Hibernate Tool을 사용하였고, GenerationSchemaExport를 통해 Model, Schema생성을 한번에 해결하였습니다.

src 폴더에 실질적인 구현 코드들이 만들어지고 있고, test/java와 test/resource에 테스트 코드와 테스트에 필요한 설정파일들을 배치하였습니다. 보시는대로 전체 모듈에 대해서 최대한 테스트를 통해 구현하고 있습니다.
 

비록 간단한 소스 코드이긴 하지만 이러한 작은 것들부터 테스트를 수행하고 빠진 부분이 없는지 확인합니다.

IBatis로 했다면 쿼리문에 대해 많이 신경썼을테고 오류도 쿼리문에 대해서 많이 나왔을테지만 Hibernate는 Mapping 문서에 설정된 연관 관계들과 쿼리 실행전, 후 필요한 설정들에 대해 신경을 써야 합니다. 

Dao와 마찬가지로 비지니스 로직단도 테스트를 수행하며, Controller까지 테스트를 완료하는것으로 한 모듈을 마치게 됩니다.

간단한 MultiActionController 테스트 입니다.
methodParameter 방식을 사용하지 않고 Url경로로써 바로 메서드를 호출 하는 방식을 택했습니다. (상황에 따라서는 methodParameter 방식도 사용하긴 합니다.)


Url 요청이 들어왔을시에 Url에 맞는 메서드가 호출되는지의 확인과 요청된 데이터가 제대로 넘어오는지 테스트합니다.


SimpleFormController도 마찬가지 입니다. (유효성 검사는 아직 진행 단계가 아니라서 제외되었습니다.)

폼 요청시에 필요한 데이터를 가져올수 있는지와 데이터를 전송했을때 데이터를 제대로 바인딩 하는지, 등록과 수정은 제대로 이루어 지는지 테스트를 합니다.
 
현재 모든 모듈들은 이러한 방식으로 테스트를 진행중에 있고 플랙스가 사용되는 부분은 Service단까지만 구현중에 있습니다.

예전에는 테스트 없이 model, dao, service, controller를 모두 구현한 뒤에 웹페이지를 띄워보고서 제대로 작동하는지 확인을 했었는데, (그러다가 결국 원점으로 돌아와 다시 수정을 하곤 했습니다.) 지금 생각해보면 정말 미련하게 개발하진 않았나 싶기도 하고 느낀것도 많았습니다. 항상 모든 프로그램은 실제 상황을 기준으로 모의 테스트를 하되,최하 밑단부터 시작해서 차근차근 구현해 나가야 할 것 같습니다.

'Project > B.M.S' 카테고리의 다른 글

Hibernate.  (0) 2012.03.05
ERD.  (0) 2012.03.05

+ Recent posts