[BE-STUDY] 성능 테스트 [부하 테스트 vs 스트레스 테스트]

soohee·2023년 4월 27일
0

BE-STUDY

목록 보기
6/7
post-thumbnail

지금까지 성능을 테스트한다고 하면, 많은 요청을 보냈을 때 응답까지 걸리는 시간 혹은 응답률을 주로 생각했었다.
그러나, 공부하면 공부할 수록 "성능" 이라는 것을 테스트하기엔 정말 다양한 지표들이 존재하는구나라고 느꼈다.

1. 성능 테스트

먼저 성능 테스트는 부하테스트와 스트레스테스트등을 포괄하는 단어로 쓰이며, 시스템의 로드시간이나 사용자 입력에 대한 응답 시간 등을 감지할 수 있으며, 하드웨어 문제나 병목 현상을 제거하는 데에도 도움이 된다.

성능 테스트 지표

  • 디스크 시간 : 요청을 작성하거나 읽기를 실행하는 데 소요된 시간
  • 대역폭 사용량 : 네트워크 인터페이스에서 사용하는 초당 비트 수
  • 처리량 : 초당 수신된 요청 비율
  • 스레드 수 : 활성 스레드 수
  • 메모리 사용 : 가상 메모리 사용 패턴

2. 부하 테스트

부하 테스트는 임계값 한계에 도달할 때까지 시스템의 부하를 지속적으로 꾸준히 증가시켜 시스템을 테스트하는 방식이다.
주로 시스템의 성능을 개선하기 위한 목적으로 사용되며, 성능이 악화되는 그 타이밍을 찾기 위해서 테스트 된다.

부하 테스트 지표

  • 시간당 처리량
  • 데이터 전송 속도
  • 처리시간 (사용자/시스템 측에서 둘 다 볼 수 있음)

부하 테스트에서 사용하는 도구

  • 부하 테스트 도구 : 시스템에 부하를 주는 도구
  • 모니터링 도구 : 시스템 리소스 사용률을 가시화해주는 도구
  • 프로파일링 도구 : 미들웨어나 애플리케이션 내부 동작을 분석하고 가시화해주는 도구

3. 스트레스 테스트

극한의 조건에서 한계점에 도달했을 때, 애플리케이션이 어떻게 동작/반응하는지를 확인하는 테스트다. 일부러 한계점을 도달하게 해서 그 후 시스템의 복구 절차나 보안에 관한 허점이 없는지를 확인하는 목적을 가지고 있다. 가장 큰 문제는 장애 발생 후 시스템이 민감한 데이터의 보안을 손상시키지 않도록하는 것이다.

스트레스 테스트의 지표

  • 동시 사용자 수
  • CPU
  • 메모리 사용률

스트레스 테스트의 종류

  • 애플리케이션 스트레스 테스트 : 네트워크와 관련된 결함과 함께 데이터베이스의 Locking 및 Blocking과 관련된 결함을 찾는 데 도움이 된다.
  • 시스템 스트레스 테스트 : 동일한 서버에서 동시에 실행중인 시스템의 장애 여부를 확인하는데 도움이 된다.
  • 트랜잭션 스트레스 테스트 : 둘 이상의 시스템 간의 트랜잭션을 검사하는데 도움이 된다.

결론

정말 다양한 테스트가 존재한다. 개발과 QA의 사이에서 모두가 알아야 하는 테스트들이 정말 많다는 것을 다시 깨달았다. 백엔드 개발자 입장에서는 성능적으로 문제가 되지 않도록 생각해서 코드를 작성해야 하고, QA입장에서는 이미 만들어진 코드를 다양한 방법을 통해 어떻게 해서든 허점을 찾아내 더 완벽한 코드를 만드려고 한다고 느꼈다.
(테스트 방법까지 아는 개발자가 된다는 것은 더욱 멋진 걸..?😎)

profile
🐻‍❄️

1개의 댓글

comment-user-thumbnail
2023년 5월 15일

부하테스트와 스트레스테스트의 차이가 잘 이해되는 좋은 글입니다! 이와 연관지어 스프링부트의 모니터링툴에 관한 추가 포스팅도 있으면 좋을 거 같습니다

답글 달기