CI 묻고 답하기

제목 [초보]유닛테스트에 관하여
글쓴이 헛발이2 작성시각 2012/11/27 09:51:23
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 16276   RSS
유닛테스트에 관하여 질문 드립니다...

유닛테스트를 해 보려고 하는데요...
근본적으로 왜하는지 잘 이해가 안가네요...

유닛테스트가 뭘 하는가에 대해선 초보적인 입장에서 이해는 가요...
즉 변수나 기타 흐름에 있어서 에라가 없는지 확인 하는거 같은데요..

실제 실무에선 어떻게 쓰는지 궁굼하네요...

메뉴얼 보면
$test = 1 + 1;
$expected_result = 2;
$test_name = 'Adds one plus one';
$this->unit->run($test, $expected_result, $test_name);
이렇게는 나와 있지만...
사실 1+1과 2가 일치 하는가 그런 유치원생도 다 아는 걸 왜 테스트 해야 하는지... ㅋㅋ

아니면 위의 예제가 단순히 예제라면 실제는 어떻게 해야 하는건가??
그런게 궁굼하네요...

실제 게시판을 예로 들어 보면 글등록하는 부분이 있다면 그 부분을 어떻게 유닛테스트를 해 주는가..
그런 실제 예제를 알고 싶은데...

갈켜 주실 고수분 안계신가요? ㅋㅋ
 다음글 # 링크를 사용하려면. (6)
 이전글 route 규칙에 관한 정보를 이디서 (1)

댓글

한대승(불의회상) / 2012/11/27 11:14:15 / 추천 0
ㅎㅎ 고수는 아니지만 짐작하는데로 아는데로 적어 보자면...

TDD(Test Driven Development) 에서 유래 한 겁니다.

TDD에 관심이 있다면 "켄트 백" 아저씨가 잘 정리해 놓은 "테스트 주도 개발(TDD)" 라는 제목의 서적을 참고 하시면 됩니다.

CI에서 제공하는 테스트 유닛이 좋기는 하지만 테스트 작성해 놓고 보면 조금 지저분해 보이고 통합 테스트 하려면 여기 저기 손 봐줘야 할 부분이 많습니다.

컨트롤러는 테스트 작성하기가 상당히 까다롭습니다.
특히나 뷰와 연계되어 있으면 더더욱 그렇구요.

모델을 기준으로 테스트를 작성하고 원하는 결과가 나오는지 테스트 하면서 프로젝트를 진행 하는게 좋은 것 같습니다.

CI로 TDD 해보시려면.. 아래 주소를 참조해 보세요.
CI 유닛 테스트 보다는 좀 더 편리 합니다.

http://cikorea.net/source/view/618/page/1
헛발이2 / 2012/11/27 11:52:39 / 추천 0
초보자가 조금 이해 하기 어려운 부분인데요....
예를 들어서 모델에서 날릴 쿼리문이 이상없이 잘 수행되는지에 관한 유닛테스트를 만든다면...

어짜피 유닛테스트를 해도 문제가 생기면 화면에 에라를 보여주게 될것이고...
그냥 직접 에러를 출력해도 될텐데....

아니면 유닛테스트결과를 안보여주다가 필요할때만 보여주는것도
결과적으로 직접 echo해서 문제를 찾아 볼수도 있는건데...

유닛테스트를 근본적으로 해 줘야 하는가...에대한 이해가 풀리지가 않는군요...

결과적으로 하나의 게시판을 만든다면 유닛테스트를 위해 별도의 게시판이 만들어 지는
이중적인 결과가 될텐데 말이죠... (초보자의 눈높이인가.... ㅋ)


이전에 FTP만 쓰다가... Rsync를 쓸때도 그랬쬬...
파일 하나 서버에 올리는데 너무  번거러운거 아닌가...FTP가 훨 사용간단한데
왜 어렵고 불편하고 늦은 업무처리가 되게 Rsync를 할까...라고요 ㅋㅋㅋ

혹은...

svn이나 git를 쓸때도 그랬죠...
왜 해깔리게 자기 로컬컴에도 소스가 존재하고... 별도에 저장소에 소스를 보관하고..
또 서버에 실제 소스를 보관해야 하는지..이해 불가였죠...
왜 바보들마냥 복잡하게 할까... 간단하게 서버에 직접 FTP를 연결해서 사용하면
빛보다 빠른 업무처리를 할 수있는데.. 라고요...


하지만... 아인슈타인이 상대성이론을 팍! 생각했을때 처럼...
저도 결국 어느날 빛보다 빨리 소스를 날려먹을수 있구나 하는걸 깨닭은거처럼..

이 유닛테스트의 이해가 빨리 이해 했으면 좋겠네요.. ㅋㅋ
한대승(불의회상) / 2012/11/27 11:59:34 / 추천 0
네.. 지적하신 부분은  저도 초기에 고민 많이 했었고 아직도 가끔 혼동되는 부분입니다.

결론만 이야기 하자면 이미 완성된 모듈에 테스트를 붙이는게 아니라...
테스트를 만들면서 모듈을 만들자는 겁니다.

저의 얄팍한 의견 보다는 TDD를 조금 연구해 보시면 좋을 겁니다.
헛발이2 / 2012/11/27 12:04:43 / 추천 0
아 그렇군요...

"테스트를 만들면서 모듈을 만들자는 겁니다." 이말이 이해 하기 쉽군요 ㅋ
감사합니다..
니삼 / 2012/11/27 14:24:51 / 추천 0
 svn이든 기타 형상관리툴은 백업보다는 
협업이 ftp로 하는것보다 엄청 좋아요.
두명이상이 작업할때 소스가 겹쳐도 문제가 없다거나
예전 소스로 돌린다거나..
두명다 로컬에서 충분한 테스트를 거친뒤 실서버로 반영 할 수 있고..