자동화 테스트

2021. 5. 2. 14:59공부/오픈소스를 활용한 DevOps 환경 이해

반응형

테스트의 종류

1. 블랙박스 테스트 : 요구사항 명세서대로 소프트웨어가 동작하는지에 초점

-> 소프트웨어 컴포넌트나 시스템의 내부 구조를 참조하지 않고, 요구사항/명세 기반으로 기능/비기능 테스트

2. 화이트박스 테스트 (구조 테스트) : 구현된 소스 코드 내부 구조를 분석하여 미리 정의된 오류를 찾아내는 테스트

단위 테스트 (Unit Test)

: 테스트 가능한 소프트웨어의 가장 작은 부분을 실행하여 예상대로 작동하는지 확인하는 것

  • 시스템의 소스 코드, 로직 등을 테스트로 점검하는 단계로 주로 소스 코드의 클래스나 메서드 단위의 기능이 정상적으로 동작하는지 검증
  • 테스트 중인 단위가 작을수록 단위 테스트를 사용하여 동작을 표현하는 것이 쉬워지므로 단위의 분기 복잡성이 낮아짐
  • 개발 단계에서 개발자 또는 개발팀 차원에서 직접 수행을 하여 자신이 코딩한 메서드나 클래스가 정상적으로 동작하는지를 테스트하는데, 주로 기능이 제대로 작동하는지를 점검
  • 결과가 기댓값과 일치하는지 확인하는 형태이며, 서비스 호출, 외부 파일/네트워크 연결 없이 서로 독립적으로 수행되어야 함
  • 단위 테스트는 버그를 찾는 게 목적이 아니라 설계 프로세스의 일부로 생각해야 하지만, 개발자가 직접 단위 테스트 코드를 구현해야 하기 때문에 개발자에 대한 부담이 가중
  • 특히 단위 테스트를 꼼꼼하게 구현할수록 단위 테스트 구현 시간이 늘어나므로 가장 이상적인 케이스는 코딩 시간과 단위 테스트 구현 시간을 같이 고려하여 개발 일정을 짜고, 모듈을 개발한 개발자가 단위 테스트까지 같이 작성하게 하는 것이 효율성이 높음.

단위 테스트를 잘하기 위한 고려사항

테스트 코드의 가독성과 유지 보수성

소스 파일 안의 코드는 적절히 구조화되어 있는가

테스트는 정확한 대상을 검사하는가

테스트는 독립적으로 반복 가능한가

테스트가 테스트 더블을 잘 확용하는가

독립 단위 테스트 (Solitary Unit Testing)

테스트 객체와 의존성이 있는 부분을 Test Doubles 등의 기능으로 대체하여 테스트

연동 단위 테스트 (Sociable Unit Testing)

객체 상태 변화를 관찰하여 모듈의 동작을 테스트하는 것에 초점

연관 모듈을 인터페이스를 통해 완전히 테스트된 블랙박스로 취급

JUnit

단위 테스트 작성을 지원하는 xUnit 계열의 오픈소스 자바 프레임워크

xUnit

단위 테스트 작성을 지원하는 여러 언어별 오픈소스 프레임워크

 

JUnit Platform은 테스트 코드를 찾고 테스트 계획을 생성하는 TestEngine 인터페이스를 정의하고 이를 통해 테스트를 발견/실행/결과를 보고

통합 테스트

서비스 테스트 중 하나로, 화면의 박스 부분처럼 구성 요소 간의 네트워크 경로 및 상호 작용을 검증하여 인터페이스 연동 성공과 오류 경로를 다루는 것이 목표

엔드-투-엔드 테스트

시스템이 외부 요구 사항을 충족시키고 전체 시스템을 끝까지 테스트하여 목표를 달성하는지 확인

다른 테스트와 달리 사용 중인 컴포넌트나 아키텍처와 관계없이 시스템이 전체적으로 비즈니스 목표를 충족하는지 확인하는 데 집중

이를 달성하기 위해 시스템은 블랙박스로 취급하여 GUI 및 서비스 API와 같은 공개 인터페이스를 통해 가능한 한 완벽하게 배포된 시스템을 테스트

반응형