[팀블로그] 소프트웨어 테스팅 참고서

     

질문

ISTQB 1장을 보면 "일반적으로 테스팅을 소프트웨어를 실행하면서 테스트를 수행하는 것으로만 인식하는 경우가 많다”라고 되어 있는데, 이 글로만 보면 일반적인 경우에는 사람들이 '테스팅 활동을 한정적으로 인식하고 있다'고 표현하는 걸로 보입니다. 

 

그런데 ISTQB의 뒤 쪽 내용을 보아도 딱히 테스트가 무엇인지에 대한 설명보다는 너무 일반적인 내용들인거 같아요. 이 글이 의미하는 실무에서 쓰이는 “소프트웨어 테스팅 활동이란?” 무엇일까요? 

 

ISTQB 버전

ISTQB Syllabus 2007

 

답변

소프트웨어 테스팅에 대한 일반적 관점의 오해

일반적인 경우에서 '소프트웨어에서의 테스트'란, 프로그래밍이 완료된 후 결과물로서의 '프로그래밍 산출물에 대한 전체적인 검수'를 의미합니다. 즉, 질문에서와 같이 '소프트웨어를 실행하면서 수행하는 검증 활동'으로서의 테스트 활동이 가장 보편적인 테스팅 활동에 대한 이해입니다.

Sofware Testing Material - What is software testing?

 

사실 소프트웨어 테스팅을 이야기 하기 위해서는 단순히 "소프트웨어에서 테스트란 무엇인가"를 이야기함에 더해 테스트의 종류, 방법론, 단계 등 다양한 이야기를 해야 합니다. 그래야만 왜 '왜 소프트웨어 테스트 활동에 대한 오해가 발생하는가'에 대해서 이야기를 나눌 수 있기 때문입니다.

 

그러나 필자들은 이런 이야기들을 펼쳐 놓기엔 본 글에 필자들의 주관적 견해가 많이 녹아 들어 자칫 잘 못하면 객관성을 잃게 될까 염려하였습니다. 이에 따라 이번 질문에는 객관적인 논점을 벗어나지 않도록 ISO/IEC/IEEE 24765:2017 - Systems and Software Engineering 표준과 위키피디아(Wikipedia)에 서술된 내용을 기반으로 설명 드리려합니다. 필자들의 개인 의견은 향후 정리되는 대로 「STEEG 개인 의견」에 올리겠습니다.

 

ISO/IEC/IEEE 24765:2017

ISO/IEC/IEEE 24765:2017의 용어 모음집에서는 '테스트' 용어를 아래와 같이 소개하고 있습니다.

 

  • 테스트
    • 1. 시스템 또는 구성 요소가 특정한 조건에서 실행되고, 결과가 관찰/기록되고, 또한 시스템 또는 구성 요소의 일부 측면에 대한 평가가 이루어지는 활동. [ISO/IEC 25051:2014 SQuaRE 참고]
    • 2. 위 1번 활동의 수행
    • 3. 한 개 이상의 테스트 케이스, 프로시저의 모음

 

Software Testing - Wikipedia

위키피디아에서는 소프트웨어 테스트에 대해 아래와 같이 소개하고 있습니다.

 

  • 소프트웨어 테스트는 이해당사자(Stakeholder)에게 테스트중인 소프트웨어 제품 또는 서비스의 품질에 대한 정보를 제공하기 위해 수행하는 조사 행위입니다.
  • 소프트웨어 테스트는 소프트웨어에 대한 객관적이고 독립적인 관점을 통해 소프트웨어 구현 시 발생하는 위험을 인식하고 이해할 수 있도록 해줍니다.
  • 테스트 기법에는 소프트웨어 버그(오류 또는 기타 결함)를 찾기위한 의도로 소프트웨어를 실행하고, 해당 제품이 사용하기에 적합한 지 확인하는 프로세스가 포함됩니다.

 

오해를 벗어난 소프트웨어 테스트란?

소프트웨어 테스트에 대한 오해를 이제 좀 풀어봐야 겠습니다. 일반적으로 우리가 말하는 「테스트」는 '행위'로서의 활동이며, 어느 것을 특정하는 '명사/대명사'로 사용하지는 않습니다. 여기에서 발생하는 오해가 꽤 큽니다.

 

우리가 흔히 사용하는 '테스트라는 행위'에 대해 설명하자면, 좁은 의미로서는 "Test Case를 수행  또는 프로시저를 수행"함을 의미합니다. 그러나 또한 '특정 기준' 혹은 '기획된 계획'을 가지고 제품의 어떠한 평가를 전체적으로 하는 모든 활동들을 일컬어 '테스트'라고도 할 수 있습니다. 그러므로, "소프트웨어 테스팅의 활동 전부"라는 것은 프로젝트 처음 시작부터 종료까지 소프트웨어 테스팅 활동 전체를 의미합니다.

 

우리가 오해를 벗어나 이해해야 하는 「테스팅 활동」이라는 행위는 특정 시점의 활동을 의미하기보다 아래의 활동들을 모두 수행하는 일련의 행위 모음을 의미합니다.

 

Perforce - Software Testing Life-Cycle
  1. 테스트 계획 및 프로세스 수립
  2. 요구 사항 분석
  3. 테스트 환경 구성 구축 및 관리
  4. 테스트 케이스 설계
  5. 테스트 수행
  6. 테스트 진행 사항 모니터링
  7. 테스트 결과 보고
  8. 개발 산출물 관련 검토
  9. 테스트 관련 산출물 작성 및 관리


다시 한 번 강조하지만 우리는 흔히 "소프트웨어 테스팅 활동을 '누구나 할 수 있는 아주 쉬운 행위'로 오해"하는 인식이 널리 퍼져있습니다. 왜냐하면 "테스트를 하다"라는 말을 하다보니 위에 나열된 활동 중 "5번. 테스트 수행만을 테스트로 인식하는 경향"이 있기 때문입니다. 하지만, 실제 테스트 활동이라 함은 위 활동 전체를 수행함을 의미하므로 '행위'와 '절차' 모두를 포함하여 표현하고 이해하여야 합니다.

 

테스팅을 '테스트 수행'으로만 인식하면 전체 테스트 활동 내에서 놓치는 내용이 많이 발생하게 됩니다. 소프트웨어 테스트 역시 전체 활동에 대한 생명주기(Software Testing Life-cycle)를 가지고 있기 때문이며, 이 생명주기 활동에서 앞단의 활동에 문제가 발생하면 이후의 활동들 전체가 아주 어렵게 작동하게 됩니다. 이는 굳이 소프트웨어에서만이 아니라, 세상 어떤 일이든, 그 일을 전문적으로 하려고 하면 프로세스 상에서 아주 쉽게 관찰되는 현상이므로 필자들이 따로 긴 이야기를 하지는 않겠습니다.

 

굳이 하나를 첨언하자면, 사실 이런 현상은 테스트 자동화 도입 시에도 같습니다. 일반적인 관점에서 "테스트 자동화로 테스트를 수행하면 이런 일련의 과정을 거치지 않아도 된다"는 착각들이 널리 퍼져 있습니다. 전문적인 테스트 자동화를 위한 기고문인 Test Automation : Not just for test execition을 읽어 보십시오. 굉장히 당연한 이야기지만, 꽤나 재미있게 서술한 저널 기고문입니다.

 

소프트웨어 테스팅에 대한 이야기를 제대로 하기 시작하면 꽤나 길어지기 때문에 이 번 글에서는 이 정도로 마무리 하려 합니다. 이 외에도 본 블로그의 다른 필자가 작성하신 "테스팅은 디버깅과 근본적으로 구분되는 개념이다 라는 말은 굉장히 당연한거 같은데 굳이 언급한 이유가 있나요?" 포스팅에서 또 다른 정보를 얻어 보세요.

 

참여자 정보

 글쓴이 : Byungjoo, 천년나무

• 검토한이 : 현의노래, 아이티마니, Bykj, 품생품사

 

STEEG 개인 의견

※ STEEG 전문가들의 개인 의견은 각 전문가 개인이 경험한 경력에 따른 주관적 견해입니다. 
    이런 개인 의견들의 경우는 그룹 전체의 의견을 대표하지 않음을 알립니다.

(본 글에 대한 전문가의 별도 포스팅이 존재하지 않습니다.)

 

관련 참고 자료

 ※ 아래는 필자들이 선정한 관련 외부 자료입니다. 
     아래 자료들은 필자들이 작성한 본문 의견과 다를 수 있으며, 필자들과 관련되지 않았을 수 있습니다.
 

Software testing - Wikipedia

From Wikipedia, the free encyclopedia Jump to navigation Jump to search An examination of how efficient and reliable software is at performing its intended function Software testing is an investigation conducted to provide stakeholders with information abo

en.wikipedia.org

 

What is Software Testing? Definition, Basics & Types

Every year, many new Code Editors are launched, and the developer finds it challenging to choose...

www.guru99.com

 

Why Is Software Testing and QA important for any Business

Software Testing and QA reduces maintenance costs and provides better usability and enhanced functionality.

www.westagilelabs.com

 

(PDF) Test Automation: Not Just for Test Execution

PDF | To work more efficiently and effectively, test engineers must be aware of various automated-testing strategies and tools that assist test... | Find, read and cite all the research you need on ResearchGate

www.researchgate.net

 

Testing is a Process, not just a Phase | Software Testing | Cigniti Technologies

Testing is not only to find the bugs, but it is a process in Software Testing Life Cycle which has specific steps in parallel to Software Development Life Cycle. Get more insights in our new blog post.

www.cigniti.com

 

Software Testing - Definition, Types, Methods, Approaches

Software testing is a process, to evaluate the functionality of a software application with an intent to find whether the developed software met the specified requirements or not and to identify the defects to ensure that the product is defect free in orde

www.softwaretestingmaterial.com

 

Why Is Software Testing Important? | Perforce Software

Software testing is important for producing quality software without defects. Learn how to improve your software testing lifecycle.

www.perforce.com

 

 

이 글을 공유합니다.

facebook twitter kakaoTalk kakaostory naver band