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

     

 

질문

원리[3]에는 “개발 초기에 테스팅을 시작하라.”라고 하는데, 테스트는 개발이 완료된 후에 하는 거 아닌가요? 테스팅을 어떻게 개발 초기에 시작하나요?

 

ISTQB 버전

ISTQB Syllabus 2018

 

답변

 소프트웨어 테스팅 원칙

소프트웨어 테스트는 결함이나 버그를 식별하기 위해 소프트웨어 또는 응용 프로그램을 구현하는 절차입니다. 

응용 프로그램이나 소프트웨어를 테스트하려면 제품 결함을 없애고 테스트 엔지니어가 노력과 시간을 들여 소프트웨어를 테스트하는 데 도움이되는 몇 가지 원칙을 따라야합니다.

  1. 테스트는 결함이 있음을 보여줍니다.
  2. 철저한 테스트는 불가능
  3. 초기 테스트
  4. 결함 클러스터링
  5. 살충제 패러독스
  6. 테스트는 정황에 따라 다르다.
  7. 오류 부재의 궤변

 

 

Software Development Life-Cycle 알아두기

"테스팅을 일찍 시작한다."는 말에서 품고 있는 시간 순서의 기준은 SDLC(Software Development Life-Cycle)의 전체 구조 중 앞단에서 테스팅을 수행하라는 의미입니다.

 

Wikiepedia - Software Development Life-Cycle Model

 

위 그림에서 보시는 바와 같이 소프트웨어 개발에는 어느 정도 정형화된 순서가 존재하며, 어떤 개발 방법론을 사용하던 위의 구조가 큰 틀에서 변경되거나 해체되지는 않습니다. 그러므로, 소프트웨어 종사자라면 프로그래머이든, 테스터이든, PM이든, 누구든지 간에 기본적으로 이해하고 있어야 하는 내용입니다.

 

이에 대해서는 자세한 소개를 할 기회가 있을 때 다시 긴 이야기를 나눌 수 있도록 하겠습니다. 본 글을 읽으시는 독자분들 중 궁금한 점이 있으시면, 일단 잘 정리된 사이트들이 많으므로 인터넷 검색을 통해 지식을 정리하시면 좋겠습니다.

 

원리[3] - 개발 초기에 테스팅을 시작하라(Early Testing)

자세한 내용을 다루기 전에 소프트웨어 테스팅과 관련한 일반적인 내용으로 「소프트웨어 테스팅의 7가지 원칙」 중 3번째 원리는 다음과 같습니다.

 

  • 나중에 결함을 발견하고 수정하는 것에 비해, 초기에 테스트를 수행하여 미리 문제점을 발견하고 수정하는 경우가 훨씬 비용 및 시간을 줄일 수 있습니다.
  • 개발 초기는 개발 진행과 동시에 요구사항 분석서 및 설계서 등 개발 중간 산출물의 분석을 통해 테스트 케이스를 작성하거나 테스트 분석/설계를 도출하는 과정을 통해 결함을 발견하는 것을 의미합니다.

 

간단히 생각하면 쉽습니다. 요구사항 분석 단계에서 찾아낸 이슈는 해당 요구사항을 정리한 사람과만 이야기 하면 되지만, 개발이 완료되고 서비스 중인 경우에는 고객 관리자, 프로그래머, 테스터, 기획자, 사업 부서 관리자 등 많은 사람들과 협의를 거쳐야 합니다. 그 모든 것이 비용이죠. 

 

소프트웨어 개발 단계 별 투입되는 비용의 비율은 대략적으로 아래와 같습니다.

 

Tutorials Point - Cost of Maintenance

 

이에 대한 이야기는 프로젝트의 ROI(Return On Investment)에 대한 이야기입니다. ROI를 쉽게 설명하면 "투자 회수율" 혹은 "투자 대비 수익률"을 이야기합니다. 더 쉽게 이야기하면 "얼마 정도를 투자해서 어느 정도의 수익을 거두는가"에 대한 이야기입니다.

 

ROI 개념은 다양한 분야에서 사용하고 있는 개념이므로, 이와 관련한 자세한 자료들을 보고 싶으시면 검색 사이트에서 "ROI 분석 사례 (구글 링크)"라는 키워드에서부터 찾기 시작하시면 됩니다.

 

결함 발견 시점과 수정 비용의 상관관계

ROI는 다음 그림에서 보는 바와 같이 조기에 해결하면 빠르고, 뒤로 미룰수록 해결하기 위한 비용이 늘어나는 경우가 일반적입니다. 조금만 투자하고 많이 수익을 내는 것이 비즈니스의 기본이기 때문에 투자 비용이 늘어난다는 의미는 수익률이 나빠진다는 의미입니다.

 

Software Security Engineering: A Guide for Project Managers

 

일반적으로 '요구사항 취합/분석' 단계에서의 발견한 이슈 처리와 '고객에게 출시된 후'의 이슈 처리의 차이는 소프트웨어 개발에서는 약 100배~1000배 정도가 난다고 알려져 있습니다.

 

  • 결함 발견 시점이 늦어질수록 수정 비용은 지속적으로 증가합니다.
  • 개발 단계별 수정 비용 : 요구사항(낮음) < 설계 < 개발 < 테스트 < 유지보수(높음)

 

그러므로, ROI 효율을 높일 수 있는 가장 좋은 방법은 사실 "테스팅 활동" 그 자체보다는 "리뷰(Review)"라고 부르는 활동들입니다. 이와 관련된 설명은 본 블로그의 다른 필자들이 작성하신 "시스템이나 문서에 대한 엄격한 테스팅"에 대한 의미는 무엇인가요? 포스팅을 참고하여 주세요.

 

개발 초기 테스팅 진행 시 대략적 가이드라인

일반적으로 "테스팅" 활동은 "개발이 완료된 후" 진행한다고 생각하는 경우가 많습니다. 그래서 개발 초기에 진행하는 테스팅이 낯설기도 하고, 어렵게 느껴지기도 합니다. 개발 초기 테스팅을 진행하실 때는 아래의 사항들을 고려하여 진행하시면 됩니다.

 

  • 개발 프로세스 내에서 최대한 앞에서 테스트/리뷰 활동을 진행하는 게 ROI 효율을 높일 수 있음을 프로젝트 구성원들에게 인지시킵니다.
  • 개발 시작과 동시에 테스트를 계획합니다.
  • 전략적 접근을 고려합니다.
  • 개발 산출물(요구분석서, 설계서)을 분석하여 테스트 케이스 도출 과정을 통해 결함을 발견하는 것입니다.
  • 명세 기반 기법을 이용해 체계적인 테스트 케이스 도출, 문서상의 결함을 발견, 리뷰 미팅에 참석하여 인시던트를 알리고, 실제 결함 여부를 결정합니다.

 

위 가이드라인을 참고하시면서 잊지 않으셔야 하는 건 "소프트웨어에서의 이슈를 조기 탐지(Early Detection on Issues of Software)할수록 투자 비용이 줄어들고, 고로 수익률이 개선된다."라는 점입니다.

 

소프트웨어 오류 원인 및 분포

해외의 전문가가 발표한 일반적인 소프트웨어에서의 오류 분포는 아래와 같습니다.

 

  • 오류 분포 : 요구사항(56%), 설계(27%), 코드(10%), 기타(7%)
James Martin, S.A. Kelkar in Structured Systems Analysis and Design

 

앞서 여러 전문 서적, 지식 체계, 해외 전문가들의 증명을 통해 "조기 탐지한 이슈의 조기 처리"가 ROI를 개선한다고 하였습니다. 그리고 위 그림에서 보는 바와 같이 요구사항 및 설계 오류가 오류 원인의 80% 이상을 차지하므로, 개발 초기에 테스팅을 진행하여 개발 초기에 예상되는 이슈들을 모두 처리한다면 ROI 효율이 향상되는 것입니다.

 

그러므로, 개발 초기 단계부터 테스트가 병행되어야 한다는 의미입니다.

 

참여자 정보

• 글쓴이 : 품생품사, 천년나무

 검토한이 : Bykj, 복어수, 아이티마니현의노래

 

 

블로그 내의 관련 글

 

소프트웨어 테스팅의 7가지 원리에 대해 설명해 줄 수 있나요? (Episode 1/2)

목차 질문 소프트웨어 테스팅의 7가지 원리에 대해서 설명해 줄 수 있나요? ISTQB 버전 ISTQB Syllabus 2018 답변 본 글은 「소프트웨어 테스팅의 7가지 원리」에 대해 설명하지만, 글이 너무 길어져 2개

softwaretestingreference.tistory.com

 

STEEG 개인 의견

※ STEEG 개인 의견은 각 전문가 개인이 경험한 경력에 따른 의견이므로, 주관적 견해가 개제될 수 있습니다. 개인 의견에 대한 내용은 본 블로그와 관련이 없습니다.
 

[STEEG - 실무 적용편] “개발 초기에 테스팅을 시작하라.”

목차 개발 초기에 테스팅 적용하기 - 원글 링크 : softwaretestingreference.tistory.com/135?category=834116 테스팅의 원리[3] - “개발 초기에 테스팅을 시작하라.” 라고하는데, 테스트는 개발이 완료된 후 목..

qa-testing.tistory.com

 

관련 참고 자료

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

소프트웨어 개발 수명 주기 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 소프트웨어 개발 수명 주기(Software Development Life Cycle, SDLC)란 시스템 엔지니어링, 정보 시스템, 또는 소프트웨어 공학에서 정보 시스템을 계획, 개발, 시험, 채용

ko.wikipedia.org

 

Software development process - Wikipedia

From Wikipedia, the free encyclopedia Jump to navigation Jump to search Process by which software is developed In software engineering, a software development process is the process of dividing software development work into distinct phases to improve desi

en.wikipedia.org

 

Introduction to Software Engineering/Process/Life Cycle - Wikibooks, open books for an open world

Model of the Systems Development Life Cycle Model of the Systems Development Life Cycle The Systems Development Life Cycle (SDLC), or Software Development Life Cycle in systems engineering, information systems and software engineering, is the process of cr

en.wikibooks.org

 

눈덩이 효과(Snow Ball Effect)(요르돈법칙)

눈덩이 효과(Snow Ball Effect)는 갈등을 관리하지 않고 방치하여 시간이 지날수록 상황이 더욱 악화되...

blog.naver.com

 

1.6 The Benefits of Detecting Software Security Defects Early 5 | Why Is Security a Software Issue? | InformIT

Home > Articles > Security > Network Security By Gary McGraw, Julia H. Allen, Sean Barnum, Robert J. Ellison, Nancy R. Mead Jun 2, 2008 📄 Contents ␡ 1.1 Introduction 1.2 The Problem 1.3 Software Assurance and Software Security 1.4 Threats to Software

www.informit.com

 

Return on Investment - PMI

 

www.pmi.org

 

Return on investment - Wikipedia

This article is about the term in investing. For articles on other subjects having the same abbreviation, see ROI. Return on investment (ROI) is a ratio between net profit (over a period) and cost of investment (resulting from an investment of some resourc

en.wikipedia.org

 

Software Maintenance Overview - Tutorialspoint

Software Maintenance Overview Software maintenance is widely accepted part of SDLC now a days. It stands for all the modifications and updations done after the delivery of software product. There are number of reasons, why modifications are required, some

www.tutorialspoint.com

 

What is “Shift Left”? Shift Left Testing Explained

BMC Software

www.bmc.com

 

이 글을 공유합니다.

facebook twitter kakaoTalk kakaostory naver band