{"id":1715,"date":"2026-06-18T14:58:54","date_gmt":"2026-06-18T14:58:54","guid":{"rendered":"https:\/\/wayhope.kro.kr\/?p=1715"},"modified":"2026-08-31T07:32:49","modified_gmt":"2026-08-31T07:32:49","slug":"%ed%85%8c%ec%8a%a4%ed%8a%b8-%ec%84%a4%ea%b3%84-%ed%95%b5%ec%8b%ac-%ec%a0%95%eb%a6%ac","status":"publish","type":"post","link":"https:\/\/wayhope.kro.kr\/?p=1715","title":{"rendered":"\ud14c\uc2a4\ud2b8 \uc124\uacc4 \ud575\uc2ec \uc815\ub9ac"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\uc18c\ud504\ud2b8\uc6e8\uc5b4 \ud14c\uc2a4\ud2b8\ub294 \uc791\uc131\ud55c \ucf54\ub4dc\uac00 \uc694\uad6c\uc0ac\ud56d\ub300\ub85c \ub3d9\uc791\ud558\ub294\uc9c0 \ud655\uc778\ud558\uace0, \ubcc0\uacbd \uc774\ud6c4 \uae30\uc874 \uae30\ub2a5\uc774 \uae68\uc9c0\uc9c0 \uc54a\uc558\ub294\uc9c0 \uac80\uc99d\ud558\ub294 \uacfc\uc815\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud14c\uc2a4\ud2b8 \uc124\uacc4(Test Design)\ub294 \ub2e8\uc21c\ud788 \ud14c\uc2a4\ud2b8 \ucf54\ub4dc\ub97c \uc791\uc131\ud558\ub294 \uac83\ubcf4\ub2e4 \ubc94\uc704\uac00 \ub113\ub2e4. \uc5b4\ub5a4 \uae30\ub2a5\uc744 \uc5b4\ub5a4 \uc870\uac74\uc5d0\uc11c \uac80\uc99d\ud560 \uac83\uc778\uc9c0, \uc5b4\ub5a4 \uc785\ub825\uc744 \uc0ac\uc6a9\ud558\uace0 \uc5b4\ub5a4 \uacb0\uacfc\ub97c \uae30\ub300\ud560 \uac83\uc778\uc9c0, \uc5b4\ub514\uae4c\uc9c0 \uc790\ub3d9\ud654\ud560 \uac83\uc778\uc9c0\ub97c \uacb0\uc815\ud558\ub294 \uc791\uc5c5\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ucf54\ub4dc\uac00 \ubcf5\uc7a1\ud574\uc9c8\uc218\ub85d \ubaa8\ub4e0 \uacbd\uc6b0\ub97c \uc9c1\uc811 \uc2e4\ud589\ud574\uc11c \ud655\uc778\ud558\ub294 \uac83\uc740 \ud604\uc2e4\uc801\uc73c\ub85c \uc5b4\ub835\ub2e4. \uadf8\ub798\uc11c \ud14c\uc2a4\ud2b8\ub294 \uc785\ub825\uacfc \uc0c1\ud0dc\ub97c \uccb4\uacc4\uc801\uc73c\ub85c \ub098\ub204\uace0, \uc624\ub958\uac00 \ubc1c\uc0dd\ud560 \uac00\ub2a5\uc131\uc774 \ub192\uc740 \uacbd\uacc4\ub97c \ucc3e\uc544 \uac80\uc99d\ud558\ub294 \ubc29\ud5a5\uc73c\ub85c \uc124\uacc4\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud14c\uc2a4\ud2b8\uc758 \ubaa9\uc801\uc740 \ubc84\uadf8\uac00 \uc5c6\ub2e4\ub294 \uac83\uc744 \uc99d\uba85\ud558\ub294 \uac83\uc774 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\uc2e4\ud328\ud560 \uac00\ub2a5\uc131\uc774 \uc788\ub294 \uc9c0\uc810\uc744 \ucc3e\uc544 \uc2dc\uc2a4\ud15c\uc758 \ub3d9\uc791\uc744 \uac80\uc99d\ud558\ub294 \uac83<\/strong>\uc5d0 \uac00\uae5d\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud14c\uc2a4\ud2b8\uc758 \uae30\ubcf8 \uad6c\uc870<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\ud14c\uc2a4\ud2b8\ub294 \uae30\ubcf8\uc801\uc73c\ub85c \ub2e4\uc74c \ud750\ub984\uc744 \uac00\uc9c4\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Setup -&gt; Execute -&gt; Verify -&gt; Cleanup\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub610\ub294 \ud14c\uc2a4\ud2b8 \ucf54\ub4dc\uc5d0\uc11c \ud754\ud788 \uc0ac\uc6a9\ud558\ub294 \ud615\ud0dc\ub85c \ud45c\ud604\ud558\uba74<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Arrange -&gt; Act -&gt; Assert\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Arrange<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\ud14c\uc2a4\ud2b8\uc5d0 \ud544\uc694\ud55c \uc0c1\ud0dc\uc640 \uc785\ub825\uc744 \uc900\ube44\ud55c\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Act<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\ud14c\uc2a4\ud2b8\ud558\ub824\ub294 \ub3d9\uc791\uc744 \uc2e4\ud589\ud55c\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Assert<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2e4\ud589 \uacb0\uacfc\uac00 \uae30\ub300\ud55c \uacb0\uacfc\uc640 \uac19\uc740\uc9c0 \uac80\uc99d\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \uccb4\ub825 \uac10\uc18c \uae30\ub2a5\uc774\ub77c\uba74<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Arrange -&gt; Player \uc0dd\uc131\nAct -&gt; TakeDamage(30)\nAssert -&gt; Health == 70\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uad6c\uc870\uac00 \uba85\ud655\ud558\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud14c\uc2a4\ud2b8 \ucf54\ub4dc\ub97c \uc77d\uc5c8\uc744 \ub54c \ubb34\uc5c7\uc744 \uac80\uc99d\ud558\ub294\uc9c0 \ubc14\ub85c \ud30c\uc545\ud560 \uc218 \uc788\uc5b4\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\ud14c\uc2a4\ud2b8 \ucf00\uc774\uc2a4 \uc124\uacc4<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\ud14c\uc2a4\ud2b8\uc5d0\uc11c \uac00\uc7a5 \uc911\uc694\ud55c \ubd80\ubd84 \uc911 \ud558\ub098\ub294 &#8220;\ubb34\uc5c7\uc744 \ud14c\uc2a4\ud2b8\ud560 \uac83\uc778\uac00&#8221;\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e8\uc21c\ud788 \uc815\uc0c1\uc801\uc778 \uc785\ub825\ub9cc \ud14c\uc2a4\ud2b8\ud574\uc11c\ub294 \ucda9\ubd84\ud558\uc9c0 \uc54a\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \uccb4\ub825 \uac10\uc18c \ud568\uc218\uac00 \ub2e4\uc74c\uacfc \uac19\ub2e4\uace0 \ud558\uc790.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>void TakeDamage(int damage)\n{\n    health = std::max(health - damage, 0);\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud14c\uc2a4\ud2b8\ud574\uc57c \ud560 \uc785\ub825\uc740 \ub2e8\uc21c\ud788 <code>30<\/code> \ud558\ub098\uac00 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>damage = 0 \/ damage = 1 \/ damage = health \/ damage = health + 1 \/ damage &lt; 0\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub7f0 \uc785\ub825\uc744 \ud1b5\ud574 \uad6c\ud604\uc774 \uc608\uc0c1\ub300\ub85c \ub3d9\uc791\ud558\ub294\uc9c0 \ud655\uc778\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\uc815\uc0c1 \uc870\uac74\uacfc \ube44\uc815\uc0c1 \uc870\uac74<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\ud14c\uc2a4\ud2b8 \ucf00\uc774\uc2a4\ub294 \ud06c\uac8c \uc815\uc0c1\uc801\uc778 \uc785\ub825\uacfc \ube44\uc815\uc0c1\uc801\uc778 \uc785\ub825\uc73c\ub85c \ub098\ub20c \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \ud68c\uc6d0\uac00\uc785 \uae30\ub2a5\uc774\ub77c\uba74<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\uc815\uc0c1 -&gt; \uc62c\ubc14\ub978 ID \/ \uc62c\ubc14\ub978 \ube44\ubc00\ubc88\ud638 \/ \uc0ac\uc6a9 \uac00\ub2a5\ud55c \uc774\uba54\uc77c\n\n\ube44\uc815\uc0c1 -&gt; \ube48 ID \/ \ub108\ubb34 \uae34 ID \/ \uc798\ubabb\ub41c \uc774\uba54\uc77c \/ \uc911\ubcf5 ID \/ \uc798\ubabb\ub41c \ube44\ubc00\ubc88\ud638\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub97c \uad6c\ubd84\ud574\uc11c \ud14c\uc2a4\ud2b8\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2e4\uc81c \ubc84\uadf8\ub294 \uc815\uc0c1\uc801\uc778 \uc785\ub825\ubcf4\ub2e4 \uc608\uc678\uc801\uc778 \uc0c1\ud669\uc5d0\uc11c \ubc1c\uc0dd\ud558\ub294 \uacbd\uc6b0\uac00 \ub9ce\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub530\ub77c\uc11c \ud14c\uc2a4\ud2b8 \uc124\uacc4\uc5d0\uc11c\ub294 \uc2e4\ud328 \uc870\uac74\uc744 \uc758\ub3c4\uc801\uc73c\ub85c \ucc3e\uc544\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\uacbd\uacc4\uac12 \ubd84\uc11d<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\uacbd\uacc4\uac12 \ubd84\uc11d(Boundary Value Analysis)\uc740 \uc785\ub825 \ubc94\uc704\uc758 \uacbd\uacc4\uc5d0\uc11c \uc624\ub958\uac00 \ubc1c\uc0dd\ud558\uae30 \uc27d\ub2e4\ub294 \uc810\uc744 \uc774\uc6a9\ud55c \ud14c\uc2a4\ud2b8 \uae30\ubc95\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \ub808\ubca8\uc774 <code>1~100<\/code>\uae4c\uc9c0 \ud5c8\uc6a9\ub41c\ub2e4\uace0 \ud558\uc790.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e8\uc21c\ud788 <code>50<\/code>\ub9cc \ud14c\uc2a4\ud2b8\ud558\ub294 \uac83\ubcf4\ub2e4<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>0 \/ 1 \/ 2 \/ 99 \/ 100 \/ 101\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc744 \ud14c\uc2a4\ud2b8\ud558\ub294 \uac83\uc774 \uc758\ubbf8\uac00 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ubc94\uc704\uc758 \ub0b4\ubd80\ubcf4\ub2e4 \uacbd\uacc4\uc5d0\uc11c \uc870\uac74\ubb38 \uc624\ub958\uac00 \ubc1c\uc0dd\ud560 \uac00\ub2a5\uc131\uc774 \ub192\uae30 \ub54c\ubb38\uc774\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>if (level &gt;= 1 &amp;&amp; level &lt;= 100)\n{\n    \/\/ valid\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub7f0 \ucf54\ub4dc\uc5d0\uc11c\ub294 <code>0<\/code>, <code>1<\/code>, <code>100<\/code>, <code>101<\/code> \uac19\uc740 \uac12\uc774 \ud2b9\ud788 \uc911\uc694\ud558\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uacbd\uacc4\uac12 \ubd84\uc11d\uc740 \uc22b\uc790\ubfd0\ub9cc \uc544\ub2c8\ub77c \ubb38\uc790\uc5f4 \uae38\uc774, \ubc30\uc5f4 \ud06c\uae30, \ud30c\uc77c \ud06c\uae30, \uc2dc\uac04 \ubc94\uc704 \ub4f1\uc5d0\ub3c4 \uc801\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\ub3d9\ub4f1 \ubd84\ud560<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\ub3d9\ub4f1 \ubd84\ud560(Equivalence Partitioning)\uc740 \uc785\ub825\uac12\uc744 \ub3d9\uc77c\ud55c \ubc29\uc2dd\uc73c\ub85c \ucc98\ub9ac\ub418\ub294 \uadf8\ub8f9\uc73c\ub85c \ub098\ub204\uace0 \uac01 \uadf8\ub8f9\uc744 \ub300\ud45c\ud558\ub294 \uac12\uc744 \uc120\ud0dd\ud558\ub294 \ubc29\ubc95\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \ub808\ubca8 <code>1~100<\/code>\uc774 \uc720\ud6a8\ud558\ub2e4\uba74<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\uc720\ud6a8\ud55c \uc601\uc5ed -&gt; 1 ~ 100\n\n\uc798\ubabb\ub41c \uc601\uc5ed -&gt; 0 \uc774\ud558\n\n\uc798\ubabb\ub41c \uc601\uc5ed -&gt; 101 \uc774\uc0c1\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc73c\ub85c \ub098\ub20c \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ubaa8\ub4e0 \uc22b\uc790\ub97c \ud14c\uc2a4\ud2b8\ud560 \ud544\uc694\ub294 \uc5c6\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uac01 \uadf8\ub8f9\uc5d0\uc11c \ub300\ud45c\uac12\uc744 \uc120\ud0dd\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>0 \/ 50 \/ 101\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc815\ub3c4\ub85c \ud14c\uc2a4\ud2b8\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uacbd\uacc4\uac12 \ubd84\uc11d\uacfc \ud568\uaed8 \uc0ac\uc6a9\ud558\uba74 \ud14c\uc2a4\ud2b8 \ucf00\uc774\uc2a4\ub97c \uc904\uc774\uba74\uc11c\ub3c4 \uc758\ubbf8 \uc788\ub294 \ubc94\uc704\ub97c \uac80\uc99d\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\uacb0\uc815 \ud14c\uc774\ube14<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\uc870\uac74\uc774 \uc5ec\ub7ec \uac1c\uc774\uace0 \uc870\uac74 \uc870\ud569\uc5d0 \ub530\ub77c \uacb0\uacfc\uac00 \ub2ec\ub77c\uc9c0\ub294 \uacbd\uc6b0\uc5d0\ub294 \uacb0\uc815 \ud14c\uc774\ube14(Decision Table)\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \uc544\uc774\ud15c \uc0ac\uc6a9 \uc870\uac74\uc774<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\ud50c\ub808\uc774\uc5b4\uac00 \uc0b4\uc544 \uc788\uc5b4\uc57c \ud55c\ub2e4.\n\uc544\uc774\ud15c\uc744 \uac00\uc9c0\uace0 \uc788\uc5b4\uc57c \ud55c\ub2e4.\n\ub808\ubca8\uc774 \ucda9\ubd84\ud574\uc57c \ud55c\ub2e4.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub77c\uace0 \ud558\uc790.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc870\uac74\uc744 \uc870\ud569\ud558\uba74 \ub2e4\uc74c\ucc98\ub7fc \uc0dd\uac01\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Alive = Y \/ HasItem = Y \/ LevelValid = Y -&gt; Success\nAlive = Y \/ HasItem = Y \/ LevelValid = N -&gt; Fail\nAlive = Y \/ HasItem = N \/ LevelValid = Y -&gt; Fail\nAlive = N \/ HasItem = Y \/ LevelValid = Y -&gt; Fail\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc870\uac74\uc774 \ub9ce\uc544\uc9c8\uc218\ub85d \ub2e8\uc21c\ud55c \ud14c\uc2a4\ud2b8 \ucf00\uc774\uc2a4 \ubaa9\ub85d\ubcf4\ub2e4 \uc774\ub7f0 \ud615\ud0dc\ub85c \uc815\ub9ac\ud558\ub294 \uac83\uc774 \ub3c4\uc6c0\uc774 \ub41c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ubaa8\ub4e0 \uc870\ud569\uc744 \ubc18\ub4dc\uc2dc \ud14c\uc2a4\ud2b8\ud574\uc57c \ud55c\ub2e4\ub294 \ub73b\uc740 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc870\ud569 \uc218\uac00 \ub9ce\uc544\uc9c0\uba74 \ud14c\uc2a4\ud2b8 \ube44\uc6a9\ub3c4 \uae30\ud558\uae09\uc218\uc801\uc73c\ub85c \uc99d\uac00\ud558\uae30 \ub54c\ubb38\uc5d0 \uc2e4\uc81c \uc704\ud5d8\ub3c4\uc640 \uc694\uad6c\uc0ac\ud56d\uc744 \uae30\uc900\uc73c\ub85c \uc911\uc694\ud55c \uc870\ud569\uc744 \uc120\ud0dd\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\uc0c1\ud0dc \uc804\uc774 \ud14c\uc2a4\ud2b8<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\uc0c1\ud0dc\uac00 \uc874\uc7ac\ud558\ub294 \uc2dc\uc2a4\ud15c\uc5d0\uc11c\ub294 \uc0c1\ud0dc \uc790\uccb4\ubcf4\ub2e4 <strong>\uc0c1\ud0dc\uac00 \uc5b4\ub5bb\uac8c \ubcc0\uacbd\ub418\ub294\uc9c0<\/strong>\ub97c \ud14c\uc2a4\ud2b8\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \ud50c\ub808\uc774\uc5b4 \uc0c1\ud0dc\uac00<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Idle \/ Move \/ Attack \/ Dead\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub77c\uace0 \ud558\uc790.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uac00\ub2a5\ud55c \uc804\uc774\ub97c \uc0dd\uac01\ud558\uba74<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Idle -&gt; Move -&gt; Attack -&gt; Idle\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub9ac\uace0<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Attack -&gt; Dead\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uac19\uc740 \ud750\ub984\uc774 \uc874\uc7ac\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud14c\uc2a4\ud2b8\uc5d0\uc11c\ub294 \ub2e8\uc21c\ud788 \uac01 \uc0c1\ud0dc\ub97c \ud55c \ubc88\uc529 \ud655\uc778\ud558\ub294 \uac83\ubcf4\ub2e4<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\ud604\uc7ac \uc0c1\ud0dc -&gt; \uc785\ub825 -&gt; \ub2e4\uc74c \uc0c1\ud0dc\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub97c \uac80\uc99d\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Idle -&gt; (MoveInput) -&gt; Move\nMove -&gt; (AttackInput) -&gt; Attack\nDead -&gt; (MoveInput) -&gt; Dead\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ucc98\ub7fc \ud14c\uc2a4\ud2b8\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">FSM, \uac8c\uc784 \uce90\ub9ad\ud130, \ub124\ud2b8\uc6cc\ud06c \uc5f0\uacb0 \uc0c1\ud0dc, \ub85c\uadf8\uc778 \uc0c1\ud0dc \ub4f1\uc5d0\uc11c \uc720\uc6a9\ud558\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\ud14c\uc2a4\ud2b8 \ud53c\ub77c\ubbf8\ub4dc<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\ud14c\uc2a4\ud2b8\ub294 \ud558\ub098\uc758 \uc885\ub958\ub9cc \uc0ac\uc6a9\ud558\ub294 \uac83\uc774 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub300\ud45c\uc801\uc73c\ub85c \ud14c\uc2a4\ud2b8 \ud53c\ub77c\ubbf8\ub4dc\ub77c\ub294 \uac1c\ub150\uc744 \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Unit -&gt; Integration -&gt; E2E\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc544\ub798\ucabd \ud14c\uc2a4\ud2b8\uc77c\uc218\ub85d \ube60\ub974\uace0 \ub9ce\uc774 \uc2e4\ud589\ud558\uace0, \uc704\ucabd\uc73c\ub85c \uac08\uc218\ub85d \ub290\ub9ac\uace0 \ube44\uc6a9\uc774 \ucee4\uc9c4\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Unit Test<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\ud558\ub098\uc758 \ud568\uc218\ub098 \ud074\ub798\uc2a4\ucc98\ub7fc \uc791\uc740 \ub2e8\uc704\ub97c \ub3c5\ub9bd\uc801\uc73c\ub85c \uac80\uc99d\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DamageCalculator \/ Inventory \/ Pathfinding \/ CharacterStats\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uac19\uc740 \ucf54\ub4dc\uac00 \ub300\uc0c1\uc774 \ub420 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ube60\ub974\uace0 \uc2e4\ud328 \uc6d0\uc778\uc744 \ucc3e\uae30 \uc27d\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Integration Test<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\uc5ec\ub7ec \ucef4\ud3ec\ub10c\ud2b8\uac00 \uc2e4\uc81c\ub85c \uc81c\ub300\ub85c \uc5f0\uacb0\ub418\ub294\uc9c0 \uac80\uc99d\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Game Server -&gt; Repository -&gt; Database\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uac00 \uc2e4\uc81c\ub85c \uc815\uc0c1\uc801\uc73c\ub85c \ub3d9\uc791\ud558\ub294\uc9c0 \ud655\uc778\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">End-to-End Test<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\uc0ac\uc6a9\uc790\uc758 \uc2e4\uc81c \uc0ac\uc6a9 \ud750\ub984\uc5d0 \uac00\uae4c\uc6b4 \ud615\ud0dc\ub85c \uc804\uccb4 \uc2dc\uc2a4\ud15c\uc744 \uac80\uc99d\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \uc6f9 \uc11c\ube44\uc2a4\ub77c\uba74<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\ub85c\uadf8\uc778 -&gt; \uc0c1\ud488 \uc870\ud68c -&gt; \uc7a5\ubc14\uad6c\ub2c8 -&gt; \uacb0\uc81c -&gt; \uc8fc\ubb38 \uc644\ub8cc\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc804\uccb4 \ud750\ub984\uc744 \ud14c\uc2a4\ud2b8\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">E2E \ud14c\uc2a4\ud2b8\ub294 \uc2e4\uc81c \ud658\uacbd\uacfc \uac00\uae4c\uc6b4 \ub9cc\ud07c \uac00\uce58\uac00 \uc788\uc9c0\ub9cc \uc2e4\ud589 \ube44\uc6a9\uacfc \uc720\uc9c0\ubcf4\uc218 \ube44\uc6a9\ub3c4 \ub192\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub530\ub77c\uc11c \ubaa8\ub4e0 \ud14c\uc2a4\ud2b8\ub97c E2E\ub85c \ub9cc\ub4e4\uae30\ubcf4\ub2e4 \uc791\uc740 \ub2e8\uc704\uc758 \ud14c\uc2a4\ud2b8\ub97c \ucda9\ubd84\ud788 \uad6c\uc131\ud558\uace0 \ud544\uc694\ud55c \uc601\uc5ed\uc5d0 \ud1b5\ud569 \ud14c\uc2a4\ud2b8\uc640 E2E \ud14c\uc2a4\ud2b8\ub97c \ubc30\uce58\ud558\ub294 \uac83\uc774 \uc77c\ubc18\uc801\uc774\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Unit Test<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Unit Test\ub294 \ud14c\uc2a4\ud2b8 \ub300\uc0c1\uc758 \ubc94\uc704\ub97c \uc791\uac8c \uc720\uc9c0\ud558\ub294 \uac83\uc774 \uc911\uc694\ud558\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>int CalculateDamage(int attack, int defense)\n{\n    return std::max(attack - defense, 0);\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub77c\uba74 DB\ub098 \ub124\ud2b8\uc6cc\ud06c \uc5c6\uc774 \uacc4\uc0b0 \uacb0\uacfc\ub9cc \uac80\uc99d\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>TEST(DamageTest, DefenseReducesDamage)\n{\n    EXPECT_EQ(CalculateDamage(100, 30), 70);\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \ud14c\uc2a4\ud2b8\uc758 \uc7a5\uc810\uc740 \uc2e4\ud328 \uc6d0\uc778\uc774 \uba85\ud655\ud558\ub2e4\ub294 \uac83\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">DB\ub3c4 \uc0ac\uc6a9\ud558\uc9c0 \uc54a\uace0 \ub124\ud2b8\uc6cc\ud06c\ub3c4 \uc0ac\uc6a9\ud558\uc9c0 \uc54a\ub294\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub530\ub77c\uc11c \uc2e4\ud328\ud588\ub2e4\uba74 <code>CalculateDamage()<\/code>\uc758 \ubb38\uc81c\ub97c \uc6b0\uc120\uc801\uc73c\ub85c \ud655\uc778\ud558\uba74 \ub41c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\ud14c\uc2a4\ud2b8 \ub354\ube14<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Unit Test\uc5d0\uc11c\ub294 \uc2e4\uc81c \uc678\ubd80 \uc2dc\uc2a4\ud15c\uc744 \uadf8\ub300\ub85c \uc0ac\uc6a9\ud558\uae30 \uc5b4\ub824\uc6b4 \uacbd\uc6b0\uac00 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub54c \ud14c\uc2a4\ud2b8 \ub354\ube14(Test Double)\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub300\ud45c\uc801\uc73c\ub85c<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Stub \/ Mock \/ Fake \/ Spy \/ Dummy\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub4f1\uc774 \uc788\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Stub<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\ubbf8\ub9ac \uc815\ud574\uc9c4 \uac12\uc744 \ubc18\ud658\ud558\ub294 \uac00\uc9dc \uac1d\uccb4\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GetPlayer() -&gt; \ud56d\uc0c1 \ud2b9\uc815 Player \ubc18\ud658\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Mock<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\ud2b9\uc815 \ud568\uc218\uac00 \ud638\ucd9c\ub418\uc5c8\ub294\uc9c0\uc640 \ud638\ucd9c \ubc29\uc2dd \ub4f1\uc744 \uac80\uc99d\ud558\ub294 \ub370 \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SavePlayer() -&gt; \uc815\ud655\ud788 \ud55c \ubc88 \ud638\ucd9c\ub418\uc5c8\ub294\uac00?\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Fake<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2e4\uc81c \uad6c\ud604\ubcf4\ub2e4 \ub2e8\uc21c\ud558\uc9c0\ub9cc \uc2e4\uc81c\ucc98\ub7fc \ub3d9\uc791\ud558\ub294 \uad6c\ud604\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \uc2e4\uc81c DB \ub300\uc2e0 \uba54\ubaa8\ub9ac \uc790\ub8cc\uad6c\uc870\ub97c \uc0ac\uc6a9\ud558\ub294 Repository\ub97c \ub9cc\ub4e4 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>IPlayerRepository -&gt; MySQLPlayerRepository \/ FakePlayerRepository\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud14c\uc2a4\ud2b8 \ub354\ube14\uc744 \uc0ac\uc6a9\ud558\uba74 \ud14c\uc2a4\ud2b8 \uc18d\ub3c4\ub97c \ub192\uc774\uace0 \uc678\ubd80 \ud658\uacbd\uc5d0 \ub300\ud55c \uc758\uc874\uc131\uc744 \uc904\uc77c \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Mock\uc744 \ub0a8\uc6a9\ud558\uba74 \uc0dd\uae30\ub294 \ubb38\uc81c<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Mock\uc740 \uc720\uc6a9\ud558\uc9c0\ub9cc \ub9ce\uc774 \uc0ac\uc6a9\ud560\uc218\ub85d \ud14c\uc2a4\ud2b8\uac00 \uad6c\ud604 \uc138\ubd80\uc0ac\ud56d\uc5d0 \ubb36\uc77c \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>EXPECT_CALL(repository, FindPlayer(10))\n    .Times(1);\n\nEXPECT_CALL(repository, SavePlayer(_))\n    .Times(1);\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \ud14c\uc2a4\ud2b8\ub294 \uacb0\uacfc\ubcf4\ub2e4 \ub0b4\ubd80 \ud638\ucd9c \uad6c\uc870\ub97c \uac15\ud558\uac8c \uac80\uc99d\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub098\uc911\uc5d0 \ub0b4\ubd80 \uad6c\ud604\uc744<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>FindPlayer -&gt; Modify -&gt; Save\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc5d0\uc11c<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GetPlayer -&gt; Update\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub85c \ubc14\uafe8\uc744 \ubfd0\uc778\ub370 \uc2e4\uc81c \uae30\ub2a5\uc740 \uc815\uc0c1\uc778\ub370 \ud14c\uc2a4\ud2b8\uac00 \uae68\uc9c8 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub530\ub77c\uc11c \ud14c\uc2a4\ud2b8\ub294 \uac00\ub2a5\ud558\uba74 <strong>\uad6c\ud604 \ubc29\ubc95\ubcf4\ub2e4 \uc678\ubd80\uc5d0\uc11c \uad00\ucc30 \uac00\ub2a5\ud55c \uacb0\uacfc\uc640 \uc911\uc694\ud55c \ud589\uc704<\/strong>\ub97c \uac80\uc99d\ud558\ub294 \ubc29\ud5a5\uc774 \uc88b\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\ud14c\uc2a4\ud2b8 \uaca9\ub9ac<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\ud14c\uc2a4\ud2b8\ub294 \uc11c\ub85c \uc601\ud5a5\uc744 \uc8fc\uba74 \uc548 \ub41c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub098\uc05c \ud14c\uc2a4\ud2b8 \uad6c\uc870\uc5d0\uc11c\ub294<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Test A -&gt; DB \uc0c1\ud0dc \ubcc0\uacbd -&gt; Test B\uc758 DB \uc0c1\ud0dc\uc5d0 \uc601\ud5a5\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ucc98\ub7fc \ub41c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub7ec\uba74 Test A\ub97c \uba3c\uc800 \uc2e4\ud589\ud588\uc744 \ub54c\ub294 \uc131\uacf5\ud558\uc9c0\ub9cc Test B\ub9cc \uc2e4\ud589\ud558\uba74 \uc2e4\ud328\ud558\ub294 \ubb38\uc81c\uac00 \uc0dd\uae34\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud14c\uc2a4\ud2b8\ub294 \uac00\ub2a5\ud558\uba74<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Test A -&gt; \ub3c5\ub9bd\uc801\uc73c\ub85c \uc2e4\ud589 \uac00\ub2a5\nTest B -&gt; \ub3c5\ub9bd\uc801\uc73c\ub85c \uc2e4\ud589 \uac00\ub2a5\nTest C -&gt; \ub3c5\ub9bd\uc801\uc73c\ub85c \uc2e4\ud589 \uac00\ub2a5\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud14c\uc2a4\ud2b8 \ub370\uc774\ud130, \ud30c\uc77c, DB, \uc804\uc5ed \uc0c1\ud0dc, \uc2f1\uae00\ud1a4 \ub4f1\uc758 \uacf5\uc720 \uc0c1\ud0dc\ub97c \ud2b9\ud788 \uc8fc\uc758\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\uacb0\uc815\ub860\uc801 \ud14c\uc2a4\ud2b8<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\uac19\uc740 \ucf54\ub4dc\uc640 \uac19\uc740 \uc870\uac74\uc5d0\uc11c \uc2e4\ud589\ud588\uc744 \ub54c \uacb0\uacfc\uac00 \ud56d\uc0c1 \uac19\uc544\uc57c \ud14c\uc2a4\ud2b8\ub97c \uc2e0\ub8b0\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\uc74c\uacfc \uac19\uc740 \uc694\uc18c\ub294 \ud14c\uc2a4\ud2b8\ub97c \ubd88\uc548\uc815\ud558\uac8c \ub9cc\ub4e4 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\ud604\uc7ac \uc2dc\uac04 \/ \ub79c\ub364 \uac12 \/ \ub124\ud2b8\uc6cc\ud06c \/ \uc678\ubd80 API \/ \uc2a4\ub808\ub4dc \uc2e4\ud589 \uc21c\uc11c \/ \uc2e4\uc81c DB \uc0c1\ud0dc \/ \ud30c\uc77c \uc2dc\uc2a4\ud15c\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>int GetRandomReward();\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub97c \ud14c\uc2a4\ud2b8\ud560 \ub54c \uc2e4\uc81c \ub79c\ub364\uac12\uc5d0 \uc758\uc874\ud558\uba74 \uacb0\uacfc\uac00 \ub9e4\ubc88 \ub2ec\ub77c\uc9c8 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud14c\uc2a4\ud2b8\uc5d0\uc11c\ub294 Random Generator\ub97c \uc8fc\uc785\ud558\uace0 \uace0\uc815\ub41c \uac12\uc744 \ubc18\ud658\ud558\ub3c4\ub85d \ub9cc\ub4e4 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Game Logic -&gt; IRandom -&gt; RealRandom \/ FakeRandom\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub7f0 \uad6c\uc870\ub294 \ud14c\uc2a4\ud2b8 \uac00\ub2a5\uc131\uc744 \ub192\uc774\ub294 \ub3d9\uc2dc\uc5d0 \uc758\uc874\uc131\ub3c4 \uba85\ud655\ud558\uac8c \ub9cc\ub4e0\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\ud14c\uc2a4\ud2b8 \uac00\ub2a5\ud55c \ucf54\ub4dc<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\ud14c\uc2a4\ud2b8\ud558\uae30 \uc26c\uc6b4 \ucf54\ub4dc\ub294 \ub300\uccb4\ub85c \uc758\uc874\uc131\uc774 \uba85\ud655\ud558\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \ud568\uc218 \ub0b4\ubd80\uc5d0\uc11c \uc9c1\uc811 \uc804\uc5ed DB \uac1d\uccb4\ub97c \uac00\uc838\uc624\ub294 \ucf54\ub4dc\ubcf4\ub2e4<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class PlayerService\n{\npublic:\n    PlayerService(IPlayerRepository&amp; repository)\n        : repository(repository)\n    {\n    }\n\nprivate:\n    IPlayerRepository&amp; repository;\n};\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ucc98\ub7fc \ud544\uc694\ud55c \uc758\uc874\uc131\uc744 \uc678\ubd80\uc5d0\uc11c \uc8fc\uc785\ubc1b\ub294 \uad6c\uc870\uac00 \ud14c\uc2a4\ud2b8\ud558\uae30 \uc27d\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud14c\uc2a4\ud2b8\uc5d0\uc11c\ub294<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>PlayerService -&gt; FakePlayerRepository\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub97c \ub123\uc744 \uc218 \uc788\uae30 \ub54c\ubb38\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\uac83\uc774 Dependency Injection\uc774 \ud14c\uc2a4\ud2b8 \uc124\uacc4\uc640 \uc5f0\uacb0\ub418\ub294 \uc774\uc720\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\ud14c\uc2a4\ud2b8 \ucee4\ubc84\ub9ac\uc9c0<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\ud14c\uc2a4\ud2b8 \ucee4\ubc84\ub9ac\uc9c0\ub294 \ud14c\uc2a4\ud2b8\uac00 \uc2e4\uc81c \ucf54\ub4dc\uc758 \uc5b4\ub290 \uc815\ub3c4\ub97c \uc2e4\ud589\ud588\ub294\uc9c0\ub97c \ub098\ud0c0\ub0b4\ub294 \uc9c0\ud45c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub300\ud45c\uc801\uc73c\ub85c<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Line Coverage \/ Branch Coverage \/ Function Coverage \/ Condition Coverage\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub4f1\uc774 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>if (player.IsAlive())\n{\n    Attack();\n}\nelse\n{\n    return;\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uac00 \uc788\ub2e4\uba74 \ub2e8\uc21c\ud788 \uc774 \ucf54\ub4dc\ub97c \ud55c \ubc88 \uc2e4\ud589\ud588\ub2e4\uace0 Branch Coverage\uac00 \ucda9\ubd84\ud788 \ud655\ubcf4\ub418\ub294 \uac83\uc740 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>IsAlive == true -&gt; Attack \uacbd\ub85c\nIsAlive == false -&gt; return \uacbd\ub85c\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub450 \uacbd\ub85c\ub97c \ubaa8\ub450 \uc2e4\ud589\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud558\uc9c0\ub9cc \ucee4\ubc84\ub9ac\uc9c0\uac00 \ub192\ub2e4\uace0 \uc88b\uc740 \ud14c\uc2a4\ud2b8\ub77c\ub294 \ubcf4\uc7a5\uc740 \uc5c6\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>100% Coverage != 100% Correctness\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ucf54\ub4dc\ub97c \uc2e4\ud589\ud558\uae30\ub9cc \ud558\uace0 \uacb0\uacfc\ub97c \uc81c\ub300\ub85c \uac80\uc99d\ud558\uc9c0 \uc54a\ub294 \ud14c\uc2a4\ud2b8\ub3c4 \ub9cc\ub4e4 \uc218 \uc788\uae30 \ub54c\ubb38\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ucee4\ubc84\ub9ac\uc9c0\ub294 \ud14c\uc2a4\ud2b8 \ud488\uc9c8\uc744 \ud310\ub2e8\ud558\ub294 \uc808\ub300\uc801\uc778 \uae30\uc900\uc774 \uc544\ub2c8\ub77c <strong>\uac80\uc99d\ub418\uc9c0 \uc54a\uc740 \ucf54\ub4dc \uc601\uc5ed\uc744 \ucc3e\ub294 \uc9c0\ud45c<\/strong>\ub85c \ubcf4\ub294 \uac83\uc774 \uc88b\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\ud68c\uadc0 \ud14c\uc2a4\ud2b8<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Regression Test\ub294 \uae30\uc874\uc5d0 \uc815\uc0c1\uc801\uc73c\ub85c \ub3d9\uc791\ud558\ub358 \uae30\ub2a5\uc774 \ubcc0\uacbd \uc774\ud6c4 \uae68\uc9c0\uc9c0 \uc54a\uc558\ub294\uc9c0 \ud655\uc778\ud558\ub294 \ud14c\uc2a4\ud2b8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \uc544\uc774\ud15c \uc2dc\uc2a4\ud15c\uc744 \uc218\uc815\ud588\ub294\ub370<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\uc544\uc774\ud15c \uc0ac\uc6a9 -&gt; \uc815\uc0c1\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\uc5c8\ub358 \uae30\ub2a5\uc774 \uc5c5\ub370\uc774\ud2b8 \uc774\ud6c4<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\uc544\uc774\ud15c \uc0ac\uc6a9 -&gt; \uc2e4\ud328\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud558\uac8c \ub420 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub7f0 \ubb38\uc81c\ub97c \ub2e4\uc2dc \ubc1c\uacac\ud560 \uc218 \uc788\ub3c4\ub85d \uae30\uc874 \ud14c\uc2a4\ud2b8\ub97c \uacc4\uc18d \uc720\uc9c0\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc0c8\ub85c\uc6b4 \ubc84\uadf8\uac00 \ubc1c\uc0dd\ud558\uba74<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Bug \ubc1c\uc0dd -&gt; \uc6d0\uc778 \uc218\uc815 -&gt; \ud574\ub2f9 \uc0c1\ud669\uc744 \uc7ac\ud604\ud558\ub294 \ud14c\uc2a4\ud2b8 \ucd94\uac00\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub77c\ub294 \ud750\ub984\uc73c\ub85c \uac00\uc838\uac00\ub294 \uac83\uc774 \uc88b\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub7ec\uba74 \uac19\uc740 \ubc84\uadf8\uac00 \ub2e4\uc2dc \ubc1c\uc0dd\ud588\uc744 \ub54c \uc790\ub3d9\uc73c\ub85c \uc7a1\uc744 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\ud14c\uc2a4\ud2b8 \uc8fc\ub3c4 \uac1c\ubc1c<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">TDD(Test-Driven Development)\ub294 \ud14c\uc2a4\ud2b8\ub97c \uba3c\uc800 \uc791\uc131\ud558\uace0 \uad6c\ud604\ud558\ub294 \uac1c\ubc1c \ubc29\uc2dd\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub300\ud45c\uc801\uc778 \ud750\ub984\uc740<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Red -&gt; Green -&gt; Refactor\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Red<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2e4\ud328\ud558\ub294 \ud14c\uc2a4\ud2b8\ub97c \uc791\uc131\ud55c\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Green<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\ud14c\uc2a4\ud2b8\ub97c \ud1b5\uacfc\ud560 \ucd5c\uc18c\ud55c\uc758 \ucf54\ub4dc\ub97c \uc791\uc131\ud55c\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Refactor<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\ub3d9\uc791\uc744 \uc720\uc9c0\ud558\uba74\uc11c \ucf54\ub4dc\ub97c \uac1c\uc120\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\uc694\uad6c\uc0ac\ud56d -&gt; \"100\uc758 \uacf5\uaca9\ub825\uc774 30\uc758 \ubc29\uc5b4\ub825\uc744 \ub9cc\ub098\uba74 70\uc758 \ud53c\ud574\ub97c \uc900\ub2e4.\" -&gt; \ud14c\uc2a4\ud2b8 \uc791\uc131 -&gt; \uad6c\ud604\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub97c \ud14c\uc2a4\ud2b8\ub85c \uba3c\uc800 \ud45c\ud604\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>EXPECT_EQ(CalculateDamage(100, 30), 70);\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">TDD\ub294 \ubaa8\ub4e0 \ucf54\ub4dc\uc5d0 \ubc18\ub4dc\uc2dc \uc801\uc6a9\ud574\uc57c \ud558\ub294 \uaddc\uce59\uc740 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ubcf5\uc7a1\ud55c UI\ub098 \ube60\ub974\uac8c \uc2e4\ud5d8\ud574\uc57c \ud558\ub294 \ud504\ub85c\ud1a0\ud0c0\uc774\ud551\uc5d0\uc11c\ub294 \ud14c\uc2a4\ud2b8 \uc6b0\uc120 \uac1c\ubc1c\uc774 \ube44\ud6a8\uc728\uc801\uc77c \uc218\ub3c4 \uc788\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\ud14c\uc2a4\ud2b8 \uc124\uacc4\uc5d0\uc11c \uc911\uc694\ud55c \uae30\uc900<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\ud14c\uc2a4\ud2b8\ub97c \uc791\uc131\ud560 \ub54c\ub294 \ub2e8\uc21c\ud788 \ud14c\uc2a4\ud2b8 \uac1c\uc218\ub97c \ub298\ub9ac\ub294 \uac83\ubcf4\ub2e4 \ud14c\uc2a4\ud2b8\uc758 \uac00\uce58\uac00 \uc911\uc694\ud558\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\uc74c\uacfc \uac19\uc740 \uc9c8\ubb38\uc744 \uae30\uc900\uc73c\ub85c \ubcf4\uba74 \ub41c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\uc774 \uae30\ub2a5\uc5d0\uc11c \uc2e4\ud328\ud560 \uac00\ub2a5\uc131\uc774 \ub192\uc740 \ubd80\ubd84\uc740 \uc5b4\ub514\uc778\uac00?\n\n\uc785\ub825\uc758 \uacbd\uacc4\ub294 \uc5b4\ub514\uc778\uac00?\n\n\uc608\uc678\uc801\uc778 \uc0c1\ud0dc\ub294 \ubb34\uc5c7\uc778\uac00?\n\n\uc11c\ub85c \ub2e4\ub978 \uc870\uac74\uc774 \uc870\ud569\ub418\ub294 \ubd80\ubd84\uc740 \uc5b4\ub514\uc778\uac00?\n\n\uc678\ubd80 \uc2dc\uc2a4\ud15c\uacfc \uc5f0\uacb0\ub418\ub294 \ubd80\ubd84\uc740 \uc5b4\ub514\uc778\uac00?\n\n\uc774 \uae30\ub2a5\uc774 \uae68\uc9c0\uba74 \uc601\ud5a5 \ubc94\uc704\uac00 \ud070 \ubd80\ubd84\uc740 \uc5b4\ub514\uc778\uac00?\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud2b9\ud788 \uc704\ud5d8\ub3c4\uac00 \ub192\uc740 \ub85c\uc9c1\ubd80\ud130 \ud14c\uc2a4\ud2b8\ud558\ub294 \uac83\uc774 \ud6a8\uc728\uc801\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \uac8c\uc784\uc5d0\uc11c \ub2e8\uc21c\ud55c UI \ud14d\uc2a4\ud2b8\ubcf4\ub2e4<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Damage Calculation \/ Inventory Transaction \/ Currency Update \/ Match Result \/ Player State \/ Save \/ Load\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uac19\uc740 \ub85c\uc9c1\uc774 \uc798\ubabb\ub418\uc5c8\uc744 \ub54c \ud6e8\uc52c \ud070 \ubb38\uc81c\uac00 \ubc1c\uc0dd\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud14c\uc2a4\ud2b8 \uc5ed\uc2dc \uc704\ud5d8 \uae30\ubc18\uc73c\ub85c \uc6b0\uc120\uc21c\uc704\ub97c \uc815\ud560 \ud544\uc694\uac00 \uc788\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\uc88b\uc740 \ud14c\uc2a4\ud2b8\uc758 \ud2b9\uc9d5<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\uc88b\uc740 \ud14c\uc2a4\ud2b8\ub294 \uc77d\uc5c8\uc744 \ub54c \ubb34\uc5c7\uc744 \uac80\uc99d\ud558\ub294\uc9c0 \uba85\ud655\ud558\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>TEST(InventoryTest, CannotUseItemWhenInventoryIsEmpty)\n{\n    Inventory inventory;\n\n    EXPECT_FALSE(inventory.UseItem(100));\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud14c\uc2a4\ud2b8 \uc774\ub984\ub9cc \ubd10\ub3c4 \uc758\ub3c4\ub97c \uc54c \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub610\ud55c \uc2e4\ud328\ud588\uc744 \ub54c \uc6d0\uc778\uc744 \ucd94\uc801\ud558\uae30 \uc26c\uc6cc\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud558\ub098\uc758 \ud14c\uc2a4\ud2b8\uc5d0\uc11c<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\ud68c\uc6d0\uac00\uc785 -&gt; \ub85c\uadf8\uc778 -&gt; \uc0c1\ud488 \uad6c\ub9e4 -&gt; \uacb0\uc81c -&gt; \uc774\uba54\uc77c \ubc1c\uc1a1\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc744 \ubaa8\ub450 \uac80\uc99d\ud558\uba74 \uc2e4\ud328\ud588\uc744 \ub54c \uc5b4\ub290 \ubd80\ubd84\uc774 \ubb38\uc81c\uc778\uc9c0 \uc54c\uae30 \uc5b4\ub835\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uac00\ub2a5\ud558\uba74 \ud558\ub098\uc758 \ud14c\uc2a4\ud2b8\uac00 \ud558\ub098\uc758 \uba85\ud655\ud55c \ud589\ub3d9\uacfc \uacb0\uacfc\ub97c \uac80\uc99d\ud558\ub3c4\ub85d \uad6c\uc131\ud558\ub294 \uac83\uc774 \uc88b\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\ud14c\uc2a4\ud2b8 \uc124\uacc4\uc640 \uc544\ud0a4\ud14d\ucc98<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\ud14c\uc2a4\ud2b8 \uac00\ub2a5\uc131\uc740 \uc544\ud0a4\ud14d\ucc98\uc640 \uc9c1\uc811 \uc5f0\uacb0\ub41c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\uc74c \uad6c\uc870\ub294 \ud14c\uc2a4\ud2b8\ud558\uae30 \uc5b4\ub835\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GameLogic -&gt; \uc9c1\uc811 DB \uc811\uadfc \/ \uc9c1\uc811 \ub124\ud2b8\uc6cc\ud06c \uc811\uadfc \/ \uc804\uc5ed \uc0c1\ud0dc \uc811\uadfc \/ \uc9c1\uc811 \ud30c\uc77c \uc811\uadfc\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ubc18\ub300\ub85c \uc678\ubd80 \uc758\uc874\uc131\uc744 \ubd84\ub9ac\ud558\uba74<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GameLogic -&gt; IRepository \/ INetwork \/ IFileSystem\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud14c\uc2a4\ud2b8\uc5d0\uc11c\ub294<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>FakeRepository \/ FakeNetwork \/ FakeFileSystem\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub4f1\uc73c\ub85c \ub300\uccb4\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub530\ub77c\uc11c \ud14c\uc2a4\ud2b8\ub97c \ub098\uc911\uc5d0 \ucd94\uac00\ud558\ub824\uace0 \ud558\uba74 \uc774\ubbf8 \uad6c\uc870\uac00 \uad73\uc5b4 \uc788\uc5b4\uc11c \uc5b4\ub824\uc6b8 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\ud14c\uc2a4\ud2b8 \uac00\ub2a5\uc131\uc740 \ucf54\ub4dc \uc791\uc131 \ubc29\uc2dd\uacfc \uc544\ud0a4\ud14d\ucc98 \uc124\uacc4 \ub2e8\uacc4\uc5d0\uc11c\ubd80\ud130 \uacb0\uc815\ub41c\ub2e4.<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\ud14c\uc2a4\ud2b8 \uc790\ub3d9\ud654<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\ud14c\uc2a4\ud2b8\ub294 \uc0ac\ub78c\uc774 \uc9c1\uc811 \uc2e4\ud589\ud558\ub294 \uac83\ubcf4\ub2e4 \uc790\ub3d9\ud654\ud560\uc218\ub85d \ubc18\ubcf5 \uac80\uc99d\uc5d0 \uc720\ub9ac\ud558\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc77c\ubc18\uc801\uc778 CI \ud658\uacbd\uc5d0\uc11c\ub294<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Code Commit -&gt; Build -&gt; Unit Test -&gt; Integration Test -&gt; Test Result -&gt; Deploy\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uac19\uc740 \ud30c\uc774\ud504\ub77c\uc778\uc744 \uad6c\uc131\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uac1c\ubc1c\uc790\uac00 \ucf54\ub4dc\ub97c \ubcc0\uacbd\ud560 \ub54c\ub9c8\ub2e4 \ud14c\uc2a4\ud2b8\ub97c \uc2e4\ud589\ud558\uba74 \ud68c\uadc0 \ubc84\uadf8\ub97c \ube60\ub974\uac8c \ubc1c\uacac\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud2b9\ud788 \uaddc\ubaa8\uac00 \ucee4\uc9c8\uc218\ub85d \ud14c\uc2a4\ud2b8\ub97c \uc218\ub3d9\uc73c\ub85c \uc2e4\ud589\ud558\ub294 \uac83\uc740 \ud604\uc2e4\uc801\uc73c\ub85c \uc5b4\ub835\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc790\ub3d9\ud654\ub41c \ud14c\uc2a4\ud2b8\ub294 \uac1c\ubc1c \uacfc\uc815\uc758 \uc77c\ubd80\uac00 \ub418\uc5b4\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\ud14c\uc2a4\ud2b8\ub97c \uc5b4\ub514\uae4c\uc9c0 \ud574\uc57c \ud558\ub294\uac00<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\ubaa8\ub4e0 \ucf54\ub4dc\ub97c \ub3d9\uc77c\ud55c \uc218\uc900\uc73c\ub85c \ud14c\uc2a4\ud2b8\ud560 \ud544\uc694\ub294 \uc5c6\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \ub2e8\uc21c\ud55c getter\ubcf4\ub2e4 \ub2e4\uc74c\uacfc \uac19\uc740 \ucf54\ub4dc\uac00 \ud6e8\uc52c \ub192\uc740 \ud14c\uc2a4\ud2b8 \uac00\uce58\ub97c \uac00\uc9c4\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\uacb0\uc81c \/ \uc778\ubca4\ud1a0\ub9ac \/ \uc7ac\ud654 \/ \uad8c\ud55c \/ \uc778\uc99d \/ \uc804\ud22c \uacc4\uc0b0 \/ \uc800\uc7a5 \/ \ub9e4\uce6d \/ \ub124\ud2b8\uc6cc\ud06c \uc0c1\ud0dc\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud14c\uc2a4\ud2b8 \ube44\uc6a9\ub3c4 \uace0\ub824\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\ud14c\uc2a4\ud2b8 \uac00\uce58 \/ \ud14c\uc2a4\ud2b8 \uc791\uc131 \ube44\uc6a9 \/ \uc2e4\ud328\ud588\uc744 \ub54c\uc758 \ud53c\ud574\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \uc138 \uac00\uc9c0\ub97c \ube44\uad50\ud574\uc11c \uc6b0\uc120\uc21c\uc704\ub97c \uc7a1\ub294 \uac83\uc774 \ud604\uc2e4\uc801\uc778 \uc811\uadfc\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud14c\uc2a4\ud2b8\uac00 \ub9ce\ub2e4\uace0 \ubb34\uc870\uac74 \uc88b\uc740 \uc2dc\uc2a4\ud15c\uc774 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc720\uc9c0\ubcf4\uc218\uac00 \ubd88\uac00\ub2a5\ud560 \uc815\ub3c4\ub85c \ud14c\uc2a4\ud2b8\uac00 \ubcf5\uc7a1\ud574\uc9c0\uba74 \ud14c\uc2a4\ud2b8 \uc790\uccb4\uac00 \uc0c8\ub85c\uc6b4 \uae30\uc220 \ubd80\ucc44\uac00 \ub41c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\uc815\ub9ac<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\ud14c\uc2a4\ud2b8 \uc124\uacc4\ub294 \ud14c\uc2a4\ud2b8 \ucf54\ub4dc\ub97c \ub9ce\uc774 \uc791\uc131\ud558\ub294 \uc791\uc5c5\uc774 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\uc5b4\ub5a4 \uc0c1\ud669\uc5d0\uc11c \uc2dc\uc2a4\ud15c\uc774 \uc798\ubabb\ub420 \uc218 \uc788\ub294\uc9c0\ub97c \ucc3e\uc544\ub0b4\uace0, \uadf8 \uc704\ud5d8\uc744 \uac00\uc7a5 \ud6a8\uc728\uc801\uc73c\ub85c \uac80\uc99d\ud558\ub294 \uacfc\uc815<\/strong>\uc5d0 \uac00\uae5d\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc804\uccb4\uc801\uc778 \uad6c\uc870\ub97c \uc815\ub9ac\ud558\uba74 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\uc694\uad6c\uc0ac\ud56d \ubd84\uc11d -&gt; \uc785\ub825\uacfc \uc0c1\ud0dc \ud30c\uc545 -&gt; \uc815\uc0c1 \/ \ube44\uc815\uc0c1 \uc870\uac74 \ubd84\ub9ac -&gt; \uacbd\uacc4\uac12 \ubd84\uc11d -&gt; \uc870\uac74 \uc870\ud569 \ubd84\uc11d -&gt; \ud14c\uc2a4\ud2b8 \ucf00\uc774\uc2a4 \uc791\uc131 -&gt; Unit Test -&gt; Integration Test -&gt; E2E Test -&gt; \uc790\ub3d9\ud654 -&gt; \ud68c\uadc0 \ud14c\uc2a4\ud2b8\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub300\ud45c\uc801\uc778 \ud14c\uc2a4\ud2b8 \uc804\ub7b5\uc744 \ubcf4\uba74<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\ub3d9\ub4f1 \ubd84\ud560 -&gt; \uc785\ub825 \uc601\uc5ed\uc744 \uadf8\ub8f9\uc73c\ub85c \ub098\ub208\ub2e4.\n\n\uacbd\uacc4\uac12 \ubd84\uc11d -&gt; \uacbd\uacc4\uc5d0\uc11c \ud14c\uc2a4\ud2b8\ud55c\ub2e4.\n\n\uacb0\uc815 \ud14c\uc774\ube14 -&gt; \uc870\uac74 \uc870\ud569\uc744 \uac80\uc99d\ud55c\ub2e4.\n\n\uc0c1\ud0dc \uc804\uc774 \ud14c\uc2a4\ud2b8 -&gt; \uc0c1\ud0dc \ubcc0\uacbd\uacfc \uc804\uc774\ub97c \uac80\uc99d\ud55c\ub2e4.\n\nUnit Test -&gt; \uc791\uc740 \ub2e8\uc704\uc758 \ub3d9\uc791\uc744 \uac80\uc99d\ud55c\ub2e4.\n\nIntegration Test -&gt; \uc5ec\ub7ec \uad6c\uc131\uc694\uc18c\uc758 \uc5f0\uacb0\uc744 \uac80\uc99d\ud55c\ub2e4.\n\nE2E Test -&gt; \uc2e4\uc81c \uc0ac\uc6a9\uc790 \ud750\ub984\uc5d0 \uac00\uae4c\uc6b4 \uc804\uccb4 \uc2dc\uc2a4\ud15c\uc744 \uac80\uc99d\ud55c\ub2e4.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub9ac\uace0 \ud14c\uc2a4\ud2b8 \ud488\uc9c8\uc740 \ub2e8\uc21c\ud55c \ucee4\ubc84\ub9ac\uc9c0 \uc22b\uc790\ub85c \ud310\ub2e8\ud558\uae30 \uc5b4\ub835\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc911\uc694\ud55c \uac83\uc740 <strong>\uc2e4\uc81c\ub85c \uc704\ud5d8\ud55c \ubd80\ubd84\uc744 \ud14c\uc2a4\ud2b8\ud558\uace0 \uc788\ub294\uac00<\/strong>, <strong>\uc2e4\ud328\ud588\uc744 \ub54c \uc6d0\uc778\uc744 \ucc3e\uc744 \uc218 \uc788\ub294\uac00<\/strong>, <strong>\ucf54\ub4dc \ubcc0\uacbd \ud6c4\uc5d0\ub3c4 \ud14c\uc2a4\ud2b8\ub97c \uc720\uc9c0\ud560 \uc218 \uc788\ub294\uac00<\/strong>\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud14c\uc2a4\ud2b8 \uc124\uacc4\ub97c \uc81c\ub300\ub85c \ud558\ub824\uba74 \ud14c\uc2a4\ud2b8 \uae30\ubc95\ub9cc \uacf5\ubd80\ud574\uc11c\ub294 \ubd80\uc871\ud558\ub2e4. \uc694\uad6c\uc0ac\ud56d\uc744 \ubd84\uc11d\ud558\uace0, \uc2dc\uc2a4\ud15c\uc758 \uacbd\uacc4\ub97c \ucc3e\uace0, \uc5b4\ub5a4 \uc0c1\ud0dc\uc640 \uc785\ub825\uc774 \uc704\ud5d8\ud55c\uc9c0 \ud310\ub2e8\ud558\ub294 \ub2a5\ub825\uc774 \ud568\uaed8 \ud544\uc694\ud558\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uacb0\uad6d \ud14c\uc2a4\ud2b8\ub294 \ucf54\ub4dc\ub97c \ubbff\uae30 \uc704\ud55c \uc7a5\uce58\uac00 \uc544\ub2c8\ub77c, <strong>\ucf54\ub4dc\uac00 \uc5b4\ub5a4 \uc870\uac74\uc5d0\uc11c \uae68\uc9c8 \uc218 \uc788\ub294\uc9c0\ub97c \uacc4\uc18d \ub4dc\ub7ec\ub0b4\ub294 \uc7a5\uce58<\/strong>\ub77c\uace0 \ubcf4\ub294 \ud3b8\uc774 \ub9de\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\uc18c\ud504\ud2b8\uc6e8\uc5b4 \ud14c\uc2a4\ud2b8\ub294 \uc791\uc131\ud55c \ucf54\ub4dc\uac00 \uc694\uad6c\uc0ac\ud56d\ub300\ub85c \ub3d9\uc791\ud558\ub294\uc9c0 \ud655\uc778\ud558\uace0, \ubcc0\uacbd \uc774\ud6c4 \uae30\uc874 \uae30\ub2a5\uc774 \uae68\uc9c0\uc9c0 \uc54a\uc558\ub294\uc9c0 \uac80\uc99d\ud558\ub294 \uacfc\uc815\uc774\ub2e4. \ud14c\uc2a4\ud2b8 \uc124\uacc4(Test Design)\ub294 \ub2e8\uc21c\ud788 \ud14c\uc2a4\ud2b8 \ucf54\ub4dc\ub97c \uc791\uc131\ud558\ub294 \uac83\ubcf4\ub2e4 \ubc94\uc704\uac00 \ub113\ub2e4. \uc5b4\ub5a4 \uae30\ub2a5\uc744 \uc5b4\ub5a4 \uc870\uac74\uc5d0\uc11c \uac80\uc99d\ud560 \uac83\uc778\uc9c0, \uc5b4\ub5a4 \uc785\ub825\uc744 \uc0ac\uc6a9\ud558\uace0 \uc5b4\ub5a4 \uacb0\uacfc\ub97c \uae30\ub300\ud560 \uac83\uc778\uc9c0, \uc5b4\ub514\uae4c\uc9c0 \uc790\ub3d9\ud654\ud560 \uac83\uc778\uc9c0\ub97c \uacb0\uc815\ud558\ub294 \uc791\uc5c5\uc774\ub2e4. \ucf54\ub4dc\uac00 \ubcf5\uc7a1\ud574\uc9c8\uc218\ub85d \ubaa8\ub4e0 \uacbd\uc6b0\ub97c \uc9c1\uc811 \uc2e4\ud589\ud574\uc11c \ud655\uc778\ud558\ub294 \uac83\uc740 \ud604\uc2e4\uc801\uc73c\ub85c \uc5b4\ub835\ub2e4. \uadf8\ub798\uc11c \ud14c\uc2a4\ud2b8\ub294 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[51],"tags":[],"class_list":["post-1715","post","type-post","status-publish","format-standard","hentry","category-design"],"_links":{"self":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts\/1715","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1715"}],"version-history":[{"count":2,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts\/1715\/revisions"}],"predecessor-version":[{"id":1994,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts\/1715\/revisions\/1994"}],"wp:attachment":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1715"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1715"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1715"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}