ISTQB 1장을 보면 "일반적으로 테스팅을 소프트웨어를 실행하면서 테스트를 수행하는 것으로만 인식하는 경우가 많다”라고 되어 있는데, 이 글로만 보면 일반적인 경우에는 사람들이 '테스팅 활동을 한정적으로 인식하고 있다'고 표현하는 걸로 보입니다.
그런데 ISTQB의 뒤 쪽 내용을 보아도 딱히 테스트가 무엇인지에 대한 설명보다는 너무 일반적인 내용들인거 같아요. 이 글이 의미하는 실무에서 쓰이는 “소프트웨어 테스팅 활동이란?” 무엇일까요?
ISTQB Syllabus 2007
일반적인 경우에서 '소프트웨어에서의 테스트'란, 프로그래밍이 완료된 후 결과물로서의 '프로그래밍 산출물에 대한 전체적인 검수'를 의미합니다. 즉, 질문에서와 같이 '소프트웨어를 실행하면서 수행하는 검증 활동'으로서의 테스트 활동이 가장 보편적인 테스팅 활동에 대한 이해입니다.
사실 소프트웨어 테스팅을 이야기 하기 위해서는 단순히 "소프트웨어에서 테스트란 무엇인가"를 이야기함에 더해 테스트의 종류, 방법론, 단계 등 다양한 이야기를 해야 합니다. 그래야만 왜 '왜 소프트웨어 테스트 활동에 대한 오해가 발생하는가'에 대해서 이야기를 나눌 수 있기 때문입니다.
그러나 필자들은 이런 이야기들을 펼쳐 놓기엔 본 글에 필자들의 주관적 견해가 많이 녹아 들어 자칫 잘 못하면 객관성을 잃게 될까 염려하였습니다. 이에 따라 이번 질문에는 객관적인 논점을 벗어나지 않도록 ISO/IEC/IEEE 24765:2017 - Systems and Software Engineering 표준과 위키피디아(Wikipedia)에 서술된 내용을 기반으로 설명 드리려합니다. 필자들의 개인 의견은 향후 정리되는 대로 「STEEG 개인 의견」에 올리겠습니다.
ISO/IEC/IEEE 24765:2017의 용어 모음집에서는 '테스트' 용어를 아래와 같이 소개하고 있습니다.
위키피디아에서는 소프트웨어 테스트에 대해 아래와 같이 소개하고 있습니다.
소프트웨어 테스트에 대한 오해를 이제 좀 풀어봐야 겠습니다. 일반적으로 우리가 말하는 「테스트」는 '행위'로서의 활동이며, 어느 것을 특정하는 '명사/대명사'로 사용하지는 않습니다. 여기에서 발생하는 오해가 꽤 큽니다.
우리가 흔히 사용하는 '테스트라는 행위'에 대해 설명하자면, 좁은 의미로서는 "Test Case를 수행 또는 프로시저를 수행"함을 의미합니다. 그러나 또한 '특정 기준' 혹은 '기획된 계획'을 가지고 제품의 어떠한 평가를 전체적으로 하는 모든 활동들을 일컬어 '테스트'라고도 할 수 있습니다. 그러므로, "소프트웨어 테스팅의 활동 전부"라는 것은 프로젝트 처음 시작부터 종료까지 소프트웨어 테스팅 활동 전체를 의미합니다.
우리가 오해를 벗어나 이해해야 하는 「테스팅 활동」이라는 행위는 특정 시점의 활동을 의미하기보다 아래의 활동들을 모두 수행하는 일련의 행위 모음을 의미합니다.
다시 한 번 강조하지만 우리는 흔히 "소프트웨어 테스팅 활동을 '누구나 할 수 있는 아주 쉬운 행위'로 오해"하는 인식이 널리 퍼져있습니다. 왜냐하면 "테스트를 하다"라는 말을 하다보니 위에 나열된 활동 중 "5번. 테스트 수행만을 테스트로 인식하는 경향"이 있기 때문입니다. 하지만, 실제 테스트 활동이라 함은 위 활동 전체를 수행함을 의미하므로 '행위'와 '절차' 모두를 포함하여 표현하고 이해하여야 합니다.
테스팅을 '테스트 수행'으로만 인식하면 전체 테스트 활동 내에서 놓치는 내용이 많이 발생하게 됩니다. 소프트웨어 테스트 역시 전체 활동에 대한 생명주기(Software Testing Life-cycle)를 가지고 있기 때문이며, 이 생명주기 활동에서 앞단의 활동에 문제가 발생하면 이후의 활동들 전체가 아주 어렵게 작동하게 됩니다. 이는 굳이 소프트웨어에서만이 아니라, 세상 어떤 일이든, 그 일을 전문적으로 하려고 하면 프로세스 상에서 아주 쉽게 관찰되는 현상이므로 필자들이 따로 긴 이야기를 하지는 않겠습니다.
굳이 하나를 첨언하자면, 사실 이런 현상은 테스트 자동화 도입 시에도 같습니다. 일반적인 관점에서 "테스트 자동화로 테스트를 수행하면 이런 일련의 과정을 거치지 않아도 된다"는 착각들이 널리 퍼져 있습니다. 전문적인 테스트 자동화를 위한 기고문인 Test Automation : Not just for test execition을 읽어 보십시오. 굉장히 당연한 이야기지만, 꽤나 재미있게 서술한 저널 기고문입니다.
소프트웨어 테스팅에 대한 이야기를 제대로 하기 시작하면 꽤나 길어지기 때문에 이 번 글에서는 이 정도로 마무리 하려 합니다. 이 외에도 본 블로그의 다른 필자가 작성하신 "테스팅은 디버깅과 근본적으로 구분되는 개념이다 라는 말은 굉장히 당연한거 같은데 굳이 언급한 이유가 있나요?" 포스팅에서 또 다른 정보를 얻어 보세요.
• 검토한이 : 현의노래, 아이티마니, Bykj, 품생품사
※ STEEG 전문가들의 개인 의견은 각 전문가 개인이 경험한 경력에 따른 주관적 견해입니다. 이런 개인 의견들의 경우는 그룹 전체의 의견을 대표하지 않음을 알립니다. |
(본 글에 대한 전문가의 별도 포스팅이 존재하지 않습니다.)
※ 아래는 필자들이 선정한 관련 외부 자료입니다. 아래 자료들은 필자들이 작성한 본문 의견과 다를 수 있으며, 필자들과 관련되지 않았을 수 있습니다. |