takin17
3k
2019-12-25 09:26:54
12
1844

데브옵스가 부상하면서 테스트 코드도 부상하네요


배포 나가기 전에 

tdd 돌려서 코드 오류 확인하는데

다들 tdd에 관심 좀 가지고 계십니까~~

1
  • 댓글 12

  • 곰개발자
    2019-12-25 10:31:56

    필드에선 유닛 테스트는 원래부터 필수 입니다.

  • choju
    1k
    2019-12-25 10:41:02

    배포나가기전에 안전장치 있으면 마음의 안정이좀 되긴 하죠...

  • 앙앙이
    4k
    2019-12-25 10:46:00 작성 2019-12-25 12:26:39 수정됨

    순수 tdd 가 아닌 작은 tdd(?) 를 하고 있습니다.


    순수 TDD 는 먼저 테스트 코드를 하는거지만

    저는 먼저 하지 않고 만들어 놓고 합니다.

    그렇기때문에 누락된 테스트가 많지만

    핵심은 놓치지 않으려고 합니다.

    하자만 설렁 설렁 먼저 테스트할때도 있습니다.


    예를 들면 lucy XssSaxFilter 도입할려고 테스트를 먼저 하는 경우가 그러합니다.

  • 곰개발자
    2019-12-25 10:56:18 작성 2019-12-25 10:56:34 수정됨

    TDD와 Unit tests를 혼동해서는 안됩니다. TDD는 Test를 먼저 작성하고 개발을 해나가는 방법론이고, Unit tests는 내가 만든 것을 테스트 하는 일입니다. 

    Unit Testing refers to what you are testing, TDD to when you are testing.

  • 앙앙이
    4k
    2019-12-25 12:28:56

    // 곰개발자

    그래서 작은 TDD 라고 말한것입니다.

    그기 엄격한 의미에서 TDD 가 아니지만

    비록 나중하는 단위 테스트라지만

    단위 테스트의 영향으로 프로그램 구조를 바꿀 경우가 있습니다.

    넒은 이미에서 "테스트 주도 개발" 를 하게 되어 작은 TDD 라고 말한것입니다.

    -3
  • 곰개발자
    2019-12-25 12:38:36 작성 2019-12-25 12:38:57 수정됨

    // 앙앙이

    혹시 글을 읽으시는 분들이 오해를 할 수 있어서, 그렇게 적어 놓은 겁니다. 

    작은 TDD라는 것은 없습니다. TDD에서 가장 중요한 건 테스트 코드를 먼저 작성하느냐 입니다. 

    개발 코드를 먼저 작성후 unit test를 작성하면 그건 TDD가 아닙니다.

  • 스텁
    2k
    2019-12-25 13:10:22 작성 2019-12-25 13:11:35 수정됨

    유닛테스트 말하는거라면...

    유닛테스트 없이 배포하는곳에서 일하면 얼른 탈출해야죠 ㅎ


    그리고 데브옵스랑 테스트코드는 직접적인 상관은 없죠?

  • 인사동
    2019-12-25 13:48:37

    데브옵스랑 테스트코드는 직접적인 관계는 없죠.

    개발과 운영을 합친게 데브옵스이고

    테스트코드는 유닛테스트를 말씀하시는것 같고

    TDD는 테스트주도개발의 개발 방법론이고.


    TDD를 돌린다는 말 자체가 여러가지 뜻으로 해석될 수 있겠네요

    테스트주도개발의 사이클을 돌린다는건지 - (Red - Green - Refactor)

    유닛테스트를 돌린다는 얘기인지...

    곰개발자님이 답변해주신 글도 그 점을 중심으로 잡아주신다고 보고...


    테스트 방법은 여러가지가 있기에 유닛테스트가 없는 프로젝트가 일률적으로 나쁘다고 말하기도 쉽지 않다고 봅니다.

    데브옵스랑 비슷한 용어로 SRE가 있는데 두개다 확실히 이거다 라고 정의하기는 어렵습니다.

    추상적으로 나온 개념이기도 해서.

    유닛테스트 역시 정답이 있는 개념은 아니라고 생각합니다. 가이드는 물론 많이 있죠

  • 곰개발자
    2019-12-25 13:50:23
    devops는 사실 tdd랑 연관시킬 필요는 없습니다.
    CI/CD의 영역인데, 목표는 메뉴얼 task 없는 자동화 배포/테스트에 역점을 두고 있습니다. 
  • 곰개발자
    2019-12-25 14:15:37

    Github를 기준으로 예를 들었을 때 pull request를 만들었을  때 unit test, integration test, acceptance test가 같이 포함되어 있으면 좋습니다. Integration이나 acceptance test의 여부는 코드 리뷰를 통해서 걸러질 수도 있습니다.

    특히 unit test의 경우는 Code coverage가 같거나 높지 않으면 master로 merge하지 못하게 강제합니다.

    Unit test의 code coverage가 제품의 완성도를 전부 대변해 주지는 않지만, 그래도 그 회사의 문화적 수준을 보여주는 척도임에는 확실합니다. TDD는 취향의 문제지만, 유닛테스트 만큼은 양보할 수 없는 항목입니다.

    이 개발과정에서 branch의 commit마다 이 모든 테스트들이 자동으로 돌아갈 수 있는 환경을 만들어 주는 것, master로 merge했을 때 production으로 자동으로 배포할 수 있게 하는 것이 devops의 궁극적 목표라고 생각합니다.

    그리고 이건 어느 특정팀의 운영이라기 보다는 전체적인 개발자들의 문화에 기반에서 나오는 용어라고 해석하는 것이 맞아 보입니다. 


  • 답정너심판자
    2k
    2019-12-25 15:25:48

    @앙앙이

    작은 TDD는 어디서 나온 개념인가요?

    본인이 만든 개념이라면, 대중적인 개념으로써 사용하면 안되죠 -_-;; 

  • lnomadism
    1k
    2019-12-25 16:11:43

    TDD 자체가 유닛테스트를 먼저 작성한다는 개념인데 완성된 코드에 유닛테스트를 작성한다면 TDD가 아닌거죠. 

  • 로그인을 하시면 댓글을 등록할 수 있습니다.