본문 바로가기

애자일 테스팅

애자일 테스터를 위한 열 가지 원칙

[출처] Agile Testing: A Practical Guide For Testers And Agile Teams by Lisa Crispin & Janet Gregory > Chapter 2

애자일 팀에 속한 모두는 테스터이다. 누구든지 테스팅 작업을 선택할 수 있다. 그렇다면 도대체 애자일 테스터의 특별한 점은 무엇일까? 내가 애자일 팀의 테스터라고 한다면, 이것은 무엇을 의미하는 것일까? 전통적인 팀의 테스터와 비교해볼 때 애자일 테스터는 어떤 다른 기술이 필요한 것일까? 그들의 일상 업무에 대한 지침은 무엇일까?

애자일 테스터란 무엇인가?

애자일 테스터를 "전문적인 테스터로 변화를 포용하고 개발자에서 관리자까지 다양한 이해관계자와의 의사소통에 능하며 요구사항을 문서화해 테스트를 사용하는 개념을 이해하고 개발을 이끄는 사람"으로 정의해 볼 수 있다. 애자일 테스터는 보통 기술적으로 뛰어나고 테스트를 자동화하기 위해 필요한 협업의 진행방법을 제시할 수 있으며 또한 풍부한 탐색적 테스팅 경험을 가진 사람이다. 이들은 고객이 원하는 것을 열정적으로 배우기 때문에 고객의 소프트웨어 요구사항에 대한 이해도가 높다.

기술은 중요한 요소다. 하지만 자세는 더욱 중요한 요소다. 업무에 대한 올바른 자세가 갖추어지지 않았다면 기술은 의미가 없다. 테스터는 보다 큰 그림을 보는 경향이 있으며, 일반적으로 좀 더 고객에 초점을 두고 어플리케이션을 사용자나 고객의 입장에서 바라본다.

애자일 테스팅을 위한 사고방식

"애자일" 팀을 가능하게 하는 것은 무엇일까? 우리가 생각하는 애자일 팀은 끊임없이 최선을 다해서 최고의 성과를 얻기 위해 매진하는 팀이다. 여기에는 수많은 훈련과 교육, 시간적인 투자, 실험적인 시도 및 협업이 요구된다. 이와 같은 애자일 팀이 누구에게나 적합한 것은 아니며, 다이내믹한 팀과 함께 계속적인 발전을 이루어 나가는 일에 관심을 가지고 있는 이들에게 이상적이라고 할 수 있다.

애자일 테스터는 품질 경찰관 역할을 한다고 생각하진 않는다. 그들은 정보를 모으고 나누며 협업을 통해 팀이 정확하게 요구사항을 표현할 수 있도록 도와주어 고객이 원하는 기능을 얻을 수 있도록 하고, 프로젝트 진행 사항에 대한 피드백을 모두에게 제공한다.

다른 팀은 어떻게 테스트하고 있는지 알아보기도 하고, 새로운 도구를 도입하고 테스트를 통해 고객 요구사항을 명세화하고 실행하고 자동화하는 팀의 업무를 향상시킬 수 있는 방법을 모색하는 등의 일들이 포함된다. 새로운 기술을 배우거나 도전하는 것을 즐기며, 테스터라고 해서 테스팅에 관련된 이슈에만 자신의 업무 범위를 한정 지으려 하지 않는다. 애자일 테스터는 개발자와 고객이 겪을 수 있는 어떠한 이슈라도 기꺼이 도움을 주려고 노력하고, 팀이 과거에 잘했던 점과 실수를 저질렀던 경험을 되짚어 볼 수 있도록 정보를 제공해 줄 수도 있다.

창조성, 열린 생각, 어떠한 임무나 역할도 받아들일 수 있는 의지, 고객 중심적 사고, 그리고 지속적으로 큰 그림을 보려는 자세 등은 애자일 테스팅 사고방식의 일부일 뿐이다. 훌륭한 테스터는 소프트웨어가 어디서 어떻게 잘못된 동작을 하게 되는지 그리고 이와 같은 오류를 추적하는 방법은 무엇인지에 대한 이해와 본능적인 감각을 가지고 있다.

일반적으로 테스터는 테스팅에 관한 경험과 전문성을 기반으로 하고 있는데, 뛰어난 애자일 테스터라면 설계 논의에 뛰어들어 보다 나은 Testability를 확보하고, 또 좀 더 우아한 솔루션을 만들기 위한 제안을 하는 데 노력을 아끼지 않아야 한다. 이와 같이 애자일 테스팅 사고방식은 결과 중심적, 예술가적, 상호 협력적, 배움에 대한 적극성, 일정에 맞춰 비즈니스 가치를 창출하려는 열정 등을 필요로 한다.

애자일 원칙과 가치의 적용

프로젝트의 성공에 있어서 개개인의 역할은 큰 부분을 차지하지만 하나의 팀을 이처럼 단순하게 개개인의 역량으로 평가할 수는 없다. 애자일 가치와 원칙들은 프로젝트에 참여한 구성원들이 어떻게 교류하고 소통하는지에 더 많은 주의를 기울인다. 실력 있는 개인이 모였지만 엉성하게 운영되는 팀보다 애자일 방식을 따르는 팀이 아마도 사기도 충만하고 더 빠르게 움직일 것이다.

애자일 테스터에게 있어 중요한 원칙들은 다음과 같다.

1. 끊임없는 피드백 제공

애자일 테스터의 가장 중요한 역할 중 하나는 PO나 고객으로 하여금 요구사항들을 예시나 테스트의 형태로 이야기할 수 있도록 도와주는 것이다. 테스터는 이와 같이 확인된 요구사항을 팀원들과 함께 실행 가능한 테스트로 만들게 된다.

2. 고객 가치 창출

애자일 개발은 고객이 가장 최근에 중요시하고 있는 기능을 소규모의 릴리즈를 통해 제공하기 위한 것이다. 보통 이 과정에서 범위가 제한된다. 고객팀은 멋진 기능을 넣고 싶은 욕심에 사로잡히기 쉽다. 애자일 테스터는 큰 그림에 집중해야 한다. 신규 기능을 생각 없이 받아들이다 보면 적시에 아무것도 완료할 수 없을지도 모른다. 주변 기능에 너무 집중한 나머지 핵심 기능을 놓친다면 비즈니스 요구에 진정으로 필요한 가치를 제공하지도 못할 것이다.

애자일 테스터가 수행하는 모든 활동들의 궁극적인 목적은 고객을 위한 최고의 제품을

3. 대면을 통한 커뮤니케이션

대면을 통한 커뮤니케이션은 다른 대안이 없다. 애자일 개발은 끊임없는 협업을 바탕으로 하고 있다. 다른 애자일 팀 구성원들과 마찬가지로 테스팅을 맡고 있는 사람들도 계속해서 고객이나 기술팀원을 찾아 토론하고 협업을 이루어 나갈 것이다. 애자일 테스터가 어떤 숨겨진 가정이나 잘못 이해되고 있는 요구사항을 발견했다면, 고객과 개발자 모두와 함께 의견을 나눌 것이다. 만약 지리적인 문제로 한 자리에 모일 수 없다 하더라도 실시간 대면 커뮤니케이션을 할 수 있는 다른 방법을 강구하는 것이 좋다.

4. 용기

처음 애자일 팀에 참여하게 되거나 팀이 처음으로 애자일 개발로 전환하는 경우라면, 두려워지거나 누군가 알려줬으면 하는 궁금점이 쌓이는 것이 당연하다. 그 짧은 시간에 각 스토리의 작업마다 테스트를 완료할 수 있는 방법이 도대체 뭘까? 어떻게 하면 테스팅과 개발을 발맞추어 진행할 수 있는가? 어느 정도의 테스트가 충분한지를 판단하는 기준은 무엇인가? 또는 당신이 기능 테스트 관리자나 품질 프로세스 관리자인데 애자일 팀에서 자신의 역할이 명확하지 않고 아무도 확답을 주지 못할 수도 있다. 애자일 테스터는 위와 같은 질문에 대한 답을 찾을 수 있는 용기를 필요로 한다.

실패에 대한 두려움도 이겨내야 하며 일찍 실패를 경험함으로써 교훈을 얻을 수 있음을 알아야 한다. 실수를 통해 교훈을 얻을 수 있도록 남의 실수를 받아들이는 용기 또한 필요하다.

도움을 요청할 때에도 용기를 필요로 한다. 특히 도움을 줄 수 있는 사람이 매우 바쁘거나 과도한 스트레스를 받고 있는 상황에서는 더더욱 그렇다. 몸에 익은 자신만의 영역에서 벗어나 프로젝트 성패를 가르는 팀 책임의식에 동참하는 데에도 용기가 필요하다. 심지어 애자일 가치와 원칙들을 기반으로 하는 팀에서도 당신이 결함이라고 생각하는 것을 지적하면서 질의하는 행동도 용기가 필요한 대목이다. 두려워하지 말자. 애자일 팀은 항상 열려있고 새로운 생각을 받아들이는데 관대하다.

5. 단순함 지향

애자일 테스터와 팀은 가능한 단순하게 소프트웨어를 구현해야 할 뿐만 아니라 고객 요구사항을 확실하게 만족하는지 확인하는 방법에 있어서도 단순한 접근법을 선택해야 한다. 단순하다고 해서 중심 주제나 스토리 분석과 적절한 아키텍처와 설계 검토에 시간을 적게 투자해야 한다는 것을 의미하는 것은 아니다. 요구사항이 다소 복잡하거나 보다 손쉽게 구현할 수 있는 솔루션이 있는 경우 여기에 매달려 시간을 보내기보다는 이런 것은 비즈니스 쪽에서 해결할 수 있도록 미루는 것이 좋다는 의미다.

간단하다는 표현이 자주 등장하는데, 절대 쉽다는 뜻은 아니다. 테스터들에게 있어서 간단하다는 것은 최소한의 도구와 기법을 활용한 "딱 정당한 정도의" 테스팅을 의미한다. 여기서 말하는 최소한의 도구는 스프레드시트나 체크리스트다. 빠른 피드백을 얻어내기 위해서는 회귀 테스트에 대한 자동화를 적용할 필요가 있다. 비즈니스 중심 테스트 자동화는 스모크 테스트 정도로 충분할 수 있다.

애플리케이션에 대한 학습과 매우 찾기 힘든 버그를 찾는데 탐색적 테스팅을 활용할 수 있는데, 제한된 일정과 목적을 확실히 해야 한다. 이와 같은 단순성은 위험, 투자 수익, 그리고 가장 취약한 부분의 개선에 계속 집중할 수 있도록 해준다.

6. 지속적인 개선 실행

업무 개선 방안을 찾기 위한 노력 역시 애자일 테스터에게 필요한 사고방식 중에 하나다. (애자일 팀 모든 구성원에게 필요한 자세이다) 테스터는 팀의 과거 업무를 돌아보고 어떤 것이 좋았고 또 어떤 부분에 개선이 필요한지를 평가하는 미팅에 참여하고 전체 팀이 검토해야 할 테스팅 이슈를 제기한다.

애자일 팀은 항상 더 나은 생산성을 내고 가치를 창출하는 데 도움이 될 수 있는 도구와 기술, 새로운 기법들을 탐색한다. 새로운 기술을 배우고 전문가로 성장해 가는일은 애자일 테스터에게 매우 중요한 부분이다.

회고하는 과정은 애자일에서 팀이 과거의 경험을 토대로 미래에 더 나은 업무 수행을 할 수 있게 해주는 핵심 요소다. 애자일 테스터는 회고 과정에서 테스팅과 관련된 이슈들을 제기하고 팀은 이슈들을 해결하기 위한 방법을 찾기 위해 토론을 진행한다. 이와 같은 과정을 통해 팀은 스스로에게 피드백을 제공하면서 지속적인 개선을 이루어 간다.

7. 변화에 대응

변경에 대한 대응은 애자일의 핵심 가치 중 하나인 동시에 테스터들에게는 가장 어려운 개념 중 하나이다. 안정성이야말로 테스터들에게는 어쩌면 가장 중요한 가치이다. 그런 의미에서 계속 변경되는 요구사항은 테스터에게는 악몽이라 할 수 있다. 팀원들이 동일한 페이스를 유지하면서 일하고 계속해서 의사소통 함으로써 이런 변경에도 충분히 대응할 수 있게 된다.

일부 애자일 팀에서는 상위 수준의 테스트 케이스, 비즈니스 만족도 조사, 예제 작성 등을 통해 다음 이터레이션을 미리 준비하기도 한다. 이런 경우 우선순위에 변경이 생기면 시간 낭비가 될 수 있다는 점을 인지해야 한다.

어떤 팀에서는 비즈니스 전문가와 함께 일하면서 한발 더 나아간 계획을 수행하는 분석가를 두기도 한다. 각 팀은 각 이터레이션의 첫날부터 미리 솔루션들에 대한 브레인스토밍을 수행하는 것과 처음부터 모두 구현하는 것 간의 균형을 맞추어야 하는 문제에 직면하게 되며, 애자일 테스터들은 이 같은 흐름을 따라가면서 팀과 협업을 통해 변경에 대응하게 된다.

8. 자기 조직화

생산 공정의 지정된 자리에서 기다리는 대신, 애자일 테스터는 프로세스의 모든 지점에서 활동을 취해야 합니다. 그들은 적극적으로 문제를 찾고 사람들을 모아 해결합니다.

애자일 테스터는 자기 조직화하는 애자일 팀의 한 부분이다. 팀 문화는 애자일 테스팅 철학을 고취시키고, 팀 구성원 모두가 지속적으로 테스팅에 대해 고려하게 되면 테스터는 완전히 새로운 관점을 경험할 수 있게 된다.

애자일 팀이 직면한 문제는 팀원 전체가 풀어야 할 과제이고, 팀이 자체적인 접근법을 고안하고 실행하는 과정에서 팀원은 테스팅에 대한 새로운 자세를 가지게 된다.

9. 사람 중심

프로젝트가 성공하기 위해서는 적절한 인력과 그들이 최선을 다할 수 있는 환경을 빼놓을 수 없다. 애자일 가치와 원칙은 개인과 팀의 성공을 목표로 만들어졌다. 애자일 팀 구성원은 안정감을 가져야 하며, 서로를 존중하고 개인의 목표의식이 확실해야 한다.

애자일 테스터들은 자신이 팀에서 가지는 고유의 가치를 확실히 인식하고, 개발팀은 특정한 테스팅 기법과 경력을 가진 사람의 도움이 팀의 성공을 위해 필요하다는 것을 알아야 한다. 예를 들어 탐색적 테스팅 전문가는 자동화된 기능 테스트에서 절대 찾아낼 수 없는 이슈를 찾아내는 데 탁월한 능력을 보여줄 수 있다. 테스팅에 대한 풍부한 경험을 가진 사람만이 할 수 있는 중요한 질문을 던지기도 한다.

10. 즐기기

모든 팀원이 유기적으로 협업을 이루고 있고 테스터가 프로젝트의 시작부터 끝까지 참여하고 있으며 비즈니스 이해관계자와 개발팀이 함께 일하고 모든 팀원들이 품질과 테스팅에 대한 책임감을 가지고 있는 팀에서 일하고 있다면, 그곳은 테스터인 당신에게는 유토피아라고 할 수 있다. 모두가 자신의 일에서 즐거움을 찾을 수 있어야 한다. 이런 측면에서 애자일 개발은 애자일 테스터로서의 열정을 불어넣어 준다.

애자일 테스터로서 우리의 직업이 만족스러운 것은 바라보는 우리의 관점과 기술이 팀 전체에 진정한 가치를 더할 수 있도록 해 주기 때문이다.

가치를 더하다

애자일 테스터는 시스템의 사용자 관점뿐만 아니라 개발팀이 직면한 기술적인 제약이나 세부 구현 측면도 고려해야 한다. 개발 초기부터 고객과 개발자 모두에게 자주 질문을 던져 올바른 테스트가 수행될 수 있도록 하여 고객이 만족하는 결과물을 얻을 수 있도록 한다.

애자일 팀에서 각 역할들 간의 구분은 명확하지 않다. 테스터가 수행하는 어떤 활동에 있어서 다른 팀원이 더 유능할 수 있다. 예를 들어 분석가와 프로그래머들 역시 비즈니스 측면의 테스트를 작성한다. 모든 테스팅 활동이 잘 수행되는 경우 애자일 팀에서 테스팅만 수행하는 인력은 필요하지 않을 수도 있다. 그러나 전문적인 테스터의 기법이 팀의 이익에 공헌하는 경우는 수없이 많다.


이러한 원칙을 통해 이상적인 애자일 테스터의 특성을 다음과 같이 꼽아 볼 수 있을 것 같다.

  • 예리한 의사소통 능력
  • 다양한 기술 기반 스킬셋
  • 다양한 테스트 도구 및 테스트 자동화에 대한 지식
  • 다른 사람들과 쉽게 협업할 수 있는 능력
  • 변화를 수용하려는 의지
  • DevOps에서 비즈니스 분석가에 이르기까지 모든 사람과 협력할 수 있는 능력
  • 탐색적 테스트에 대한 폭넓은 경험
  • 결과 지향적인 성격
  • 비즈니스에 가치를 전달하고자 하는 열정