Dev/SW Engineering 46

[Lecture] DDD 기반 MSA 모델링 - Intro, Strategic Design, Event Storming

Intro 5월 21일 부터 31일 까지 약 10일간 인프런의 강의를 들으며 도메인 주도 설계(Domain-Driven Design; DDD) 에 대해서 배웠다. 이를 하게 된 계기는 내가 근무하고 있는 의료 인공지능 회사인 Deep Bio는 ‘의료’, ‘AI’ 라는 복잡하고 전문적이 도메인의 비즈니스 문제를 의료 인공지능 소프트웨어로 해결하고자 한다. 따라서 도메인을 이해하는 것이 개발의 첫 걸음인 경우가 많다. 실제로 종종 사내 Medical Officer님께서 병리에 대한 생물학적 도메인 지식의 강의를 해주시기도 한다. 또한 AI ML 알고리즘을 구현하시는 연구팀, 실제 제품 개발을 담당하는 디자이너, 개발팀, 의료 도메인 전문가이신 Medical Officer, 의사분들, BD팀 등 많은 사람들의..

Dev/SW Engineering 2023.05.31

[TDD] Python Testing Framework - Pytest, unittest - Coverage

1. Coverage Code Coverage에 대해서는 를 보고 쉽게 이해할 수 있었습니다. Installation: $ pip install coverage Unittest: $ coverage run --branch -m unittest Pytest: $ coverage run --branch -m pytest Use $ coverage report -m to report on the results $ coverage html to get annotated HTML listings detailing missed lines 2. Coverage report tool Codecov + Github Actions Github actions에서 main 브랜치에 push 나 PR을 하면 pytest와 un..

Dev/SW Engineering 2021.08.16

[TDD] Python Testing Framework2 - Pytest, Unittest - mocking

1. Mock mocking이 필요한 경우를 예시로 들고, 해당 mocking을 Unittest로 구현할 때와 Pytest로 구현할 때를 나누어서 살펴보겠습니다. 1) Random result mocking import random import requests def roll_dice(); print("rolling...") return random.randint(1, 6) def quess_number(num): result = roll_dice() if result == num: return "You won!" else: return "You lost!" 이런 코드가 있을 때, Random 모듈이 잘 작동하는지가 아닌 random의 결과가 있을 때, 내가 작성한 guess_number 함수가 기대대로..

Dev/SW Engineering 2021.08.16

[TDD] Python Testing Framework 1 - Pytest, unittest

1.Installation and Getting Started (unittest / pytest) 1) Unittest unittest는 python에 내장되어있어 따로 설치하지 않아도 되는 표준 라이브러리 입니다. 그래서 바로 import해서 사용할 수 있습니다. import unittest 2) Pytest pytest는 설치를 하고, import하여 사용합니다. $ pip install pytest import pytest 2. Naming Conventions (unittest / pytest) 1) Unittest 파일명: test로 시작 Unittest에서는 지정된 파일은 반드시 모듈로 import 가능해야 합니다. 메소드명: test로 시작 단위 테스트의 기본 구성 블록인 TestCase를 ..

Dev/SW Engineering 2021.05.21

[TDD] 통합 테스트(Integration Test)

이전에 [TDD] TDD 시작하기 (Unit Test, Jest)에서 Unit Test에 대해서 알아보고 작성해보았다. 이제 Integration Test에 대해 알아보고자 한다. Integration Test 통합 테스트란 모듈을 통합하는 단계에서 수행하는 테스트로, Unit Test를 통해 각 모듈들이 잘 작동되는 것을 확인했다면 이제 이 각 모듈들을 연동해서 테스트를 수행해야하는데, 이를 통합 테스트라고 한다. 통합 테스트를 하는 이유 모듈들의 상호 작용이 잘 이루어지는지 검증하기 위해 통합하는 과정에서 발생할 수 있는 오류를 찾기 위해 Supertest 단위 테스트시에는 Jest를 사용하였는데, 통합 테스트에는 Supertest 모듈을 사용해서 진행할 수 있다. Supertest는 ExpressJ..

Dev/SW Engineering 2021.02.26

[TDD] node-mocks-http 모듈, Jest의 beforeEach 사용

[TDD] TDD 시작하기 (Unit Test, Jest)의 와 에서 몽구스 모델을 이용한 Products 데이터베이스 테이블에 product 데이터를 저장(create)할 때 단계적으로 유닛테스트를 진행하면서 구현해보았다. 그래서, 구현하고자 했던 것은 product 데이터 생성을 위한 함수 작성 createProduct 함수를 호출할 때 Product Model의 Create 메소드가 호출 이었고, 이에 대한 유닛 테스트 코드는 // test/unit/product.test.js const productController = require('../../controller/products'); const productModel = require('../../models/Product'); //Mock함..

Dev/SW Engineering 2021.02.24

[TDD] TDD 시작하기 (Unit Test, Jest)

Unit Test 유닛 테스트란 프로그래밍 후 소스 코드의 프로그램의 기본 단위인 모듈이 의도대로 정확히 작동하는지 검증하는 절차이다. 즉, 소스 코드의 개별 단위를 테스트하여 사용할 준비가 되었는지 확인하는 테스트 방법이다. 1) 유닛 테스트를 하는 이유 프로그램이 커서 메모리가 많이 들고 다른 리소스(데이터베이스 등)이 막 필요한 경우 로컬 환경에서 코드를 실행시켜보기도 어렵고, 그걸 매번 수동으로 QA해보기도 어렵다. 그래서 유닛 테스트를 만들어서 빠르게 자신의 코드가 정상적으로 작동 하는지 확인 하는 것이 좋다. 종속성이 있는 다른 클래스들에서 버그가 나는 것을 방지하기 위해서이다. 예를 들어, A Class에서 버그가 나는데, 그것이 A class 내의 Common class 에서 발생하는 에러..

Dev/SW Engineering 2021.02.22

40. Authentication - OAuth 2.0

libertegrace.tistory.com/entry/8-Social-Login-Oct-30-2020-%ED%9A%8C%EA%B3%A0 여기에 아래의 내용을 더 자세하고 보충하여 정리하였습니다. 1. OAuth 소개 앞서 회원가입/로그인/로그아웃 등을 express와 session 개념을 사용해서 구현해보았다. 그러나 우리가 편하게 사용하고 있는 소셜로그인( 카카오 아이디로 로그인, 구글 아이디로 로그인 등.. ) 방법은 어떻게 작동하는 것일까? 이 기능을 사용하기 위해선 나, 내가 사용하고 싶은 앱/웹, 로그인을 중개해주는 카카오, 구글 같은 소셜이 관여할 것이다. 만약 '소셜 로그인' 이라는 것이 진짜 '내가 사용하고 싶은 앱/웹'과 '로그인을 중개해주는 카카오, 구글 같은 소셜' 사이에서 내 아이..

Dev/SW Engineering 2020.09.14