테스트 주도 장고 웹사이트 개발 :: 2012/05/28 13:13

테스트 주도 개발(TDD, Test-Driven Development)이 좋다는 건 알겠는데 실전에 잘 사용한 예는 많지않다. 그나마 동작하는 테스트코드가 있다는 것만으로 위안하는 경우가 많음. 시작은 TDD로 했다가도, 데드라인의 압박, 좀 더 쉽게 구현하기, 테스트 갈아엎기 번거로움 등으로 점점 테스트가 뒷전으로 밀려나던 경험이 많았다.

그래도 동작하는 테스트 코드가 든든히 받혀주면 일할 맛 난다. 뭔가 많이 변경해야 할 경우가 생겨도 "용기"를 갖고 테스트와 함께 고쳐놓으면 프로젝트 전반이 컨트롤 가능한 상태가 된다. 이렇게도 좋은 테스트 코드를 만드는 가장 좋은 방법은 테스트를 먼저 만드는 것. 조금씩 조금씩 실천하다 보면 모두가 행복한 코드가 되리라 믿는다.

장고 웹사이트 개발시에도 내장된 테스팅 프레임워크를 이용하여 쉽게 테스트코드를 만들고 확인해볼 수 있다. 하지만 웹사이트 개발의 특성상 어떻게 테스트를 먼저 해야할지 감잡기 어려운 경우가 많다. Selenium등으로 브라우저 테스트는 어떻게 할 것인지, 뷰, 폼 등은 또 어디까지 테스트해야할 것인지 등등.

그러던 중 괜찮은 자료를 발견했다. Test-Driven Django Tutorial, 이 튜토리얼에는 Django 1.4에 새로 내장된 LiveServerTestCase을 써서 기능 테스트를 브라우저 테스트로 하는 내용 뿐 아니라, 어떻게 모델, 뷰, 폼에 대한 단위 테스트를 만들어야 하는지에 대한 내용이 실려있다. 이 튜토리얼대로 따라하다 보면 웹사이트 구축시 테스트를 먼저 만드는 것에 대한 자신감이 생길 것이다.

내가 따라해보며 정리해본 중요한 사항들은 다음과 같다.
 1. fts(functional tests)라는 앱을 별도로 만들고, 전체 사이트에 대한 기능테스트를 시나리오 쓰듯이 작성한다.
 2. 가상의 인물이 웹사이트를 이용하고 있다고 생각하고, 주석과 함께 시나리오를 적는다.
 3. 기능테스트는 Selenium을 통해 브라우저에서 동작하는 모습을 직접 볼 수 있다.
 4. 기능테스트에 나온 단위 기능은 바로 단위테스트에 기록하고, 단위테스트와 함께 구현
 5. 단위는 모델에 대한 것, 뷰에 대한 것, 폼에 대한 것 등으로 구분될 수 있다.
 6. 기능테스트에는 어떻게 보여지는가는 테스트하지 않는다. find_element_*와 assertIn 메쏘드로 특정 문자열이 존재하는지 확인하는 것으로 충분
 7. 기능테스트에 admin 사이트를 적절히 활용하여 웹사이트 이용자와 소통함
 8. 기능테스트에 사용할 예제 값은 namedtuple 자료구조를 쓰면 좋다.

물론, 이 튜토리얼 역시 100% 해답을 제공하진 않는다. 전체 과정중에는 다소 인위적으로 상상해낸 부분도 없잖아 있다. 변화발생시 기껏 만든 저 시나리오들을 또 새로 다 고쳐야할 걸 생각하면 여전히 쉽지 않긴 하다. 그래도 좀 더 자신감을 갖고 테스트 주도 개발해보자. 좀 더 성장하고 발전하고 행복한 프로그래밍을 위해.
Trackback Address :: http://yong27.biohackers.net/trackback/378
  • BlogIcon anjali tiwari | 2020/11/09 16:43 | PERMALINK | EDIT/DEL | REPLY

    Are you an aspirant of upcoming NEET exam?Require a proper action plan when exams are around the corner? Prepare with aakash institute for proper plan of action for your Ideal Study schedule.Here's a set of NEET question papers to study hard.For more details,visit:
    https://www.aakash.ac.in/neet-answer-key-solution/

Name
Password
Homepage
Secret
< PREV #1 #2 #3 #4 #5 #6 #7 #8 ... #307  | NEXT >