(1) 대학생활
[레고 마인드스톰 nxt 트랙 완주 프로젝트]
회귀 테스트의 중요성을 가장 느꼈던 프로젝트는 가장 많은 수행착오를 경험한 레고 마인드스톰 nxt 트랙 완주 프로젝트입니다.
레고 마인드스톰 nxt는 모터와 센서, 그리고 마인드스톰 레고 조각을 사용하여 로봇을 조립하고 움직이게 하는 장치입니다. 교수님은 구현 방식을 자유롭게 주셨고 2주라는 기간 안에 레고 마인드스톰 제작과 프로그래밍을 통해 제한된 트랙을 완주해야 했습니다.
프로젝트를 진행하면서 여러 가지 문제점에 부딪혔습니다. 조립된 마인드스톰의 빠른 움직임과 검은색 길을 명확하게 인식하지 못해 트랙을 자주 이탈했습니다. 또한, 교차로에서 분명하지 못한 알고리즘으로 원하는 방향으로 나아가지 못했습니다.
우선 이동 속도를 낮추기 위해 몸체를 무게감 있게 제작, 수정했습니다. 그리고 양방향의 광센서와 컬러센서의 위치를 검은 길의 굵기보다 조금 더 떨어지게 바닥에 설치하고 폭을 좁게 조정하여 흰 바탕 위에 검은색 길을 명확히 인식하도록 변경하였습니다. 마지막으로 교차로 통과를 위해 두 가지 경우의 수를 나누어 명확한 알고리즘을 만들었습니다.
첫째, 하나의 길만을 따라갈 경우입니다.
- 양쪽 센서에 모두 길이 감지될 경우 전진한다.
- 양쪽 센서에 모두 길이 감지되지 않은 경우 전진한다.
- 좌측 센서에 길이 감지되고, 우측 센서에는 길이 감지되지 않을 경우 우측모터만 전진한다.
- 우측 센서에 길이 감지되고, 좌측 센서에는 길이 감지되지 않을 경우 좌측모터만 전진한다.
둘째, 교차로가 있는 길을 따라갈 경우입니다.
- 양쪽 센서에 모두 길이 감지될 경우 미리 내장되어있는 명령에 따른다.
- 양쪽 센서에 모두 길이 감지되지 않은 경우 전진한다.
- 좌측 센서에 길이 감지되고, 우측 센서에는 길이 감지되지 않을 경우 좌측모터는 후진, 우측모터는 전진한다. (이때의 속도는 우측모터> 좌측모터)
- 우측 센서에 길이 감지되고, 좌측 센서에는 길이 감지되지 않을 경우 좌측모터는 전진, 우측모터는 후진한다. (이때의 속도는 좌측모터> 우측모터)
1단위의 속도 조절에도 트랙을 이탈하는 경우가 많기에 미세한 속도에 신중을 기했고 결과적으로 제한 시간 내에 트랙을 통과한 1인의 학생으로 첫 프로젝트를 성공적으로 마쳤습니다.
프로젝트에 대한 책임감과 문제 해결을 위한 의지는 ‘결코 포기란 없다’라는 열정을 만들어주었습니다. 반복 테스트를 통해 발견된 오류를 수정해나가며 완성도 높은 프로그램을 구현했습니다. 향후 맡게 될 QA에서 스스로 많은 고민을 통해 효율적인 테스트 케이스를 도출하고 작은 오류도 놓치지 않겠습니다.
[키넥트 동작 인식 기술을 활용한 ‘지하철 키오스크 활성화 프로젝트’]
지하철 키오스크의 활성화를 위해 기존의 터치 방식의 입력을 Kinect의 동작 인식 기술을 활용해 손동작으로 키오스크를 제어하고 사용자 관심도를 높이기로 했습니다.
4인으로 구성된 팀원들과 프로젝트는 진행했습니다. 구성 Entity로는 먼저 User, Kinect 그리고 API, UI 등의 정보 제공 매개체 PC로 설정하였습니다.
Kinect가 PC와 연결되면 User 정보를 인식하고 손동작 따라 각 기능에 맞는 정보를 받습니다. 기능 구성은 크게 4가지로 지하철 노선도 열람, 역 주변 관광정보 제공, 주변 MAP 제공, 기념 사진 촬영으로 정하였습니다. 해당 프로젝트는 C#과 C ++언어를 기반으로 키넥트에서 제공하는 오픈소스 예제를 활용하여 구현하였습니다.
저는 Kinect 손동작 인식 기능을 담당했고 이전 좌표와 현재 좌표를 비교해가며 손이 움직이는 방향을 측정했습니다. 일정 프레임 이상 같은 방향으로 움직이면 손짓을 인식하여 그에 맞는 키보드 신호를 전송했고 C#, WPF 애플리케이션으로 프로그램을 작성했습니다.
C ++언어를 기반으로 키넥트에서 제공하는 오픈소스 예제를 활용하기에 구현이 어렵지 않다 생각했습니다. 하지만 막상 구현에 도입해보니 각기 다른 사람들의 광범위한 손동작 인식의 범위 설정 문제와 더불어 웹과 관련된 서적에서 원하는 자료를 찾아서 우리 실정에 알맞게 변환하여 개발하는 방식의 어려움을 겪었고 구현을 포기한 채 구술 발표만 진행하자는 의견까지 나오게 되었습니다.
개발 포기하는 것은 이른 판단이었고 부족한 지식을 채우기 위해 키넥트를 활용한 프로젝트를 진행한 선배와 연구실 내 석/박사로부터 키넥트와 Opencv를 토대로 개발한 소스와 논문을 받았습니다. 다양한 키워드를 토대로 동작 인식의 범위를 팔에서 손가락으로 좁혀가며 단위테스트를 반복하였고 각자 담당한 기능의 적합성 여부를 피드백을 받으면서 적절한 알고리즘으로 기능을 결합했습니다.
결과적으로 졸업작품 평가에서 지하철에서 무심코 방치될 키오스크의 홍보를 도울 수 있는 완성도 높은 시스템이라 평가받았습니다.
시행착오 속에서도 포기하지 않고 문제를 해결하기 위한 끈기와 질문을 서슴지 않는 적극적인 자세는 파수닷컴 QA 직무에도 크게 기여할 수 있을 것으로 생각합니다. 부정적인 분위기를 긍정적인 방향 전환하는 노력을 통해 테스트 업무의 활력을 불어넣는 인재가 되겠습니다.
(2) 사회생활
넥슨 네트웍스 인턴사원으로 넥슨 모바일 게임 신작 ‘포코롱 던전’의 3일간 사내 CBT 테스트를 담당하여 큰 이슈 없이 70%의 높은 사내 참여율을 달성하였습니다.
4명으로 구성된 팀원들과 작성된 테스트 케이스를 바탕으로 다양한 모바일 기기의 테스트를 발견된 버그를 JIRA에 올려 개발자와 소통을 통해 문제점을 개선했습니다. 주어진 진행 준비 일정이 2주 남짓한 기간이기에 주요 기능 테스트만을 선정하여 진행하였습니다.
저의 역할은 AOS와 IOS의 게임 기본 기능 테스트로서 설치부터 삭제까지 이어지는 가장 중요도 높은 기능 테스트였습니다. 게임이 실행되지 않는 것은 가장 심각도 높은 버그이므로 신중하게 테스트를 진행하여야 했지만 빠른 업무 처리에만 중점을 둔 채 의견 공유를 뒤로했고 정확성을 잃은 업무 처리를 하였습니다.
다른 팀원이 제가 진행한 테스트의 반복 테스트를 진행하였고 플레이 도중 게임이 다운되는 심각한 오류를 발견했습니다. 사수분은 불분명한 부분이 있으면 함께 소통해야 하며 빠른 업무 처리도 중요하지만, 정확성을 잃는다면 심각한 이슈로 이어진다는 조언을 해주었습니다. 이후에 매일 열리는 단체 대화 창에서 사소한 문제라도 모르는 부분이 있다면 먼저 질문하였고 팀원들은 저의 의견을 존중해주며 세심하게 도움을 주셨습니다.
이를 통해 의사소통의 중요성을 바탕으로 정확한 업무 처리 중요성을 느꼈고 제가 지닌 빠른 업무 처리 강점에 정확도 높은 업무 처리를 강점을 추가하여 한층 자신을 성장시킬 수 있는 좋은 계기가 되었습니다. 테스트는 한 치의 오류와 실수도 허용되면 안 되기에 꼼꼼하고 정확한 업무처리가 필수입니다. 불분명한 부분이 있다면 팀원들과 협업을 통해 의견을 공유하며 정확도 높은 업무 처리를 이루겠습니다.
글자수 3,439자5,823Byte