테스트 특히 IO 등 에러 상황에 대한 테스트는 어떻게 진행하시나요?

emptynote의 이미지

테스트 특히 IO 등 에러 상황에 대한 테스트는 어떻게 진행하시나요?

에러 상황을 가정한 테스트 코드를 넣고 테스트 완료후 제거들 하시나요?

달리 생각나는 방법이 이 방법밖에 없는데,

1회성이라 테스트 코드 제거후에는 더 이상 테스트가 어렵기때문입니다.

어떻게 하면 자기가 원하는 시간에 에러 상황을 발생시켜 테스트를 할 수 있게 할까요?

고수님들의 많은 조언 부탁드리겠습니다.

mirheekl의 이미지

본문에서 말씀하신 I/O상황을 테스트할 경우..

모듈 본체와 I/O 담당 라이브러리가 적절히 분리돼있을 경우, I/O담당 라이브러리만 테스트용으로 작성해서 유닛 테스트 등으로 붙여서 돌리면 본체에 영향을 주지 않고도 테스트하실 수 있습니다. 설계 단계에서부터 테스트를 고려해야 된다는 의미이기도 합니다.

클래스 사용 언어라면 인터페이스 등으로 적당히 본체와 통신클래스를 떨어뜨려놓고 본체의 인스턴스를 선언할때 통신클래스의 인스턴스를 넘겨주는 방식으로 구현하면 쉽게 테스트가 가능해지겠죠.

또는, 테스트 코드를 넣어놓되, 환경설정 등을 통해 특정 상황에서만 그 코드가 동작하게 하는 방법도 있습니다. 디버그 버전에서만 동작하게 하는 것도 방법이고요. 사용자에게 해당 설정이 유출돼도 큰 문제가 없는 경우에는 이런 방법을 쓰셔도 됩니다.

--

emptynote의 이미지

답변 감사합니다.

환경설정 이용한 특정상황 동작 방법을 고민해볼 생각입니다.

이렇게 테스트를 위한 코드 넣으면 그대로 굳어져서 이 코드를 삭제하는것도 만만한 작업이 아니기에 시름만 깊어지네요.

장인이 되고 싶은데 하나 하나 품질 검증을 거치지 않고 "돌아가는 코드" 를 우선적으로 만들었네요.