Property-Based Testing with PropEr, Erlang, and Elixir (Fred Hebert, 2019) 독후감
’테스트’라고 하면 ’유닛 테스트(Unit Testing)’를 떠올린다. 좀 더 해상도를 높여서 테스트 코드를 상상하면 ’예제 기반 테스트(Example-based Testing)’을 떠올린다.
’테스트’라고 하면 ’유닛 테스트(Unit Testing)’를 떠올린다. 좀 더 해상도를 높여서 테스트 코드를 상상하면 ’예제 기반 테스트(Example-based Testing)’을 떠올린다.
속성 기반 테스트 프레임워크인 PropEr, PropCheck를 사용하면 ’Cache 예제코드를 테스트하며 맛보는 Stateful Property-Based Testing’ 예제를 손쉽게 병렬 테스트로 바꿀 수 있다.
속성 기반 테스트(Property-Based Testing)라 하면 Stateless Property를 사용한 테스트를 연상한다. 상태가 없는(stateless) 속성이다. 즉 입력에 대한 결과가 항상 같아야 한다.
’예제로 보는 Property-Based Testing (feat. Kata09: Back to the Checkout)’ 글에서 ’Kata09: Back to the Checkout’ 코드를 짜고 속성 기반 테스트(Property-Based Testing)를 했다. 짠 테스트를 ...
’속성 기반 테스트(Property-based Testing)와 속성 정의에 도움을 주는 네 가지 방법’ 글에서 속성 기반 테스트를 간략히 살펴봤다. 대략 감은 잡겠지만 속성 기반 테스트를 짜라고 하면 막막하다. 이럴 때는 좋은 예제가 도움을 줄 수 있다.
속성 기반 테스트(Property-based Testing)에 대해 들어본 적이 있다. SUT(System Under Test)에 대한 속성(Property)을 정의한다. 테스트 프레임워크 도움을 받아서 테스트를 자동화한다. 하지만 유닛 테스트(Unit Testing)를 처음 접했...
다시 C++을 만지게 됐다. 책장에 꽂혀 있던 ’Effective Modern C++’ 책을 다시 읽었다. 예전에 읽었던 것 같은데, 새롭고 놀랐다. 나보다 더 깊이 생각한다. 여기까지 설명하겠지 하면서 읽다 보면 예상한 것보다 한 발짝 더 깊이 들어가서 설명한다. 스콧 마이어스 ...
Pragmatic Bookshelf 블랙 프라이데이 세일 기간에 눈에 띄어서 샀다. 얇게 RDBMS(Relational database management system), Key–value database, Columnar, Document-oriented databases, Gr...
단위 테스트(Unit Testing)에 관한 책을 한 권만 꼽는다면 이 책을 꼽고 싶다. 늦게 알아서 억울한 책이다. 예제가 C#이지만 자신이 사용하는 언어와 상관없이 읽으면 도움이 되는 내용들로 가득하다.
데이터베이스에 값을 저장하고 로드하는 건 스텁(Stub)이나 목(Mock)으로 대체해야 할까? 그냥 직접 사용해도 되는 걸까? 달빛조각사 게임에서는 데이터베이스에 목을 사용하지 않고 테스트를 했다. 통합 테스트(Integration testing) 레벨로 테스트를 짰다. 그러면 통...
테스트 대상이 되는 SUT(System Under Test)와 협력자(Collaborator) 사이에 일어나는 상호 작용을 검사할 때, 테스트 대역(Test double)을 사용한다. 테스트 대역은 크게 목(Mock)과 스텁(Stub)으로 나눌 수 있다. ’단위 테스트 (블라디미르...
단위 테스트(Unit Testing)에서 단위(Unit)의 경계는 무엇일까? OOP(Object-Oriented Programming) 언어로 테스트를 짜고 있다면 클래스(Class)를 단위로 생각하면 되는 걸까? FP(Functional Programming) 언어로 테스트를 짜...
구현 세부 사항(Implementation Details)을 테스트하지 말아야 한다. 리팩터링하면 쉽게 깨지는 테스트가 되기 때문이다. 테스트 코드는 리팩터링을 안전하게 할 수 있게 지켜주는 방어막인데, 장애물이 되어 버린다. 리팩터링했는데, 고쳐야 하는 테스트가 많다면 구현 세부...
’단위 테스트 (블라디미르 코리코프, 2021)’ 책의 ’7장 가치 있는 단위 테스트를 위한 리팩터링’을 보고 정리한 내용이다. 모든 코드를 테스트할 수는 없다. 그래서 중요하고 의미 있는 영역부터 테스트를 짜야 한다. 중요한 영역부터 시작해 덜 중요한 영역까지 테스트 커버리지를 ...
작년에 결심한 2023년
Enum.all?/1 함수를 사용한 함수 테스트할 때였던 걸로 기억한다. 비어 있는 리스트를 넣어서 테스트했을 때, 기대하지 않은 값이 나와서 의아했다. 비어 있는 리스트를 인자로 넘겼을 때, false 값이 나올 것으로 기대했다. 하지만 true 로 나오는 것이었다. Enum.a...
dotfiles란?
Bash 잘 쓰다가 왜 Zsh 사용을 결심했나
이제는 Clojure를 거의 안 쓴다. 요즘 많이 쓰고 있는 Elixir로 다시 구현해 볼까? 언제 이런 생각이 들었을까? 아마 Heroku에서 무료 인스턴스(dyno)를 중지한단 소식을 들었을 때였던 걸로 기억한다.