Testing 이란?
Software Test
- 개발자들이 말하는 ‘테스트’는 Software Test를 말한다.
- 어플리케이션 제품이나 서비스의 품질을 확인하고 숨어있는 소프트웨어의 버그를 찾는데 사용한다.
- 즉, 제품이 원하는 대로(예상하는 대로) 동작하는지 검증하고 확인하는 것이다.
- 제품은 다음이 될 수 있다.
- 목표와 플랫폼, 환경에 따라 다양한 테스트가 있다.
TDD
- Test-driven development (테스트 주도 개발)
- 개발(코드 작성) 전에 테스트 코드를 먼저 작성하는 방식이다.
- 어떤 특정한 기술, 라이브러리나 프레임워크가 아니라 개발 방식, 개발 방법론 중 하나이다.
- TDD는 다음 절차를 반복한다.
- 테스트 코드를 작성한다. (실패)
- 테스트가 성공할 수 있을 만큼 코딩을 한다. (성공)
- 그 다음, 코드를 개선하고 퀄리티를 올리고 리팩토링을 올릴 수 있다.
- 작성하고자 하는 요구사항 분석과 명확한 이해가 필요하다.
- 즉, 요구사항(목표)에 대해 점검하고 사용자 입장에서 코드를 작성할 수 있다.
- 구현보다는 인터페이스에 집중해서 작성해 나갈 수 있으므로 코드의 퀄리티가 향상된다.
- 시스템의 전반적인 설계가 향상된다.
- (개발을 조금씩 해가므로) 개발 집중력이 향상된다.
블랙박스 vs 화이트박스
테스트는 크게 두 가지로 나누어 본다.
- 블랙박스 테스트는 기능 테스트를 말한다. → 기능 자체가 되고 안되고
- 단위 테스트 - 함수 레벨
- ex. sum 함수를 테스트한다면 입력값을 넣었을 때 출력값이 잘 나오는지
- 코드 커버리지를 주로 보게 된다.
- 통합 테스트 - 시나리오 기반 테스트
-
연동 테스트 : 단말에서 호출해본다던지
-
APP의 기능을 사용자 시나리오 기반으로 리스트업 하고(Testcase) 테스트한다.
1) QA 팀에서 실제 테스트를 수행하는 방법
2) 웹/앱을 UI 관점에서 테스트하는 방법(셀레니움처럼)이 있다.
3) API 테스트하는 방법 → API가 여러 개 엮여서 하나의 기능처럼 동작하면 따로 다 정리한다. SoapUI ?
- 회귀 테스트 - 수정/기능
- 수정 혹은 기능 추가가 된다면 기존 기능에도 문제가 없는지 테스트
- 단위/통합 테스트를 반복적으로 수행
- 성능 테스트
- 트래픽을 API 별로 퍼센트를 지정하고(몇 퍼센트씩 호출할지 배분) 스레드를 지정해서 동시 다발적으로 호출한다.
- 이때 정상인지, CPU나 메모리에 문제는 없는지 확인한다.
- 병목 현상이 일어나는지 않는지 확인하고, 용량을 산정하는데 중요하다.
- 화이트박스 테스트는 소스 레벨의 테스트를 말한다.
- code review
- code inspection
Reference
테스트 코드와 TDD 🧪(feat. 프론트엔드, 백엔드를 위한 테스트 코드)
2년간 개발 프로젝트 현장에서 수행한 소프트웨어 테스트 방법론 말씀드립니다~ 10분이면 테스트 전체 조망 (feat. 소프트웨어 개발 현장에서)