SSAFY11th-book-study / book-study

SSAFY 11기 6반의 '토비의 스프링 스터디'
0 stars 0 forks source link

[2.3.3] 포괄적인 테스트 - 부정적인 테스트 케이스의 예시 #19

Closed sootudio closed 8 months ago

sootudio commented 8 months ago

177 페이지를 보면, 네거티브 테스트를 강조하는 내용이 있습니다. 제가 이해했을 때는, 개발자는 보통 자신이 예상 가능한 테스트만 돌리려는 경향이 있고, 그렇다면 해당 기능에 대한 제대로 된 테스트를 하지 못할 가능성이 있기 때문에 부정적인 케이스를 먼저 생각하라는 내용이었습니다.

그래서 테스트를 할 때 부정적인 케이스(예외적인 상황)에는 어떤 것들이 있는지, 혹은 필수적으로 테스트에 꼭 들어가는 부정적인 케이스들이 있는지 궁금해졌습니다.

책에서는 부정적인 케이스의 예시로 get()메소드에서 존재하지 않는 id가 주어졌을 때 어떻게 반응하는지에 대한 예시를 들었고, 제가 생각했을 때는 계산을 해야하는 메소드의 인자에 경계값(해당 변수의 최댓값 또는 최솟값) 입력하는 상황을 생각해 보았는데, 각자 테스트를 만들면서 일반적으로 어떤 케이스들을 체크하는지, 자주 체크하는 부정적인 케이스에는 어떤 것들이 있는지 궁금합니다!

limjongheok commented 8 months ago

요구사항에 따라 달라질 것 같은데 저 같은 경우에는 일반적으로는 validation에 대한 예외 처리를 해 준 것 같습니다.

hj-k66 commented 8 months ago

저는 주로 2가지를 체크하는 것 같습니다.

1. 경계값 체크

start ~ end 값 사이의 데이터를 조회하는 getRange(int start, int end)메소드가 있다면, start와 end값인 데이터가 잘 조회되는지, start -1과 end +1은 조회가 안되는게 맞는지를 체크합니다.

2. 로직의 반대되는 상황 체크

모든 테스트 케이스에 반대되는 행위를 체크합니다. 예를 들어 파일 업로드 기능을 구현할 때, 파일 확장자가 pdf인 경우만 허용한다는 조건이 있다면, 테스트 시에는 pdf 외 여러 확장자를 넣었을 때 예외처리가 되는지 체크합니다.

관련 자료 https://tech.devsisters.com/posts/not-enough-testcase/ https://engineering.linecorp.com/ko/blog/testing-optimization#foot1

sootudio commented 8 months ago