UNIT TEST

sihwan_e·2020년 6월 9일
0

Intro to Unit Test

시스템을 테스트 할때 크게 3가지 방법으로 나눌 수 있습니다.
UI Testing / End-To-End Testing
Integration Testing
Unit Testing
이중 UI Testing이 가장 어렵고 까다롭습니다.
Manual Testing은 실행하기 쉽다는 장점이 있지만 비용이 많이 들고 부정확 하며 실행 시간이 오래 걸립니다.
자동화 할 수 있지만 UI Testing은 자동화 하기가 가장 까다랍고 또 실행하기도 까다롭습니다.
Integration Testing이 그 다음으로 공수가 많이 듭니다.
Unit Testing이 가장 쉬우며 가장 효과가 좋습니다.
그럼으로 UI Testing(End to End)은 10%, Integrating Testing은 20%, 그리고 Unit Testing을 70% 전체 테스트 coverage를 구현 하는것이 권장됩니다.

테스트의 비중을 설명
유닛테스트가 가장큼 가장 중요함.
포스트맨으로 안하고 함수를 테스트하는 로직을 짜는거임 pytest로 테스트 코드를 짠다고 생각하면됌.
Integration Test
두 클래스이상을 합쳐서 테스트하는경우나 서버시스템을 결합 통합해서 테스트 하는것 . 단순히 함수하나만 테스트하는것이 아니라 데이터시스템과 결합해서 통합테스트를 하는것이다. 최소한 클래스 두개이상은 결합이 되어야한다.
모델과 뷰를 엮어서 테스트하는거 정도면 통합테스트로 간주함.

What is Unit Test?

개발자의 방패라고도 불린다

테스트 할 수 있는 가장 작은 단위를 테스트 하는 코드를 작성해서 테스트 하는 것을 말합니다.
함수
메소드
파이썬에는 unittest라는 유닛테스트를 가능케 해주는 모듈이 이미 포함 되어 있습니다.
unittest 외에도 pytest라는 팩케지도 있습니다.
개인적으로는 pytest를 선호 하지만 장고에서도 기본적으로 unittest 가 사용됨으로 unittest를 사용해서 unit test를 구현하도록 하겠습니다.

뷰를먼저 짜고 뷰를 테스트할 유닛테스트 코드를 짜면된다.

Python Unit Test 개념 및 용어

TestCase : unittest 프레임 워크의 테스트 조직의 기본 단위
Fixture : 테스트를 진행할때 필요한 테스트용 데이터 혹은 설정 등을 이야기 한다. 주로 테스트 가 실행되기 전이나 후에 생긴다.
assertion : unittest에서 테스트 하는 부분이 제대로 됬는지를 확인하는 부분. Assertion이 실패하면 테스트도 실패한다.

Unit Test 개발 가이드

Python의 unittest 모듈을 사용하여 유닛 테스트를 개발할때 일반적으로 다음과 같은 절차를 따릅니다.

먼저 unittest 모듈을 import 한다.
import unittest
unittest.TestCase 클래스를 상속하는 테스트 클래스를 만든다.
class MyCalcTest(unittest.TestCase):
테스트 클래스 안에 test_ 로 시작하는 테스트 메서드를 생성한다.
def test_add(self):
테스드 메서드에서는 일반적으로 테스트하고자 하는 함수나 메서드를 호출하고 그 결과값을 self.assert*() 메서드를 사용하여 확인한다. (assertEqual, assertTrue, assertFalse, assertRaises, assertRegex 등 다양한 assert 메서들을 사용할 수 있다).
def test_add(self):
c = myCalc.add(20, 10)
self.assertEqual(c, 30)
테스트 클래스가 완성되었으면, unittest.main()을 호출하여 테스트를 실행시킨다.

profile
Sometimes you gotta run before you can walk.

0개의 댓글