180106-TIL

Reading time ~2 minutes

오늘 한일

- 반복주기를 활용 한 ATDD 연습

  • 화이트 코스 때부터 반복적으로 만들어 본 반복 주기(유저, 게시글, 댓글 기능이 있는 간단한 웹 애플리케이션) 라면 전체적인 요구 사항을 알기 때문에 ATDD 연습으로 적합할 것 같아 연습 시작

  • 포비의 코드 없이 시작하려다가 Request, Response를 어떻게 만들고 무엇을 확인해야 할지 등 시작 자체를 못해서 일단 포비의 테스트 코드를 이용

  • 당장은 ATDD라기보다는 인수 테스트(일단 한글이 편하므로 인수 테스트라 부르도록 하겠다)를 하기 위해 필요한 기술들을 익히는 느낌으로 진행 중

  • User가 관련된 부분은 포비의 테스트 코드를 이용하고 있지만 차후 게시글, 댓글 부분은 직접 작성해 보도록 하자 (단, 게시글까지는 확실히 진행할 것이지만 댓글까지 진행할지는 미지수)

  • 내가 진행하고 있는 작업의 진척도를 볼 수 있다.(또한 무엇들을 만들어야 하는지도 알 수 있다)

    테스트

    login_Form이 왜 이렇게 오래 걸리나 싶었는데 현재 상태에선 첫번째 테스트 코드는 서버가 켜지는 시간까지 포함된다.

- 토글 스위치를 구했다!!

  • 이런걸 구했다.
    토글스위치

    구한 이유는

    쓸모없는

    요거!!

    저번 코드스쿼드 메이커 강의에 참석했다가 쓸모없는 기계 영상을 봤는데 생각 보다 간단한 구조일 것 같아 찾아보니 확실히 간단하다. 급 만들어 보고 싶어졌다.

    케이스 및 스위치를 밀 밀대(?) 빼고, 나머지 재료는 다 있으니 삘(?) 받을 때 작업해봐야겠다.

- 블로그 내에 버그 발견

  • 단순 미구현 부분이 아닌 제대로 된 버그로 모바일에서 볼 때 검색 버튼이 계속 따라다닌다.

오늘 느낀점

  • 어제 통합 테스트와 인수 테스트에 대한 구분을 JK를 통해 배워서 구분이 된다고 생각했는데

    @Test
    public void createForm() {
      ResponseEntity<String> response = template().getForEntity("/users/form", String.class);
      assertThat(response.getStatusCode(), is(HttpStatus.OK));
    }
    

    사용자가 회원 가입 페이지를 요청할 경우 해당 페이지를 보여주는 위와 같은 단순한 테스트의 경우 코드만 놓고 보면 통합 테스트인지, 인수 테스트인지 감이 덜 온다. (내가 이 테스트 코드를 작성 한 이유는 인수 테스트 범주 같지만 작성된 코드는 통합 테스트 같다는 느낌이 든다)

    일단 그걸 구분 짓는 시험을 볼 것도 아니기 때문에 엄격한 구분을 지을 생각은 없지만 앞으로 ATDD를 하려면 적절한 인수 테스트를 설계해야 할 테니 조금씩은 의문을 갖고 고민을 해 볼 만한 것 같다.
    (혹은 요구 명세나 설계 명세를 보게 되는 경험들을 쌓다 보면 자연스럽게 알게 될 수도 있으니 미루는 것도 나쁘진 않을 것 같다.)

  • ATDD를 연습해보려다 준비 단계에서부터 생각 보다 오랜 시간이 걸리기도 했다. 또한, 아직은 제대로 된 인수 테스트를 하는 것 같진 않다. 그래도 못하기 때문에 잘 하기 위해 하는 연습이기도 하고 일단 잘 하려는 것보단 ATDD가 무엇인지 체험하는 형태 및 인수 테스트를 위해 필요한 것들을 사용하는 법을 익히도록 하자.

  • 아직 많이 부족하여 느리게 진행이 되고 있지만 ATDD를 통해 개발을 해보니 이전에 하던 방식과는 전혀 색다른 경험을 하는 것 같다. 너무 편하다!! 일단 브라우저를 킬 필요가 없다. 비록 초록 불이 뜨는 걸 본 다음 실제 동작하는지 직접 확인을 해보긴 했지만, 어디까지나 최종 테스트로서 딱 한 번만 수행했다. 또한 하나의 인수 테스트가 완료될 때까지 이클립스를 떠날 필요가 없었다.

    이로 인해 테스트를 위해 브라우저를 키는 동작이 사라지므로 개발의 흐름이 끊기는 일이 사라졌다!!! 단순히 흐름이 끊기지 않는 정도가 아니라 내가 개발하고 있는 서버 단의 작업에만 집중을 할 수 있는 환경을 제공해 주는 것 같다. 정말 좋은 것 같다.

    귀찮은 수동 테스트를 안 할 수 있는 것도 정말 큰 이득이지만 개인적으로 가장 좋은 점은 작업의 흐름이 끊기지 않고 내가 집중해야 할 것에만 집중할 수 있다는 점이 좋은 것 같다.

  • 블로그 내에 미구현된 것이나, 활용하지 않고 있는 기능들이 있었는데 일단 블로그 자체보다는 기록을 남기는 공간으로서 의미가 더 컸던지라 다른 할 것들도 많기에 작업을 할 생각조차 안 했는데 구현을 마쳤던 검색 기능에 대한 버그를 최근에 알게 되었다.

    심지어 그냥 넘어갈까 싶었는데 무려 그 마음을 먹은 다음날 JK가 버그 신고를 해주셨다. 미구현 된 거야 개발이 완료 안 된 거지만 구현이 되었는데 잘못된 건 잘 못 된 거니까 조만간 고쳐야겠다.

  • ATDD을 연습하는 게 익숙지 않다 보니 생각 보다 늦고, 재미도 있다 보니까 trello에 대한 UML, ERD 작성은 뒷전으로 두고 하나도 안 했다….. 다음 주부터 제대로 시작하려면 내일은 꼭 해야겠다.


내일 할일

  • trello에 대한 UML, ERD 작성

  • ATDD 연습