요즘 회사일 때문에 고민이 많습니다. 아무래도 릴리즈를 앞두고 있기 때문에 더 그런 것 같기도 한데.... 사실 프로젝트를 진행하는 내내 제 고민은 한가지 였습니다.
"어떻게 해야 코드가 완전하다는 것을 보장할 수 있을까?"
이전 과제를 할 때 수정한 코드로 인해 사이드 이펙트(Side Effect)가 많이 생겨서 계속 문제가 되었습니다. 그래서 상당히 골머리를 썩였던지라, 새로 프로젝트를 시작할 때부터 이런 생각이 머리에서 떠나질 않았습니다. 그러던 중에 아는 후배에게 영감을 얻어 코드를 구현하는 단계부터 테스트 코드를 같이 구현하는 방법을 써봤는데, 이게 상당히 효과가 있어서 단위 기능 구현까지는 어느 정도 버그를 줄일 수 있었습니다.
그런데.... 이것도 잠시일 뿐... 코드가 통합되면서 다시 문제가 불거졌습니다. 완성된 단위 함수를 이용해서 작업을 수행하던 중에 문제가 생긴겁니다. ㅠㅠ 일을 분담하다보니 서로 못 보던 부분이 있었고, 미처 챙기지 못해서 당연히 있을 거라고 생각한 부분에 코드가 빠져있었습니다. 그래서 그 접점에 부랴부랴 코드를 챙겨넣고 나니 다시 고민이 시작되더군요.
"통합 과정에서 생긴 이런 문제는 어떻게 해결해야하나..."
한참을 고민한 끝에 도달한 결론은 통합 테스트 시나리오를 보강하는 것이었습니다. 통합 테스트를 할 때도 단순히 기본 동작을 위주로 테스트할 것이 아니라, 내가 고민하고 있는 Case가 정상적으로 동작하는지 확인하는 케이스를 만들어서 은근 슬쩍(?) 끼워 넣는 겁니다. 그러면 팀원들이 통합 테스트를 진행할 때 그 Case를 구현하지 않았으면 문제가 발생할테니까요.
(사실 테스트에서 Fail이 발생하는 것을 보는 것만큼 충격적인 것은 없지요... 쿨럭..;;;)
그래서 테스트 시나리오까지 보강하고 났더니 안심이 되긴 하는데 이번에는 이런 생각이 들더군요.
"과연 이 테스트 시나리오로 충분한 건가? 혹시 다른 Case는 없나?"
"테스트 시나리오가 충분하지 않다면... 혹시 다른 방법으로 코드가 완전하다는 것을 확인할 방법은 없을까?"
이 문제를 며칠째 고민 중인데 아직 여기에 대해서는 혜안을 얻지 못했습니다. 현재 머리 속에서 나온 답은 계속해서 다른 통합 테스트 시나리오를 구성하는 방법인데, 아무래도 새로운 기능을 계속 추가하고 앞으로 나아가야 하는 개발팀에 있기 때문에 이도 한계가 있습니다. 테스트만 주구장창 고민하게는 두지 않는 다는 것이죠. 물론 테스트 부서가 따로 있기 때문에 테스트를 제가 굳이 고민하지 않아도 되지만... 뭐랄까요... 테스트 시나리오가 기존 시스템을 기준으로 만들어져 있어서 새로 추가하느 기능에 대해서는 좀 둔하다랄까요. 그래서 불안한게 솔찍한 심정입니다. ㅠㅠ
아... 정말 어떻게해야 할까요? 컴퓨터가 알아서 코드를 분석하고 취약한 시나리오나 뭐 케이스를 만들어주면 참 좋을텐데... 그럼 제가 이런 고민을 하지 않아도 좋을텐데 말이죠. 혹시 이런 종류의 프로그램이 어디 없을까요? ^^;;;;;;
"어떻게 해야 코드가 완전하다는 것을 보장할 수 있을까?"
이전 과제를 할 때 수정한 코드로 인해 사이드 이펙트(Side Effect)가 많이 생겨서 계속 문제가 되었습니다. 그래서 상당히 골머리를 썩였던지라, 새로 프로젝트를 시작할 때부터 이런 생각이 머리에서 떠나질 않았습니다. 그러던 중에 아는 후배에게 영감을 얻어 코드를 구현하는 단계부터 테스트 코드를 같이 구현하는 방법을 써봤는데, 이게 상당히 효과가 있어서 단위 기능 구현까지는 어느 정도 버그를 줄일 수 있었습니다.
그런데.... 이것도 잠시일 뿐... 코드가 통합되면서 다시 문제가 불거졌습니다. 완성된 단위 함수를 이용해서 작업을 수행하던 중에 문제가 생긴겁니다. ㅠㅠ 일을 분담하다보니 서로 못 보던 부분이 있었고, 미처 챙기지 못해서 당연히 있을 거라고 생각한 부분에 코드가 빠져있었습니다. 그래서 그 접점에 부랴부랴 코드를 챙겨넣고 나니 다시 고민이 시작되더군요.
"통합 과정에서 생긴 이런 문제는 어떻게 해결해야하나..."
한참을 고민한 끝에 도달한 결론은 통합 테스트 시나리오를 보강하는 것이었습니다. 통합 테스트를 할 때도 단순히 기본 동작을 위주로 테스트할 것이 아니라, 내가 고민하고 있는 Case가 정상적으로 동작하는지 확인하는 케이스를 만들어서 은근 슬쩍(?) 끼워 넣는 겁니다. 그러면 팀원들이 통합 테스트를 진행할 때 그 Case를 구현하지 않았으면 문제가 발생할테니까요.
(사실 테스트에서 Fail이 발생하는 것을 보는 것만큼 충격적인 것은 없지요... 쿨럭..;;;)
그래서 테스트 시나리오까지 보강하고 났더니 안심이 되긴 하는데 이번에는 이런 생각이 들더군요.
"과연 이 테스트 시나리오로 충분한 건가? 혹시 다른 Case는 없나?"
"테스트 시나리오가 충분하지 않다면... 혹시 다른 방법으로 코드가 완전하다는 것을 확인할 방법은 없을까?"
이 문제를 며칠째 고민 중인데 아직 여기에 대해서는 혜안을 얻지 못했습니다. 현재 머리 속에서 나온 답은 계속해서 다른 통합 테스트 시나리오를 구성하는 방법인데, 아무래도 새로운 기능을 계속 추가하고 앞으로 나아가야 하는 개발팀에 있기 때문에 이도 한계가 있습니다. 테스트만 주구장창 고민하게는 두지 않는 다는 것이죠. 물론 테스트 부서가 따로 있기 때문에 테스트를 제가 굳이 고민하지 않아도 되지만... 뭐랄까요... 테스트 시나리오가 기존 시스템을 기준으로 만들어져 있어서 새로 추가하느 기능에 대해서는 좀 둔하다랄까요. 그래서 불안한게 솔찍한 심정입니다. ㅠㅠ
아... 정말 어떻게해야 할까요? 컴퓨터가 알아서 코드를 분석하고 취약한 시나리오나 뭐 케이스를 만들어주면 참 좋을텐데... 그럼 제가 이런 고민을 하지 않아도 좋을텐데 말이죠. 혹시 이런 종류의 프로그램이 어디 없을까요? ^^;;;;;;
'잡담' 카테고리의 다른 글
책 "Windows 구조와 원리"로 유명하신 정덕영씨께서 세상을 떠나셨습니다. ㅠㅠ (10) | 2011.04.03 |
---|---|
드디어 파이어폭스 4(Fire Fox 4)가 나왔습니다. ;) (14) | 2011.03.27 |
[서평] 히가시노 게이고의 신작 - 플래티나 데이터 (2) | 2011.02.28 |
[서평] 프로젝트 일대기에 대한 적나라한 보고서 "드리밍 인 코드"~!! (6) | 2011.02.21 |
저는 여전히 하고 싶은 일을 하면서 살고 있습니다 - 2편 (9) | 2011.02.12 |