본문 바로가기

2018/07

애시 모리아 <린 스타트업> - 9장 요약 본문 중에서..전형적인 제품 개발 주기는 요구사항 / 개발 / 품질보증 / 출시로 이루어져있다. 요구사항 수집 단계에서도 학습을 하지만, 많은 내용을 학습하게 되는건 제품 출시 이후다. 학습 단계에 빨리 도달하기 위해서는 가능한 한 최소 제품을 구축할 수 있게 MVP 범위를 핵심 기능으로 축소하는거다. - 가장 중요한 문제부터 시작해야한다.MVP의 핵심은 기장 중요한 문제를 해결하는 솔루션 데모에 반영되어야한다. - 있으면 좋은 기능과 필요없는 기능들을 제거해야한다. 데모의 모든 요소를 반드시 필요한 기능, 있으면 좋은 기능, 필요없는 기능으로 구분할 수 있어야한다. 필요없는 기능들은 즉시 제거하고, 반드시 필요한 선결 기능이 아니라면 있으면 좋은 기능들은 대기 목록에 추가해야한다. - 최적화가 아니라 ..
[Django]Django 테스트코드 라이브러리 unittest VS pytest Django를 시작하면서 파이썬 테스트코드 라이브러리를 찾아봤었다. 파이썬에서는 unittest와 pytest가 많이 사용되는 편이였다 Ruby On Rails의 Rspec 같은 BDD + Unit Test 라이브러리를 찾아봤는데, 마음에드는 라이브러리를 찾지 못했다. ( 예를 들면, mamba라는 라이브러리가 있었는데, 대중적이지 않아 보여서 믿음직하지 않았다 ) Unittest와 Pytest 간단 소개 이 둘은 테스트코드를 함수단위로 작성하는 Unit Test 툴이다. unnitest는 파이썬 표준 라이브러리에 포함된 라이브러리다. pytest는 2007년에 첫 커밋되었고, 계속 활발하게 커밋되고 있는 라이브러리다. 그리고 unitest로 작성된 테스트코드와 호환된다. But. pytest 전용으로 ..
[pytest] PyCharm 기본 테스트 라이브러리를 pytest으로 변경하기 PyCharm의 기본 테스트 코드 runner는 unittest로 되어있다. 그래서 pytest으로 테스트코드 돌릴 때에는 설정값들을 변경해줘야한다. 1. Pycharm Preferences > Django > Do not use Django test runner 체크해주기 2. Preference > Default test runner를 pytest으로 변경해준다 끝 :)
(django) get_XXX_display 함수 : 모델의 속성 값을 사람이 읽을 수 있는 문장으로 변환하기 Django Model Field에 choices 속성이 걸려있는 경우, 코드에 맞는 display용 텍스트를 볼 수 있게 하는 함수가 있다.음.. 말로하면 어려운데, 아무튼 이런거다. from django.db import models class Book(models.Model): CONDITIONS = ( (1, '새책'), (2, '중고책'), ) name = models.CharField(max_length=60) condition = models.CharField(max_length=2, choices=CONDITIONS)이 경우, Book의 상태값은 1과 2로 저장된다. 그런데 책 정보를 웹페이지에 보여줄 때는 '새책', '중고책'처럼 사람이 읽을 수 있는 문장으로 보여주고 싶을 때는 get_..
(django) 자주 사용되는 queryset 모아서 관리하기 자주 사용되는 query set들을 한군데 모아서 관리하는 방법을 설명해보고자 합니다 :) 1. manager.py 를 만들어서, query set을 추가합니다 class LessonQuerySet(models.QuerySet): def jazz(self): return self.filter(subject='jazz') 2. model에 queryset을 manager으로 등록합니다 class Lesson(models.Model): from_time = models.CharField() to_time = models.CharField() subject = models.CharField() objects = LessonQuerySet.as_manager() 3. custom queryset은 다음과 같이 ..
[pytest] 함수의 매개변수로 기대한 값이 전달되었는지 확인하는 테스트코드 작성하기 pytest에서 테스트 코드를 작성할 때, 특정 함수의 매개변수로 기대한 값이 잘 넘어갔는지 확인하고 싶을 때가 있습니다. 예를 들면, 외부 API와 연동하는 함수를 테스트해보고 싶을 때, 이 함수에 특정 값이 매개변수로 잘 전달되었는지 확인하고 싶어지죠. 이럴 때는 mocker 클래스와 assert_called_with 함수를 사용하면 됩니다. 예시아래의 예시는 viewset에서 내부 함수를 호출했을 때, 기대한 매개변수를 잘 전달했는지 확인하는 테스트코드입니다.class TestCommerceViewSet: def test_purchase_구매_이벤트가_로그에_남는다(self, rf, mocker): purchase_event = {'product_id': 1, 'created_time': datet..
<사이트 신뢰성 엔지니어링> - 1부 요약 본문 중에서...서비스 관리를 위해 시스템 관리자를 활용하는 방법시스템 관리자를 두면 몇 가지 장점을 얻을 수 있다. 서비스를 운영하고 지탱하는 방법을 직접 결정하는 회사라면 시스템 관리자를 통해 쉽게 서비스를 운영할 수 있다. 시스템 관리자 역할을 소화할 수 있는 전문 인력도 풍부하다. 그런데 시스템 관리팀과 개발팀을 별개로 나누어 운영하면 단점도 존재한다. 변경이력관리와 이벤트 처리를 모두 수작업에 의존하는 팀을 통해 서비스를 운영하게 되면 서비스와 트래픽이 증가하면 업무량 역시 늘어나서 팀의 규모가 커져서 결국 큰 비용이 들게 된다. 그리고 이러한 직접비용보다 간접비용이 더 큰 비용을 발생시키기도 한다. 두 팀의 배경 지식, 스킬, 동기 유발 조건 등이 각각 다르기 때문이다. 그래서 서로 다른 용어..