준호씨의 블로그
유닛테스트 코드의 변수명 sut의 정체. SUT - system under test 본문
같은 부서의 개발자 분이 유닛 테스트 코드를 작성하는데 테스트 대상의 변수명으로 sut를 사용하는 것을 보았습니다.
Person이라는 클래스를 테스트한다고 가정하면 Person클래스의 인스턴스 변수명을 sut라고 선언하는 것입니다.
Person sut = PersonFactory.create();
sut가 뭔지 물어보니 xUnit에서 나오는 system under test라는 단어의 약자라고 합니다. xunit patterns사이트에 정의가 있더군요.
AUT, MUT, CUT, OUT 등으로도 불릴 수 있는데요.
- AUT - Application Under Test
- MUT - Method Under Test
- CUT - Class Under Test
- OUT - Object Under Test
의 약자입니다.
클래스니 메서드니 객체니 따로 신경 써서 선언하지 않고 싶다면 대표 격인 SUT를 사용하면 될 거 같습니다.
옆에 있던 다른 개발자는 같은 의미로 target을 사용한다고 하는데요. target을 사용하는 글들도 종종 보입니다.
SUT, AUT, MUT, CUT, OUT 등 xUT는 모두 테스트 대상을 지칭하니 target이 더 직관적인 거 같습니다.
저는 그냥 클래스 명이 Person이라면 그냥 person을 쓰고 있는데요. SUT을 따르면 Person sut가 될 거고요. target을 따르면 Person target이 되겠습니다.
어떤 것이 정답이라고 하기는 어렵고 취향의 차이가 될 거 같습니다.
개인적으로는 sut보다는 target이 좀 더 직관적인 거 같고요. 굳이 target이라고 명시하지 않더라도 테스트 코드를 보면 테스트 대상이 무엇인지는 금방 알 수 있다고 생각하기에 그냥 기본적인 클래스 인스턴스 네이밍(Person이면 person)을 사용해도 괜찮지 않을까 생각됩니다.
1년 뒤의 저는 과연 어떻게 생각하고 있을지 궁금하네요.
'개발이야기' 카테고리의 다른 글
perl - HTTP::Tiny 로 http POST request 날리기. form 데이터 사용 (0) | 2021.04.30 |
---|---|
MacOSX - gyp: No Xcode or CLT version detected! 에러 해결 (0) | 2021.04.26 |
IntelliJ - http 요청 테스트 - HTTP Request - 테스트 스크립트 예제 (0) | 2021.04.05 |
IntelliJ - http 요청 테스트 - HTTP Request (0) | 2021.04.04 |
OOAD (Object-oriented analysis and design) (0) | 2021.04.03 |