티스토리 뷰
1. 테스트에서 필요한 기술
일반적으로 기술(skill)이란 지식, 연습, 적성에서 비롯되어 어떤 일을 잘 수행할 수 있는 능력을 말한다. 좋은 테스터로써 업무를 수행하기 위해서는 몇 가지 필수적인 기술을 갖추고 있어야 한다. 효과적인 팀 플레이어로써 어떠한 테스트 독립성 수준에서도 그에 최적화된 테스트를 수행할 수 있어야 한다.
*참고: 현업에서의 테스트 독립성은, 테스팅 조직 차원에서는 테스팅 권한에 대한 수준일 수 있으며, 프로젝트 차원에서는 테스트 팀이 얼마나 개발 이해당사자와 분리/독립된 환경인지에 따라 다르다.
1-1. 테스트에 필요한 일반적인 기술
테스터에게 필요한 일반적인 기술은 다음과 같다.
- 테스트에 대한 지식: 테스트 기법을 사용하여 테스트의 효과를 높인다.
- 철저함, 신중함, 호기심, 세부 사항에 대한 주의, 체계적 접근: 특히 찾기 어려운 결함을 식별하기 위해 필요하다.
- 좋은 의사소통 기술, 적극적 경청, 팀 플레이어 능력: 이해관계자와 효과적으로 상호작용하고 정보를 전달하며, 결함을 보고하고 논의하기 위해 필요하다.
- 분석적 사고, 비판적 사고, 창의력: 테스트의 효과를 높이기 위해 필요하다.
- 기술적 지식: 적절한 테스트 도구를 사용하여 테스트 효율성을 높인다.
- 도메인 지식: 최종 사용자나 비즈니스 대표와의 의사소통과 이해를 위해 필요하다.
테스터는 종종 나쁜 소식을 전달하는 역할을 한다. 인간은 나쁜 소식을 전달하는 사람을 비난하는 경향이 있으므로, 테스터에게 의사소통 기술은 매우 중요하다. 테스트 결과를 전달하는 것은 제품과 작성자에 대한 비판으로 여겨질 수 있다. 확인 편향으로 인해 기존 신념과 일치하지 않는 정보를 받아들이기 어려울 수 있다. 일부 사람들은 테스트를 파괴적인 활동으로 인식할 수 있지만, 테스트는 프로젝트 성공과 제품 품질에 크게 기여한다. 이러한 인식을 개선하기 위해 결함 및 실패에 대한 정보는 건설적으로 전달해야 한다.
*참고: 최근 소프트웨어 테스트는 기술의 발전과 함께 테스터의 역할도 점점 다양해지고 있다.
- AI와 머신러닝 기반 테스트 도구
현대적인 테스트 환경에서는 AI와 머신러닝 기술을 활용해 테스트를 자동화하거나 결함을 예측하는 도구가 점점 보편화되고 있다. 이러한 도구를 통해 테스터는 테스트 범위를 확장하고, 테스트 효율성을 극대화할 수 있다. 예를 들어, 테스트 우선순위를 자동으로 정하거나 사용자 행동 데이터를 분석하여 결함 발생 가능성이 높은 영역을 식별하는 것이 가능하다. - CI/CD와 DevOps 환경에서의 테스트
최근 많은 개발 팀이 지속적 통합(CI) 및 지속적 배포(CD) 프로세스를 도입하고 있다. 이러한 환경에서는 테스트 자동화가 필수적이며, 테스터는 Jenkins, GitLab CI/CD 등과 같은 도구를 활용해 테스트 파이프라인을 구축하고 관리하는 기술을 익혀야 한다. - 보안 테스트의 중요성
개인정보 보호와 데이터 유출 방지를 위해 보안 테스트는 필수적인 영역이 되었다. 테스터는 OWASP(오픈 웹 애플리케이션 보안 프로젝트)와 같은 보안 프레임워크를 활용하여 애플리케이션의 취약점을 파악하고, 이를 개선하기 위한 피드백을 제공해야 한다.
2. 전체 팀 접근법
테스터에게 중요한 기술 중 하나는 팀 맥락에서 효과적으로 작업하고 팀 목표에 긍정적으로 기여할 수 있는 능력이다. 전체 팀 접근법(Whole Team Approach)은 극단적 프로그래밍(Extreme Programming)에서 비롯된 실천 방법으로, 이 기술을 기반으로 한다.
전체 팀 접근법에서는 필요한 지식과 기술을 가진 모든 팀원이 모든 작업을 수행할 수 있으며, 모두가 품질에 책임을 진다. 팀원들은 물리적 또는 가상 공간에서 동일한 작업 공간을 공유하며, 이는 의사소통과 상호작용을 촉진한다. 이 접근법은 팀 동력을 개선하고 팀 내 의사소통과 협업을 강화하며, 다양한 기술 집합을 프로젝트에 활용함으로써 시너지를 창출한다.
테스터는 다른 팀원들과 긴밀히 협력하여 원하는 품질 수준을 달성한다. 여기에는 비즈니스 대표들과 협력하여 적합한 수용 테스트를 만들고, 개발자들과 협력하여 테스트 전략과 테스트 자동화 접근 방식을 결정하는 작업이 포함된다. 테스터는 이러한 과정을 통해 테스트 지식을 다른 팀원들에게 전수하고 제품 개발에 영향을 미칠 수 있다.
그러나 상황에 따라 전체 팀 접근법이 항상 적합하지 않을 수 있다. 예를 들어, 안전이 중요한 상황(즉, 소프트웨어의 신뢰성이 확실하게 보장되어야 하는 상황)에서는 높은 수준의 테스트 독립성이 필요할 수 있다.(이를 확실하게 보장할 수 있는 독립된 팀/담당자가 필요하다.)
전체 팀 접근법은 팀원 간의 협업을 통해 품질을 극대화하는 데 중점을 둔다.
- 전체 팀 접근법의 구체적인 사례
전체 팀 접근법은 실제로 애자일 환경에서 자주 활용된다. 예를 들어, 스크럼 미팅에서는 테스터가 요구 사항을 분석하고 잠재적인 리스크를 식별하며, 이를 팀과 공유한다. 또한, 테스터는 개발자가 작성한 단위 테스트와 자동화된 테스트 스크립트를 검토하여 전체적인 테스트 커버리지를 향상시킨다. - 테스터의 가교 역할
테스터는 고객과 개발 팀 사이에서 가교 역할을 한다. 고객의 요구를 정확히 분석하고 이를 개발 팀에 전달하며, 테스트를 통해 최종 제품이 고객의 기대에 부합하는지 확인한다. 이 과정에서 사용자 스토리를 기반으로 테스트를 설계하고 실행함으로써 제품 품질을 보증할 수 있다.
3. 테스트의 독립성
테스터가 테스트 독립성을 어느 정도 확보하면, 작성자와 테스터 간의 인지적 편향 차이로 인해 결함을 더 효과적으로 발견할 수 있다. 예를 들어 코드를 작성한 사람의 시각과 이를 테스팅하는 담당자의 시각이 다르기 때문에 미처 생각하지 못했던 부분을 테스터가 발견할 수 있는 것이다. 그러나 독립성은 궁극적으로는 친숙함을 완벽히 대체할 수는 없다는 사실 또한 이해해야 한다. 무슨 말이냐면, 작업물에 대해 잘 알고있고 가장 친숙한 사람이 그렇지 않은 사람보다 결함을 효과적으로/정확하게 인지할 가능성이 높다는 것이다. 예를 들어 개발자는 자신의 코드를 잘 알기 때문에, 많은 결함을 누구보다도 효율적으로/정확하게 발견할 수 있다.
작업 산출물은 작성자 자신(독립성 없음), 작성자와 같은 팀의 동료(일부 독립), 작성자 팀 외부의 조직 내 테스터(높은 독립성), 또는 외부 조직의 테스터(매우 높은 독립성)에 의해 테스트될 수 있다. 대부분의 프로젝트에서는 여러 수준의 독립성을 조합하여 테스트를 수행하는 것이 가장 적합하다(예: 개발자가 컴포넌트 및 컴포넌트 통합 테스트 수행, 테스트 팀이 시스템 및 시스템 통합 테스트 수행, 비즈니스 대표가 수용 테스트 수행).
테스트 독립성의 주요 이점은 독립적인 테스터가 다른 배경, 기술적 관점, 편향으로 인해 개발자와는 다른 유형의 실패와 결함을 인식할 가능성이 높다는 것이다. 또한 독립적인 테스터는 시스템 사양 및 구현 과정에서 이해관계자가 가진 가정을 검증, 도전, 또는 반증할 수 있다.
그러나 몇 가지 단점도 있다. 독립적인 테스터가 개발 팀과 분리되면 협업 부족, 의사소통 문제, 또는 개발 팀과의 대립 관계로 이어질 수 있다. 개발자는 품질에 대한 책임감을 잃을 수 있으며, 독립적인 테스터가 병목 현상으로 간주되거나 릴리스 지연에 대한 비난을 받을 수 있다. 협업과 및 균형도 중요하다.
- 독립성과 협업 간의 균형
독립성을 유지하면서도 협업을 강화하기 위해 테스트 전략 회의(Test Strategy Meeting)를 정례화하여 테스트 프로세스의 목표를 명확히 설정하고, 개발 팀과의 의견 교환을 활성화해야 한다. 이러한 과정은 테스트 과정에서 발생할 수 있는 오해나 갈등을 줄이고, 더 나은 품질을 위한 기반을 마련한다. - 크로스 펑셔널 팀의 활용
독립성과 협업을 조화롭게 유지하기 위해 크로스 펑셔널 팀을 구성할 수 있다. 이 팀은 개발자, 테스터, 디자이너가 포함되어 있으며, 팀원들이 공동의 목표를 향해 작업함으로써 각기 다른 관점에서 발생할 수 있는 문제를 조기에 해결할 수 있다.
'소프트웨어 테스팅' 카테고리의 다른 글
피드백과 리뷰 프로세스 (0) | 2025.01.13 |
---|---|
정적 테스트 (0) | 2025.01.12 |
유지보수 테스트 (0) | 2025.01.12 |
테스트 레벨과 테스트 유형 (0) | 2025.01.12 |
소프트웨어 개발 수명 주기 전반에서의 테스트 (0) | 2025.01.12 |
테스트 활동과 테스트웨어, 테스터의 역할 (0) | 2025.01.12 |
소프트웨어 테스팅이란 무엇인가? 왜 필요한가? (0) | 2025.01.12 |
소프트웨어 테스팅 ISTQB Foundation Level 자격에 대한 설명 (0) | 2025.01.12 |