Unit Test 란?

  • Unit test란 내가 작성한 코드의 가장 작은 단위인 함수를 테스트 하는 메소드이다.

  • 작성한 로직을 테스트하는 유닛테스트 코드를 작성하여 테스트 하게 된다.

  • TestCase : Unit Test 프레임 워크의 테스트 조직 기본 단위

  • Fixture : 테스트 진행 시 필요한 데이터 혹은 설정을 의미

  • assertion : Unit Test시 검증이 제대로 되었는지 확인 하는 부분

테스트 방법

시스템을 테스트 할때 크게 3가지 방법으로 나눌 수 있습니다.

  • UI Testing / End-To-End Testing

  • Integration Testing

  • Unit Testing

  • 이중 UI Testing이 가장 어렵고 까다롭습니다.

  • Manual Testing은 실행하기 쉽다는 장점이 있지만 비용이 많이 들고 부정확 하며 실행 시간이 오래 걸립니다.

  • 자동화 할 수 있지만 UI Testing은 자동화 하기가 가장 까다랍고 또 실행하기도 까다롭습니다.

  • Integration Testing이 그 다음으로 공수가 많이 듭니다.

  • Unit Testing이 가장 쉬우며 가장 효과가 좋습니다.

cf) UI Testing은 10%, Integrating Testing은 20%, 그리고 Unit Testing을 70% 전체 테스트 coverage를 구현 하는것이 권장

실제 적용

해당 Unit Test는 MongoDB CRUD 프로젝트에 적용되었습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85

# tests.py
# Post 글을 쓰고 읽고 수정하고 삭제하는 test 코드

from django.test import TestCase
import unittest

# http 통신을 위해 import
import requests

import json

from time import sleep
# Create your tests here.
class UnitTestCase(unittest.TestCase):

# UnitTest 하기전 사전 준비 작업을 하는 Method

# def setUp(self):
# print("SetUP Unit Test")

# # clean up 처리를 위해 작업하는 Method
# def tearDown(self):
# print("Cleaning Unit Test")

def test_01_addPost(self):
print("============test_addPost================")
url = "http://127.0.0.1:8000/add_post/"

data = {
"post_title" : "First Post",
"post_description" : "Test TDD",
"comment" : "commnet2, commnet3",
"tags" : "1,2",
"user_details" : { "first_name" : "KIM", "last_name" : "hyunsoo"}
}

response = requests.post(url, json= data).json()
global id
id = response['id']

print("response: ")
print(response)

def test_02_readPost(self):

print("============test_readPost================")

url = "http://127.0.0.1:8000/read_post/" + str(id)

response = requests.get(url).json()

print("response: ")
print(response)

def test_03_updatePost(self):

print("============test_updatePost================")

url = "http://127.0.0.1:8000/update_post/" + str(id)

data = {
"post_title" : "First Post_Update",
"post_description" : "Test TDD_Update",
"comment" : "commnet2, commnet3" ,
"tags" : "1,2" ,
"user_details" : { "first_name" : "LEE", "last_name" : "hyunsoo"}
}

response = requests.post(url, json=data).json()

print("response: ")
print(response)


def test_04_deletePost(self):

print("============test_deletePost================")
url = "http://127.0.0.1:8000/delete_post/" + str(id)

response = requests.get(url).json()

print("response: ")
print(response)