개발자 99% 커뮤니티에서 수다 떨어요!
2022 03 06
8장 경계
👉외부 코드 사용하기
👉경계 살피고 익히기
우리쪽 코드를 작성해서 외부코드를 호출 하는 대신 간단한 테스트 케이스를 작성해서 외부 코드를 익히는것 -> 학습테스트
학습 테스트는 프로그램에서 사용하려는 방식대로 외부 API를 호출한다. 통제된 환경에서 API를 제대로 이해하는지를 확인하는 셈이다. 학습 테스트는 API 를 사용하려는 목적에 초점을 맞춘다
👉학습 테스트는 이해도를 높여주는 정확한 실험이다.
👉아직 존재하지 않는 코드를 사용하기
경계와 관련해 또 다른 유형은 아는 코드와 모르는 코드를 분리하는 경계다.
👉깨끗한 경계
경계에 위치하는 코드는 깔끔히 분리한다.
테스트 케이스를 작성한다.
외부 패키지를 호출하는 코드를 가능한 줄여 경계를 관리한다.
새로운 클래스로 경계를 감싸거나 아니면 ADAPTER 패턴을 사용해 우리 가 원하는 인터페이스를 패키지가 제공하는 인터페이스로 변환한다.
경계 살피고 익히기 파트가 제일 와닿았다.
내가 생각했던 방법은 역시나 [코드를 읽어보는 시간을 가진 후, 적용]이었는데 새로운 개념인 '학습 테스트'를 알게 되었다. 곧바로 나의 코드를 작성해서 외부 코드를 호출 하는 게 아닌, 간단한 테스트 케이스를 작성해서 코드를 익힌다는 점이 효율적으로 보였다.
프로젝트를 하면서 외부 코드를 써야 할 때가 있었는데, 무작정 나의 코드에 넣다 보니 오류가 났을 때 내가 작성했던 코드마저 망가진 적이 있었다. 간단한 테스트 케이스를 작성해서 내가 익힌다면, 내 기억에도 오래 남을 것 같고 프로젝트에 활용도 더 잘 될 것 같다.
2022 03 06
9장 단위테스트
👉TDD 법칙 세 가지
실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다.
컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스 트를 작성한다.
현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다
👉깨끗한 테스트 코드 유지하기
테스트는 유연성, 유지보수성, 재사용성을 제공한다.
테스트 케이스가 있으면 변경이 쉬워진다.
👉깨끗한 테스트 코드를 만드려면?
정말 중요한 키워드는 가독성이다. 가독성을 높이려면, 명료성 단순성 풍부한 표현력이다. -> 테스트 코드는 최소의 표현으로 많은 것을 나타내야 하기에
BUILD-OPERATE-CHECK 패턴은 가독성을 늘리기에 좋다.
BUILD : 테스트 자료를 만든다.
OPERATE : 테스트 자료를 조작한다.
CHECK : 조작한 결과를 확인한다.
given-when-then 을 관례적으로 주석으로 사용한다.
👉테스트API 도메인특화언어 DSL
👉테스트당 개념 하나
👉FIRST 깨끗한 테스트의 5가지 규칙
Fast -> 빠르게: 테스트는 빨리 돌아야한다.
Independent -> 독립적으로:테스트는 독립적으로 어떤 순서로 실행해도 괜찮아야한다. 서로에게 영향 X
Repeatable -> 반복가능하게:테스트는 어떤 환경에서도 실행 할 수 있어야한다.
Self-Validating ->자가검증하는: 테스트는 BOOL값으로 결과를 내야 한다. 성공아니면 실패다.
Timely -> 적시에 단위테스트는 테스트 하려는 실제 코드를 구현하기 직전에 구현한다.
임베디드 시스템
제어를 위한 특정 기능을 수행하는 컴퓨터 시스템으로 장치 내에 존재하는 전자 시스템이다.
TEMPLATE METHOD
템플릿 메소드 패턴이란 특정 작업을 처리하는 일부분을 서브 클래스로 캡슐화하여 전체적인 구조는 바꾸지 않으면서 특정 단계에서 수행하는 내용을 바꾸는 패턴이다.
도메인 특화언어 DSL
도메인 특화 언어는 관련 특정 분야에 최적화된 프로그래밍 언어입니다. DSL은 해당 분야 또는 도메인의 개념과 규칙을 사용합니다.
(도메인 특화언어의 이점과 차이점 중요성을 볼 수 있음 ->https://www.jetbrains.com/ko-kr/mps/concepts/domain-specific-languages/)
테스트API
테스트 API가 어떤것들이 있는지 제대로 알아봐야겠다.