|
|
|
 |
ÆÇ¸Å°¡ |
48,000¿ø ¡æ 43,200¿ø 10% |
|
 |
¸¶Àϸ®Áö |
10% 4,320¿ø |
|
 |
¹ßÇàÀÏ |
2010-03-12
|
 |
ISBN |
8960771252 | 9788960771253
|
 |
±âŸÁ¤º¸ |
¹ø¿ª¼ | 1056ÂÊ
|
|
 |
¿¹»óÃâ°íÀÏ
|
1ÀÏ (±Ù¹«ÀϱâÁØ) |
 |
¹è¼Ûºñ |
¹«·á¹è¼Û
|
| |
|
|
|
|
|
 |
| ¼ÒÇÁÆ®¿þ¾î
|
|
|
| Á¾ÇÕÁö¼ö 15p 40 À§ |
|
| ¿ù°£Áö¼ö 21p 2 À§ |
|
|
| |
|
¡Ø ³×À̹ö üũ¾Æ¿ôÀ¸·Î ±¸¸Å½Ã ºñȸ¿øÀ¸·Î ±¸¸Å°¡
µÊÀ¸·Î °ÄÄ ¸¶Àϸ®Áö´Â Àû¸³ µÇÁö ¾Ê½À´Ï´Ù. |
|
|
|
 |
|
[ÃâÆÇ»ç¼Æò]
< ¿ä¾à >
¡ºxUnit Å×½ºÆ® ÆÐÅÏ¡»Àº °¡Àå Àαâ ÀÖ´Â ´ÜÀ§ Å×½ºÆ® ÇÁ·¹ÀÓ¿öÅ©ÀÎ xUnitÀ¸·Î ÀÚµ¿ Å×½ºÆ®¸¦ ÀÛ¼ºÇÏ´Â ¹æ¹ýÀ» ¿Ïº®ÇÏ°Ô ÁöµµÇØÁØ´Ù. ¾ÖÀÚÀÏ ÄÚÄ¡ÀÌÀÚ Å×½ºÆ® ÀÚµ¿È Àü¹®°¡ÀÎ Á¦¶óµå ¸Þ½ºÀڷνº(Gerard Meszaros)´Â Å×½ºÆ® ÀÛ¼º, ÀÌÇØ, À¯Áö º¸¼ö¸¦ ½±°Ô ÇØÁÖ´Â 68°³ÀÇ ÀÔÁõµÈ ÆÐÅÏÀ» ¼Ò°³ÇÑ´Ù. ¶ÇÇÑ ¾î¶»°Ô Çϸé Å×½ºÆ®¸¦ ´õ °ß°íÇÏ°í ¹Ýº¹ °¡´ÉÇϸç, ½±°Ô ¸¸µé ¼ö ÀÖ´ÂÁöµµ º¸¿©ÁØ´Ù.
< ¼Ò°³ >
ÀÚµ¿ Å×½ºÆÃ(Automated testing)Àº ¾ÖÀÚÀÏ °³¹ßÀÇ ±âÃÊ´Ù. Å×½ºÆÃ Àü·«À» Àß È°¿ëÇÏ¸é ±â´ÉÀ» °ú°¨ÇÏ°Ô Ãß°¡ÇÒ ¼ö ÀÖ°í, »ç¿ëÀÚ Çǵå¹éÀ» ºü¸£°Ô ¹ÞÀ» ¼ö ÀÖÀ¸¸ç, ǰÁúÀ» Çâ»ó½Ãų ¼ö ÀÖ´Ù. ÇÏÁö¸¸ ¸¹Àº °³¹ßÀÚ°¡ ÀÚµ¿ Å×½ºÆ®¿¡ ´ëÇÑ °æÇèÀÌ ºÎÁ·ÇØ È¿°úÀûÀÎ Å×½ºÆ® ÀÛ¼ºÀ» ¾î·Á¿öÇÑ´Ù.
¡ºxUnit Å×½ºÆ® ÆÐÅÏ¡»Àº °¡Àå Àαâ ÀÖ´Â ´ÜÀ§ Å×½ºÆ® ÇÁ·¹ÀÓ¿öÅ©ÀÎ xUnitÀ¸·Î ÀÚµ¿ Å×½ºÆ®¸¦ ÀÛ¼ºÇÏ´Â ¹æ¹ýÀ» ¿Ïº®ÇÏ°Ô ÁöµµÇØÁØ´Ù. ¾ÖÀÚÀÏ ÄÚÄ¡ÀÌÀÚ Å×½ºÆ® ÀÚµ¿È Àü¹®°¡ÀÎ Á¦¶óµå ¸Þ½ºÀڷνº(Gerard Meszaros)´Â Å×½ºÆ® ÀÛ¼º, ÀÌÇØ, À¯Áö º¸¼ö¸¦ ½±°Ô ÇØÁÖ´Â 68°³ÀÇ ÀÔÁõµÈ ÆÐÅÏÀ» ¼Ò°³ÇÑ´Ù. ¶ÇÇÑ ¾î¶»°Ô Çϸé Å×½ºÆ®¸¦ ´õ °ß°íÇÏ°í ¹Ýº¹ °¡´ÉÇϸç, ½±°Ô ¸¸µé ¼ö ÀÖ´ÂÁöµµ º¸¿©ÁØ´Ù.
¡Ú ÀÌ Ã¥¿¡¼ ´Ù·ç´Â ³»¿ë ¡Ú
¡á Å×½ºÆ®¸¦ ´õ ºü¸£°Ô, Àß ÀÛ¼ºÇÏ´Â ¹æ¹ý ¡á ÀÚµ¿ Å×½ºÆ®ÀÇ 4´Ü°è: ÇȽºÃ³ ¼³Ä¡, Å×½ºÆ® ´ë»ó ½Ã½ºÅÛ ½ÇÇà, °á°ú °ËÁõ, ÇȽºÃ³ ÇØÃ¼ ¡á Å×½ºÆ® ½ºÅÓ(Test Stub)°ú ¸ðÀÇ °´Ã¼(Mock Object)·Î ¼ÒÇÁÆ®¿þ¾î¸¦ ȯ°æÀ¸·ÎºÎÅÍ °Ý¸®½ÃÄÑ Å×½ºÆ® Ä¿¹ö¸®Áö¸¦ Çâ»ó½ÃŰ´Â ¹æ¹ý ¡á Å×½ºÆ®Çϱâ ÁÁ°Ô ¼ÒÇÁÆ®¿þ¾î¸¦ ¼³°èÇÏ´Â ¹æ¹ý ¡á (ÄÚµå ³¿»õ, µ¿ÀÛ ³¿»õ, ÇÁ·ÎÁ§Æ® ³¿»õ¸¦ Æ÷ÇÔÇÑ) Å×½ºÆ® ¡®³¿»õ¡¯·Î ¹®Á¦¸¦ ÆÄ¾ÇÇϰí, ÀÌ·± ³¿»õ¸¦ ¾ðÁ¦ ¾î¶»°Ô Á¦°ÅÇÒ ¼ö ÀÖ´ÂÁö ¾Ë¾Æ³»´Â ¹æ¹ý ¡á Å×½ºÆ®¸¦ ¸®ÆÑÅä¸µÇØ ´õ ´Ü¼øÇÏ°í °ß°íÇÏ¸ç ºü¸£°Ô ½ÇÇàµÉ ¼ö ÀÖ°Ô ¸¸µå´Â ¹æ¹ý
¡Ú ÀÌ Ã¥ÀÇ ´ë»ó µ¶ÀÚ ¡Ú
°³¹ßÀÚ, °ü¸®ÀÚ, Å×½ºÅÍ¿¡°Ô ÇÊ¿äÇÑ Ã¥ÀÌ´Ù. ¾ÖÀÚÀÏ °³¹ß ȯ°æ¿¡¼ ÀÏÇÏ´À³Ä, ÀüÅëÀûÀÎ °³¹ß ȯ°æ¿¡¼ ÀÏÇÏ´À³Ä, Å×½ºÆ® ÁÖµµ °³¹ßÀ» ÇÏ´À³Ä, Å×½ºÆ® ³ªÁß ÀÛ¼ºÀ» ÇÏ´À³Ä´Â Áß¿äÇÏÁö ¾Ê´Ù. ÀÌ Ã¥¿¡¼ ³ª¿Â ÆÐÅϰú ³¿»õµéÀº ¸ðµç xUnit °è¿¿¡ Àû¿ëÇÒ ¼ö ÀÖÀ» »Ó¸¸ ¾Æ´Ï¶ó Â÷¼¼´ë µ¿ÀÛ ÁÖµµ °³¹ß(Behavior-Driven Development) ÇÁ·¹ÀÓ¿öÅ©ÀÎ RSpect, JBehave»Ó¸¸ ¾Æ´Ï¶ó ±â·Ï Å×½ºÆ® ÅøÀ̶óµçÁö, Fit³ª FitNesse °°Àº µ¥ÀÌÅÍ ÁÖµµ Å×½ºÆ®(Data-Driven Test) Åø¿¡¼µµ Ȱ¿ëÇÒ ¼ö ÀÖ´Ù.
¡Ú ÀÌ Ã¥ÀÇ ±¸¼º ¡Ú
3±ÇÀÇ Ã¥À» ÇÑ ±ÇÀ¸·Î ÇÕÃÄ ³õÀº µíÇÑ ¹æ´ëÇÑ ³»¿ëÀ¸·Î ±¸¼ºµÅÀÖ´Ù.
1ºÎ¿¡¼´Â Å×½ºÆ® Àü·«¿¡¼ºÎÅÍ ½ÇÁ¦ Å×½ºÆ® ÄÚµù±îÁö Å×½ºÆ® ÀÚµ¿È¿¡ ´ëÇÑ ¸ðµç °ÍÀ» ÀÚ¼¼ÇÏ°Ô ¼³¸íÇÑ´Ù.
2ºÎ¿¡¼´Â ÀÚÁÖ ¸¸³¯ ¼ö ÀÖ´Â 18°¡Áö ¡®Å×½ºÆ® ³¿»õ¡¯ ¸ñ·ÏÀ» º¸¿©ÁÖ°í, ¹®Á¦ÀÇ ±Ùº» ¿øÀΰú ±×¿¡ ¸Â´Â °¡Àå Àû´çÇÑ ÆÐÅÏÀ» ã´Â µ¥ µµ¿òÀ» ÁÖ´Â ÇØ°á ¹æ¾ÈÀ» Á¦°øÇÑ´Ù.
3ºÎ¿¡¼´Â °¢ ÆÐÅÏÀ» ÀÚ¼¼ÇÏ°Ô ¼³¸íÇϰí, ´Ù¾çÇÑ ÇÁ·Î±×·¡¹Ö ¾ð¾î·Î ÀÛ¼ºµÈ ¿¹Á¦ Äڵ带 ÅëÇØ ¸®ÆÑÅ丵ÇÏ´Â ¹æ¹ýÀ» º¸¿©ÁØ´Ù.
¡Ú ÃßõÀÇ ±Û ¡Ú
junit.org¿¡ °¡º¸¸é Á¦°¡ ´ÙÀ½°ú °°ÀÌ ½á ³õÀº ±ÛÀ» º¼ ¼ö ÀÖ½À´Ï´Ù. ¡°¼ÒÇÁÆ®¿þ¾î °³¹ß¿¡ ÀÖ¾î ÀÌó·³ ¸¹Àº »ç¶÷ÀÌ ÀÌ·¸°Ô ÀûÀº ÄÚµå·ÎºÎÅÍ ÀÌ·± Å« µµ¿òÀ» ¹ÞÀº ÀûÀº ¾ø¾ú´Ù.¡± ¸¹Àº »ç¶÷ÀÌ JUnitÀ» ¶È¶ÈÇÑ ÇÁ·Î±×·¡¸Ó°¡ ÀÏÁÖÀÏÀÌ¸é ¸¸µé ¼ö ÀÖ´Â º° °Å ¾Æ´Ñ °ÍÀ̶ó°í ȤÆòÇØ¿Ô½À´Ï´Ù. ±×·± Æò°¡°¡ »ç½ÇÀÏÁö´Â ¸ô¶óµµ Çٽɿ¡´Â ¿ÏÀüÈ÷ ¹þ¾î³ª ÀÖ½À´Ï´Ù. JUnitÀÌ Áß¿äÇϰí óĥÀÇ ¿¬¼³(¡°Àηù ºÐÀïÀÇ ¿µ¿ª¿¡ ÀÖ¾î ÀÌó·³ ¸¹Àº »ç¶÷ÀÌ ÀÌ·¸°Ô ÀûÀº »ç¶÷µé¿¡°Ô ÀÌ·± Å« µµ¿òÀ» ¹ÞÀº ÀûÀÌ ¾ø¾ú´Ù¡±¶ó´Â ¿¬¼³Àº óĥÀÌ ¿µ±¹ º»ÅäÇ×°øÀü ½Â¸® ÀÌÈÄ ¿Õ¸³°ø±º Á¶Á¾»çµéÀÇ ³ë°í¸¦ Ä¡ÇÏÇϸç ÇÑ ¸»ÀÓ - ¿Å±äÀÌ)À» ÆÐ·¯µðÇÒ ÀÚ°ÝÀÌ ÀÖ´Â ÀÌÀ¯´Â, ÀÌ·± ÀÛÀº µµ±¸ ´öºÐ¿¡ ¼ö¸¹Àº ÇÁ·Î±×·¡¸Ó¿¡°Ô Å×½ºÆÃÀÌ ÇÁ·Î±×·¡¹ÖÀÇ Áß½ÉÀÌÀÚ Àü¸éÀ¸·Î ¶°¿À¸¦ ¼ö ÀÖ´Â °è±â°¡ µÆ±â ¶§¹®ÀÔ´Ï´Ù. ÀÌÀü¿¡µµ À̸¦ ÁÖÀåÇØ ¿Â »ç¶÷µéÀÌ ÀÖ¾úÁö¸¸ ¹«¾ùº¸´Ùµµ JUnitÀÌ ÀÌ·± º¯È¿¡ °¡Àå Å©°Ô ±â¿©Çß½À´Ï´Ù.
¹°·Ð xUnitÀº ´Ü¼øÇÑ JUnitÀÌ ¾Æ´Ñ ±× ÀÌ»óÀÇ °ÍÀÔ´Ï´Ù. JUnitÀº ¼ö¸¹Àº ÇÁ·Î±×·¡¹Ö ¾ð¾î·Î Æ÷ÆÃµÆ½À´Ï´Ù. xUnit µµ±¸¶ó°í ºÒ¸®±âµµ ÇÏ´Â Àϰ¡Ä£Ã´ °°Àº µµ±¸µéÀº ÀÚ¹Ù¶ó´Â »Ñ¸®¸¦ ³Ñ¾î ¸Ö¸®¸Ö¸® ÆÛÁ®³ª°¬½À´Ï´Ù(»ç½Ç »Ñ¸®´Â ÀÚ¹Ù°¡ ¾Æ´Õ´Ï´Ù. JUnitº¸´Ù ¸î ³â Àü¿¡ ÄËÆ® º¤(Kent Beck)ÀÌ ½º¸ôÅäÅ©·Î ¸ÕÀú ¸¸µé¾ú½À´Ï´Ù).
xUnit Åø°ú öÇÐÀº ÇÁ·Î±×·¡¹Ö ÆÀÀÌ ÀûÀº ¸®½ºÅ©·Î Äڵ带 ´ë´ÜÀ§·Î ¼öÁ¤ÇÒ ¼ö ÀÖ°Ô µµ¿ÍÁÖ´Â °·ÂÇÑ È¸±Í Å×½ºÆ® ½ºÀ§Æ®¸¦ ÀÛ¼ºÇÒ ¼ö ÀÖ°í, Å×½ºÆ® ÁÖµµ °³¹ß·Î ¼³°è °úÁ¤À» ´Ù½Ã »ý°¢Çغ¼ ¼ö ÀÖ´Â ±²ÀåÇÑ ±âȸ¸¦ Á¦°øÇÕ´Ï´Ù.
ÇÏÁö¸¸ ÀÌ·± ±âȸ¿Í ´õºÒ¾î »õ·Î¿î ¹®Á¦¿Í ±â¼úµµ »ý°å½À´Ï´Ù. ´Ù¸¥ µµ±¸Ã³·³ xUnitµµ ´É¼÷ÇÏ°Ô ¾²ÀÌ´Â °æ¿ìµµ ÀÖÁö¸¸ ¼Åõ¸£°Ô ¾²À̱⵵ ÇÕ´Ï´Ù. ¶È¶ÈÇÑ »ç¶÷µéÀº xUnitÀ¸·Î Å×½ºÆ®¿Í µ¥ÀÌÅ͸¦ È¿°úÀûÀ¸·Î Á¶Á÷ÇÒ ¼ö ÀÖ´Â ¿©·¯ ¹æ¹ýÀ» ã¾Æ³Â½À´Ï´Ù. ÃÊâ±â °´Ã¼ÁöÇ⠽ô뿡¼Ã³·³ xUnit µµ±¸¸¦ Àß »ç¿ëÇÒ ¼ö ÀÖ´Â Áö½Ä ´ëºÎºÐÀº ¼÷·ÃµÈ »ç¶÷µéÀÇ ¸Ó¸´¼Ó¿¡¸¸ ¼û¾î ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô ¼û¾îÀÖ´Â Áö½Ä ¾øÀÌ´Â xUnitÀÇ ÇýÅÃÀ» 100% ¾òÁö ¸øÇÕ´Ï´Ù.
°´Ã¼ÁöÇâ ÂÊ »ç¶÷µéÀÌ °´Ã¼¿¡ ÀÌ·± ¹®Á¦°¡ ÀÖ´Ù´Â °É ±ú´Ý°í ÇØ´äÀ» ã±â ½ÃÀÛÇÑ °ÍÀÌ °ÅÀÇ 20³â ÀüÀÔ´Ï´Ù. ±× ÇØ´äÀº ¼û¾îÀÖ´Â Áö½ÄÀ» ÆÐÅÏ Çü½ÄÀ¸·Î ÀÛ¼ºÇÏ´Â °ÍÀ̾ú½À´Ï´Ù. Á¦¶óµå ¸Þ½ºÀڷνº(Gerard Meszaros)´Â ÀÌ·± ÀÏÀ» ÇÏ´Â ¼±±¸ÀÚ Áß ÇÑ ¸íÀ̾ú½À´Ï´Ù. Á¦°¡ óÀ½ ÆÐÅÏÀ» °øºÎÇÒ ¶§ Á¦¶óµå´Â Á¦°¡ ¹è¿ü´ø ¸®´õ Áß ÇÑ ¸íÀ̾ú½À´Ï´Ù. ÆÐÅÏ ¼¼°è¿¡ ÀÖ´Â ´Ù¸¥ ¿©·¯ »ç¶÷ó·³ Á¦¶óµå ¿ª½Ã ÀͽºÆ®¸² ÇÁ·Î±×·¡¹ÖÀ» ÃÊâ±â¿¡ µµÀÔÇß°í ´öºÐ¿¡ ÃÊâ±âºÎÅÍ xUnit µµ±¸·Î ÀÛ¾÷ÇØ¿Ô½À´Ï´Ù. ÀÌ·¯´Ï Á¦¶óµå°¡ ÀÌ·± Àü¹® Áö½ÄÀ» ÆÐÅÏ Çü½ÄÀ¸·Î ±â·ÏÇÏ´Â ÀÛ¾÷À» ¸Ã´Â °Ç ´ç¿¬ÇÕ´Ï´Ù.
Àú´Â óÀ½ ÀÌ ÇÁ·ÎÁ§Æ®¿¡ ´ëÇÑ ¾ê±â¸¦ µè°í ±²ÀåÈ÷ µé¶¹½À´Ï´Ù(Àú´Â ÀÌ Ã¥À» ÀúÀÇ ¸¶Æ¾ ÆÄ¿ï·¯ ½Ã¸®Áî¿¡ Ãß°¡ÇÏ°í ½Í¾úÀ¸¹Ç·Î ¿Â°® ¼ö¸¦ ´Ù ½á¼ ÀÌ Ã¥À» ¹ä ¸¶Æ¾(Bob Martin) ½Ã¸®Áî¿¡¼ »©³»¿Ô½À´Ï´Ù). ´Ù¸¥ ÁÁÀº ÆÐÅÏ Ã¥°ú ¸¶Âù°¡Áö·Î ÀÌ Ã¥Àº »õ·Î¿î »ç¶÷µé¿¡°Ô ÀÌ ÂÊ ºÐ¾ß¿¡ ´ëÇÑ Áö½ÄÀ» Á¦°øÇÒ »Ó¸¸ ¾Æ´Ï¶ó °æÇè ¸¹Àº Àü¹®°¡°¡ ÀÚ½ÅÀÇ Áö½ÄÀ» µ¿·áµé¿¡°Ô Àü´ÞÇϱâ À§ÇÑ ¿ë¾î¿Í ±âÃʸ¦ Á¦°øÇÕ´Ï´Ù. À¯¸íÇÑ Gang of FourÀÇ Ã¥ÀÎ ¡ºµðÀÚÀÎ ÆÐÅÏ(Design Patterns)¡»Àº ¸¹Àº »ç¶÷¿¡°Ô °´Ã¼ÁöÇâ ¼³°èÀÇ ¼û¾îÀÖ´Â º¸¹°»óÀÚ¸¦ ¿¾îÁá½À´Ï´Ù. ÀÌ Ã¥Àº xUnit¿¡ ÀÖ¾î ±×·± ¿ªÇÒÀ» ÇÒ °ÍÀÔ´Ï´Ù.
¸¶Æ¾ ÆÄ¿ï·¯ ThoughtWorksÀÇ ¼ö¼® °úÇÐÀÚÀÌÀÚ ¸¶Æ¾ ÆÄ¿ï·¯ ½Ã¸®Áî ¿¡µðÅÍ
¡Ú ¿Å±äÀÌÀÇ ¸» ¡Ú
¾î´Àµ¡ ¡®´ÜÀ§ Å×½ºÆ®¡¯¶ó´Â ´Ü¾î´Â °³¹ßÀÚµé »çÀÌ¿¡¼ Àͼ÷ÇØÁ³½À´Ï´Ù. ÆÀ¿¡ Àû¿ëÇϰí ÀÖ´Ù´Â ºÐµéµµ ¸¹´õ±º¿ä. JUnitÀº 4.8±îÁö ³ª¿Ô°í, ±¸±Û¿¡¼µµ GoogleTest °°Àº ÇÁ·ÎÁ§Æ®°¡ ³ª¿Ô½À´Ï´Ù. CruiseControlÀ̳ª Hudson °°Àº CI(Continuous Integration) Åø¿¡ ´ÜÀ§ Å×½ºÆ®¸¦ ºÙ¿© Áö¼ÓÀûÀÎ ÅëÇÕÀ» ÇÏ´Â ÆÀ»Ó¸¸ ¾Æ´Ï¶ó, ´ÜÀ§ Å×½ºÆ® ÄÚµå Ä¿¹ö¸®Áö 90% ÀÌ»ó ´Þ¼ºÀ» KPI·Î Àâ´Â °³¹ß ÆÀµµ ÀÖ´Ù°í µé¾ú½À´Ï´Ù.
ÀÌ·¸°Ô ´ÜÀ§ Å×½ºÆ®°¡ ¸¹ÀÌ ÀüÆÄµÈ °Íó·³ º¸ÀÌÁö¸¸ ¸·»ó °³¹ßÀÚµé ¾ê±â¸¦ µé¾îº¸¸é °í¹ÎÀÌ ¸¹½À´Ï´Ù. ¡°Á¦´ë·Î µÈ Ã¥µµ º°·Î ¾ø°í, ¸ðÀÇ °´Ã¼(Mock Object)¸¦ ¾î¶»°Ô ¼³Á¤ÇØ¾ß ÇÏ´ÂÁö Àß ¸ð¸£°Ú°í, ÇÔ¼ö Çϳª¸¸ °íÃĵµ ÄÄÆÄÀÏ ¿¡·¯°¡ ³Ê¹« ¸¹ÀÌ ³ª¼ °³¹ß¿¡ °ÅÄ¡Àû°Å¸®´Â °Í¸¸ °°°í, °ü¸®ÀÚ´Â ±×·± °Å ¿Ö ÇÏ³Ä°í ¹«½ÃÇϱ⳪ Çϰí, ¿¡ÀÌ, ±×³É ÇÏÁö ¸»±î?¡±
¸®´ÏÁö2 °³¹ß ÆÀ¿¡¼´Â 2007³â 4¿ùºÎÅÍ ´ÜÀ§ Å×½ºÆ®(UnitTest++)¸¦ µµÀÔÇß½À´Ï´Ù. óÀ½ºÎÅÍ ½¬¿ü´ø °Ç ¾Æ´Õ´Ï´Ù. ÄÚµå ¿©±âÀú±â¸¦ #ifdef USING_TDD·Î °¨½ÎÁáÀ½¿¡µµ ºÒ±¸Çϰí Å×½ºÆ® ´ë»ó ½Ã½ºÅÛ(SUT, system unter test) Äڵ带 À߸ø °Çµå¸®´Â ¹Ù¶÷¿¡ ¿ÀÈ÷·Á ¾ø´ø ¹ö±×¸¦ ¸¸µé±âµµ Çϰí, if (g_bTesting) °°Àº Å×½ºÆ® ÈÅ(Test Hook)À» À߸ø ³Ö°Å³ª, °øÀ¯ ÇȽºÃ³(Shared Fixture)¸¦ Á¦´ë·Î ÇØÃ¼(Teardown)ÇÏÁö ¾Ê¾Æ¼ ´Ù¸¥ ÆÀ¿øµé±îÁö ¸¹ÀÌ °í»ý½ÃÄ×½À´Ï´Ù.
ÇÏÁö¸¸ ¸¹Àº ºÐ²²¼ µµ¿ÍÁֽŠ´öºÐ¿¡ ´ÜÀ§ Å×½ºÆ®´Â Á¡Â÷ ¾ÈÁ¤µÇ¾î °¬½À´Ï´Ù. 2007³â¿¡ 200¿© °³¿´´ø ´ÜÀ§ Å×½ºÆ®´Â 2009³â¿¡´Â 1,300°³ ÀÌ»óÀ¸·Î ´Ã¾ú½À´Ï´Ù. ´ÜÀ§ Å×½ºÆ®°¡ ½ÇÆÐÇÏ¸é °³¹ß ÆÀ Àü¿ø¿¡°Ô À̸ÞÀÏÀ» º¸³» ¿Ö Å×½ºÆ®°¡ ±úÁ³´ÂÁö¸¦ ¸ðµÎ°¡ °øÀ¯ÇÏ°í µµ¿ÍÁÙ ¼ö ÀÖ°Ô Çß½À´Ï´Ù. ´öºÐ¿¡ ³ªÁß¿¡´Â ±âȹ ÆÀ°ú ÇÔ²² ´ÜÀ§ Å×½ºÆ® Äڵ带 º¸¸é¼ ±â´ÉÀÌ ¼öÁ¤µÉ ¶§ °á°ú°¡ ¾î¶³Áö¸¦ ¹Ù·Î È®ÀÎÇÒ ¼ö ÀÖ¾ú°í, ÈξÀ Æí¾ÈÇÑ ¸¶À½À¸·Î ¸®ÆÑÅ丵ÇÏ°í »õ·Î¿î ±â´ÉÀ» ºü¸£°Ô Ãß°¡ÇÒ ¼ö ÀÖ¾ú½À´Ï´Ù. KGC(Korea Games Conference) 2008 °¿¬À» ÁغñÇÏ¸é¼ ´ÜÀ§ Å×½ºÆ®°¡ ÆÀÀÇ °³¹ß¿¡ ¾î¶² µµ¿òÀ» ÁÖ¾ú´ÂÁö¸¦ º¸±â À§ÇØ ¹ö±× Æ®·¡Ä¿ ÀڷḦ ±â¹ÝÀ¸·Î °³¹ß ±â°£ µ¿¾È ¹ß»ýÇÑ ¹ö±× °³¼ö¿Í ¿¡·¯ ¼öÁ¤¿¡ °É¸®´Â ½Ã°£À» ÆÀ Àüü¿Í ´ÜÀ§ Å×½ºÆ®°¡ Àû¿ëµÈ ÆÄÆ®·Î ³ª´² Á¶»çÇØºÃ½À´Ï´Ù. ±× °á°ú ´ÜÀ§ Å×½ºÆ® °³¼ö°¡ ´Ã¾î³¯¼ö·Ï ¹ö±× ¹ß»ý ºñÀ²ÀÌ ³·¾ÆÁö°í, ¹ö±× ¼öÁ¤ ¼Óµµµµ ÃÖ´ë 2¹è ÀÌ»ó »¡¶óÁ³À½À» ¾Ë ¼ö ÀÖ¾ú½À´Ï´Ù(°ü·Ã ÀÚ·á: http://parkpd.egloos. com/1944077).
ÀÌ Ã¥ ¡ºxUnit Å×½ºÆ® ÆÐÅÏ¡»¿¡´Â ´ÜÀ§ Å×½ºÆ®¿¡ ´ëÇÑ °ÅÀÇ ¸ðµç Á¤º¸°¡ µé¾î ÀÖ½À´Ï´Ù. ¡®ÀÌ Ã¥À» 1~2³â¸¸ ´õ »¡¸® Àоú´õ¶ó¸é »ðÁúÀ» ´ú ÇßÀ» ÅÙµ¥¡¯ ÇÏ´Â »ý°¢¿¡ ¾Æ½¬¿òµµ µé´õ±º¿ä. ¡®¿ì¸® ÇÁ·ÎÁ§Æ®¿¡¼´Â ¾î¶»°Ô Àû¿ëÇØº¼ ¼ö ÀÖÀ»±î¡¯¸¦ »ý°¢ÇÏ¸é¼ ÀÐÀ¸¸é ´õ Àç¹ÌÀÖ°Ô º¸½Ç ¼ö ÀÖ½À´Ï´Ù. ÀÌÇØ°¡ Àß ¾È µÉ ¶§´Â ¿¹Á¦ Äڵ带 ¸ÕÀú º¸¼¼¿ä. ¶§·Î´Â õ¸¶µð ±Ûº¸´Ù ÇÑ ÁÙÀÇ Äڵ尡 ´õ ÀÌÇØÇϱ⠽¬¿ï ¶§°¡ ÀÖÀ¸´Ï±î¿ä.
|
 |
|
 |
1ºÎ ¼³¸í
1Àå °£´ÜÇÏ°Ô µÑ·¯º¸±â °³¿ä °¡Àå È®½ÇÇϸ鼵µ °£´ÜÇÑ Å×½ºÆ® ÀÚµ¿È Àü·« °³¹ß ÇÁ·Î¼¼½º °í°´ Å×½ºÆ® ´ÜÀ§ Å×½ºÆ® Å×½ºÆ®Çϱ⠽¬¿î ¼³°è Å×½ºÆ® Á¶Á÷ Á¤¸®
2Àå Å×½ºÆ® ³¿»õ 85 °³¿ä Å×½ºÆ® ³¿»õ ¼Ò°³ Å×½ºÆ® ³¿»õ¶õ? Å×½ºÆ® ³¿»õÀÇ Á¾·ù ³¿»õ°¡ ³¯ ¶§ ´ëó ¹æ¾È ³¿»õ ºÐ·ù ÇÁ·ÎÁ§Æ® ³¿»õ µ¿ÀÛ ³¿»õ ÄÚµå ³¿»õ Á¤¸®
3Àå Å×½ºÆ® ÀÚµ¿ÈÀÇ ¸ñÇ¥ °³¿ä Å×½ºÆ®¸¦ ÇÏ´Â ÀÌÀ¯ Å×½ºÆ® ÀÚµ¿È °æÁ¦ÇÐ Å×½ºÆ® ÀÚµ¿ÈÀÇ ¸ñÇ¥ Å×½ºÆ®´Â ǰÁú Çâ»ó¿¡ µµ¿òÀÌ µÅ¾ß ÇÑ´Ù Å×½ºÆ®´Â SUT¸¦ ÀÌÇØÇÏ´Â µ¥ µµ¿òÀÌ µÅ¾ß ÇÑ´Ù Å×½ºÆ®´Â À§ÇèÀ» ÁÙ¿©¾ß(Ãß°¡ÇÏÁöµµ ¾Ê¾Æ¾ß) ÇÑ´Ù Å×½ºÆ®´Â ½ÇÇàÇϱ⠽¬¿ö¾ß ÇÑ´Ù Å×½ºÆ®´Â ¸¸µé°í À¯ÁöÇϱ⠽¬¿ö¾ß ÇÑ´Ù Å×½ºÆ®´Â µÎ °¡Áö ÀÌÀ¯·Î º¹ÀâÇØÁø´Ù ½Ã½ºÅÛÀÌ ¹ßÀüÇÏ´Â µ¿¾È Å×½ºÆ®¿¡ ÇÊ¿äÇÑ À¯Áö º¸¼ö ºñ¿ëÀÌ ÃÖ¼ÒÈµÅ¾ß ÇÑ´Ù Á¤¸® 108
4Àå Å×½ºÆ® ÀÚµ¿ÈÀÇ Ã¶ÇÐ °³¿ä öÇÐÀÌ Áß¿äÇÑ ÀÌÀ¯ öÇÐÀû Â÷ÀÌÁ¡ Å×½ºÆ® ¸ÕÀú³Ä Å×½ºÆ® ³ªÁßÀ̳Ä? Å×½ºÆ®³Ä ¿¹Á¦³Ä? ´Ü°èº° Å×½ºÆ®³Ä ÇѲ¨¹ø¿¡ Å×½ºÆ®³Ä? ¹Û¿¡¼ ¾ÈÀ¸·Î³Ä ¾È¿¡¼ ¹ÛÀ¸·Î³Ä? µ¿ÀÛ °ËÁõÀÌ³Ä »óÅ °ËÁõÀ̳Ä? ÇȽºÃ³¸¦ ¹Ì¸® ¼³°èÇϱâ³Ä ÇȽºÃ³¸¦ ´Ü°èº° Å×½ºÆ®¿¡ µû¶ó ¼³°èÇϱâ³Ä? öÇÐÀÌ ´Ù¸¦ ¶§ ³ªÀÇ Ã¶ÇÐ Á¤¸®
5Àå Å×½ºÆ® ÀÚµ¿ÈÀÇ ¿øÄ¢ °³¿ä ¿øÄ¢ Á¤¸®
6Àå Å×½ºÆ® ÀÚµ¿È Àü·« °³¿ä ¹«¾ùÀÌ Àü·«ÀûÀΰ¡? ¾î¶² Á¾·ùÀÇ Å×½ºÆ®¸¦ ÀÚµ¿ÈÇØ¾ß Çϴ°¡? ±â´Éº° Å×½ºÆ® ±³Â÷ ±â´É Å×½ºÆ® ¾î¶² Å×½ºÆ® ÀÚµ¿È¿¡´Â ¾î¶² µµ±¸¸¦ »ç¿ëÇϴ°¡? Å×½ºÆ® ÀÚµ¿È ¹æ½Ä°ú ¹æ¹ý xUnit ¼Ò°³ xUnitÀÇ ½ºÀ ½ºÆÌ ¾î¶² Å×½ºÆ® ÇȽºÃ³ Àü·«À» »ç¿ëÇϴ°¡? ¹«¾ùÀÌ ÇȽºÃ³Àΰ¡? ÁÖ¿ä ÇȽºÃ³ Àü·« 1ȸ¿ë ½Å¼±ÇÑ ÇȽºÃ³ Áö¼ÓµÇ´Â ½Å¼±ÇÑ ÇȽºÃ³ °øÀ¯ ÇȽºÃ³ Àü·« Å×½ºÆ® ¿ëÀ̼ºÀ» º¸ÀåÇÏ´Â ¹æ¹ý Å×½ºÆ® ³ªÁß - °¢¿À°¡ µÅ Àִ°¡? Å×½ºÆ®Çϱ⠽¬¿î ¼³°è - ¹Ì¸® Çϱâ Å×½ºÆ® ÁÖµµ Å×½ºÆ® ¿ëÀ̼º Á¦¾î À§Ä¡¿Í °üÂû À§Ä¡ »óÈ£ÀÛ¿ë ¹æ½Ä°ú Å×½ºÆ® ¿ëÀ̼º ÆÐÅÏ ³ª´« ÈÄ Å×½ºÆ® Á¤¸®
7Àå xUnit ±âÃÊ °³¿ä xUnit ¼Ò°³ °øÅë Æ¯Â¡ ÃÖ¼ÒÇÑ ¾Ë¾Æ¾ß ÇÒ °Í Å×½ºÆ® Á¤ÀÇÇϱâ ÇȽºÃ³¶õ? Å×½ºÆ®µéÀÇ ½ºÀ§Æ® Á¤ÀÇ Å×½ºÆ® ½ÇÇà Å×½ºÆ® °á°ú xUnitÀÇ ³»ºÎ Å×½ºÆ® ¸í·É Å×½ºÆ® ½ºÀ§Æ® °´Ã¼ ÀýÂ÷Àû ¼¼»ó¿¡¼ÀÇ xUnt Á¤¸®
8Àå 1ȸ¿ë ÇȽºÃ³ °ü¸® °³¿ä Å×½ºÆ® ÇȽºÃ³ ¿ë¾î ÇȽºÃ³¶õ? ½Å¼±ÇÑ ÇȽºÃ³¶õ? ¹«¾ùÀÌ 1ȸ¿ë ½Å¼±ÇÑ ÇȽºÃ³Àΰ¡? ½Å¼±ÇÑ ÇȽºÃ³ »ý¼º ÀζóÀÎ ÇȽºÃ³ ¼³Ä¡ À§ÀÓ ÇȽºÃ³ ¼³Ä¡ ¾Ï¹¬Àû ÇȽºÃ³ ¼³Ä¡ È¥ÇÕÇü ÇȽºÃ³ ¼³Ä¡ 1ȸ¿ë ½Å¼±ÇÑ ÇȽºÃ³ ÇØÃ¼Çϱâ Á¤¸®
9Àå Áö¼ÓµÇ´Â ÇȽºÃ³ °ü¸® °³¿ä Áö¼ÓµÇ´Â ½Å¼±ÇÑ ÇȽºÃ³ °ü¸® ¹«¾ùÀÌ ÇȽºÃ³¸¦ Áö¼ÓÇÏ°Ô ¸¸µå´Â°¡? Áö¼ÓµÇ´Â ½Å¼±ÇÑ ÇȽºÃ³·Î ÀÎÇØ »ý±â´Â ¹®Á¦ Áö¼ÓµÇ´Â ½Å¼±ÇÑ ÇȽºÃ³ ÇØÃ¼Çϱâ ÇØÃ¼ Äڵ带 ¾Æ¿¹ ÇÊ¿ä ¾ø°Ô ¸¸µé±â ´À¸° Å×½ºÆ®¿¡ ´ëóÇϱ⠰øÀ¯ ÇȽºÃ³ °ü¸® °øÀ¯ ÇȽºÃ³ Á¢±ÙÇϱ⠰øÀ¯ ÇȽºÃ³ »ý¼ºÀÚ È£ÃâÇϱâ Á¤¸®
10Àå °á°ú °ËÁõ °³¿ä ÀÚü °Ë»ç Å×½ºÆ® ¸¸µé±â »óÅ °ËÁõÀÌ³Ä µ¿ÀÛ °ËÁõÀ̳Ä? »óÅ °ËÁõ ³»Àå ´Ü¾ð¹® »ç¿ëÇϱ⠵¨Å¸ ´Ü¾ð¹® ¿ÜºÎ °á°ú °ËÁõ µ¿ÀÛ °ËÁõ ÀýÂ÷Çü µ¿ÀÛ °ËÁõ ±â´ë µ¿ÀÛ ¸í¼¼ Å×½ºÆ® ÄÚµå Áߺ¹ ÁÙÀ̱⠱â´ë °´Ã¼ ¸ÂÃ㠴ܾ𹮠°á°ú¸¦ ¼³¸íÇÏ´Â °ËÁõ ¸Þ¼Òµå ÀÎÀÚ¸¦ ¹Þ´Â Å×½ºÆ®¿Í µ¥ÀÌÅÍ ÁÖµµ Å×½ºÆ® Å×½ºÆ® ³» Á¶°Ç¹® ·ÎÁ÷ ÇÇÇϱâ if¹® Á¦°ÅÇϱ⠹ݺ¹¹® Á¦°ÅÇϱ⠱⟠±â¹ý °Å²Ù·Î, ¹Û¿¡¼ ¾ÈÀ¸·Î ÀÛ¾÷Çϱâ Å×½ºÆ® ÁÖµµ °³¹ß·Î Å×½ºÆ® À¯Æ¿¸®Æ¼ ¸Þ¼Òµå ÀÛ¼ºÇϱâ Àç»ç¿ë °¡´ÉÇÑ °ËÁõ ·ÎÁ÷À» µÑ À§Ä¡ Á¤¸®
11Àå Å×½ºÆ® ´ë¿ª »ç¿ë °³¿ä °£Á¢ ÀԷ°ú °£Á¢ Ãâ·Â °£Á¢ ÀÔ·ÂÀ» ½Å°æ ½á¾ß ÇÏ´Â ÀÌÀ¯ °£Á¢ Ãâ·ÂÀ» ½Å°æ ½á¾ß ÇÏ´Â ÀÌÀ¯ °£Á¢ ÀÔ·ÂÀº ¾î¶»°Ô Á¦¾îÇÒ ¼ö ÀÖÀ»±î? °£Á¢ Ãâ·ÂÀº ¾î¶»°Ô °ËÁõÇÒ °ÍÀΰ¡? ´ë¿ªÀ¸·Î Å×½ºÆ®Çϱâ Å×½ºÆ® ´ë¿ªÀÇ Á¾·ù Å×½ºÆ® ´ë¿ª Á¦°øÇϱâ Å×½ºÆ® ´ë¿ª ¼³Á¤Çϱâ Å×½ºÆ® ´ë¿ª ¼³Ä¡Çϱâ Å×½ºÆ® ´ë¿ªÀÇ ´Ù¸¥ ¿ëµµ ³»½Ã°æ Å×½ºÆÃ ÇÊ¿ä ÁÖµµ °³¹ß ÇȽºÃ³ ¼³Ä¡ ºü¸£°Ô Çϱâ Å×½ºÆ® ½ÇÇà ºü¸£°Ô Çϱ⠱⟠°í·Á »çÇ× Á¤¸®
12Àå Å×½ºÆ® Á¶Á÷Çϱ⠰³¿ä ±âº» xUnit ¸ÞÄ¿´ÏÁò Àû´çÇÑ Å©±âÀÇ Å×½ºÆ® ¸Þ¼Òµå Å×½ºÆ® ¸Þ¼Òµå¿Í Å×½ºÆ®ÄÉÀ̽º Ŭ·¡½º Ŭ·¡½ºº° Å×½ºÆ®ÄÉÀ̽º Ŭ·¡½º ±â´Éº° Å×½ºÆ®ÄÉÀ̽º Ŭ·¡½º ÇȽºÃ³º° Å×½ºÆ®ÄÉÀ̽º Ŭ·¡½º Å×½ºÆ® ¸Þ¼Òµå Á¶Á÷ Àü·« ¼±ÅÃÇϱâ Å×½ºÆ® À̸§ ±Ô¾à Å×½ºÆ® ½ºÀ§Æ® Á¶Á÷Çϱâ Å×½ºÆ® Áý´Ü ½ÇÇàÇϱâ ÇϳªÀÇ Å×½ºÆ® ½ÇÇàÇϱâ Å×½ºÆ® ÄÚµå Àç»ç¿ë Å×½ºÆ® À¯Æ¿¸®Æ¼ ¸Þ¼Òµå À§Ä¡ Å×½ºÆ®ÄÉÀ̽º »ó¼Ó°ú Àç»ç¿ë Å×½ºÆ® ÆÄÀÏ ±¸¼º ³»Àå ÀÚü Å×½ºÆ® Å×½ºÆ® ÆÐŰÁö Å×½ºÆ® ÀÇÁ¸ Á¤¸®
13Àå µ¥ÀÌÅͺ£À̽º¿Í Å×½ºÆ® °³¿ä µ¥ÀÌÅͺ£À̽º Å×½ºÆ®Çϱ⠵¥ÀÌÅͺ£À̽º¸¦ ÀÌ¿ëÇÑ Å×½ºÆ®°¡ ÇÊ¿äÇÑ ÀÌÀ¯ µ¥ÀÌÅͺ£À̽º¿Í °ü·ÃµÈ ¹®Á¦ µ¥ÀÌÅͺ£À̽º ¾øÀÌ Å×½ºÆ®Çϱ⠵¥ÀÌÅͺ£À̽º Å×½ºÆ®Çϱâ ÀúÀå ÇÁ·Î½ÃÀú Å×½ºÆ®Çϱ⠵¥ÀÌÅÍ Á¢±Ù ·¹À̾î Å×½ºÆ®Çϱ⠰³¹ßÀÚÀÇ µ¶¸³¼º º¸ÀåÇϱ⠵¥ÀÌÅͺ£À̽º·Î Å×½ºÆ®Çϱâ(ÇÑ ¹ø ´õ!) Á¤¸®
14Àå È¿°úÀûÀÎ Å×½ºÆ® ÀÚµ¿È¸¦ À§ÇÑ ±æÀâÀÌ °³¿ä Å×½ºÆ® ÀÚµ¿ÈÀÇ ¾î·Á¿ò ÀÚµ¿ Å×½ºÆ®¸¦ À¯Áö º¸¼öÇϱâ ÁÁ°Ô ¸¸µå´Â ±æÀâÀÌ ÁÖ¿ä °æ·Î ÄÚµå ½ÇÇà ÁÖ¿ä °æ·ÎÀÇ Á÷Á¢ Ãâ·Â °ª °ËÁõ ´ë¾È °æ·Î °ËÁõ °£Á¢ Ãâ·Â µ¿ÀÛ °ËÁõ Å×½ºÆ® ½ÇÇà°ú À¯Áö º¸¼ö ÃÖÀûÈ Á¤¸®
2ºÎ Å×½ºÆ® ³¿»õ
15Àå ÄÚµå ³¿»õ ¾Ö¸ÅÇÑ Å×½ºÆ®(Obscure Test) Å×½ºÆ® ³» Á¶°Ç¹® ·ÎÁ÷(Conditional Test Logic) Å×½ºÆ®Çϱâ Èûµç ÄÚµå(Hard-to-Test Code) Å×½ºÆ® ÄÚµå Áߺ¹(Test Code Duplication) Á¦Ç° ÄÚµå ³» Å×½ºÆ® ·ÎÁ÷(Test Logic in Production)
16Àå µ¿ÀÛ ³¿»õ ´Ü¾ð ·ê·¿(Assertion Roulette) º¯´ö½º·¯¿î Å×½ºÆ®(Erratic Test) ±úÁö±â ½¬¿î Å×½ºÆ®(Fragile Test) ÀæÀº µð¹ö±ë(Frequent Debugging) ¼öµ¿ Á¶Á¤(Manual Intervention) ´À¸° Å×½ºÆ®(Slow Test)
17Àå ÇÁ·ÎÁ§Æ® ³¿»õ ¹ö±×Åõ¼ºÀÌ Å×½ºÆ®(Buggy Test) Å×½ºÆ®¸¦ ÀÛ¼ºÇÏÁö ¾Ê´Â °³¹ßÀÚ(Developers Not Writing Test) ³ôÀº Å×½ºÆ® À¯Áö ºñ¿ë(High Test Maintenance Cost) Á¦Ç° ¹ö±×(Production Bug)
3ºÎ ÆÐÅÏ
18Àå Å×½ºÆ® Àü·« ÆÐÅÏ ±â·Ï Å×½ºÆ®(Recorded Test) ½ºÅ©¸³Æ® ±â¹Ý Å×½ºÆ®(Scripted Test) µ¥ÀÌÅÍ ÁÖµµ Å×½ºÆ®(Data-Driven Test) Å×½ºÆ® ÀÚµ¿ ÇÁ·¹ÀÓ¿öÅ©(Test Automation Framework) ÃÖ¼Ò ÇȽºÃ³(Minimal Fixture) Ç¥ÁØ ÇȽºÃ³(Standard Fixture) ½Å¼±ÇÑ ÇȽºÃ³(Fresh Fixture) °øÀ¯ ÇȽºÃ³(Shared Fixture) µÞ¹® Á¶ÀÛ(Back Door Manipulation) ·¹À̾î Å×½ºÆ®(Layer Test)
19Àå xUnit ±âº» ÆÐÅÏ Å×½ºÆ® ¸Þ¼Òµå(Test Method) 4´Ü°è Å×½ºÆ®(Four-Phase Test) ´Ü¾ð ¸Þ¼Òµå(Assertion Method) ´Ü¾ð ¸Þ½ÃÁö(Assertion Message) Å×½ºÆ®ÄÉÀ̽º Ŭ·¡½º(Testcase Class) Å×½ºÆ® ½ÇÇà±â(Test Runner) Å×½ºÆ®ÄÉÀ̽º °´Ã¼(Testcase Object) Å×½ºÆ® ½ºÀ§Æ® °´Ã¼(Test Suite Object) Å×½ºÆ® ã±â(Test Discovery) Å×½ºÆ® ³ª¿(Test Enumeration) Å×½ºÆ® ¼±ÅÃ(Test Selection)
20Àå ÇȽºÃ³ ¼³Ä¡ ÆÐÅÏ ÀζóÀÎ ¼³Ä¡(In-line Setup) À§ÀÓ ¼³Ä¡(Delegated Setup) »ý¼º ¸Þ¼Òµå(Creation Method) ¾Ï¹¬Àû ¼³Ä¡(Implicit Setup) ¹Ì¸® ¸¸µç ÇȽºÃ³(Prebuilt Fixture) Áö¿¬ ¼³Ä¡(Lazy Setup) ½ºÀ§Æ® ÇȽºÃ³ ¼³Ä¡(Suite Fixture Setup) ¼³Ä¡ µ¥ÄÚ·¹ÀÌÅÍ(Setup Decorator) ¿«ÀÎ Å×½ºÆ®(Chained Test)
21Àå °á°ú °ËÁõ ÆÐÅÏ »óÅ °ËÁõ(State Verification) µ¿ÀÛ °ËÁõ(Behavior Verification) ¸ÂÃ㠴ܾð¹®(Custom Assertion) µ¨Å¸ ´Ü¾ð¹®vDelta Assertion) º¸È£ ´Ü¾ð¹®(Guard Assertion) ÀÛ¾÷ ÁßÀÎ Å×½ºÆ® ´Ü¾ð¹®(Unfinished Test Assertion)
22Àå ÇȽºÃ³ ÇØÃ¼ ÆÐÅÏ °¡ºñÁö Ä÷º¼Ç ÇØÃ¼(Garbage-Collected Teardown) ÀÚµ¿ ÇØÃ¼(Automated Teardown) ÀζóÀÎ ÇØÃ¼(In-line Teardown) ¾Ï¹¬Àû ÇØÃ¼(Implicit Teardown)
23Àå Å×½ºÆ® ´ë¿ª ÆÐÅÏ Å×½ºÆ® ´ë¿ª(Test Double) Å×½ºÆ® ½ºÅÓ(Test Stub) Å×½ºÆ® ½ºÆÄÀÌ(Test Spy) ¸ðÀÇ °´Ã¼(Mock Object) °¡Â¥ °´Ã¼(Fake Object) ¼³Á¤µÇ´Â Å×½ºÆ® ´ë¿ª(Configurable Test Double) Çϵå ÄÚµùµÈ Å×½ºÆ® ´ë¿ª(Hard-Coded Test Double) Å×½ºÆ®¿ë ÇÏÀ§Å¬·¡½º(Test-Specific Subclass)
24Àå Å×½ºÆ® Á¶Á÷ ÆÐÅÏ À̸§ ÀÖ´Â Å×½ºÆ® ½ºÀ§Æ®(Named Test Suite) Å×½ºÆ® À¯Æ¿¸®Æ¼ ¸Þ¼Òµå(Test Utility Method) ÀÎÀÚ¸¦ ¹Þ´Â Å×½ºÆ®(Parameterized Test) Ŭ·¡½ºº° Å×½ºÆ®ÄÉÀ̽º Ŭ·¡½º(Testcase Class per Class) ±â´Éº° Å×½ºÆ®ÄÉÀ̽º Ŭ·¡½º(Testcase Class per Feature) ÇȽºÃ³º° Å×½ºÆ®ÄÉÀ̽º Ŭ·¡½º(Testcase Class per Fixture) Å×½ºÆ®ÄÉÀ̽º »óÀ§Å¬·¡½º(Testcase Superclass) Å×½ºÆ® µµ¿ì¹Ì(Test Helper)
25Àå µ¥ÀÌÅͺ£À̽º ÆÐÅÏ µ¥ÀÌÅͺ£À̽º »÷µå¹Ú½º(Database Sandbox) ÀúÀå ÇÁ·Î½ÃÀú Å×½ºÆ®(Stored Procedure Test) Å×ÀÌºí »èÁ¦ ÇØÃ¼(Table Truncation Teardown) Æ®·£Àè¼Ç ·Ñ¹é ÇØÃ¼(Transaction Rollback Teardown)
26Àå Å×½ºÆ®Çϱ⠽¬¿î ÆÐÅÏ ÀÇÁ¸ ÁÖÀÔ(Dependency Injection) ÀÇÁ¸ ã±â(Dependency Lookup) ´ë° ¸¸µç °´Ã¼(Humble Object) Å×½ºÆ® ÈÅ(Test Hook)
27Àå °© ÆÐÅÏ ¸®ÅÍ·² °ª(Literal Value) ÆÄ»ý °ª(Derived Value) »ý¼º °ª(Generated Value) ´õ¹Ì °´Ã¼(Dummy Object)
4ºÎ ºÎ·Ï
ºÎ·Ï A Å×½ºÆ® ¸®ÆÑÅ丵 ºÎ·Ï B xUnit ¿ë¾î Á¤¸® ºÎ·Ï C xUnit °è¿ ºÎ·Ï D µµ±¸ ºÎ·Ï E ¸ñÇ¥¿Í ¿øÄ¢ ºÎ·Ï F ³¿»õ, º°¸í, ¿øÀÎ ºÎ·Ï G ÆÐÅÏ, º°¸í, º¯Çü
|
 |
|
 |
[ÀúÀÚ¼Ò°³] Á¦¶óµå ¸Þ½ºÀڷνº(Gerard Meszaros)
Ͱŏ®(Calgary)¿¡ ÀÖ´Â ¾ÖÀÚÀÏ °³¹ß Àü¹® ÄÁ¼³ÆÃ ȸ»ç Ŭ¸®¾î½ºÆ®¸² ÄÁ¼³ÆÃ(ClearStream Consulting)ÀÇ ¼ö¼® °úÇÐÀÚ(Chief Scientist)ÀÌÀÚ ¼±ÀÓ ÄÁ¼³ÅÏÆ®´Ù. Á¦¶óµå´Â ½Ê ³â ÀÌ»ó ÀÚµ¿ ´ÜÀ§ Å×½ºÆ® ÇÁ·¹ÀÓ¿öÅ© ºÐ¾ß¿¡¼ °æÇèÀ» ½×¾Ò°í Å×½ºÆ® ÀÚµ¿ ÆÐÅÏ, ¼ÒÇÁÆ®¿þ¾î¿Í Å×½ºÆ® ¸®ÆÑÅ丵, Å×½ºÆ® ¿ëÀ̼ºÀ» À§ÇÑ ¼³°è ºÐ¾ß¸¦ ¼±µµÇÏ´Â Àü¹®°¡´Ù.
[¿ªÀÚ¼Ò°³] ¹ÚÀÏ
¿¬¼¼´ë ÄÄÇ»ÅͰúÇаú¸¦ Á¹¾÷Çß´Ù. 2000³â ÃÊ¿¡ °³¹ßÀ» ½ÃÀÛÇØ Áö±ÝÀº ¸®´ÏÁö2 ¼¹ö ÆÀ¿¡¼ ±Ù¹« ÁßÀÌ´Ù. ¿Å±ä Ã¥À¸·Î´Â ¡º½ºÅ©·³¡»(2008³â)ÀÌ ÀÖ´Ù.
|
 |
|
|
|
|
|
|
|
|
|
|
|