Test Sizes ?

Picbel·2022년 7월 26일
0

Testing Programming

목록 보기
2/3
post-thumbnail

이번 포스팅은 구글 Testing Blog에 올라온 Test Sizes의 요약 포스팅입니다. Test Sizes

내용 요약

먼저 기존에 테스트단계를 분류할때는 통합테스트, 단위테스트, 기능테스트 등 여러 단계가 있고 테스트의 범위로 구분하는등이 있지만 각 이름이 실제로 의미하는 바에 대한 공통된 이해를 바탕으로 팀을 설득하는데 어려울수 있습니다.
그래서 이런 말보단 Test Sizes에서 말하는 Large, Medium, Small로 테스트 단위를 구분하는것이 더 좋았습니다.
그럼 어떻게 구분하는지 알아보죠

먼저 테스트를 Large, Medium, Small로 구분합니다.
그리고 다음과 같은 방법으로 구분합니다

FeatureSmallMediumLarge
Network accessNolocalhost onlyYes
DatabaseNoYesYes
File system accessNoYesYes
Use external systemsNoDiscouragedYes
Multiple threadsNoYesYes
Sleep statementsNoYesYes
System propertiesNoYesYes
Time limit (seconds)60300900+

절대적인 방법은 아닙니다만 원문에서는 다음과 같은 방법을 권장하고있습니다.

규칙을 간단히 요약하면

  • small : 테스트 대상의 외부계층과 단절되어야합니다.
  • medium : localhost나 Thread, DB 등 테스트 대상의 외부 계층과 통신 그러나 외부 네트워크, 시스템에 접근이 제한됩니다.
  • large : 외부 네트워크, 시스템등에 접근하여 테스트해야하는 케이스

기존에 익숙한 테스트 범위로 설명시

  • small : 단위테스트
  • medium : 두개의 계층(layer)의 통신테스트
  • large : 종단테스트, 시스템테스트

정도로 요약 가능 할 것 같습니다.

테스트 정의의 주요 이점은 테스트에서 제한사항을 통제 할수 있다는 것입니다.

예를들어 Java에서 @BeforeClass(Junit5로 보면 @BeforeAll)로 공통된 설정(Data, Thread 설정등)을 테스트 범위단위로 공유할 수 있습니다.
즉 제한 사항에 따른 설정을 범위단위로 공유해서 테스트시 코드의 재사용성을 증가시킨다.
또한 테스트단위를 어노테이션으로 설정해 추후 Large, Medium, Small단위로 묶어서 실행하거나 해당 단위로 수집또한 아주 쉬워집니다.
또한 테스트에서 정의하기 어려운 제약 조건들을 테스트 스위트로 묶어 해당 사항을 일관되게 관리할수 있습니다.

결론 : 테스트 스위트를 쉽게 구축하고 가능한 빨리 일관되게 실행 할수 있게됩니다.

profile
Software Developer

0개의 댓글