비슷한 글들로 유입되는 방문자가 많아서, 관련 글들 묶어둡니다.QM, QE, QA, QC, 그리고 Test - http://xelion.tistory.com/1202QA는 개발자인가요? - http://xelion.tistory.com/1243테스트 용어 재정립에 대한 이야기 - http://xelion.tistory.com/1280알려드립니다. 오래된 글들은1) 현재 제 생각과 다를 수도 있고,2) 그 당시 제가 잘 못 알고 있었을 수 있으나 수정할 생각은 없으며,3) 예전 글들은 당시의 언어로 쓰여져지금 읽기에는 편하지 않으실 수 있습니다.
몇 일 전, 오랜만에 감사 댓글 남겨주신 분도 있고 해서, 기념으로(?) 예전부터 마음에 걸리던 용어 사용 중 하나에 대한 이야기를 객관적 사실들로 엮어서 글을 써 보았습니다. 이런 객관적인 견지를 이용한 종류의 글을 자주 쓰지 않는 이유 중, 가장 큰 이유는 "귀찮아서" 입니다. 그리고 두 번 째 이유는, '사실을 빌미로' 개인적인 생각을 섞어서 마치 종교의 교리를 전파하는 종교적인 방식으로 전파되는 소프트웨어 개발방법론 전파 방식에 염증을 느끼기 때문입니다. 이에 대한 긴 이야기는 언제 내킬 때 해 보도록 하지요.
어쨌든, 오늘은 2012년 관점에서 "소프트웨어 테스트"라는 정의가 이제는 각 역할에 맞게 분화되어야 하지 않는 가에 대한 이야기를 해 보려 합니다. 업무로서의 테스트는 무엇일까요? 검증은요? 감리는 뭐고 감사는 뭘까요? QA니 QC니 하는 것들 대체 다 뭘까요? 이런 것들을 정리하려고 애쓰는 글을 남들에 비해서는 자주 올리는 편인데, 또 그런 글 중 하나입니다. 오늘은 아주 조금 더 객관적이지요.
소프트웨어 테스트는 제품이나 서비스의 품질에 대한 정보를 이해관계자에게 제공하기 위해 실시되는 시험 조사활동으로, [Wikipedia, Software Testing] 전 세계적으로 매우 빠른 성장을 나타내고 있는 분야입니다. 소프트웨어 테스트는 누구나 할 수 있는 일이라는 세간의 믿음과 다르게, 소프트웨어 테스트 활동은 소프트웨어 개발 생명주기에서 넓은 범위에서 지속적으로 이루어지는 활동이라는 점 때문에 매우 복잡하고 어렵다는 특징을 가지고 있는 분야입니다. [W. Hetzel, The complete guide to software testing, 1998] 또한, 소프트웨어 테스트 활동의 어려움은 현재 프로그래밍의 근간을 이루고 있는 객체지향(Object Oriented) 모델링 방법의 복잡성 때문에 발생합니다. 객체지향 모델링 개발 방법론은 프로그래밍에 획기적인 전환점을 마련해 준 동시에, 매우 까다로운 테스트의 복잡도를 야기시켰습니다. [R. V. Binder, Testing Object-Oriented System Model, patterns and tools, 2000]
어떠신가요, 테스트라는 활동이 뭔가 좀 어렵고 고귀해 보이지요. 하지만 이런 외국의 이야기들은 소프트웨어 테스트 활동을 debugging 활동으로 보는 것이 아니라 evaluation이나 prevention 활동으로 보기 때문에 나오는 이야기들입니다. 그리고 바로 위의 이야기를 기반으로 하여, 한국 소프트웨어 품질의 현재 문제점과 소프트웨어 테스팅 분야가 나아가야 할 방향에 대해 이야기해야 합니다. 하지만 그런 고차원적인 컨셉을 제안하기 전에, 기본적으로 우리는 "테스트(Test)"라는 용어를 잘 못 사용하고 있으므로 이 부분에 대해 먼저 짚어보아야 합니다.
지식경제부 산하, 정보통신산업진흥원 소속 소프트웨어공학센터가 2012년에 발표한 『SW테스팅 동향브리핑에 대한 보고서』에 따르면, 기업 컨설팅 전문업체인 Pierre Audoin Consultants(PAC)는 전세계적으로 많은 기업들이 애플리케이션 테스트 및 품질 보증에 연간 500억 달러 이상을 투자한다고 발표하였고, IDC, Forrester와 같은 시장조사기관도 테스트 서비스 시장이 향후 5년간 연평균 15.4% 성장세를 나타내면서 2015년에는 193억 달러 규모에 이를 것이라고 전망하였으며, 인도소프트웨어개발자협회인 NASSCOM은 테스트 서비스 시장 규모가 2010년 35억 달러에 달했으며, 2020년까지 연평균 17%의 성장률을 나타낼 것이라 전망하였습니다. [소프트웨어공학센터, SW테스팅 동향브리핑에 대한 보고서, 2012]
이러한 소프트웨어 테스트 역량은 국내가 해외의 경우보다 낮은 편으로써, 소프트웨어공학센터에서 2012년 발표한 소프트웨어 공학백서에 따르면, 한국은 개발단계의 테스트 활동으로 식별하는 결함이 14% 정도로 외국의 24%에 비해 10%가량 낮은 것으로 나타났습니다. [소프트웨어산업진흥원, SW공학백서, 2012] 외국과 국내의 테스트 활동 결과가 차이 나는 이유는 한국에서는 소프트웨어 테스트 활동을 시스템 통합 이후에 실행하는 프로세스라는 인식이 굳어져 있기 때문이며, 이런 인식을 해결하기 위한 여러 가지 접근이 소프트웨어공학센터 내에서 수행되고 있습니다. 소프트웨어 테스트 활동은 사실 품질 비용으로 이야기되어야 하며, 내부실패 비용, 외부실패 비용 등을 역추적하여 문서 리뷰, 프로세스 개선 등의 활동을 진행해야 합니다. 이를 통해 소프트웨어 개발 생명 주기 내에서 조직이 전반적으로 발전해 나아갈 수 있도록 하는 프로세스를 '소프트웨어 테스팅'이라고 합니다. [소프트웨어 테스팅 제2판]
대한민국에서의 QA = 테스트, 확인, 검토, 검사, 검증, 감사, 감리1. 우리 QA 했어? -> QA = 테스트2. 우리 그거 QA 해봐야 하지 않나? -> QA = 확인3. 우리 빌드 아직 QA 안 거쳤어. -> QA = 검토, 검사4. 우리 제품 최종 QA 해야 돼 -> QA = 검증5. 품질관리 할려고 QA 뽑아서 프로세스 개선해요. -> QA = 감사, 감리
※ 참고문헌 - 네이버, 다음, 네이트 사전테스트- 제품의 성능이나 상태 따위를 일정한 기준에 따라 검사함, 일정한 기준에 따라 검사하다- 사람의 학력, 지능, 능력이나 제품의 성능 따위를 알아보기 위하여 검사하거나 시험함. 또는 그런 검사나 시험.확인- 확실히 인정하거나 알아봄.- 틀림없이 그러한가를 알아보거나 인정함. 또는 그런 인정.검토- 어떤 의견이나 그 내용을 찬찬히 살피거나 잘 따져 봄.- 어떤 사실이나 내용을 분석하여 따짐.검사- 어떤 일이나 사실의 옳고 그름이나 사물의 좋고 나쁨 따위를 살피거나 조사함.- 사실이나 일의 상태 또는 물질의 구성 성분 따위를 조사하여 옳고 그름과 낫고 못함을 판단하는 일.검증- 가설이나 사실, 이론 등을 검사하여 참인지 거짓인지 증명함.- 검사하여 증명함.- 어떤 명제의 참, 거짓을 사실에 비추어 검사하는 일. ≒ 실증(實證).감사- 법적 권한이 있는 기관이 단체나 조직의 업무 상황을 감독하고 조사함.- 감독하고 검사함.감리- 주로 공사나 설계 따위에서, 일이 잘 진행되고 있는지 감독하고 관리함.- 감독하고 관리함.
※ 참고문헌 - ISTQB syllabusValidationConfirmation by examination and thorough provision of object evidence that the requirements for a specific intended use or application have been fulfilled. [ISO9000]VerificationConfirmation by examination and through the provision of objective evidence that specified requirements have been fulfilled. [ISO9000]
너무 당연한 거라 실제 말하기는 민망한데, 오늘은 이런 포스팅을 쓰니까 말씀 드릴 수 있겠네요.
이 세상의 모든 테스트는 「기대 결과」를 예측하여 진행해야 합니다.