작성
·
619
·
수정됨
1
중형 테스트는 멀티 스레드, 멀티 프로세스를 허용하는 테스트라고 이해했는데 그 설명을 하시면서
"멀티 프로세스와 멀티 스레드를 사용할 수 있는 완화조건이 생기죠. 이는 다시 말해 h2 같은 테스트용 DB를 사용할 수 있게 된다는 의미입니다."
라고 하셔서요! 혹시 h2를 사용하려면 멀티 스레드나 멀티 프로세스 환경에 있어야 한다고 이해해도 되는걸까요?
"h2는 멀티 스레드, 멀티 프로세스 환경에 있어야 하기 때문에 h2를 사용하는 순간 중형 테스트로 보면 된다"로 이해하면 될까요??
답변 2
1
안녕하세요. 근래에 책을 집필할 기회가 생겨 그쪽에 힘을 실어주다 보니 다른 일에 신경 쓰지 못했습니다. 답변이 늦어 죄송합니다. 다만 해당 강의는 공식적으로 질의응답을 제공하지 않는 강의였다는 점을 이유로 늦어진 부분에 대해 양해 부탁드립니다.
강의에서 설명했듯이 중형 테스트는 멀티 프로세스에서 돌아가는 테스트를 의미합니다. 이는 즉 테스트를 실행하는데 2개 이상의 프로세스가 뜨는 경우 중형 테스트라는 의미입니다.
h2를 사용해 테스트하면 테스트를 위한 프로세스 하나와 h2를 실행하는 프로세스 총 2개가 돌아가게 됩니다. 아래는 중형 테스트가 실행될 때 데스크탑의 프로세스 상태입니다.
java 프로세스가 2개 떠 있는 것을 확인할 수 있습니다. 이 중 하나는 test를 실행하기 위한 java 프로세스이고 또 다른 하나는 h2를 실행하기 위해 동작하는 프로세스입니다.
반면 소형 테스트는 싱글 프로세스, 싱글 스레드, 디스크 I/O가 없는 상황에서 동작하는 테스트를 의미합니다. 그래서 소형 테스트는 실행될 때 test용 프로세스가 하나만 떠야 합니다. 아래는 소형 테스트를 돌렸을 때 데스크탑의 프로세스 상태입니다.
java 프로세스가 1개 떠 있는 것을 확인할 수 있습니다. 이는 test를 실행하기 위한 java 프로세스입니다.
답변이 도움 됐길 바랍니다.
0
안녕하세요, 인프런 AI 인턴이에요.
h2를 이용하면 중형 테스트로 보여지는 이유에 대해 설명해드릴게요. h2는 인메모리 기반의 데이터베이스로, 특정 기능을 테스트하는 용도로 주로 사용되는 경량화된 DB입니다.
일반적으로 데이터베이스를 사용할 때는 멀티스레드 환경이 아니라면 데이터베이스에 접근하는 스레드가 하나뿐이기 때문에 문제가 발생하지 않습니다. 하지만 중형 테스트 등 멀티스레드 또는 멀티프로세스를 처리해야하는 환경에서는 여러 스레드에서 동시에 데이터베이스에 접근할 수 있어야 합니다.
h2는 멀티스레드, 멀티프로세스 환경에서 동시에 데이터베이스에 접근할 수 있도록 설계되어 있기 때문에, 이러한 환경에서 h2를 사용할 수 있게 됩니다. 따라서, h2를 사용하는 순간 중형 테스트로 보는 것이 일반적입니다.
그러나 중형 테스트로 보여지는 명확한 이유는 아니며, h2는 단지 멀티스레드, 멀티프로세스 환경에서 동작할 수 있는 DB로 간주되기 때문에 중형 테스트에 많이 사용된다고 말씀드릴 수 있어요.
더 자세한 내용은 h2 공식 웹페이지를 참고하시면 도움이 될 거예요. 감사합니다.
와 .. 진짜 존경합니다. 저도 열심히 공부해서 우근님처럼 훌륭한 개발자가 되겠습니다!