[클린 코더] The Clean Coder -2

🐷Jinie (juniorDeveloper)·2021년 1월 26일
1

development logs

목록 보기
2/2

8. 테스트 전략

  • QA는 오류를 찾지 못해야한다.
    : 개발팀은 오류가 어떻게 발생했는지 자신에게 물어보고 또 발생하지 않도록 조치를 취해야한다.

  • QA의 역할은 사업부와 함께 자동화된 인수 테스트를 만드는 일이다.
    인수테스트는 시스템에 대한 진정한 명세서이자 요구사항 문서이다.

    보통 사업부는 '행복한 경로' 의 테스트를 만들고
    QA는 '모퉁이조건, 경계조건, 불행한 경로'의 테스트를 만든다.

  • 테스트 자동화 피라미드

    단위 테스트 > 컴포넌트 테스트 > 통합 테스트 > 시스템 테스트 > 탐색 테스트

  • 단위 테스트
    : 프로그래머에 의해, 프로그래머를 위해 시스템 프로그래밍 언어로 만든 테스트

  • 컴포넌트 테스트
    : 인수 테스트의 일종, 대상은 시스템의 독립 컴포넌트
    시스템의 컴포넌트는 업무 규칙을 감싸고 있기 때문에, 컴포넌트 대상으로 한 테스트는 해당 업무 규칙을 테스트하는 인수 테스트

  • 통합 테스트
    : 여러 컴포넌트로 이뤄진 큰 시스템에서만 의미가 있음
    컴포넌트 묶음을 모아 묶음끼리 제대로 상호작용하는지 테스트한다.
    시스템 구조 설계가 튼튼하다는 사실을 보장
    성능 테스트나 처리량 테스트를 하기도 함

  • 시스템 테스트
    : 통합한 시스템 전체를 대상으로 하는 자동화 테스트 . 궁극적인 통합 테스트

  • 수동 탐색 테스트
    : 키보드에 손을 얹고 모니터를 직접보며 하는 테스트
    시스템이 기대한 대로 동작하는지 확인하는 동시에 예상치 못한 오류를 찾아내는 것
    가능한 많은 '특이사항'을 창의적으로 발경해내는 일이 목표

  • 시스템이 무결점 상태를 계속 유지하는지 확인해야 한다.

    9. 시간관리

  • 회의

  1. 회의는 필요하다.
  2. 회의는 엄청난 시간 낭비이다.
  • 프로는 당장의 이익이나 큰 이득이 없는 회의에는 적극적으로 참석을 거부한다.
  • 거부하기
  • 빠져나오기
  • 의제와 목표를 정하라
  • 일일회의
    : 애자일 개발의 규범 중 하나다.
    기립회의라고도 부른다.
  1. 어제는 뭘 했나?
  2. 오늘은 뭘 할 예정인가?
  3. 방해요소는 없나?
  • 반복 계획 회의
    : 애자일 개발의 규범중에서 가장 잘 해내기 어려운 일이다.
    제품 백로그에서 다음 반복 주기 동안 처리할 항목을 고르는 일이다.

  • 반복 회고와 시연
    : 각 반복 주기가 끝날 때마다 시행
    무엇이 잘 됐고 무엇이 잘못됐는지 토론

  • 논쟁 / 의견 차이
    : "어떤 논쟁이든 5분 안에 해결되지 않으면 논쟁으로는 해결할 수 없다."-켄트 벡

  • 집중력 마나

  • 수면

  • 카페인

  • 재충전

  • 근육 집중

  • 우선순위 뒤집기

  • 소프트웨어 개발자는 부지런히 시간과 집중력을 관리한다.

    10. 추정

  • 관계를 어긋나게 만드는 불신감의 원인은 거의 다 추정

  • 사업부는 추정을 약속으로 보고 개발자는 추정을 어림짐작으로 본다.
    약속은 꼭 지켜야한다.

  • 추정은 어림짐작이다. 약속에 포함되지 않는다.

  • 추정은 숫자가 아니다. 분포다.

    PERT
    : 프로그램 평가와 검토 기술
    미해군이 폴라리스 잠수함 프로젝트를 지원하기 위해 만들었음

  • 업무를 추정할 때 세 가지 숫자를 제시. 이 숫자를 3방 분석이라한다.

  1. O 낙관적 추정 값
  2. N 명목 추정 값
  3. P 비관적 추정 값
  • 추정에 사용하는 자우너 중 가장 중요한 자원은 주변사람들

  • 광대역 델파이
    : 의견일치. 사람을 모아 팀을 꾸리고, 토론하고, 추정하고, 합의에 도달할 때까지 토론과 추정을 반복한다.
    $ 날아다니는 손가락
    : 한번에 하나의 업무에 대해서만 토론
    손가락으로 0에서 5까지 숫자를 얼마나 걸릴지 생각해서 표현한다.
    모든 의견이 일치하면 다음 업무로 넘어간다.
    만약 만장일치가 아니면 의견 일치를 볼 때까지 계속한다.
    $ 계획포커
    : 여러 다른 숫자가 적힌 카드를 낸다. 다른 부분은 날아다니는 손가락과 유사
    $ 관계 추정
    : 모든 업무를 카드에 적고 추정값을 적지 않는다.
    업무 카드를 상대적으로 비교해서 긴 시간이 필요한 업무는 오른쪽 작은 업무는 왼쪽으로 옮긴다.

  • 큰 수의 법칙
    : 추정에는 오류가 가득하다.
    큰 업무를 여러 개의 작은 업무로 쪼개 따로따로 추정하면, 하나의 큰 업무 추정 값보다 작은 업무들의 추정 값의 합이 정확하다.

  • 개발자는 사업부가 계획을 짜는 데 쓰도록 실용적인 추정값을 전달해야한다.

  • 지킬 수 없는 약속을 하지 않는다.

    11. 압박

  • 데드라인

  • 달성할 확신이 없는 마감일 약속을 피하는 것이 중요하다.

  • 프로는 사업부에서 멋대로 한 약속은 받아들이지 않아도 된다.

  • 빠르고 지저분하게라는 말은 모순이다. 어떤 때라도 지저분함은 느리다는 의미이다.
    언제나 깔끔한 상태를 유지하자

  • 위기는 규율이다.
    위기상황에서도 편하게 느껴지는 규율을 골라라 그리고 그 규율을 항상 따라라 위기상황을 피하는 최선의 방법이다.

  • 주의 깊게 약속하고, 규율을 따르고, 깔끔히 유지하는 것 / 침착함을 유지하고, 의사소통하고, 규율을 따르고, 도움을 받는 것

    12. 함께 일하기

  • 소프트웨어는 팀원들이 프로답게 힘을 모을 때 가장 효율적이다.

  • 프로그래머의 업무는 사업이 순조롭게 나아가도록 만드는 일이다.

  • 사업을 이해하는 데 시간을 투자한다.

  • 탑승한 배가 어떻게 항해하는지 관심을 기울인다.

  • 코드소유 vs 공동소유
    : 자신의 코드에 벽을 두르고 다른 프로그래머들이 건드리지 못하게 하는 행동보다는
    코드 소유권의 벽을 무너뜨리고 팀 전체가 모든 코드의 소유권을 가지는 편이 낫다.
    다른 사람의 코드 작업을 막지 않는다.

  • 짝 프로그래밍
    : 문제를 푸는 가장 효율적인 방법
    서로 아는 것을 주고받는 최고의 방법
    코드를 검토하는 최고의 방법

  • 프로그래밍을 하며 일과 시간을 보내고 싶다면, 우리가 대화하고자 노력해야할 상대는 바로 사람

    13. 팀과 프로젝트

  • 팀이 만들어지는 데는 시간이 걸린다.

  • 한 덩어리가 된 팀에는 정말 마법같은 무엇이 있다.

  • 팀에는 저마다의 속도가 있다.

  • 속도는 통계적 측정값이다.

  • 팀은 프로젝트보다 만들기 더 어렵다.

    14. 스승과 제자 그리고 장인 정신

  • 장인은 한 가지 이상의 중요 소프트웨어 프로젝트를 주도했던 프로그래머들

  • 숙련공은 훈련을 받은, 능숙한, 그리고 열정적인 프로그래머들

  • 견습생/ 인턴은 자주성이 없이 숙련된 프로그래머들의 밀착지도를 받는다.

  • 장인정신
    : 장인이란 서두르지 않으면서도 일을 빠르게 처리하며 합리적인 평가를 제공하고 임무를 처리하는 사람
    장신 정신은 장인들이 지니고 있는 사고방식으로 가치, 규율, 기술, 자세 및 답변을 포함하는 밈이다.

profile
ᴘᴇᴛɪᴛs ᴅᴇ́ᴠᴇʟᴏᴘᴘᴇᴜʀ. ᴘʀᴏɢʀᴀᴍᴍᴀᴛɪᴏɴ = ᴘʟᴀɪsɪʀ 💕

0개의 댓글