본문 바로가기

QA

[번역] 소프트웨어 테스팅은 게임이다

 

지난해 11월에 번역해 포스팅한 조나단 콜의 ‘The Software Development Game’에 이어, ‘Software Testing is a Game’을 번역해 올립니다.

 

게임과 게이미피케이션이라는 관점에서 소프트웨어 개발에 접근했던 전작과 마찬가지로, 이번에는 소프트웨어 테스팅이라는 영역을 어떻게 게임이라는 관점에서 파악하고 접근할 수 있는지는 보여주고 있습니다. 소프트웨어 테스팅에 대한 색다른 접근법이기도 하지만, 게임QA라면 또한 누구나 한 번쯤은 생각해 보았을만한 주제인지라 쉽게 공감하실 수 있으리라 생각됩니다.

번역 및 포스팅에 대해서는 저자의 승인을 받았습니다.

 

원글 출처: http://www.kohl.ca/2012/software-testing-is-a-game/

 

Software Testing is a Game

Jonathan Kohl

 

데이빗(David McFadzean)과 나는 “Better Software” 9/10월호에 소프트웨어 개발 게임(The Software Development Game)”이라는 글을 발표했다. 우리는 이 글을 통해 어떻게 소프트웨어 개발 과정에 게임과 유사한 기법을 적용하는 지에 대해 설명했다. 이 일이 있고난 후, 소프트웨어 테스팅에 관련해서도 게임과 유사한 기법을 적용할 수 있는지에 대해 글을 써달라는 요청을 여러번 받게 되었다. 이 글을 통해 그 방법을 자세하게 알아보기로 하겠다.

 

, 내가 생각하는 바는 이렇다.

 

어떻게 소프트웨어 테스팅이 게임과 같을 수 있을까? 소프트웨어 개발 자체를 게임과 같다고 간주하거나, 혹은 서로 다른 사람들이 서로 다른 동기와 목표를 가지고 협동하거나 경쟁하는 상황이라고 생각한다면, 소프트웨어 테스팅은 확장된 소프트웨어 개발 게임(SDG; Software Development Game)이라는 범주 안에 속하며 따라서 게임과 같다고 생각할 수 있을 것이다. SDG가 정책과 사례, 그리고 프로세스와 툴, 기술적인 면을 이상적으로 혼합하는 방법에 초점을 두고 있다면, 소프트웨어 테스팅은 게임이라는 큰 전제 하에서 크게 두 가지의 형태가 앞서거니 뒤서거니 하는 형태를 띄게 된다. 이 두 가지 서로 다른 게임 스타일은 바로 스크립트 테스팅과 탐색적 테스팅이다.

 

스크립트 테스팅 게임에서는 테스트 계획과 테스트 케이스 관리 시스템이 가장 많은 영향을 미친다. 우리는 이러한 관리 시스템을 통해 테스트 스크립트를 반복하고 그 결과를 패스 혹은 패일로 처리함으로써 보상을 받게된다. 또한 우리는 테스트 케이스 관리 시스템에 저장되어 있는 테스트의 커버리지를 통해 정량화될 수 있다. 테스트 케이스 관리 시스템에 미리 설정되어 있는 테스트 커버리지에 얼마나 가깝게 테스트를 수행했느냐는 모든 사람들에게 중요한 문제 중의 하나다. 이는 늘상 반복되는 일임과 동시에, 환경의 제약을 많이 받는 일중의 하나다. 테스트 케이스 관리 시스템 상에서 높은 커버리지를 달성해야 한다는 목표와 어긋나는 일들은 종종 무시되거나 아예 시도조차 되지 못하기도 한다. 이런 경우, 시스템 상의 수치가 가장 중요한 목표가 되어버리고 아무리 더 나은 테스팅이라고 하더라도 이 목표에 어긋나는 것이라면 무시당하기 일쑤가 되어버린다. “당신같은 테스터들은 얼마나 많이 시스템에 있는 테스트 케이스를 수행했는지, 그리고 그 결과에 따라 패스나 패일을 표시했는지에 따라 보상을 받게될 것이다. 그러니 이런 일을 다 한 다음에도 시간이 남으면, 그때에나 다음에 뭘할까 생각해봐라.”

 

탐색적 테스팅 게임에서는 테스터가 어느 정도 자기 일에 대한 결정 권한을 가진다. 사실 가장 최근의 정의는 오히려 이 부분을 강조하고 있다. “개인의 자유와 책임을 강조하는 소프트웨어 테스팅 스타일. 프로젝트 전체를 통해 테스트와 관련된 학습, 테스트 디자인, 테스트 실행 그리고 테스트 결과 분석을 상호 보완적으로 수행함으로써 작업의 품질을 지속적으로 향상시킬 수 있게 한다라고 정의하고 있는 것이다.  

 

탐색적 테스팅을 수행하는 게임 플레이어는 그들이 수행한 작업의 품질과 접근법, 그리고 그들이 제공하는 정보의 품질에 따라 보상을 받는다. 탐색적 테스팅은 스크립트 테스팅에 비해 유연하고 상대적이며, 질적인 정보를 중시하는 경향으로 인해 숫자[1]를 중요하게 보는 생각들은 때때로 폄하되고는 한다. 만약 테스터가 업무를 수행하는 도중에, 어떤 합리적인 이유로 일의 방향을 바꾸고 이것이 합당한 조치였다는 것을 논리적으로 입증할 수 있다면, 이러한 변경에 대해 충분한 보상을 받을 수 있을 것이다. 이러한 변경이 제품 자체에도 도움이 되고 자신이 보유한 테스트 기법을 향상시키는 데에도 도움이 되기 때문이다. 커버리지는 테스팅에서 무엇보다 중요한 요소 중의 하나이다. 테스터는 탐색적 테스팅을 사용함으로써 기존의 리그레션 테스트를 얼마나 많이 반복적으로 수행했느냐를 통해 커버리지를 측정하는 방법을 벗어나, 커버리지를 확보하는 다양한 기법을 사용해 볼 기회를 가지게 되며 때로는 중요한 기법들을 새로 발견할 수도 있다.

 

탐색적 테스팅을 생각할 때마다, 룰을 변경하는 것이 의미있는 턴으로 간주되는 게임인 노믹(Nomic)[2]을 떠올리곤 한다. 노믹처럼 여러 명이 무언가를 변경하는 대신 테스터들은 그들 스스로 그들의 코스를 자유롭게 변경시킬 수 있다. 이를 통해 탁월한 업무 성과를 창출함으로써, 팀 전체의 성과와 기법을 향상시키는데도 도움을 주어야 한다. “테스터들은 훌륭한 테스팅과 중요한 문제를 찾아내고 보고하는 스킬과 능력으로 보상을 받는다. 우리는 테스터들이 정보를 얻기 위해 한 번의 테스트를 수행하던, 혹은 수 천번의 테스트를 수행하든 상관하지 않는다. 당신들이 제공하는 정보로 인해 제품의 품질과 가치가 얼마나 향상될 수 있느냐가 의미있는 것이다”. 탐색적 테스터들은 팀 전체가 제품을 통해 어떤 가치를 창조할 수 있도록 그들이 처한 상황을 개선하고 필요한 정보를 제공해 주어야 한다. 또한 대부분의 경우 동료들로부터 지지와 존경을 얻어내는 것도 필수적이다.

 

자 이제 게임 플레이를 생각해보자. 스크립트 테스팅과 탐색적 테스팅은 모두 어느 정도 반복적인 작업을 포함하고 있다. ‘게이미피케이션이라는 개념을 활용해 이러한 행위를 연구함으로써, 어떻게 게임이라는 컨셉을 적용해 우리가 수행하는 작업을 더 발전시킬 수 있는지에 대해 답을 얻을 수 있다. 우리가 연구해 볼 대상 중의 하나는 바로 비디오 게임이다. 우리가 MMORPG 게임을 플레이하고 있다고 가정해보자. 어떤 플레이어들은 개인의 퀘스트 혹은 파티가 공유하는 퀘스트와 상관없이 반복적인 작업을 수행하는 것을 좋아할 것이다. 그들의 캐릭터에 맞는 새로운 의상이나 액세서리를 얻기 위해 단순하고 반복적인 사냥을 좋아하는 플레이어들도 있다.

 

또 어떤 플레이어들은 퀘스트를 달성하는 것에 집중한다. 그들은 개인에게 주어진 미션을 달성해 포인트를 획득하는 것과, 특정 퀘스트를 완료해 보상을 얻고 이 과정에서 동료들과 협동하는 것을 배워 좀 더 많은 것을 달성하려고 한다. 어떤 플레이어 유형은 반복되는 개별 업무를 통해 보상을 받으려하고, 또 다른 사람들은 성과를 만들어내거나 혹은 스스로나 다른 사람들의 가치를 탐구하는 것에서 보상을 받으려 한다. 이 두 가지 타입이 혼재되면, 거의 모든 플레이어들이 그렇듯이 캐릭터의 외양을 변경하는 서브미션을 수행하면서 동시에 더 어려운 퀘스트를 수행하거나 다른 업적 달성을 위해 장비를 강화하고 골드를 모으는 것이다. 상대적으로 덜 도전적인 사람들과 캐릭터의 외양에 집착하는 사람들 모두 이러한 퀘스트에 참여할 수 있게 되는 것이다.

 

만약 당신이 이런 게임을 하면서 협력 플레이를 하려고 한다면, 당신과 다른 시각을 가지고 있는 사람들도 많다는 사실을 알게 될 것이다. 만약 팀 구성원이 팀 전체의 업무에 도움을 주는 것보다 그가 가진 캐릭터의 능력치를 올리는 것에만 관심을 보인다면 이는 실망스러운 일이 아닐 수 없다. 예를 들어, 만약 당신이 레이드에 참가하고 있을 때, 한 명 혹은 그 이상의 레이드 구성원들이 자신의 체력을 채우거나 떨어진 금화를 줍기 위해 계속 멈춘다면, 레이드의 속도가 느려질 뿐만 아니라 어떤 경우는 다시 레이드를 구성해야 하는 일도 생길 것이다. 게임에서 눈에 보이는 가치와 보상 구조가 조화롭지 않게 설계되었기 때문에 함께 레이드를 진행하기가 힘든 것이다. 개인적인 스탯과 장비에 집착하는 사람들이 있는 반면, 자신이 보유한 캐릭터의 속성과는 관계없이 동료들과 레이드 전체의 목적을 우선시 하는 사람들도 있는 것이다.

 

소프트웨어 테스팅 게임에서, 엄격하고 제한적이며 스크립트 기반의 게임을 하는 테스터들에게 보상을 주는 시스템에서라면 탐색적 테스팅 게임을 수행하기 힘들 것이다. 정반대로, 테스트 케이스 관리 시스템에서 요구하는 커버리지를 얼마나 달성했느냐로 보상을 받는데 익숙한 테스터들에게, 그들이 제공한 정보와 테스팅 스킬의 품질로 보상을 받게 한다면 거의 어떤 보상도 받지 못할 것이다. 테스팅에 대한 전통적인 개념과 일반적인 사례들은 테스팅을 단순히 테스트 케이스 관리 시스템이 중심이 되는 게임의 한 종류로 보는 경향이 있다. 이런 부류의 사람들이 깨닫지 못한 것은 테스팅이라는 게임을 플레이 하는 데에는 단 한 가지가 아닌 여러가지 다양한 방법이 존재한다는 것이다. 나는 게이밍이라는 렌즈를 통해 다른 방법들을 좀 더 자세하게 살펴보았으면 하는 바램이 있다.

 

테스터와 테스트 매니저들은 스크립트 테스팅과 테스트 케이스 관리 도구 외에도 더 많은 것들이 세상에 존재한다는 것을 알 필요가 있다. 스크립트 테스팅과 테스트 케이스 관리 도구는 모바일과 웹을 비롯한 새로운 분야가 성장하면서 야기된 새로운 기술과 방법론 앞에서 다시 전면에 나서려고 노력하는 고전적인 게임(최소한 1970년대부터 이어져온)의 일부일 뿐이다. 현대적인 테스터들은 우리를 둘러싼 세상에 걸맞는 게임을 플레이하려고 노력한다. 팀원들이 시대에 걸맞는 게임을 플레이하고 있는지, 아니면 지금까지 가장 익숙했던 게임을 플레이 하고 있는지를 관찰하고 그에 따른 보상을 주고 있는가? 비디오 게임의 주인공이 스탯을 높이고 액세서리를 모으는 것처럼, 당신은 다른 팀원들의 목표를 방해하면서까지 이에 집착하고 있는 것은 아닌가? 아니면 적합한 측정과 보상을 통해 전체 소프트웨어 개발 팀이 더 나은 제품을 만들 수 있도록 도와주고 있는가?

 

추후에 게이미피케이션과 게임 이론, 그리고 게임이라는 관점을 더 깊이 분석해서 소프트웨어 테스팅을 탐색할 것이다. 지켜봐주시길 바란다.

 



[1] 역자 주: Metrics. 앞서 말한 스크립트 기반 테스팅에서 중요시되는 얼마나 많은 테스트 케이스를 수행했는지, 얼마나 많은 테스트 케이스의 결과가 패스와 패일로 구분되었는지를 의미한다.

[2] http://en.wikipedia.org/wiki/Nomic