소프트웨어 테스트

Solf·2025년 9월 24일

WEB

목록 보기
11/11

소프트웨어는 항상 요구사항을 만족해야하며, 이는 유기적으로 변합니다. QA(Quality Assurance)를 진행하는 다양한 방법을 알아봅시다.

큰 규모의 프로젝트에서는 최대한 테스트를 자동화하기 위한 시스템을 만드는 것이 중요하다.

테스트의 목표

  • finding bug
  • ensuring requirements are satisfied
  • code coverage

테스트의 한계

  • 모든 입력이나 상황을 테스트하는 것은 불가능하다.
  • 일부 문제는 즉시 실패가 아닌 환경 변화와 함께 일어날 수 있다.

기능 테스트(Functional Test)

비즈니스 로직 및 요구사항이 맞게 동작하는지 검증하는 테스트

단위 테스트 (Unit Test)

@Test
void whenValidId_thenUserShouldBeFound() {
    User found = userService.findUserById(1L);
    assertEquals("spring", found.getName());
}

개별 기능이나 매서드 단위의 검증이며, 그 외의 의존성은 Mocking 처리하여 필요한 부분만 검증한다.

예시 도구) JUnit, Mockito

통합 테스트 (Integration Test)

실제 DB나 외부 API 등과 연동해서 여러 컴포턴트 간의 연결 및 상호작용을 테스트한다.

예시 도구) @SpringBootTest, Test Container

종단 테스트 (E2E, End-to-End Test)

시스템 테스트(System Test)라고도 한다.

mockMvc.perform(post("/users").content("{...}").andExpect(status().isOk());

실제 사용자 관점에서 전체 시스템을 순차적으로 테스트한다.

실제로 전체 유저 시나리오를 테스트한다.

예시 도구) MockMvc, RestAssured

수동 테스트

자동화가 현실적으로 불가능하거나 효율성 이슈가 있는 부분을 사람이 직접 검사하는 방법.

당연히 규모가 커짐에 따라 지속 테스트가 어렵기에 자동화가 권장된다.

비기능 테스트(Non-Functional Test)

비스니스 로직을 제외한 품질(성능, 보안, 확장성 등) 확인

성능 테스트 (Performance Test)

아래와 같은 성능 지표들을 검사하는 테스트

서버 성능의 주요 요소

성능 요소지표 설명예시 도구
응답 시간API 응답속도 (ms)JMeter, Gatling, Spring Actuator, Prometheus, Grafana
처리량 (Throughput)초당 처리 요청 수 (RPS/TPS)JMeter, Gatling, Locust, Prometheus, Grafana
자원 사용률CPU, 메모리, 디스크 사용 (%)Prometheus, Grafana, AWS CloudWatch, top, htop
지연 시간 (Latency)DB 쿼리/내부 호출 시간 (ms)Spring Actuator, DB Slow Query Log, Grafana, serverStatus(MongoDB)
오류율에러 발생 비율 (%)JMeter, Gatling, AWS CloudWatch, Sentry, Grafana

보안 테스트(Security)

보안 취약점 진단 테스트

예시 도구) OWASP ZAP, Burp Suite

코드 품질 테스트

코드 자체의 오류, 취약점, 스타일, 복잡도 등 품질 요소를 사전 탐지

예시 도구) PR 검수자가 직접 검사, SonarQube, Checkstyle, PMD, FindBugs 등

그외

스모크 테스트 (Smoke Test)

핵심 기능만 빠르게 확인하는 테스트 기법.

인수 테스트 (Acceptance Test)

제품이 비즈니스 요구사항을 충족하고 있는지 테스트하는 기법

예시 도구) Cucumber(스크립트·Gherkin 기반)

참고

https://www.youtube.com/watch?v=u6QfIXgjwGQ
https://www.youtube.com/watch?v=Jv2uxzhPFl4
https://www.youtube.com/watch?v=YaXJeUkBe4Y
https://en.wikipedia.org/wiki/Software_testing

profile
CS/Software Engineer

0개의 댓글