Skip to content

소프트웨어 테스트 개요 26-08-24 / ~50p

💡

  • 소프트웨어: 명령어의 집합
  • 테스트: 개별적인 검증 활동
  • 테스팅: 결함(=요구사항과 다르게 만들어진 것)을 찾고 품질을 확인하기 위해 계획부터 수행, 결과 보고까지 진행하는 전체 프로세스
  • 테스터: 소프트웨어의 위험을 줄이고 기업의 비용과 시간을 절약하는 역할
  • 커뮤니케이션 시에는 핵심을 먼저 말하고 설명을 덧붙이는 두괄식 표현이 중요하다.

소프트웨어란?

컴퓨터가 특정 기능이나 성능을 수행하도록 만드는 명령어의 집합

단순히 프로그램 코드만 의미하는 것은 아니며 다음을 포함한다.

  • 컴퓨터 프로그램
  • 프로그램에서 사용하는 자료구조
  • 프로그램의 사용 및 동작을 설명하는 문서

소프트웨어 분류

소프트웨어는 크게 시스템 소프트웨어응용 소프트웨어로 구분할 수 있다.

  • 시스템 소프트웨어

    • 하드웨어와 시스템을 관리·운영하는 소프트웨어
    • ex. Windows, Linux, Android, iOS 등의 운영체제
  • 응용 소프트웨어

    • 사용자의 특정 목적을 수행하기 위한 소프트웨어
    • ex. 문서 작성 프로그램, 그래픽 프로그램, 게임 등

소프트웨어 특징

대표적인 특징은 비가시성(Invisibility)이다.

소프트웨어는 물리적인 제품과 달리 내부 구조나 개발 진행 상태를 눈으로 직접 확인하기 어렵다.
이러한 특성 때문에 개발 과정에서 문제가 발생해도 즉시 발견하기 어려울 수 있으며, 이를 체계적으로 관리하기 위한 개발 프로세스와 테스트 활동이 중요하다.


소프트웨어 개발 생명주기(SDLC)

소프트웨어 개발 과정을 일정한 절차로 관리하여 개발의 성공 가능성을 높이고 비용과 시간을 효율적으로 관리한다.

요구사항 분석 → 설계 → 구현(코딩) → 테스트 → 운영

이러한 개발 과정을 보다 효과적으로 수행하기 위해 여러 개발 모델이 사용된다.

  • 폭포수 모델(Waterfall)
  • 애자일(Agile)
  • 기타 소프트웨어 개발 생명주기 모델

요구사항

테스터가 프로젝트에 투입되었을 때 중요하게 확인해야 하는 것 중 하나가 요구사항이다.
요구사항은 가능한 한 명확하게 작성되어야 하며, 객관적으로 판단할 수 있도록 측정 가능하고 구체적으로 표현하는 것이 좋다.

정성적인 표현은 사람마다 다르게 해석될 수 있기 때문이다.


요구사항에서 확인해야 할 관점

요구사항을 확인할 때는 단순히 기능만 보는 것이 아니라 다음과 같은 관점을 함께 고려한다.

  • 비즈니스 관점
  • 고객의 니즈
  • 기능

테스터는 요구사항을 바탕으로 고객과 개발자 사이에서 발생할 수 있는 해석의 차이나 누락된 부분을 발견할 수 있어야 한다.


소프트웨어 테스팅이란?

소프트웨어가 요구사항에 맞게 동작하는지 확인하고, 결함을 발견하여 품질에 대한 정보를 얻는 과정


테스트와 테스팅

  • Test: 요구사항을 기반으로 특정 대상이나 기능을 검증하는 개별 테스트 활동
  • Testing:
    • 소프트웨어 품질을 확인하기 위해 수행되는 전체 테스트 프로세스
    • 계획 → 설계 → 수행 → 결과 분석 → 결함 관리 → 보고

소프트웨어 테스트의 목적

테스팅의 목적은 단순히 버그를 많이 찾는 것에 그치지 않는다.

  • 결함 발견
  • 결함 예방
  • 소프트웨어 품질에 대한 신뢰 확보
  • 품질과 리스크에 대한 정보 제공

소프트웨어 테스트 유형별 목적

개발 과정에서의 테스팅

개발 과정에서는 가능한 많은 Failure를 발생시켜 내부에 존재하는 Defect를 발견하고 수정하는 것이 목적이다.

인수 테스팅

소프트웨어가 예상한 대로 동작하는지, 사용자의 요구사항을 만족하는지 확인하는 과정이다.


소프트웨어 테스트 기본 용어

  • Error: 사람이 만들어낸 실수
    즉, 소프트웨어에 결함이 만들어지게 된 원인이다.
  • Defect: Error로 인해 소프트웨어 산출물에 만들어진 잘못된 부분 또는 결함
  • Failure: 소프트웨어를 실행했을 때 실제 결과가 기대한 결과와 다르게 나타나는 현상
    즉, 내부에 존재하던 Defect가 특정 조건에서 실행되면서 외부로 문제가 나타난 것이다.

Defect와 Failure의 관계

FailureDefect에 의해 발생하지만, Defect가 존재한다고 해서 반드시 Failure가 발생하는 것은 아니다.

예를 들어 특정 조건에서만 실행되는 코드에 Defect가 존재한다면, 해당 조건이 실행되기 전까지는 Failure가 발생하지 않을 수도 있다.

마지막 업데이트 날짜: