39. ๋จ์ ๋ชจ๋ ํ ์คํธ
๋จ์ ๋ชจ๋ ํ ์คํธ (๋จ์ ํ ์คํธ)
ํ๋ก๊ทธ๋จ์ ๋จ์ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๋ชจ๋์ด ์ ํด์ง ๊ธฐ๋ฅ์ ์ ํํ ์ํํ๋์ง ๊ฒ์ฆํ๋ ๊ฒ์ผ๋ก, ๋จ์ ๋ชจ๋ ํ ์คํธ์ ๊ธฐ์ค์ ๋จ์ ๋ชจ๋์ ๋ํ ์ฝ๋์ด๋ฏ๋ก ์์คํ ์์ค์ ์ค๋ฅ๋ ์ก์๋ผ ์ ์์
ํ์ดํธ๋ฐ์ค ํ ์คํธ : ๋ชจ๋์ ์์ค ์ฝ๋๋ฅผ ์คํ์ํจ ์ํ์์ ์์ค ์ฝ๋์ ๋ชจ๋ ๋ ผ๋ฆฌ์ ๊ฒฝ๋ก๋ฅผ ํ ์คํธํ๋ ๋ฐฉ๋ฒ
๋ธ๋๋ฐ์ค ํ ์คํธ : ์ํํธ์จ์ด๊ฐ ์ํํ ํน์ ๊ธฐ๋ฅ์ด ์์ ํ ์๋๋๋ ๊ฒ์ ์ ์ฆํ๋ ํ ์คํธ
ํ ์คํธ ์ผ์ด์ค(Test Case)
๋ชจ๋์ด ์ฌ๋ฐ๋ฅด๊ฒ ์์ฑ๋์๋์ง ํ์ธํ๊ธฐ ์ํด ๋ชจ๋์ ์ ๋ ฅ๋ ์ ์๋ ์ฌ๋ฌ ๊ฐ๋ค๊ณผ ์์ ๊ฒฐ๊ณผ๋ค์ ๋์ดํ ๋ชฉ๋ก์ ๋ง๋๋ ๊ณผ์
- ํ ์คํธ ํญ๋ชฉ์ ๋ํ ๋ช ์ธ์๋ก, ๋ช ์ธ ๊ธฐ๋ฐ ํ ์คํธ์ ์ค๊ณ ์ฐ์ถ๋ฌผ์ ํด๋น
- ํ ์คํธ ์ผ์ด์ค๋ฅผ ์ด์ฉํ์ง ์๋ ์ง๊ด์ ์ธ ํ ์คํธ๋ ์ธ๋ ฅ๊ณผ ์๊ฐ์ ๋ญ๋นํ ์ ์์
• ISO/IEC/IEEE 29119-3 ํ์ค์ ๋ฐ๋ฅธ ํ ์คํธ ์ผ์ด์ค์ ๊ตฌ์ฑ ์์
์๋ณ์(Identifier) : ํญ๋ชฉ ์๋ณ์, ์ผ๋ จ๋ฒํธ
ํ ์คํธ ํญ๋ชฉ(Test Item) : ํ ์คํธ ๋์
์ ๋ ฅ ๋ช ์ธ(Input Specification) : ์ ๋ ฅ ๋ฐ์ดํฐ ๋๋ ํ ์คํธ ์กฐ๊ฑด
์ถ๋ ฅ ๋ช ์ธ(Output Specification) : ํ ์คํธ ์ผ์ด์ค ์ํ ์ ์์๋๋ ์ถ๋ ฅ ๊ฒฐ๊ณผ
ํ๊ฒฝ ์ค์ (Environmental Needs) : ํ์ํ ํ๋์จ์ด๋ ์ํํธ์จ์ด์ ํ๊ฒฝ
ํน์ ์ ์ฐจ ์๊ตฌ(Special Procedure Requirement) : ํ ์คํธ ์ผ์ด์ค ์ํ ์ ํน๋ณํ ์๊ตฌ๋๋ ์ ์ฐจ
์์กด์ฑ ๊ธฐ์ (Inter-case Dependencies) : ํ ์คํธ ์ผ์ด์ค ๊ฐ์ ์์กด์ฑ
ํ ์คํธ ํ๋ก์ธ์ค
ํ ์คํธ๋ฅผ ์ํด ์ํํ๋ ๋ชจ๋ ์์ ๋ค์ด ํ ์คํธ์ ๋ชฉ์ ๊ณผ ์กฐ๊ฑด์ ๋ฌ์ฑํ ์ ์๋๋ก ๋์์ฃผ๋ ๊ณผ์
• ํ ์คํธ ํ๋ก์ธ์ค 5๋จ๊ณ
โ ๊ณํ ๋ฐ ์ ์ด ๋จ๊ณ : ํ ์คํธ ๋ชฉํ๋ฅผ ๋ฌ์ฑํ๊ธฐ ์ํ ๊ณํ ์๋ฆฝ, ๊ณํ๋๋ก ์งํ๋๋๋ก ์ ์ด
โก ๋ถ์ ๋ฐ ์ค๊ณ ๋จ๊ณ : ํ ์คํธ ๋ชฉํ๋ฅผ ๊ตฌ์ฒดํํด ํ ์คํธ ์๋๋ฆฌ์ค์ ํ ์คํธ ์ผ์ด์ค๋ฅผ ์์ฑํ๋ ๋จ๊ณ
ํ ์คํธ ์๋๋ฆฌ์ค : ํ ์คํธ ์ผ์ด์ค๋ค์ ์ ์ฉํ๋ ๊ตฌ์ฒด์ ์ธ ์ ์ฐจ๋ฅผ ๋ช ์ธํ ๋ฌธ์
โข ๊ตฌํ ๋ฐ ์คํ ๋จ๊ณ : ํจ์จ์ ์ธ ํ ์คํธ ์ํ์ ์ํด ํ ์คํธ ์ผ์ด์ค๋ค์ ์กฐํฉํด ํ ์คํธ ํ๋ก์์ ์ ๋ช ์ธํ๋ ๋จ๊ณ
ํ ์คํธ ํ๋ก์์ : ํ ์คํธ ์ผ์ด์ค์ ์คํ ์์๋ฅผ ์๋ฏธ
โฃ ํ๊ฐ ๋จ๊ณ : ํ ์คํธ๊ฐ ๊ณํ๊ณผ ๋ชฉํ์ ๋ง๊ฒ ์ํ๋์๋์ง ํ๊ฐ, ๊ธฐ๋ก
โค ์๋ฃ ๋จ๊ณ : ์ดํ์ ํ ์คํธ๋ฅผ ์ํ ์ฐธ๊ณ ์๋ฃ ๋ฐ ํ ์คํธ ์ํ์ ๋ํ ์ฆ๊ฑฐ ์๋ฃ๋ก ํ์ฉํ๊ธฐ ์ํด ์ํ ๊ณผ์ ๊ณผ ์ฐ์ถ๋ฌผ์ ๊ธฐ๋ก ๋ฐ ์ ์ฅํ๋ ๋จ๊ณ
40. ๊ฐ๋ฐ ์ง์ ๋๊ตฌ
ํตํฉ ๊ฐ๋ฐ ํ๊ฒฝ (IDE; Integrated Development Environment)
๊ฐ๋ฐ์ ํ์ํ ํ๊ฒฝ, ์ฆ ํธ์ง๊ธฐ (Editor), ์ปดํ์ผ๋ฌ (Compiler), ๋๋ฒ๊ฑฐ (Debugger) ๋ฑ์ ๋ค์ํ ํด์ ํ๋์ ์ธํฐํ์ด์ค๋ก ํตํฉํ์ฌ ์ ๊ณตํ๋ ๊ฒ์ ์๋ฏธ
- ํตํฉ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ ๊ณตํ๋ ์ํํธ์จ์ด๋ฅผ ์๋ฏธ
- ์ฝ๋์ ์๋ ์์ฑ ๋ฐ ์ปดํ์ผ ๊ฐ๋ฅ, ์ถ๊ฐ ๊ธฐ๋ฅ์ ์ํ ๋๊ตฌ๋ค์ ๋ค์ด๋ก๋ ํ ์ ์์
- ์ฝ๋๋ฅผ ์คํํ๊ฑฐ๋ ํ ์คํธํ ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ ๋ถ๋ถ์ ์๊ฐํํ๋ฏ๋ก ์์ ์ฉ์ด
- ์ธ๋ถ์ ๋ค์ํ ์๋น์ค์ ์ฐ๋ ๊ฐ๋ฅ
• ํตํฉ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ง์ํ๋ ๋ํ์ ์ธ ๋๊ตฌ
ํ๋ก๊ทธ๋จ |
๊ฐ๋ฐ์ฌ |
ํ๋ซํผ |
์ด์์ฒด์ |
์ง์ ์ธ์ด |
์ดํด๋ฆฝ์ค(Eclipse) |
Eclipse Foundation, IBM |
ํฌ๋ก์ค ํ๋ซํผ |
Windows, Linux, MacOS ๋ฑ |
JAVA, C++, C, PHP, JSP ๋ฑ |
๋น์ฃผ์ผ ์คํ๋์ค (Visual studio) |
Microsoft
|
Win32, Win64 |
Windows |
Basic, C++, C, C#, .NET ๋ฑ |
์์ค ์ฝ๋(Xcode) |
Apple |
Mac, iPhone |
MacOS, iOS |
C++, C, C#, JAVA ๋ฑ |
์๋๋ก์ด์ค ์คํ๋์ค (Android Studio) |
|
Android |
Windows, Linux, MacOS |
JAVA, C, C++ |
IDEA |
JetBrains |
ํฌ๋ก์ค ํ๋ซํผ |
Windows, Linux, MacOS |
JAVA, JSP, XML, GO, Kotlin ๋ฑ |
๋น๋ ๋๊ตฌ
์์ค ์ฝ๋๋ฅผ ์ํํธ์จ์ด๋ก ๋ณํํ๋ ๊ณผ์ ์ ํ์ํ ์ ์ฒ๋ฆฌ, ์ปดํ์ผ ๋ฑ์ ์์ ๋ค์ ์ํํ๋ ์ํํธ์จ์ด
์ ์ฒ๋ฆฌ (Preprocessing) : ์ปดํ์ผ์ ์์ ์ฝ๋์ ์ฝ์ ๋ ์ฃผ์์ ์ ๊ฑฐํ๊ฑฐ๋ ๋งคํฌ๋ก๋ค์ ์ฒ๋ฆฌํ๋ ๊ณผ์
๋น๋ : ์์ค ์ฝ๋ ํ์ผ๋ค์ ์ปดํจํฐ์์ ์คํํ ์ ์๋ ์ ํ ์ํํธ์จ์ด๋ก ๋ณํํ๋ ๊ณผ์ ๋๋ ๊ฒฐ๊ณผ๋ฌผ์ ๋งํจ
• ๋ํ์ ์ธ ๋น๋ ๋๊ตฌ
Ant (Another Neat Tool) |
- ์ํ์น ์ํํธ์จ์ด ์ฌ๋จ์์ ๊ฐ๋ฐํ ์ํํธ์จ์ด, ์๋ฐ ํ๋ก์ ํธ์ ๊ณต์์ ์ธ ๋น๋ ๋๊ตฌ๋ก ์ฌ์ฉ๋จ - XML ๊ธฐ๋ฐ์ ๋น๋ ์คํฌ๋ฆฝํธ ์ฌ์ฉ - ์์ ๋์ ์ ์ฐ์ฑ ๋์, ๋ณต์กํ ๋น๋ ํ๊ฒฝ์๋ ๋์ฒ ๊ฐ๋ฅ - ์ ํด์ง ๊ท์น์ด๋ ํ์ค์ด ์์ด ๊ฐ๋ฐ์๊ฐ ๋ชจ๋ ๊ฒ์ ์ ์, ์คํฌ๋ฆฝํธ์ ์ฌ์ฌ์ฉ ์ด๋ ค์ |
Maven |
- ์ํ์น ์ํํธ์จ์ด ์ฌ๋จ์์ ๊ฐ๋ฐํ ์ํํธ์จ์ด, Ant์ ๋์์ผ๋ก ๊ฐ๋ฐ ๋จ - ์์กด์ฑ์ ์ค์ ํด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ด๋ฆฌ - ์ปดํ์ผ๊ณผ ๋น๋ ๋์ ์ํ ๊ฐ๋ฅ - ๊ท์น์ด๋ ํ์ค์ด ์กด์ฌํด ์์ธ ์ฌํญ๋ง ๊ธฐ๋กํ๋ฉด ๋จ |
Gradle |
- ๊ธฐ์กด์ Ant์ Maven์ ๋ณด์ํด ๊ฐ๋ฐ๋ ๋น๋ ๋๊ตฌ - ํ์ค ํ ์ปค ์ธ 6์ธ์ ๊ฐ๋ฐ์๊ฐ ๋ชจ์ฌ ๊ณต๋ ๊ฐ๋ฐํจ - ์๋๋ก์ด๋ ์คํ๋์ค์ ๊ณต์ ๋น๋ ๋๊ตฌ๋ก ์ฑํ๋ ๋๊ตฌ - ์์กด์ฑ ํ์ฉ, ๊ทธ๋ฃจ๋น(Groovy) ๊ธฐ๋ฐ์ ๋น๋ ์คํฌ๋ฆฝํธ ์ฌ์ฉ |
๊ธฐํ ํ์ ๋๊ตฌ (๊ทธ๋ฃน์จ์ด)
๊ฐ๋ฐ์ ์ฐธ์ฌํ๋ ์ฌ๋๋ค์ด ์๋ก ๋ค๋ฅธ ์์ ํ๊ฒฝ์์ ์ํํ ํ๋ก์ ํธ๋ฅผ ์ํํ ์ ์๋๋ก ๋์์ฃผ๋ ๋๊ตฌ์ธ ํ์ ์ํํธ์จ์ด
- ์ผ์ ๊ด๋ฆฌ, ์ ๋ฌดํ๋ฆ ๊ด๋ฆฌ, ์ ๋ณด ๊ณต์ , ์ปค๋ฎค๋์ผ์ด์ ๋ฑ์ ์ ๋ฌด ๋ณด์กฐ ๋๊ตฌ๊ฐ ํฌํจ๋์ด ์์
- ๋ค์ํ ํ๋ซํผ์์ ์ฌ์ฉํ ์ ์๋๋ก ์ ๊ณต๋จ
- ํ์ ๋๊ตฌ๊ฐ ์ต์ํ์ง ์๊ฑฐ๋ ์ด์ฉํ ์์ง๊ฐ ์์ผ๋ฉด ํ์ ๋๊ตฌ๊ฐ ์คํ๋ ค ํ์ ์ ๋ฐฉํด ์์๊ฐ ๋ ์ ์์
• ํ์ ๋๊ตฌ์ ์ข ๋ฅ
ํ๋ก์ ํธ ๋ฐ ์ผ์ ๊ด๋ฆฌ |
- ์ ์ฒด ํ๋ก์ ํธ์ ๊ฐ๋ณ ์ ๋ฌด๋ค์ ์งํ ์ํ, ์ผ์ ๋ฑ์ ๊ณต์ ํ๋ ๊ธฐ๋ฅ ์ ๊ณต - ๊ตฌ๊ธ ์บ๋ฆฐ๋, ๋ถ๋๋ฆฌ์คํธ(Wunderlist), ํธ๋ ๋ก(Trello), ์ง๋ผ(Jira), ํ๋ก์ฐ(Flow) ๋ฑ |
์ ๋ณด ๊ณต์ ๋ฐ ์ปค๋ฎค๋์ผ์ด์ |
- ์ฃผ์ฒด๋ณ๋ก ๊ตฌ์ฑ์๋ค์ ์ง๋ชฉํด ๋ฐฉ์ ๊ฐ์คํ ํ ์ ๋ณด๋ฅผ ๊ณต์ ํ๊ณ ๋ํํ๋ ๊ฒ ๊ฐ๋ฅ - ํ์ผ ๊ด๋ฆฌ ๊ฐํธ, ์์ฌ์ํต ์์ ๋ก์ - ์ฌ๋(Slack), ์๋(Jandi), ํ์คํฌ์๋(Teskworld) ๋ฑ |
๋์์ธ |
- ๋์์ด๋๊ฐ ์ค๊ณํ UI๋ ์ด๋ฏธ์ง์ ์ ๋ณด๋ค์ ์ฝ๋ํํ์ฌ ๊ฐ๋ฐ์์๊ฒ ์ ๋ฌํ๋ ๊ธฐ๋ฅ ์ ๊ณต - ์ค์ผ์น(Sketch), ์ ํ๋ฆฐ(Zeplin) ๋ฑ |
๊ธฐํ |
- ์์ด๋์ด ๊ณต์ ์ ์ฌ์ฉ๋๋ ์๋ฒ๋ ธํธ(Evernote) - API๋ฅผ ๋ฌธ์ํํด ๊ฐ๋ฐ์๋ค ๊ฐ ํ์ ์ ๋์์ฃผ๋ ์ค์จ๊ฑฐ(Swagger) - ๊น(Git)์ ์นํธ์คํ ์๋น์ค์ธ ๊นํ๋ธ(Github) |