FinalBuilder 따라하기3
- 따라하기 시리즈의 마지막에서는 서브버전 커밋 시 돌아가는 스크립트를 업그레이드 해보겠습니다.
- 서브버전에서 커밋에 관한 정보를 얻어와 로그에 "TC: 개수"의 형태로 테스트케이스 추가에 대한 기록이 있을 경우, 이를 활용하여 커밋한 사람별로 추가한 테스트케이스에 대한 통계를 유지하도록 할 것입니다.
- 통계 정보는 ini 형식의 텍스트 파일로 저장합니다.
- FinalBuilder의 주석(코멘트) 액션과 변수, 액션 스크립팅 기능을 보여줍니다.
- 시작해봅시다.
- 먼저 기능이 만만치 않을듯하므로 기존 Main 리스트에 바로 추가하기 보다는 다음과 같이 새로운 액션 리스트를 추가합니다(액션 리스트는 프로그래밍 언어에서의 함수와 같은 개념입니다).
- Main에서는 "Run Action List" 액션을 추가하여 위에 만든 액션 리스트를 적절한 타이밍에 호출하도록 합니다.
- 위 대화상자에서 볼 수 있듯이 함수처럼 매개변수를 액션 리스트에 넘겨줄 수도 있습니다. 이번 스크립트에서는 본 기능은 사용하지 않습니다.
- 최종 "Update TestCase Statistics" 액션 리스트는 다음과 같습니다.
- 먼저 파란 글씨가 눈에 띄는 코멘트 액션을 확인할 수 있습니다. FinalBuilder 스크립트에도 주석을 달 수 있는 것이죠!
- 위 주석을 보면 전반적인 흐름을 바로 파악할 수 있습니다. 먼저 커밋 로그를 분석해서 정보를 얻어오고 기존 저장되어 있는 ini 파일에서 기존 값을 읽어와 적절히 더한 뒤 갱신된 값을 다시 ini 파일에 적으면 됩니다.
- 위 스샷에서 한가지 더 눈에 띄는 것은 맨 오른쪽 일의 두루마리 종이 모양 아이콘들입니다. 액션 스크립팅을 사용하고 있다는 표시로, 기존 주어지는 액션만으로 해결이 안될 때 유용하게 사용됩니다.
- 또 함수에서 바로 빠져나갈 때 return 키워드를 쓰듯이, "Exit Action List"를 써서 만약 로그에 테스트케이스 추가에 대한 정보가 없을 경우 본 액션 리스트 수행을 바로 건너뛰도록 하고 있습니다.
- 또한 정보를 전달하는데 다음과 같이 여러 변수들이 필요합니다(아래 대화상자는 Tools->Edit Variables... 를 통해 접근할 수 있습니다).
- 위에서 이번 기능과 관련하여 추가된 것은 SVN_LOG 이후부터의 일곱가지입니다.
- 어려운 부분은 svn 로그에서 TC 정보 및 날짜 정보를 얻어와야 한다는 것입니다.
-
이 때 정규표현식과 "Text Find / Replace" 액션을 사용합니다.
- 정규표현식은 정규표현식 치트싯에서도 간단한 내용을 확인할 수 있는데, 프로그래머라면 꼭 알아둬야할 지식이니 모르셨던 분들은 책이나 인터넷 등을 통해 숙지해두시길 바랍니다.
- 보통 svn 로그는 다음과 같습니다.
- 여기서 TC: 다음의 숫자와 XXXX-XX-XX 포맷의 날짜 정보를 얻어와야 합니다.
- 안타깝게도 "Text Find / Replace" 액션은 줄 단위로 작업하는 것 같습니다. 따라서 위의 경우 "2008-02-13"까지 찾는데는 문제가 없으나 그것만 남기고 나머지 부분을 다 날리는 것이 불가능하더군요.
- 이 때, 스크립팅이 구세주 역할을 합니다.
- 위 와 같이 "Text Find / Replace" 액션은 OnFindText라는 훅 포인트를 제공합니다. 이 함수를 통해 대체될 텍스트 정보를 얻어 그 놈만 원하는 변수에 저장하는 것이 가능합니다(보시는대로 우리가 앞서 생성했던 변수를 스크립트 내부에서 접근할 수 있습니다). 스크립트 언어는 비베임을 확인할 수 있습니다.
- "Get Current Month"에서도 역시 이 훅을 활용합니다.
-
Read 부분에서는 FinalBuilder가 제공하는 INI 읽기 액션을 사용합니다.
- 기존에 저장되이 있는 전체 총수치 및 달수치와 커밋한 자의 총수치 및 달수치를 읽어 옵니다.
- Write 부분도 마찬가지입니다. 단, 이 경우 쓰기 전에 먼저 로그에서 읽어 온 값을 적절히 더해주어야 합니다. 아쉽게도 변수값들을 더해주는 액션을 없더군요. 이번에도 스크립트가 출동합니다.
- 위와 같이 이번에는 BeforeAction 훅을 이용합니다(당연히 먼저 더한 후 써야겠지요).
- 이제 이렇게 갱신되는 ini 파일을 웹서버 등을 통해 노출만 시켜주면, 누구나 금방 테스트 증가 상황을 확인하고 열심히 테스트를 작성하는 사람을 포상해줄 수 있습니다. ^^
-
좀 더 개선해보자면 다음과 같은 것들을 적용해볼 수 있을 겁니다.
- 전역 변수격인 변수를 쓰지말고 액션 리스트 매개변수를 활용하는 방식으로 수정한다.
- 지금 ini 파일 경로를 하드 코딩 방식으로 일일이 적어주고 있는데, 이 경우 경로가 바뀔 경우 다 찾아서 수정해주어야 한다. 따라서 변수나 매개변수를 활용하여 경로 변경 지점을 단일화한다.
- 이상입니다. 더 고급 기능들이 있지만 이 정도만 알아도 FinalBuilder 활용에 무리가 없을 겁니다. 그러면 모두 자동화의 세계로~~~
Comments (0)