본문 바로가기
BackEnd

SoftWare Test(소프트웨어 테스트)에 대해서 알아보기

by SoriKim 2023. 12. 26.
반응형

💡 SoftWare Test(소프트웨어 테스트)란?

소프트웨어 테스트는 소프트웨어의 품질을 평가하고 보증하기 위해 수행되는 활동입니다. 소프트웨어 테스트는 소프트웨어가 요구사항을 충족하며 안정적이고 효과적으로 동작하는지 확인하는 프로세스로, 소프트웨어 개발 생명주기의 여러 단계에서 발생합니다. 이를 통해 버그를 찾고 수정하며 최종 사용자에게 신뢰성 높은 소프트웨어를 제공하는 것이 목표입니다. 

테스트 종류는 크게 4가지로 나뉘는데 이런 테스트는 프로그래밍저그로 수행가능하기 때문에 자동화 처리가 가능합니다. 이후 QA라는 과정을 통해 테스터가 직접 소프트웨어를 테스트합니다. QA는 외주 또는 팀에서 진행하는 사항으로 자동화할 수 있는 테스트 방식에 대해서 살펴보겠습니다. 

 

🕰️ SoftWare Test(소프트웨어 테스트)의 역사 

1950년 소프트웨어 테스트는 초기 컴퓨터 시스템이 개발될 때부터 시작되었습니다. 초기에는 주로 수동 테스트가 사용되었고 개발자들이 코드를 실행하고 결과를 확인하는 방식으로 이루어졌습니다. 

1960년  디버깅과 테스트를 위한 도구들이 등장하며 테스트 프로세스가 자동화되기 시작했습니다. 

"디버거"와 "테스트 스크립트"가 개발되어 소프트웨어 결함을 찾는 데 도움이 되었습니다. 

1970년 소프트웨어 공학의 등장으로 테스트에 대한 체계적인 방법론이 발전했습니다. 

소프트웨어 개발 생명주기에 따른 다양한 테스트 단계가 정의되었고, 테스트 케이스 및 테스트 계획 작성이 강조되었습니다. 

1980년 객체지향 프로그래밍 패러다임의 등장으로 테스트의 복잡성이 증가했습니다. 

객체치향 소프트웨어의 테스트를 위한 새로운 방법론과 도구가 개발되었습니다. 

1990년 자동화 테스트 도구의 발전으로 테스트 자동화가 보다 효율적으로 이루어졌습니다. 

이 시기에 테스트 주도 개발(TDD)과 같은 새로운 개발 방법론이 소개되었습니다. 

2000년 이후 애자일과 연속적 통합이 강조되며 테스트도 그에 맞게 변화하고 발전했습니다. 

지속적 배포, 통합, 테스트 등의 개념이 도입되어 빠른 개발과 릴리스 주기에 대응하고자 했습니다. 

현재 자동화 테스트가 더욱 강조 되며 성능, 보안, 사용자 경험 테스트 등 다양한 종류의 테스트가 도입되어 품질 보증에 더 큰 중요성을 부여하고 있습니다. 

1. 소프트웨어 테스트 단계 

1) 단위 테스트(Unit Testing) 단계 

목표: 개별 모듈 또는 코드 조각이 예상대로 동작하는지 확인하고 코드의 결함을 발견

활동:

  • 프로그램의 각 기능 또는 메소드에 대한 테스트 케이스를 작성합니다.
  • 코드의 각 부분이 기대한 대로 동작하는지 확인하고, 예상치 못한 오류나 결함을 발견합니다.
  • 주로 자동화된 테스트 도구를 사용하여 자주 실행되며, 개발자가 코드를 수정하고 새로운 기능을 추가할 때마다 수행됩니다.

 

2) 통합 테스트(Integration Testing) 단계 

목표: 모듈들이 결합되어 시스템 전체가 예상대로 동작하는지 확인

활동:

  • 모듈 간의 인터페이스 및 상호 작용을 테스트하는 테스트 케이스를 작성합니다.
  • 시스템이 다양한 컴포넌트 및 모듈 간의 통합에서 발생할 수 있는 오류를 찾습니다.
  • 주로 자동화된 테스트 도구를 사용하며, 각 모듈이 통합될 때마다 수행됩니다.

3) 시스템 테스트(System Testing) 단계

목표: 전체 시스템이 요구사항을 충족하며 예상대로 동작하는지 확인

활동:

  • 시스템의 전반적인 동작을 테스트하는 테스트 케이스를 작성합니다.
  • 시스템의 기능, 성능, 보안, 안정성 등을 종합적으로 검증합니다.
  • 사용자의 요구 사항과 비즈니스 목표를 충족하는지 확인합니다.
  • 주로 수동 또는 자동화된 테스트 도구를 사용하며, 전체 시스템이 완성되었을 때 수행됩니다.

 

4) 인수 테스트(Acceptance Testing) 단계

목표: 최종 사용자 또는 이해 관계자가 시스템이 실제 운영 환경에서 요구사항을 충족하는지 확인합니다. 

활동:

  • 사용자 시나리오에 기반한 테스트 케이스를 작성합니다.
  • 사용자 또는 이해 관계자가 시스템을 사용하는 과정을 모방합니다.
  • 사용자의 피드백을 수집하고, 시스템이 실제 환경에서 예상대로 동작하는지 확인합니다.
  • 주로 수동으로 수행되며, 소프트웨어가 최종 사용자에게 전달되기 전에 완료됩니다.

 

2. SoftWare Test(소프트웨어 테스트)를 하는 이유

소프트웨어 테스트는 여러 이유로 이루어지며 주요한 목적과 이유는 아래와 같습니다. 

 

1) 버그 발견 및 수정

테스트는 소프트웨어에서 발생할 수 있는 버그를 미리 발견하고 수정하는 데 중요합니다. 이는 소프트웨어가 사용자에게 신뢰성 있고 안정적인 서비스를 제공하는 데 도움이 됩니다. 

 

2) 품질 보증

테스틑 소프트웨어의 기능, 성능, 보안, 사용자 경험 등 다양한 측면에서 품질을 보증합니다. 사용자가 소프트웨어를 안전하게 사용할 수 있도록 보장하는 데 중요한 역할을 합니다. 

 

3) 요구 사항 검증

테스트는 개발된 소프트웨어가 요구 사항을 정확히 충족하는지 검증합니다. 이를 통해 소프트웨어가 사용자의 기대에 부합하는지 확인할 수 있습니다. 

 

4) 비용 절감

테스트는 개발 초기에 결함을 발견하고 수정함으로 나중에 발생할 수 있는 비용을 감소시킵니다. 초기 결함을 발견하면 수정이 더 쉽고 비용 효율적입니다. 

 

5) 사용자 만족도 향상 

테스트를 통해 소프트웨어의 안정성과 성능이 향상되면 사용자의 만족도가 증가합니다. 안정적이고 신뢰할 수 있는 소프트웨어는 사용자 경험을 향상합니다. 

 

6) 신속한 릴리스 및 배포

지속적인 테스트와 품질 보증은 릴리스 주기를 단축하고 소프트웨어를 신속하게 배포하는 데 도움이 됩니다. 

 

7) 보안 강화 

테스트는 소프트웨어의 보안 측면을 검증하고 강화하는데 기여합니다. 보안 결함을 사전에 발견하고 수정함으로써 시스템을 보호할 수 있습니다. 

 

8) 개발자와 협업 강화

테스트는 개발자와 테스터 간의 소통을 촉진하며, 더 나은 협업을 유도합니다. 개발자가 테스트 케이스를 이해하고 검증하면서 개발 프로세스가 더욱 원활해집니다. 

반응형

'BackEnd' 카테고리의 다른 글

Unit Test에 대해 알아보기  (0) 2023.12.17
API 문서에 대해서 알아보기  (0) 2023.12.17
[AWS] VPC에 대해서  (0) 2023.12.06
[AWS] RDS에 대해서  (0) 2023.12.03
CI/CD에 대해서  (0) 2023.12.03

댓글