요즘 회사일 때문에 고민이 많습니다. 아무래도 릴리즈를 앞두고 있기 때문에 더 그런 것 같기도 한데.... 사실 프로젝트를 진행하는 내내 제 고민은 한가지 였습니다.

"어떻게 해야 코드가 완전하다는 것을 보장할 수 있을까?"

이전 과제를 할 때 수정한 코드로 인해 사이드 이펙트(Side Effect)가 많이 생겨서 계속 문제가 되었습니다. 그래서 상당히 골머리를 썩였던지라, 새로 프로젝트를 시작할 때부터 이런 생각이 머리에서 떠나질 않았습니다. 그러던 중에 아는 후배에게 영감을 얻어 코드를 구현하는 단계부터 테스트 코드를 같이 구현하는 방법을 써봤는데, 이게 상당히 효과가 있어서 단위 기능 구현까지는 어느 정도 버그를 줄일 수 있었습니다.

그런데.... 이것도 잠시일 뿐... 코드가 통합되면서 다시 문제가 불거졌습니다. 완성된 단위 함수를 이용해서 작업을 수행하던 중에 문제가 생긴겁니다. ㅠㅠ 일을 분담하다보니 서로 못 보던 부분이 있었고, 미처 챙기지 못해서 당연히 있을 거라고 생각한 부분에 코드가 빠져있었습니다. 그래서 그 접점에 부랴부랴 코드를 챙겨넣고 나니 다시 고민이 시작되더군요.

"통합 과정에서 생긴 이런 문제는 어떻게 해결해야하나..."

한참을 고민한 끝에 도달한 결론은 통합 테스트 시나리오를 보강하는 것이었습니다. 통합 테스트를 할 때도 단순히 기본 동작을 위주로 테스트할 것이 아니라, 내가 고민하고 있는 Case가 정상적으로 동작하는지 확인하는 케이스를 만들어서 은근 슬쩍(?) 끼워 넣는 겁니다. 그러면 팀원들이 통합 테스트를 진행할 때 그 Case를 구현하지 않았으면 문제가 발생할테니까요.
(사실 테스트에서 Fail이 발생하는 것을 보는 것만큼 충격적인 것은 없지요... 쿨럭..;;;)

그래서 테스트 시나리오까지 보강하고 났더니 안심이 되긴 하는데 이번에는 이런 생각이 들더군요.

"과연 이 테스트 시나리오로 충분한 건가? 혹시 다른 Case는 없나?"
"테스트 시나리오가 충분하지 않다면... 혹시 다른 방법으로 코드가 완전하다는 것을 확인할 방법은 없을까?"

이 문제를 며칠째 고민 중인데 아직 여기에 대해서는 혜안을 얻지 못했습니다. 현재 머리 속에서 나온 답은 계속해서 다른 통합 테스트 시나리오를 구성하는 방법인데, 아무래도 새로운 기능을 계속 추가하고 앞으로 나아가야 하는 개발팀에 있기 때문에 이도 한계가 있습니다. 테스트만 주구장창 고민하게는 두지 않는 다는 것이죠. 물론 테스트 부서가 따로 있기 때문에 테스트를 제가 굳이 고민하지 않아도 되지만... 뭐랄까요... 테스트 시나리오가 기존 시스템을 기준으로 만들어져 있어서 새로 추가하느 기능에 대해서는 좀 둔하다랄까요. 그래서 불안한게 솔찍한 심정입니다. ㅠㅠ

아... 정말 어떻게해야 할까요? 컴퓨터가 알아서 코드를 분석하고 취약한 시나리오나 뭐 케이스를 만들어주면 참 좋을텐데... 그럼 제가 이런 고민을 하지 않아도 좋을텐데 말이죠. 혹시 이런 종류의 프로그램이 어디 없을까요? ^^;;;;;;




요즘 다시 micro SD카드가 나오는 바람에 코딩은 안하고 테스트만 하고 있습니다. 워낙 카드를 쓰는 기기가 많다 보니 카드가 새로 나올 때마다 호환성을 보는데, 이게 장난이 아닙니다. 이번 호환성 테스트는 카드 용량이 좀 큰지라 200 세트 정도만 보면 되지만, 한 세트당 3개의 카드를 동일한 조건에서 반복해야 하니 대략 3배의 시간이 들어가네요. ㅠㅠ

사람이 일일이 손으로 테스트해야 하는 현재의 노가다성 테스트도 문제입니다만, 더 큰 문제는 대충 짠 자동 테스트 프로그램입니다. 아무래도 돌려 놓고 나중에 확인하는 방식의 테스트 프로그램이다 보니, 아무 생각 없이 카드 전 영역을 읽고 쓰면서 테스트 합니다. 하지만 카드 용량이 커지니 문제가 생기더군요. 테스트 하나 시작해서 완료하는데 걸리는 시간이 4시간 이상입니다. ㅡ_ㅡa… 사실 4시간 동안 도는 걸 확인하고 퇴근했으니, 실제 시간은 더 걸리겠지요.

칼퇴근한다고 가정할 때 근무 시간이 8시간 정도이므로, 아침에 부리나케 달려가서 테스트를 돌려도 퇴근까지 몇 개 안 끝난다는 겁니다. ㅠㅠ 항상 그렇지만, 일정에 쫓기고 급하다고 하니, 결국 야근을 하게 되네요... 다행히도 이번 같은 경우는 야근을 해도 크게 효과가 없어서 그 핑계를 되고 집으로 도망 오긴 했는 데... 정말 막막합니다. ㅡ_ㅡ;;;;

에혀… 좀 Smart하게 테스트를 진행할 필요가 있을 것 같습니다만… 어떻게 해야 할지는 아무 생각이 안 드는군요. ㅎㅎ 아이구 머리야… ㅠㅠ 테스트할 때 바운더리 케이스하고 몇몇 장애가 많이 발생한 부분만 중점적으로 체크하면 금방 끝날 것 같기도 한데... 그러다가 버그를 못 거르게 되면 뒷감당이 안 된다는… 쿨럭..;;;

크윽... 누가 좀 어떻게 안 해주나... (‘’ )a…

+ Recent posts