테스트를 더 빨리 끝내보기 (feat. 자료구조, singletonList)

2023. 11. 2. 21:28Project 해축갤/테스트 코드

728x90

https://github.com/xpmxf4/HaeChuk-Gallery/blob/main/src/test/java/HailYoungHan/Board/controller/PostControllerTest.java

모든 게시물을 불러오는 Controller API 테스트 코드

 

위와 같은 코드가 있는 데 테스트하는 게 일일이 귀찮아서 시작했던 테스트 코드를

이제는 더 빨리 굴려볼 수는 없을까 라는 고민이 들어 코드를 한번 개선해보고자 했습니다.

 

그렇다면 어떤 부분을 개선할 수 있을까 라는 고민을 하다가 List <PostDbDTO> allPosts 부분을 봤습니다.

자료구조를 사용한다면 어떻게 더 빠른 코드가 생성이 될 수도 있지 않을까 싶었습니다.

 

그래서 다음 2가지 코드를 한번 짜봤습니다.

List 자료구조를 활용해 게시물 담기

Arrays.asList(1개)

처음은 기존처럼 Arrays.asList() 를 사용해 List 자료구조를 활용한 테스트 코드입니다.

원래의 코드와 다를 바가 없습니다.

 

이를 한번 실행시켜본다면

실행 결과

대략 529ms 정도가 나옵니다.

사실 뭐 테스트 하나 실행하는 데 529 ms 씩이나 나오나 싶지만,,,

실행환경 구축 등등에 들어가는 시간도 포함이니 그려려니 합니다 ㅠ

 

Collections.singletonList에다 담기

간략히 singletonList 에 대해 설명하자면

Collections.SingletonList

immutable list 이자, 지정된 하나의 object 만 담을 수 있는 리스트입니다.

이런 자료구조 immutable 하다는 것과 지정된 object 하나만 담을 수 있기 때문에

ArrayList처럼 내용을 조작할 때 검증하는 로직 등등이 없어 조회(query)만 하는 경우 더 빠른 자료구조이죠.

singletonList 사용해보기

위 given 파트에서 singletonList 부분만 바뀌었습니다.

자 테스트를 돌리기 전에 캐싱 때문에 singletonList의 결과가 더 빠를 수도 있으니 

캐시 한번 비워주고 테스트를 돌려보면 

366ms

무려 366ms 정도로 줄었습니다!

이래서 자료구조를 알아야 되나 싶은 결과물입니다!

결론

하지만 이 코드는 사용되지 않았습니다 ㅠ,,,

왜냐면 테스트하려고 하는 api는 여러 게시물을 담는 자료구조가 필요한데 

singletonList는 말했던 것처럼 하나의 원소만 담을 수 있기 때문이죠,,, 

 

그래도 자료구조의 중요성에 대해서 배울 수 있었던 하루였습니다 :)

728x90