pro00er / algorithmSolution

Codility, HackerRank 등 코딩테스트 플랫폼에서 알고리즘 풀이 수련
GNU General Public License v3.0
3 stars 6 forks source link

문제풀이 내용 공유용 md 파일 양식만들기 #6

Closed ohahohah closed 4 years ago

ohahohah commented 6 years ago
kimsunoh commented 6 years ago

문제 풀이용 md 파일을 만들고 있는데, 테스트 케이스를 어떻게 할지에 대해서 얘기가 필요할 것 같습니다 @ohahohah @HojinJava 코멘트 부탁드려요

얘기할 점

ohahohah commented 6 years ago

네 전 testcase 공유는 필수라고 생각합니다. 하지만 md가 아닌 소스코드 형태로 테스트케이스가 공유되어야한다고 생각합니다. 여기서 testcase 라 함은 입력값, 실제출력값, 예상값과 같은 정보를 포함한 테스트 코드 까지입니다.

kimsunoh commented 6 years ago

@ohahohah 네, 저도 테스트 케이스가 공유 되어야 한다는 생각에 동의합니다. 그러나, 테스트 코드의 구조도 포함이 되야하는가 생각해 봐야 할 것 같습니다. 예를들어 java의 Junit를 이용한 테스트라고 했을 때, 그 assertTrue() 와 같은 메서드 호출 하기 위한 테스트 클래스의 구조를 말하는 것입니다. 제가 테스트 코드를 너무 간단히 생각하는 것일까 싶어서, 다른분들의 의견을 들어보고 싶습니다

HojinJava commented 6 years ago

나는 코딜리티에서 정확성을 제시해주고 있기 때문에 단지 맞다 틀리다를 제공하는 assertTrue() 같은 기능이 필요할까 살짝 의구심이 드는데, 만약 두분이 필요하다고 느낀다면 나도 같이 작성해서 공유할 수 있습니다.

근데 알고리즘 풀면서 테스트케이스가 필요한 경우는 내 답은 뭐고, 원래 답은 뭐다 이런 결과보다는 과정에서 틀린 이유를 잡아주는 케이스는 많이 필요하다고 느끼고 있어 이번에 푼 문제(CountDiv)로 예시를 들자면

6~11 까지 2로 나눌 수 있는 값은 6,8,10 으로 결과 3을 리턴을 해야되지만

내 답은 6,8, 이며 결과는 2이다.

이런식으로 과정에서 틀린점을 지적해주는건 필요하다고 느끼는데.

모듈화가 많이 힘들꺼같아서 제안은 안하고있었어.

정리하자면, 나는 코딜리티에서 제공해주는 테스트케이스가 있기 때문에 단지 junit assertTrue()메소드로 하는건 중복될꺼같다는거고, 내가 필요한 테스트케이스는 왜 틀렸는지 알려주는건 필요하다고 느낍니다.

ohahohah commented 6 years ago

@kimsunoh 저도 테스트코드 구조까지 공유해야하나 의문이 들긴했었는데요. 나중에 취합이 어렵지 않을까 생각도 들구요. 그럼에도 불구하고 저는 테스트코드 자체를 공유하는게 낫다는 생각이 들어요.

@Test public void 전체솔루션말고_그_안에서_사용하는_작은메소드_동작확인(){ assertEqual(max(inputA,inputB), inputB); }


이런식으로 단순히 정답값과 내가 푼 값이 일치하는지 외에 정보를 더 담을 수 있다고 생각해요. 
- 두번째는 편리함과 코드리뷰를 좀 더 세세하게 할 수 있다는 점? 다른 사람의 테스트케이스를 눈으로 보는 것 뿐만아니라 바로 다운로드 받아서 실행해볼 수 있으니까요.

@HojinJava 나도 그 부분을 어떻게 하면 번거롭지 않게 공유할 수 있을까 고민이 되어.
- 저번 시간에 내가 올렸던 solution 코드에 assertResult하는 것에 
  - 입력값
  - 내가 푼 정답값
  - 원했던 예상 결과값(나와야하는값, 정답)

위에 세가지 정보를 print 해주는데, 이걸 공유하려면 내가 콘솔에서 복사해서 또 따로 적어야하니까 귀찮더라고. 
그래서 내가 푼 값과 예상결과값이 불일치했을때, 위에 정보를 파일에 자동으로 저장해주도록 테스트 소스를 덧붙이면 어떨까 싶은데.
- 해당 템플릿은 이미 가지고 있고(hackerrank에서는 output값을 다 파일에 쓰게 되어있음), 내일 시간이 되면 공유할게. 아직 codility맞춤형은 없음.