{"id":2757,"date":"2026-10-26T02:52:34","date_gmt":"2026-10-26T02:52:34","guid":{"rendered":"https:\/\/wayhope.kro.kr\/?p=2757"},"modified":"2026-10-26T02:52:34","modified_gmt":"2026-10-26T02:52:34","slug":"%ec%86%8c%ed%94%84%ed%8a%b8%ec%9b%a8%ec%96%b4-%ed%85%8c%ec%8a%a4%ed%8a%b8-%ec%a2%85%eb%a5%98-%ec%a0%95%eb%a6%ac","status":"publish","type":"post","link":"https:\/\/wayhope.kro.kr\/?p=2757","title":{"rendered":"\uc18c\ud504\ud2b8\uc6e8\uc5b4 \ud14c\uc2a4\ud2b8 \uc885\ub958 \uc815\ub9ac"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\uc18c\ud504\ud2b8\uc6e8\uc5b4 \ud14c\uc2a4\ud2b8\ub294 \ucf54\ub4dc\uac00 \uc758\ub3c4\ud55c \ub300\ub85c \ub3d9\uc791\ud558\ub294\uc9c0 \uac80\uc99d\ud558\uace0, \uc624\ub958\ub97c \uc870\uae30\uc5d0 \ubc1c\uacac\ud558\uba70, \uc2dc\uc2a4\ud15c\uc758 \uc548\uc815\uc131\uacfc \uc2e0\ub8b0\uc131\uc744 \ud655\ubcf4\ud558\uae30 \uc704\ud55c \uac1c\ubc1c \ud65c\ub3d9\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud14c\uc2a4\ud2b8\ub294 \uac80\uc99d \ubc94\uc704\uc5d0 \ub530\ub77c \ub2e8\uc704 \ud14c\uc2a4\ud2b8, \ud1b5\ud569 \ud14c\uc2a4\ud2b8, \uc2dc\uc2a4\ud15c \ud14c\uc2a4\ud2b8, \uc778\uc218 \ud14c\uc2a4\ud2b8\ub85c \uad6c\ubd84\ud560 \uc218 \uc788\ub2e4. \ubaa9\uc801\uc5d0 \ub530\ub77c \ud68c\uadc0 \ud14c\uc2a4\ud2b8, \uc131\ub2a5 \ud14c\uc2a4\ud2b8, \ubd80\ud558 \ud14c\uc2a4\ud2b8, \ubcf4\uc548 \ud14c\uc2a4\ud2b8 \ub4f1\uc73c\ub85c\ub3c4 \ub098\ub25c\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\ud14c\uc2a4\ud2b8 \ubc94\uc704\uc5d0 \ub530\ub978 \ubd84\ub958<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e8\uc704 \ud14c\uc2a4\ud2b8 (Unit Test)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uac1c\ubcc4 \ud568\uc218, \ud074\ub798\uc2a4, \ubaa8\ub4c8 \uac80\uc99d<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud1b5\ud569 \ud14c\uc2a4\ud2b8 (Integration Test)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ubaa8\ub4c8\uacfc \uc678\ubd80 \uc2dc\uc2a4\ud15c \uc0ac\uc774\uc758 \uc5f0\ub3d9 \uac80\uc99d<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2dc\uc2a4\ud15c \ud14c\uc2a4\ud2b8 (System Test)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc804\uccb4 \uc2dc\uc2a4\ud15c\uc758 \uae30\ub2a5\uacfc \ube44\uae30\ub2a5 \uc694\uad6c\uc0ac\ud56d \uac80\uc99d<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc778\uc218 \ud14c\uc2a4\ud2b8 (Acceptance Test)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc0ac\uc6a9\uc790\uc640 \ube44\uc988\ub2c8\uc2a4 \uc694\uad6c\uc0ac\ud56d \ucda9\uc871 \uc5ec\ubd80 \uac80\uc99d<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\ub2e8\uc704 \ud14c\uc2a4\ud2b8 (Unit Test)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e8\uc704 \ud14c\uc2a4\ud2b8\ub294 \ud568\uc218, \uba54\uc11c\ub4dc, \ud074\ub798\uc2a4\ucc98\ub7fc \uc791\uc740 \ucf54\ub4dc \ub2e8\uc704\uac00 \ub3c5\ub9bd\uc801\uc73c\ub85c \uc62c\ubc14\ub974\uac8c \ub3d9\uc791\ud558\ub294\uc9c0 \uac80\uc99d\ud558\ub294 \ud14c\uc2a4\ud2b8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc678\ubd80 \uc2dc\uc2a4\ud15c\uc5d0 \ub300\ud55c \uc758\uc874\uc131\uc744 \ucd5c\uc18c\ud654\ud558\uace0, \ud544\uc694\ud55c \uacbd\uc6b0 Mock\uc774\ub098 Stub\uc744 \uc0ac\uc6a9\ud574 \ud2b9\uc815 \ub3d9\uc791\uc744 \ubaa8\ubc29\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\uc2dc: \ud3ec\ucee4 \uac8c\uc784\uc758 \ubca0\ud305 \uae08\uc561 \uac80\uc99d<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function isValidBet(balance: number, bet: number): boolean {\n  return bet &gt; 0 &amp;&amp; bet &lt;= balance;\n}\n\ntest(\"\uc794\uc561 \uc774\ud558\uc758 \uc591\uc218 \ubca0\ud305\uc740 \uc720\ud6a8\ud558\ub2e4\", () =&gt; {\n  expect(isValidBet(1000, 500)).toBe(true);\n});\n\ntest(\"\uc794\uc561\uc744 \ucd08\uacfc\ud558\ub294 \ubca0\ud305\uc740 \ubb34\ud6a8\ub2e4\", () =&gt; {\n  expect(isValidBet(1000, 1500)).toBe(false);\n});<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\uc7a5\uc810: \uc2e4\ud589 \uc18d\ub3c4\uac00 \ube60\ub974\uace0 \uc624\ub958 \uc6d0\uc778\uc744 \ucc3e\uae30 \uc27d\ub2e4.<\/li>\n\n\n\n<li>\ub2e8\uc810: \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc5f0\uacb0\uc774\ub098 \uc2e4\uc81c \ub124\ud2b8\uc6cc\ud06c \ud1b5\uc2e0 \ubb38\uc81c\ub294 \uac80\uc99d\ud558\uc9c0 \ubabb\ud55c\ub2e4.<\/li>\n\n\n\n<li>\ub3c4\uad6c: Jest, Vitest, Node.js Test Runner.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\ud1b5\ud569 \ud14c\uc2a4\ud2b8 (Integration Test)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\ud1b5\ud569 \ud14c\uc2a4\ud2b8\ub294 \uc5ec\ub7ec \ubaa8\ub4c8\uc774\ub098 \uc2dc\uc2a4\ud15c\uc774 \ud568\uaed8 \ub3d9\uc791\ud560 \ub54c \uc62c\ubc14\ub974\uac8c \uc5f0\ub3d9\ub418\ub294\uc9c0 \uac80\uc99d\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uac1c\ubcc4 \ud568\uc218\uac00 \uc815\uc0c1\uc774\uc5b4\ub3c4 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ucffc\ub9ac, Redis \uba85\ub839, HTTP \uc694\uccad, WebSocket \uba54\uc2dc\uc9c0 \ucc98\ub9ac \ub4f1\uc5d0\uc11c \uc624\ub958\uac00 \ubc1c\uc0dd\ud560 \uc218 \uc788\ub2e4. \ud1b5\ud569 \ud14c\uc2a4\ud2b8\ub294 \uc774\ub7ec\ud55c \ubb38\uc81c\ub97c \ubc1c\uacac\ud558\ub294 \ub370 \uc801\ud569\ud558\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\uc2dc: \ud68c\uc6d0\uac00\uc785 API\uc640 MySQL \uc5f0\ub3d9<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>test(\"\ud68c\uc6d0\uac00\uc785 \uc2dc \uc0ac\uc6a9\uc790\uac00 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \uc800\uc7a5\ub41c\ub2e4\", async () =&gt; {\n  const response = await request(app)\n    .post(\"\/users\")\n    .send({\n      email: \"test@example.com\",\n      password: \"secure-password\"\n    });\n\n  expect(response.status).toBe(201);\n\n  const user = await prisma.user.findUnique({\n    where: { email: \"test@example.com\" }\n  });\n\n  expect(user).not.toBeNull();\n});<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2e4\uc81c \ud14c\uc2a4\ud2b8\uc5d0\uc11c\ub294 \ud14c\uc2a4\ud2b8\uc6a9 \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \uc0ac\uc6a9\ud558\uace0, \ud14c\uc2a4\ud2b8\uac00 \ub05d\ub09c \ud6c4 \uc0dd\uc131\ud55c \ub370\uc774\ud130\ub97c \uc815\ub9ac\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\uc7a5\uc810: \uc2e4\uc81c \uc758\uc874\uc131 \uc0ac\uc774\uc758 \uc5f0\ub3d9 \ubb38\uc81c\ub97c \ubc1c\uacac\ud55c\ub2e4.<\/li>\n\n\n\n<li>\ub2e8\uc810: \ub2e8\uc704 \ud14c\uc2a4\ud2b8\ubcf4\ub2e4 \ub290\ub9ac\uace0 \ud658\uacbd \uc124\uc815\uc774 \ubcf5\uc7a1\ud558\ub2e4.<\/li>\n\n\n\n<li>\ub3c4\uad6c: Jest, Supertest, Testcontainers.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\uc2dc\uc2a4\ud15c \ud14c\uc2a4\ud2b8 (System Test)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2dc\uc2a4\ud15c \ud14c\uc2a4\ud2b8\ub294 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uc804\uccb4\ub97c \ub300\uc0c1\uc73c\ub85c \uc694\uad6c\uc0ac\ud56d\uc5d0 \ub9de\uac8c \ub3d9\uc791\ud558\ub294\uc9c0 \uac80\uc99d\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uac1c\ubcc4 \ubaa8\ub4c8\uc758 \uad6c\ud604\ubcf4\ub2e4\ub294 \uc2dc\uc2a4\ud15c \uc804\uccb4\uc758 \ub3d9\uc791\uacfc \uc0ac\uc6a9\uc790 \uad00\uc810\uc758 \uacb0\uacfc\uc5d0 \ucd08\uc810\uc744 \ub9de\ucd98\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\uc2dc: \uc628\ub77c\uc778 \ud3ec\ucee4 \uac8c\uc784<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\ud68c\uc6d0\uac00\uc785 \ud6c4 \ub85c\uadf8\uc778\ud560 \uc218 \uc788\ub2e4.<\/li>\n\n\n\n<li>\uc778\uc99d\ub41c \uc0ac\uc6a9\uc790\uac00 \uac8c\uc784\ubc29\uc5d0 \uc785\uc7a5\ud560 \uc218 \uc788\ub2e4.<\/li>\n\n\n\n<li>\ud50c\ub808\uc774\uc5b4\ub4e4\uc774 \ubca0\ud305\ud558\uba74 \uac8c\uc784 \uc0c1\ud0dc\uac00 \uc815\uc0c1\uc801\uc73c\ub85c \uac31\uc2e0\ub41c\ub2e4.<\/li>\n\n\n\n<li>\uac8c\uc784 \uc885\ub8cc \ud6c4 \uacb0\uacfc\uc640 \ud3ec\uc778\ud2b8 \uc815\uc0b0\uc774 \uc815\uc0c1\uc801\uc73c\ub85c \ucc98\ub9ac\ub41c\ub2e4.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2dc\uc2a4\ud15c \ud14c\uc2a4\ud2b8\uc5d0\ub294 \uae30\ub2a5 \ud14c\uc2a4\ud2b8\ubfd0 \uc544\ub2c8\ub77c \uc131\ub2a5, \uc548\uc815\uc131, \ubcf4\uc548 \ub4f1 \ube44\uae30\ub2a5 \uc694\uad6c\uc0ac\ud56d\uc5d0 \ub300\ud55c \uac80\uc99d\ub3c4 \ud3ec\ud568\ub420 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\uc778\uc218 \ud14c\uc2a4\ud2b8 (Acceptance Test)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc778\uc218 \ud14c\uc2a4\ud2b8\ub294 \uac1c\ubc1c\ub41c \uc2dc\uc2a4\ud15c\uc774 \uc0ac\uc6a9\uc790 \ub610\ub294 \ube44\uc988\ub2c8\uc2a4\uc758 \uc694\uad6c\uc0ac\ud56d\uc744 \ucda9\uc871\ud558\ub294\uc9c0 \ud655\uc778\ud558\ub294 \ud14c\uc2a4\ud2b8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2e4\uc81c \uc0ac\uc6a9\uc790, \uace0\uac1d, QA \ub2f4\ub2f9\uc790 \ub610\ub294 \ube44\uc988\ub2c8\uc2a4 \ub2f4\ub2f9\uc790\uac00 \ucc38\uc5ec\ud560 \uc218 \uc788\uc73c\uba70, \ubc18\ub4dc\uc2dc \uc218\ub3d9\uc73c\ub85c \uc9c4\ud589\ud574\uc57c \ud558\ub294 \uac83\uc740 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\uc2dc: \ud3ec\ucee4 \uac8c\uc784\uc758 \uc815\uc0b0 \uc694\uad6c\uc0ac\ud56d<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\uac8c\uc784\uc774 \uc815\uc0c1\uc801\uc73c\ub85c \uc885\ub8cc\ub418\uba74 \uc2b9\uc790\uac00 \uacb0\uc815\ub41c\ub2e4.<\/li>\n\n\n\n<li>\uc2b9\ub9ac\ud55c \ud50c\ub808\uc774\uc5b4\uc5d0\uac8c \uaddc\uce59\uc5d0 \ub530\ub978 \uc0c1\uae08\uc774 \uc9c0\uae09\ub41c\ub2e4.<\/li>\n\n\n\n<li>\ud328\ubc30\ud55c \ud50c\ub808\uc774\uc5b4\uc758 \ubca0\ud305 \uae08\uc561\uc774 \uc815\ud655\ud558\uac8c \ubc18\uc601\ub41c\ub2e4.<\/li>\n\n\n\n<li>\ub3d9\uc77c\ud55c \uc815\uc0b0 \uc694\uccad\uc774 \ubc18\ubcf5\ub418\uc5b4\ub3c4 \uc911\ubcf5 \uc9c0\uae09\ub418\uc9c0 \uc54a\ub294\ub2e4.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\uc778\uc218 \ud14c\uc2a4\ud2b8\ub294 \uad6c\ud604 \uc138\ubd80\uc0ac\ud56d\ubcf4\ub2e4 \uc2e4\uc81c \uc5c5\ubb34 \uaddc\uce59\uacfc \uae30\ub300 \uacb0\uacfc\uac00 \ucda9\uc871\ub418\ub294\uc9c0 \ud655\uc778\ud558\ub294 \ub370 \uc911\uc810\uc744 \ub454\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\ubaa9\uc801\uc5d0 \ub530\ub978 \ud14c\uc2a4\ud2b8 \uc885\ub958<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc704\uc758 \ud14c\uc2a4\ud2b8\ub4e4\uc740 \uc8fc\ub85c \uac80\uc99d \ubc94\uc704\ub97c \uae30\uc900\uc73c\ub85c \ubd84\ub958\ud55c \uac83\uc774\ub2e4. \ub2e4\uc74c \ud14c\uc2a4\ud2b8\ub4e4\uc740 \ubc94\uc704\uc640 \ubcc4\uac1c\ub85c \ud2b9\uc815 \ubaa9\uc801\uc744 \uac80\uc99d\ud55c\ub2e4.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><th>\ud14c\uc2a4\ud2b8 \uc885\ub958<\/th><th>\ubaa9\uc801<\/th><th>\uc608\uc2dc<\/th><\/tr><tr><td>\ud68c\uadc0 \ud14c\uc2a4\ud2b8 (Regression Test)<\/td><td>\uae30\uc874 \uae30\ub2a5\uc774 \uc0c8\ub85c\uc6b4 \ubcc0\uacbd\uc73c\ub85c \uc778\ud574 \uae68\uc9c0\uc9c0 \uc54a\uc558\ub294\uc9c0 \ud655\uc778<\/td><td>\ud3ec\uc778\ud2b8 \uae30\ub2a5 \uc218\uc815 \ud6c4 \ub85c\uadf8\uc778\uacfc \uc815\uc0b0 \uc7ac\uac80\uc99d<\/td><\/tr><tr><td>\uc2a4\ubaa8\ud06c \ud14c\uc2a4\ud2b8 (Smoke Test)<\/td><td>\ube4c\ub4dc\uc758 \ud575\uc2ec \uae30\ub2a5\uc774 \uae30\ubcf8\uc801\uc73c\ub85c \ub3d9\uc791\ud558\ub294\uc9c0 \ube60\ub974\uac8c \ud655\uc778<\/td><td>\uc11c\ubc84 \uc2e4\ud589, DB \uc5f0\uacb0, \ub85c\uadf8\uc778 \ud655\uc778<\/td><\/tr><tr><td>\ud0d0\uc0c9\uc801 \ud14c\uc2a4\ud2b8 (Exploratory Test)<\/td><td>\uc0ac\uc804\uc5d0 \uace0\uc815\ub41c \uc2dc\ub098\ub9ac\uc624\uc5d0\ub9cc \uc758\uc874\ud558\uc9c0 \uc54a\uace0 \uacb0\ud568 \ud0d0\uc0c9<\/td><td>\ube44\uc815\uc0c1\uc801\uc778 \uc21c\uc11c\ub85c \uac8c\uc784 \uc870\uc791<\/td><\/tr><tr><td>\uc131\ub2a5 \ud14c\uc2a4\ud2b8 (Performance Test)<\/td><td>\uc751\ub2f5 \uc2dc\uac04\uacfc \ucc98\ub9ac\ub7c9 \ub4f1 \uc131\ub2a5 \ud2b9\uc131 \ud655\uc778<\/td><td>API \uc751\ub2f5 \uc2dc\uac04 \uce21\uc815<\/td><\/tr><tr><td>\ubd80\ud558 \ud14c\uc2a4\ud2b8 (Load Test)<\/td><td>\uc608\uc0c1\ub418\ub294 \uc0ac\uc6a9\uc790 \ubc0f \uc694\uccad \ubd80\ud558\uc5d0\uc11c \ub3d9\uc791 \ud655\uc778<\/td><td>\ub3d9\uc2dc \uc811\uc18d\uc790 \uc99d\uac00\uc5d0 \ub530\ub978 \uc9c0\uc5f0 \uce21\uc815<\/td><\/tr><tr><td>\uc2a4\ud2b8\ub808\uc2a4 \ud14c\uc2a4\ud2b8 (Stress Test)<\/td><td>\uc815\uc0c1 \uc6b4\uc601 \ubc94\uc704\ub97c \ub118\uc5b4 \uc2dc\uc2a4\ud15c \ud55c\uacc4 \ud655\uc778<\/td><td>\uacfc\ub3c4\ud55c \ub3d9\uc2dc \uc811\uc18d\uc73c\ub85c \ud55c\uacc4 \ud0d0\uc0c9<\/td><\/tr><tr><td>\uc2a4\ud30c\uc774\ud06c \ud14c\uc2a4\ud2b8 (Spike Test)<\/td><td>\ubd80\ud558\uac00 \uae09\uaca9\ud558\uac8c \uc99d\uac00\ud558\uac70\ub098 \uac10\uc18c\ud560 \ub54c \uc548\uc815\uc131 \ud655\uc778<\/td><td>\uc774\ubca4\ud2b8 \uc2dc\uc791\uacfc \ub3d9\uc2dc\uc5d0 \uc811\uc18d \ud3ed\uc99d<\/td><\/tr><tr><td>\ub0b4\uad6c\uc131 \ud14c\uc2a4\ud2b8 (Soak Test)<\/td><td>\uc7a5\uc2dc\uac04 \uc6b4\uc601 \uc2dc \uba54\ubaa8\ub9ac \ub204\uc218\ub098 \uc790\uc6d0 \uace0\uac08 \ud655\uc778<\/td><td>\uc11c\ubc84\ub97c \uc7a5\uc2dc\uac04 \uc2e4\ud589\ud558\uba70 \uba54\ubaa8\ub9ac \uad00\ucc30<\/td><\/tr><tr><td>\ubcf4\uc548 \ud14c\uc2a4\ud2b8 (Security Test)<\/td><td>\uc778\uc99d, \uad8c\ud55c, \uc785\ub825 \uac80\uc99d \ub4f1\uc758 \ubcf4\uc548 \ucde8\uc57d\uc810 \ud655\uc778<\/td><td>\ub2e4\ub978 \uc0ac\uc6a9\uc790\uc758 \uacc4\uc815 \uc815\ubcf4 \uc811\uadfc \uc2dc\ub3c4<\/td><\/tr><tr><td>\ubcf5\uad6c \ud14c\uc2a4\ud2b8 (Recovery Test)<\/td><td>\uc7a5\uc560 \uc774\ud6c4 \uc815\uc0c1 \uc0c1\ud0dc\ub85c \ubcf5\uad6c\ud560 \uc218 \uc788\ub294\uc9c0 \ud655\uc778<\/td><td>Redis \uc7a5\uc560 \ud6c4 \uc7ac\uc5f0\uacb0\uacfc \ub370\uc774\ud130 \ubcf5\uad6c \uac80\uc99d<\/td><\/tr><tr><td>\ud638\ud658\uc131 \ud14c\uc2a4\ud2b8 (Compatibility Test)<\/td><td>\ub2e4\uc591\ud55c \ud658\uacbd\uc5d0\uc11c \uc815\uc0c1 \ub3d9\uc791\ud558\ub294\uc9c0 \ud655\uc778<\/td><td>OS, \ube0c\ub77c\uc6b0\uc800, \ud074\ub77c\uc774\uc5b8\ud2b8 \ubc84\uc804\ubcc4 \uac80\uc99d<\/td><\/tr><tr><td>\uc0ac\uc6a9\uc131 \ud14c\uc2a4\ud2b8 (Usability Test)<\/td><td>\uc0ac\uc6a9\uc790\uac00 \uae30\ub2a5\uc744 \uc774\ud574\ud558\uace0 \ud3b8\ub9ac\ud558\uac8c \uc774\uc6a9\ud558\ub294\uc9c0 \ud655\uc778<\/td><td>\uc2e0\uaddc \uc0ac\uc6a9\uc790\uc758 \uac8c\uc784\ubc29 \uc785\uc7a5 \uacfc\uc815 \uad00\ucc30<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">\uc2e4\uc2dc\uac04 \uac8c\uc784 \uc11c\ubc84\uc5d0\uc11c \ud14c\uc2a4\ud2b8\ub97c \uc124\uacc4\ud558\ub294 \ubc29\ubc95<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Node.js, TypeScript, Colyseus, Redis, MySQL\uc744 \uc0ac\uc6a9\ud558\ub294 \uba40\ud2f0\ud50c\ub808\uc774 \uac8c\uc784 \uc11c\ubc84\ub77c\uba74 \ub2e4\uc74c\uacfc \uac19\uc774 \ud14c\uc2a4\ud2b8\ub97c \uad6c\uc131\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e8\uc704 \ud14c\uc2a4\ud2b8<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ubca0\ud305 \uc720\ud6a8\uc131, \uce74\ub4dc \ubd84\ubc30, \uc871\ubcf4 \ud310\uc815, \ud31f \uacc4\uc0b0, \uc815\uc0b0 \uacf5\uc2dd<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc678\ubd80 \uc2dc\uc2a4\ud15c \uc5c6\uc774 \uac8c\uc784 \uaddc\uce59 \uc790\uccb4\ub97c \uac80\uc99d\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud1b5\ud569 \ud14c\uc2a4\ud2b8<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">API + MySQL, \uc138\uc158 + Redis, \uba54\uc2dc\uc9c0 \ucc98\ub9ac + DB \uc800\uc7a5<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2e4\uc81c \uc758\uc874\uc131\uc744 \uc5f0\uacb0\ud574 \ub370\uc774\ud130\uc640 \ud1b5\uc2e0\uc774 \uc62c\ubc14\ub974\uac8c \ucc98\ub9ac\ub418\ub294\uc9c0 \uac80\uc99d\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2dc\uc2a4\ud15c \ubc0f \uc778\uc218 \ud14c\uc2a4\ud2b8<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub85c\uadf8\uc778 \u2192 \ub9e4\uce6d \u2192 \uac8c\uc784 \uc9c4\ud589 \u2192 \uacb0\uacfc \ud655\uc815 \u2192 \ud3ec\uc778\ud2b8 \uc815\uc0b0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud50c\ub808\uc774\uc5b4\uc758 \uc804\uccb4 \uac8c\uc784 \ud750\ub984\uacfc \ube44\uc988\ub2c8\uc2a4 \uaddc\uce59\uc744 \uac80\uc99d\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ubd80\ud558 \ubc0f \uc7a5\uc560 \ud14c\uc2a4\ud2b8<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub3d9\uc2dc \uc811\uc18d, WebSocket \uc7ac\uc5f0\uacb0, Redis \uc7a5\uc560, \uc11c\ubc84 \uc885\ub8cc<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc6b4\uc601 \ud658\uacbd\uc5d0\uc11c\uc758 \ucc98\ub9ac \ud55c\uacc4\uc640 \uc7a5\uc560 \ub300\uc751 \ub2a5\ub825\uc744 \uac80\uc99d\ud55c\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\uc2e4\ubb34\uc5d0\uc11c \uc911\uc694\ud55c \ud14c\uc2a4\ud2b8 \uc804\ub7b5<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\ubaa8\ub4e0 \ud14c\uc2a4\ud2b8\ub97c \ub3d9\uc77c\ud55c \ube44\uc911\uc73c\ub85c \uc791\uc131\ud560 \ud544\uc694\ub294 \uc5c6\ub2e4. \ud14c\uc2a4\ud2b8 \ube44\uc6a9\uacfc \uc624\ub958 \ubc1c\uc0dd \uc2dc \ud53c\ud574 \uaddc\ubaa8\ub97c \uace0\ub824\ud574 \uc6b0\uc120\uc21c\uc704\ub97c \uc815\ud558\ub294 \uac83\uc774 \ud6a8\uc728\uc801\uc774\ub2e4.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\ub2e8\uc704 \ud14c\uc2a4\ud2b8\ub97c \ub9ce\uc774 \uc791\uc131\ud55c\ub2e4. \ube60\ub974\uac8c \uc2e4\ud589\ud560 \uc218 \uc788\uc73c\ubbc0\ub85c \uac8c\uc784 \uaddc\uce59\uacfc \uacc4\uc0b0 \ub85c\uc9c1\uc744 \ud3ed\ub113\uac8c \uac80\uc99d\ud55c\ub2e4.<\/li>\n\n\n\n<li>\ud1b5\ud569 \ud14c\uc2a4\ud2b8\ub85c \ud575\uc2ec \uacbd\uacc4\ub97c \uac80\uc99d\ud55c\ub2e4. Redis, MySQL, \uc778\uc99d \uc2dc\uc2a4\ud15c, WebSocket \ud1b5\uc2e0 \ub4f1 \uc678\ubd80 \uc758\uc874\uc131\uacfc\uc758 \uc5f0\ub3d9\uc744 \ud655\uc778\ud55c\ub2e4.<\/li>\n\n\n\n<li>\ud575\uc2ec \uc0ac\uc6a9\uc790 \ud750\ub984\uc744 \uc2dc\uc2a4\ud15c \ud14c\uc2a4\ud2b8\ub85c \uac80\uc99d\ud55c\ub2e4. \ud68c\uc6d0\uac00\uc785\ubd80\ud130 \uac8c\uc784 \uc885\ub8cc \ubc0f \uc815\uc0b0\uae4c\uc9c0 \uc2e4\uc81c \uc2dc\ub098\ub9ac\uc624\ub97c \ud14c\uc2a4\ud2b8\ud55c\ub2e4.<\/li>\n\n\n\n<li>\ub3c8\uacfc \uad00\ub828\ub41c \ub85c\uc9c1\uc740 \uc2e4\ud328 \uc2dc\ub098\ub9ac\uc624\uae4c\uc9c0 \uac80\uc99d\ud55c\ub2e4. \uc911\ubcf5 \uc694\uccad, \ub3d9\uc2dc \uc815\uc0b0, \uc7ac\uc2dc\ub3c4, \uc11c\ubc84 \uc911\ub2e8, \ub370\uc774\ud130 \ubd88\uc77c\uce58\ub97c \ud655\uc778\ud55c\ub2e4.<\/li>\n\n\n\n<li>\uc131\ub2a5 \ud14c\uc2a4\ud2b8\ub294 \uc2e4\uc81c \ubcd1\ubaa9\uc744 \uae30\uc900\uc73c\ub85c \uc9c4\ud589\ud55c\ub2e4. \ub2e8\uc21c\ud788 \ub3d9\uc2dc \uc811\uc18d\uc790 \uc218\ub9cc \uce21\uc815\ud558\uc9c0 \ub9d0\uace0 \uc751\ub2f5 \uc9c0\uc5f0, \uc624\ub958\uc728, CPU, \uba54\ubaa8\ub9ac, \uc774\ubca4\ud2b8 \ub8e8\ud504 \uc9c0\uc5f0\ub3c4 \ud568\uaed8 \uad00\ucc30\ud55c\ub2e4.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\ud14c\uc2a4\ud2b8 \ud53c\ub77c\ubbf8\ub4dc\ub294 \uc774\ub7ec\ud55c \uc804\ub7b5\uc744 \uc124\uba85\ud558\ub294 \ub300\ud45c\uc801\uc778 \ubaa8\ub378\uc774\ub2e4. \uc77c\ubc18\uc801\uc73c\ub85c \ube60\ub974\uace0 \ub3c5\ub9bd\uc801\uc778 \ub2e8\uc704 \ud14c\uc2a4\ud2b8\ub97c \ub113\uac8c \uad6c\uc131\ud558\uace0, \ud1b5\ud569 \ud14c\uc2a4\ud2b8\uc640 \uc804\uccb4 \uc2dc\uc2a4\ud15c \ud14c\uc2a4\ud2b8\ub294 \uac80\uc99d \uac00\uce58\uc5d0 \ub9de\ucdb0 \ubc30\uce58\ud55c\ub2e4. \ub2e4\ub9cc \ubaa8\ub4e0 \ud504\ub85c\uc81d\ud2b8\uc5d0 \ub3d9\uc77c\ud55c \ube44\uc728\uc744 \uc801\uc6a9\ud574\uc57c \ud558\ub294 \uc808\ub300\uc801\uc778 \uaddc\uce59\uc740 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud575\uc2ec\uc740 \ud14c\uc2a4\ud2b8 \uac1c\uc218\uac00 \uc544\ub2c8\ub77c \uacb0\ud568\uc744 \uc801\uc808\ud55c \ub2e8\uacc4\uc5d0\uc11c \ubc1c\uacac\ud558\uace0, \ubcc0\uacbd \uc774\ud6c4\uc5d0\ub3c4 \uc2dc\uc2a4\ud15c\uc758 \uc815\ud655\uc131\uacfc \uc548\uc815\uc131\uc744 \uc9c0\uc18d\uc801\uc73c\ub85c \ubcf4\uc7a5\ud558\ub294 \uac83\uc774\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\uc18c\ud504\ud2b8\uc6e8\uc5b4 \ud14c\uc2a4\ud2b8\ub294 \ucf54\ub4dc\uac00 \uc758\ub3c4\ud55c \ub300\ub85c \ub3d9\uc791\ud558\ub294\uc9c0 \uac80\uc99d\ud558\uace0, \uc624\ub958\ub97c \uc870\uae30\uc5d0 \ubc1c\uacac\ud558\uba70, \uc2dc\uc2a4\ud15c\uc758 \uc548\uc815\uc131\uacfc \uc2e0\ub8b0\uc131\uc744 \ud655\ubcf4\ud558\uae30 \uc704\ud55c \uac1c\ubc1c \ud65c\ub3d9\uc774\ub2e4. \ud14c\uc2a4\ud2b8\ub294 \uac80\uc99d \ubc94\uc704\uc5d0 \ub530\ub77c \ub2e8\uc704 \ud14c\uc2a4\ud2b8, \ud1b5\ud569 \ud14c\uc2a4\ud2b8, \uc2dc\uc2a4\ud15c \ud14c\uc2a4\ud2b8, \uc778\uc218 \ud14c\uc2a4\ud2b8\ub85c \uad6c\ubd84\ud560 \uc218 \uc788\ub2e4. \ubaa9\uc801\uc5d0 \ub530\ub77c \ud68c\uadc0 \ud14c\uc2a4\ud2b8, \uc131\ub2a5 \ud14c\uc2a4\ud2b8, \ubd80\ud558 \ud14c\uc2a4\ud2b8, \ubcf4\uc548 \ud14c\uc2a4\ud2b8 \ub4f1\uc73c\ub85c\ub3c4 \ub098\ub25c\ub2e4. \ud14c\uc2a4\ud2b8 \ubc94\uc704\uc5d0 \ub530\ub978 \ubd84\ub958 \ub2e8\uc704 \ud14c\uc2a4\ud2b8 (Unit Test) \uac1c\ubcc4 \ud568\uc218, \ud074\ub798\uc2a4, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-2757","post","type-post","status-publish","format-standard","hentry","category-dev-logs"],"_links":{"self":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts\/2757","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=2757"}],"version-history":[{"count":1,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts\/2757\/revisions"}],"predecessor-version":[{"id":2758,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts\/2757\/revisions\/2758"}],"wp:attachment":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2757"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2757"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2757"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}