# unit

iOS Unit Testing 과 UI Testing 연습과 간단한 TDD 예제 코드
참고 이 블로그와 ChatGPT를 통해 Test 연습을 진행했다. ios-unit-testing-and-ui-testing-tutorial 그리고 GitHub에 있는 코드와 커밋 기록을 참고하면 좋다. TestingTest - GitHub 테스트를 작성하기 전 기본 사항 핵심 기능 모델 클래스, 메서드 및 컨트롤러와의 상호 작용 가장 일반적인 UI 워크플로(workflow) 경계 조건 (Boundary conditions) 버그 수정 Unit Test란? → 사용하려는 기능이 개발자의 의도에 맞게 동작하는지 테스트를 하는 작업이다. "FIRST" 원칙 Fast (속도) 빠른 속도로 테스트를 수행할 수 있도록 설계

Monad In Programming
Monad는 어떻게 정의할 수 있을까? Monad > Monad: 다음의 연산들이 정의된 Functor > > unit: T -> M (return in Haskell) > > flat: M> -> M (join in Haskell) Functor에 unit하고 flat추가한게 모나드다. 직관적으로만 이해하고, unit, flat이 어떤 조건을 만족해야 하는지는 가장 아래에서 알아보자. Monad 함수의 추가 조건 unit, flat 함수가 가져야할 추가 조건에 대해 설명한다. Naturality for unit. T->U로 가는 함수를 f라고 정의해보자. lift함수에 f를 인자로 넣어서

1) 단위 테스트란 무엇일까?
단위 테스트의 목표 우리는 소프트웨어가 어떻게 작동할지 코드를 작성하고 단위 테스트를 작성한다. 단위 테스트가 무엇인지 알아보기 전에 우리는 왜 단위 테스트를 작성할까? 단위 테스트의 목표 지속 가능한 성장이 단위 테스트를 작성하는 목표이자 이유이다. 테스트 작성에는 상당한 시간이 필요하기 때문에 테스트가 없는 초기 프로젝트는 빠른 속도로 성장할 수 있다. 시간이 흘러 기능을 확장, 추가하면서 기존 코드를 수정하게 되는데 이때 테스트가 보험이자 안전망의 역할을 수행한다. 단위 테스트의 작성은 좋은 품질의 코드베이스의 유지라는 작은 부가적인 이점을 제공한다. 테스트하기 어려운 코드는 좋은 설계가 아니기 때문이다. 그렇다고 단위 테스트하기 좋은 코드라고해서 꼭 좋은 설계는

외부 API 사용하면서 단위 테스트 하는 방법(MockWebServer, @MockBean, @SpyBean)
MIM 프로젝트의 경우, 서버가 총 3개가 존재한다. 메인 api 서버(spring) 프론트엔드 서버(react.js) 대사 및 검색 서버(python, elastic search) 현재 구조는 아래 그림과 같다. 프론트엔드는 메인 api 서버로만 접근하고, 검색 서버에는 접근하지 않는다. 그럼 검색은 어떻게 하느냐, 메인 api 서버가 검색 서버에 접근해서 값을 받아오고, 일부 가공해서 프론트엔드에 넘겨주게 된다. 즉, Spring에서 외부 api를 사용하는 것이다. 외부 API를 테스트 하는 이유 외부 api는 api 서버의 상태에 따라 성공하기도 하고 실패하기도 한다. 또한 해당 서버의 반환 값의 구조가 바뀌면 기존에 짜놓은 로직과 테스트 코드가 무용지물이다. 그럼 외부 api를 테스트

Service 계층 단위 테스트 작성 삽질 #2
이전 게시글에서는 직접 MockUp 객체를 만들어서 단위테스트를 진행하려했었다. 많은 문제점들이 있었고, 결국 다른 방법을 생각할 수 밖에 없었다. 일단 다시 생각을 원점으로 돌려보기로 했다. > 분명 잘 활용하는 방법이 있기 때문에 stub을 사용해서 테스트를 진행할 것이다! 그 방법을 찾아야만 했다. @Mock과 @MockBean에 대한 궁금증 방법을 찾기 위해 여러 게시글을 둘러보던 중, @Mock을 쓰는 게시글이 있고, @MockBean을 쓰는 게시글이 있었다. 비슷한 역할을 하는 것 같았는데 대체 무엇이 다른 것일까 궁금했다. 그 차이점을 검색하다가 필자에게 많은 정보를 전달하는 게시글을 찾았다. Mockito @Mock @MockBean @Spy @SpyBean 차이점 이라는 게시글이었다. 정말 가뭄의 단비같은 게시글이었다 이 게시글에서는 단위 테스트의 본질을 알려주었다. @Mock과

Service 계층 단위 테스트 작성 삽질 #1
단위 테스트란? 단위 테스트가 무엇인지 간단하게 알아보자! > 단위 테스트란 각 계층에 해당하는 코드를 테스트하는 것이다. 그렇기 때문에 테스트하고자 하는 계층이 의존하는 계층과의 관계를 모두 끊어내야 한다. 의존하는 계층을 유지하면서 테스트를 하고자 한다면 통합 테스트를 진행해야한다. 이 통합테스트는 모든 의존관계를 유지하는 것이고, 그렇기 때문에 Spring ApplicationContext를 사용한다. 즉 Spring을 사용하는 것이기 때문에 비용과 시간이 많이 걸리게 된다. 그에 반해서 단위테스트는 각 계층만 빠르게 테스트할 수 있어 개발 시 매우 유용하다. 하지만 필자는 Service 계층에서 Repository와의 의존관계를 끊으면 테스트할 필요성이 있는지에 대해 의문이 항상 들었다. 그렇다고 통합테스트를 사용하면 너무 무겁고 오래 걸려서 꺼리게 되었다. Service 단위 테스트 필요성에 대한 의문 > Service 계층의 테스트는 대체 어떻게 하는 것
em과 rem 그리고 px
절대적 길이와 상대적 길이 css에 사용되는 모든 속성들에는 속성 마다 허용되는 값이 있고 가장 자주 쓰이는 값은 바로 length, 길이다. 이 길이 값의 단위는 절대적 길이 단위와 상대적 길이 단위로 크게 두 가지로 분류된다. 웹에서 많이 쓰이는 픽셀(px)은 모니터의 스크린에서 나타낼 수 있는 가장 작은 절대적 길이의 단위를 말한다. >기본적으로 브라우저에서 html에 할당되는 기본 폰트 사이즈가 16px이다. 폰트, 이미지, 박스 등 웹을 구성하는 모든 콘텐츠의 사이즈는 픽셀로 시작하고 픽셀로 끝난다. 하지만 우리는 웹 클라이언트를 개발할 때 모든 콘텐츠의 크기를 직접 픽셀로 지정하지 않고 픽셀 대신 em과 rem 또는 % 등을 자주 사용한다. 왜 안 픽셀? 요즘 대부분의 웹 사이트들은 사용자 임의로 조절하는 브라우저 창의 크기에 맞춰 콘텐츠의 크기가 변하는 반응형 기능을 가지고 있을 뿐만 아니라, 창의 크기는 같아도 브라우저 설정에서 사용

좋은 Test란?
Why should i write testCode? (개인) 코딩 생산성 증대 : 확신을 갖고 시스템을 수정할 수 있습니다. -> TDD 효율적으로 버그를 잡을 수 있습니다. 코드 변경(특히 refactoring)을 쉽게 할 수 있습니다. modular한 걸계에 도움 : Single responsible Why should we write testCode? (팀) QA doesn't scale : 구글 개발팀에서는 qa를 사람 손으로 하는 것은 없다고 합니다. 왜냐하면 인력으로는 모든 앱을 테스트 할 수 없기에 테스트 자동화를 중요시한다고 합니다. 협업을 위해 반드시 필요로 합니다. -> 여름 휴가중에 내 코드에 장애가 발생한다면 or 몇 개월 뒤의 내가 갑자기 코드를 보게 된다면 -> 협업을 촉진 : code owner가 아니더라도 코드를 보면 수정이 가능하게 됩니다. 문서로서의 테스트 코드, 테스트 케이스만 보

[Jest][유닛 테스트] (2) 테스트 코드로 디버깅해보자! 예약 날짜 비활성화 오류, 테스트 코드로 해결하기
🧐 유닛 테스트, 왜 진행하기로 했을까? 프로젝트에서 제대로 만들었다고 생각했지만 예상치 못하게 또다른 오류를 발견한 부분이 있었다. 이전에도 한번 오류를 해결했다고 생각했는데, 또 발견하게 되다니.. 상황에 따라 예상치 못한 오류가 있을 수 있는 부분이라고 생각했고, 이 참에 아예 테스트를 작성한 뒤 명확하게 로직 자체를 검사해가면서 확실하게 의도한 대로 동작하도록 만들어보기로 결심했다. 💀 문제였던 부분, 예약기간 선택하기 기능 스테이 메모리는 숙박 장소를 골라 예약할 수 있는 숙박플랫폼 프로젝트였다. 원하는 숙박장소를 선택해 상세페이지에서 예약 기간을 선택할 수 있다. > 구현 시 다음과 같은 조건을 만족해야 했다. 예약 기간 선택 시 예약 불가 날짜를 포함할 수 없음 사용한 라이브러리는 에어비앤비에서 만든 react-dates인데, 이 라이브러리를 통해 비활성화한 날짜는 클릭할 수 없다. 하지만 아래와 같이 해당 날짜를 포함해 예약 기간을

유니톤 참여후기
어느날, 친구에게 이런메세지가 도착했습니다. 유니톤이라는 해커톤이 있는데 같이 나가자는 메세지였죠 😀 유니톤이 뭔가요? 유니톤은 UNIT 이라는 IT 단체에서 개최한 무박 3일 해커톤 이에요! 2015년부터 행사를 운영하여, 3월 4일부터 6일간 제 8회 유니톤을 진행하였는데요. 개학하고 기분전환용으로 참여하면 좋을 것 같아서 참여하게 되었어요 😁 코로나로 인해, Discord 와 Notion 그리고 ZOOM 을 활용하여, 언텍트로 진행했어요. 😷
Kotlin Any, Unit, Nothing / Java void
Java void void는 반환하는 객체가 아무것도 없다. Any 모든 객체의 조상 코틀린의 모든 타입은 Any를 상속한다. Java의 Object와 같은 개념이다. Kotlin은 Any - Class Java는 Object - Class 이렇게 된다. Unit kotlin의 Unit은 자바의 void형과 대응하지만 특수한 객체를 반환한다. 위와 같이 쓸 수 있지만 Unit을 아래와 같이 생략할 수 있다. 반환은 안하지만 특수한 객체를 반환한다..? 그러니까 Unit은 아무것도 반환하지 않는 반환 타입이다. ✔ Unit을 반환하는 함수는 return을 생략해도 암묵적으로 Unit 타입의 객체를 return한다. 단, 해당 Unit 객체는 싱글톤이기 때문에 매번 객체를 생성하지 않는다. Nothing kotlin의 Nothing은 Unit 타입 처럼 값을 반환하지 않는 함수를 나타낼 때 사용한다. Unit과의 차이점은 Unit은 U

ReactNative 써먹기? 이 책으로 충분합니다.
본 포스팅은 UPF 2021FW를 통해 이지스퍼블리싱의 도서 'Do it! 리액트 네이티브 앱 프로그래밍'을 무상제공 받아 작성하였습니다. 책을 접하기 전, ReactNative? 나는 웹 프론트엔드 개발자를 준비하면서 경험을 쌓고 있는 학생 개발자이다. 동시에 취업 준비도 병행하면서 꾸준히 ReactJS에 대한 이해도를 키우고 있었다. 그렇게 취업준비를 하면서 가장 많이 보았던 공고는 모바일 앱 개발자(React-native)에 대한 내용이였다. > 이 외에도

100K, 30M?? K, M 무슨 단위일까?
K, M 무슨 단위일까? 아래 그림과 같이 웹사이트 방문자 수나 인스타크램의 팔로워 수에서 K, M이 숫자 뒤에 붙여져 있는 경우를 본 적이 있을 것이다. Tridge Web page%20(1).png) Instagram.png) 간단히 정리하면 K는 1,000(천), M은 1,000,000 (백만)을 의미나는 기호이다. K = Kilo (1,000) M = Million (1,000,000) 99K = 99,

CSS 크기 단위
CSS에서 사용하는 크기 단위에는 absolute, relative 두가지 유형이 있다. Absolute Lenghts 절대 길이 단위는 고정되어 있다. 화면 크기가 매우 다양하기 때문에 화면에서 사용하는 것보다는 인쇄 레이아웃에 사용된다. 고정 길이 단위 종류로는 cm, mm, in(inches), px(pixels), pt(points), pc(picas) 등이 있다. px(pixel) 스크린의 픽셀을 기준으로 하는 절대적인 크기를 설정한다. Relative Lengths 다른 속성 길이에 대해 상대적인 길이를 지정한다. %(percent) 부모 엘리먼트에 대한 상대적인 크기를 설정한다. !codepen[gga4638/embed/dyzYqaM?default-tab=html%2Cresult&theme-id=dark] em 부모의 기본 폰트 크기를 1em으로 놓고, 그에 대한 상대적인 크기를 설정한다. ex) 부모 폰트 크기가 16px이
Javascript활용 menu 제작(학습 49일차 TIL)
210823 오늘은 JS ES5문법을 사용하여 자동으로 전환되는 이미지 갤러리를 만들었다. ※ script를 작성할 때 필요한 경우의 수를 하나 하나 자세하게 생각하자(수도 코드를 작성하는 것 리마인드...) Javascript Basic (ES5) img 주소를 바꿀 때 .src.replace('현재 이미지명', '바꿀 이미지명'); .onfocus의 반대는 .onblur / .onmouseover 반대는 .onmouseout CSS tips px은 고정 단위로 반응형에는 적합하지 않다. > 상대적인 em(부모 font-size의 비례), rem(root의 font-size의 비례), vw, vh, %를 활용하자. rem은 컴포넌트가 페이지 어디에서나 크기가 동일할 경우에 적합하다.(보통 font-size) em은 컴포넌트가 페이지에 따라 크기가 유동적일 경우에 적합하다.(padding, margin) padding의 경우 글자의 정렬이
.png)
TIL 반응형 레이아웃을 위한 units : rem, em, v*, %
.png) 본 글은 드림코딩엘리 강의 시청 후 정리한 내용입니다. ✍️ 들어가며 1,2차 프로젝트를 하며 나름 반응형 레이아웃에 익숙해졌다 생각했지만, 단위에 대한 이해없이 rem만을 사용해왔었다. 적재적소에 알맞은 단위를 사용하는 것이 굉장히 중요하다는 것을 깨달은 후 단위에 대한 개념을 다시 정리해보고자 한다. 📏 Absolute length units 📏 모니터에서 표현되는 가장 작은 단위 px px은 absolute lenght units 중 가장 많이 사용되는

너무도 알찬 UPF 2021SS 회고
해당 글은 UNIT의 UPF 프로그램 회고 입니다. UNIT Facebook 😐 2021년 첫 개강 이후 나를 포함한 개발 동아리 친구들은 코로나에 지쳐있던 상태였다... 그러면서 동아리 친구들의 학년은 벌써 3, 4학년이 되었고 의미있게 보내고싶었다. 공모전을 나간다던지.. 동아리 활동을 더 한다던지.. 눈에 띄는 활동을 하고 싶었다. > 다들 강한 결심을 하고 뭐든 하려고 움직여서 열심히 찾았다. 그리고 우리가 필요한 것? 무엇인지 생각해보았다. 😍 가장 하고 싶던
[TIL] CSS: Unit
Absolute Unit: px Relative Unit: %, v*, em, rem 1. % 부모요소에 반응 박스 사이즈 2. em 부모요소에 반응 브라우저 내 어디에서 사용하느냐에 따라 변하는 경우 사용한다. 폰트 사이즈 3. v* 브라우저에 반응 박스 사이즈 4. rem 브라우저에 반응 브라우저 내 어디에서 사용하든 같은 사이즈를 유지하고 싶을 때 사용한다. 폰트 사이즈 reference pxtoem
테스트 DB없이 Unit Test 하기 in Django
ThuOct29 . . . 취업 준비를 하면서 여러 회사에 지원하다 보면 과제를 주는 회사들도 있다. 특히 백엔드 개발자들은 AWS EC2 배포나 Unit Test를 하면 가산점을 얻기도 한다. 처음에는 Unit Test를 로컬에서 진행하면서 API가 잘 돌아가는지 안돌아가는지 확인이 가능하다. 그런데 문제는 Django의 settings.py에서 DB 세팅을 AWS의 RDS로 지정하면 유닛테스트가 안된다는 것이다. 우리가 보통 장고에서 유닛테스트를 실행하면 장고에서는 테스트 DB를 만들어서 테스트를 진행한다고 한다. 그래서 보통 setup부분에 테스트 DB에서 실험할 데이터들을 create해주고 삭제는 teardown에서 해준다. 그런데 나는 RDS에 있는 DB의 데이터를 가지고 직접 Unit Test를 하고싶었다. > 먼저 장고에서 프로젝트를 생성하면 manage.py와 프로젝트의 세팅을 관리하는 config dir이 생성된다.(이름은 다를 수
[Programming] Unit TEST
TEST 개발을 하면서 어떠한 프로그램을 완성하기에 앞서 개발자가 해야할 중요한 일중 하나가 자신들이 만든 프로그램을 TEST(시험)하는 것이다. 사람이 만든 것은 완벽하지 못하지만 완벽을 추구하려고 노력해야한다. 완벽을 추구하는데 중요한 일이 바로 TEST이다. TEST의 종류 프로그래밍에서 TEST는 크게 3가지로 나눌 수 있다. UI / End-To-End Testing Integration Testing Unit Testing image.png UI / End-To-End Testing 처음부터 끝까지 모든 시스템을 Testing한다 웹브라우저에서 버튼,스크롤, 등등을 클릭해보면서 끝단에서 끝까지 Testing한다 제일 직관적이고, 제일 확인