개발을 하다보면 만든 제품이 정상적으로 작동하는지를 테스트해봐야한다. 사용자들이 직접 사용하기 전에 개발 단계에서 테스트를 진행하고, 어떤 부분에서 어떠한 에러가 나는지 찾아내는 것이 중요했던 것 같다.
물론, QA를 진행하는 분들이 따로 계시지만 내가 직접 테스트를 하게 되면 QA분들이 확인할 수 없는 부분까지 테스트할 수 있다는 것이 장점인 것 같은데 이번에 정보처리기사를 공부하며 들어봤던 테스트들 중 블랙박스 테스트와 화이트박스 테스트에 대해 다시 한번 듣게 되면서 두가지의 차이를 명확하게 짚어보고자 한다.
1. 블랙박스 테스트란?
블랙박스 테스트는 인터페이스로 소프트웨어를 테스트하는 방식으로 기능이 제대로 동작하는가를 검증하는 방식이라고 생각하면 될 것 같다. 그렇기 때문에 자료구조, 외부데이터 접근, 인터페이스, 성능 에러 등에 관한 것들을 확인할 수 있으며 내부적으로 어떤 보안 기술이 적용되었고, 어떤 구조로 이루어져있는지는 알 수 없다. 이는 사용자 관점의 테스트로 보통 QA 분들이 QA를 진행하는 방식이라고 한다.
- 사용자 및 결과물 중심 테스트
- 기능이 제대로 동작하는지 테스트
2. 화이트박스 테스트란?
화이트박스 테스트는 블랙박스 테스트와는 다르게 소스코드 형태로 테스트를 진행하는 방식이다. 그렇기 때문에 구조적 테스트라고도 불리며 코드를 기반으로 테스트하는 것이다. 이는 개발자 관점의 테스트 방법이라고 볼 수 있는데 개발자가 내부 소스코드 동작을 추적할 수 있기 때문에 동작의 유효성뿐만 아니라 코드까지 꼼꼼하게 테스트할 수 있다.
- 개발자 및 소스코드 중심 테스트
- 소스코드 추적 오류 검증
- 구조적 테스트
즉, 블랙박스 테스트는 실행 파일 형태로 테스트를 진행하는 것이고, 화이트박스 테스트는 소스코드 형태로 소프트웨어를 테스트하는 방식이라고 보면 되는데 게임을 예로 들면, 게임을 직접 플레이하며 결과물을 검사하느냐, 게임 소프트웨어 내부의 언어를 실행 단계에 맞게 추적하며 오류를 검사하느냐의 차이인 것이다.
추가적으로 포지티브 테스트와 네거티브 테스트에 대해서도 찾아보게 되었는데, 각각의 차이는 아래와 같다.
3. 포지티브/네거티브 테스트
포지티브 테스트는 정상적인 값을 입력했을 때 정상적인 결과가 나오는지를 테스트하는 것이고 네거티브 테스트는 비정상적인 값을 입력할 때나 비정상적으로 시스템을 조작할 때를 테스트하는 것이다. 보통 사람들은 정상적인 경로로 소프트웨어를 이용하는 경우가 많기 때문에 네거티브 테스트를 통해 부족한 부분을 잘 찾아내야하며, 네거티브 테스트가 잘 되어있는 제품일수록 품질이 더 높다고 할 수 있다.