TDDæ¦ç¥ -TDDãå°å ¥ãé²åãããæ¹æ³- #TDDAdventJP
@t_wadaãTDDã¯ã¹ãã«ã§ããéã¯è³ªã«è»¢åããã
TDD Advent Calendar2011ã®è¨äºã«ãªãã¾ãã
TDD Advent Calendar jp: 2011 : ATND
åï¼@irof テストと言うパートナー #TddAdventJp - 日々常々
次ï¼@yuya_takeyama ããã§ãã
ã¯ããã«
ããã¯åã®ä¸»è¦³ã§ãã£ã¦ãééããããã¨æãã¾ããããã¯åã®åå¼·ä¸è¶³ããçãããã®ã§ãã
ã©ã¡ããã¨ããã¨ããããèªãã æ¹ã«ãããã¯ã¡ãã£ã¨èªèãä¸è¬çãããªãããããããéãããã£ã¦çªã£è¾¼ãã§ãããããã®ãã®ã§ãã
ãTDDããããããªãã®ã§æãã¦ãã ãããã£ã¦ããè¨äºã§ãã
TDDãã¯ãããã人ãTDDã«è¡ãè©°ã¾ã£ã¦ãã人
TDDãã©ããªãã®ãããããããªã人ãã¨ãããããã¹ãã³ã¼ãã£ã¦æ¸ãã¦ãããã©æ¯åã¤ã¾ããã¦æé·ãå®æåºæ¥ãªã人ãç¾å ´ã«å°å
¥ããããã©ä¼ãæ¹ãããããªã人ã
ããããããã¨æãã¾ãã
ã¨ãããã¨ã§ãä»åã¯åãªãã«TDDã«ã¤ãã¦æ´çãã¦ã¿ã¦ãTDDããã¾ãå°å
¥ããæ¹æ³ãé²åãããæ¹æ³ãèãã¦ã¿ã¾ããã
TDDã®åé¡
ã¾ãã¯TDDããæ¸ãå§ãããã¹ãã³ã¼ããã§åé¡ãã¦ã¿ã¾ãã
次ã®ãããªã¹ã¿ã¤ã«ã§6ã¤ç´¹ä»ãã¾ãã
- TDDã®åå
- æ¸ãå§ãããã¹ãã³ã¼ã
- æ¦è¦
- ãªãªã¸ãã«TDDï¼ãã¹ãé§åéçºï¼
- éçºè ã®ä¸å®
- KentBeckã®ããã¹ãé§åéçºå ¥éãã«ä»£è¡¨ãããTDDã®åç¹ãTDDBCã§ãã¾ãã¯ãã®TDDããã¼ã¹ã«è©±ããããã¨ãå¤ãã
- BDDï¼æ¯ãèãé§åéçºï¼
- èªç¶è¨èªã«è¿ã¥ããä¸ã§ã®ãããã¯ãã³ã¼ãã®æ¯ãèã
- RSpecãªã©ã«ä»£è¡¨ãããææ³ãèªã¿ããããã¹ãã³ã¼ããç®æãã¦ãã¦ãPOãã¯ã©ã¤ã¢ã³ãã«ãèªã¿æ¸ãã§ãããã¨ãç®æ¨ã«ãããã¨ãããã
- SATDDï¼ã¹ãã¼ãªã¼åãå
¥ããã¹ãé§åéçºï¼
- ã¹ã¯ã©ã ãªã©ã®ãã¹ãã¼ãªã¼ãã«å¯¾ããåãå ¥ãåºæº
- ã¹ãã¼ãªã¼ã®åãå ¥ããã¹ããå ã«æ¸ãã¦ãã詳細ãªãããã¯ãã³ã¼ãããã¹ãã³ã¼ããå®è£ ãã¦ããã
- STDDï¼ã¹ãã¼ãªã¼ãã¹ãé§åéçºï¼
- 対象ã¢ããªã®å ·ä½çãªã¹ãã¼ãªã¼ãã·ããªãª
- ã¦ã¼ã¶ã¼ã·ããªãªãªã©ããã¹ãã³ã¼ãã«è¡¨ç¾ãããã·ããªãªãã¹ãã¨è¨ããã¦ãããã®ã ã¨çè§£ãã¦ããã
- UATDDï¼ã¦ã¼ã¶ã¼åãå
¥ããã¹ãé§åéçºï¼
- ã¦ã¼ã¶ã¼ï¼é¡§å®¢ï¼ãè¡ãåãå ¥ãåºæº
- ã¦ã¼ã¶ã¼ã®åãå ¥ããã¹ãããã¹ãã³ã¼ãã§è¡¨ç¾ãããATDDã®ååºã¯UATDDã®æå³åãã§åºã¦ãããã©ãSTDDãæ´¾çãã¦ãã¢ã¸ã£ã¤ã«ã®æèã§SATDDãåºç¾ãã¦ããããã«è¦ããã
- VOTDDï¼æ¤è¨¼æåãã¹ãé§åéçºï¼
- éçºè ã®ä¸å®+å質ä¿è¨¼ã主ã¨ãããã¹ãææ³
- ãªãªã¸ãã«TDDã®ãªãºã ã®ä¸ã«ãã¹ãææ³ãèæ ®ãããã¹ãã³ã¼ããè¨è¿°ãããã§ã¼ãºãè¨ãããã®å¢çå¤åæãåå çµæã°ã©ããªã©ãç¨ããä¾ãè¦ããã¨ãããã¾ãã
ããã§æ³¨æãã¦ã»ããã®ã¯SATDDãUATDDã¯åãåæã«ååãã¤ãã¾ããã
ã©ã¡ããAcceptance TDDã¨å¼ã°ãã¦ãã¦ãããã«ããã£ãã®ã§ã
Story Acceptance TDDãã¨ãUser Acceptance TDD ã®äºã¤ã«åãã¾ããã
ã©ã®TDDã§ãè¨ããã®ã¯RED->GREEN->REFACTOR ã®ãµã¤ã¯ã«ãä½ãåºããã¨ã§ãã
TDDã®ç¹æ§
ã§ã¯ã次ã«TDDã宿½ããã¨ãã®è¦³ç¹ã«ã¤ãã¦åé¡ãã¦ã¿ã¾ãããã
次ã®ãããªã¹ã¿ã¤ã«ã§5ã¤ç´¹ä»ãã¾ãã
- TDDã®è¦³ç¹ã®åå
- 観ç¹ã®è¦ç´ ã®å ·ä½ä¾
- ãã¹ãã³ã¼ããæ¸ãã¿ã¤ãã³ã°
- AssertFirst
- ãããã¯ãã³ã¼ã夿´åã«å¿ ã失æãããã¹ãã³ã¼ããæ¸ã
- 夿´ç®æå¯¾è±¡åãæ¿ãæ¯
- 次ã®å¤æ´ç®æã«ç§»ãã¾ã§ã«ã¯ç¾å¨å®è£ ãã¦ããç®æã®ãã¹ãã³ã¼ããæ¸ã
- 対象æ©è½å®è£
å®äºæ
- ç¾å¨åãçµãã§ããæ©è½ãå®è£ ã§ãã¦ãããã¹ãã³ã¼ããæ¸ã
- AssertFirst
- ãªãã¡ã¯ã¿ãªã³ã°ãããã¿ã¤ãã³ã°
- Greenã«ãªã£ãã
- ãã¹ãã³ã¼ããéããã³ã«ãªãã¡ã¯ã¿ãªã³ã°ã®æ©ä¼ã伺ã
- 夿´ç®æå¯¾è±¡åãæ¿ãæ¯
- 次ã®å¤æ´ç®æã«ç§»ãã¾ã§ã«ã¯ç¾å¨å®è£ ãã¦ããç®æã®ãªãã¡ã¯ã¿ãªã³ã°ããã
- 対象æ©è½å®è£
å®äºæ
- ç¾å¨åãçµãã§ããæ©è½ãå®è£ ã§ãã¦ãããªãã¡ã¯ã¿ãªã³ã°ããã
- å«ãªåããããã¨ã
- ã³ã¼ãã®è æèãããã¨ãã«ãªãã¡ã¯ã¨ãªã³ã°ãããã詳ããã¯ãªãã¡ã¯ã¿ãªã³ã°ãã¬ã¬ã·ã³ã¼ãæ¹åã¬ã¤ããxUnit Test Patternsãåç §ã
- Greenã«ãªã£ãã
- ç¶²ç¾
åºæºã®å³å¯ã
- ä¸è§æ¸¬éãå¢çå¤åæãåå çµæã°ã©ããç¶æ é·ç§»ãªã©ãã©ã®ç¨åº¦ã¾ã§å³å¯ã«ãã¹ãã³ã¼ãã«è¡¨ç¾ããã
- 対象ç¯å²
- ãã¹ãã³ã¼ããæ¸ã対象ãã©ãã¾ã§åºããã ã¢ãã«ãGUIãDBãéä¿¡å¦çãªã©
- ã¢ãã¯ãã¹ã¿ãã®é©ç¨ç¯å²
- ã©ãã¾ã§ããããã¯ãã³ã¼ã以å¤ã®ã¢ãã¯ãã¹ã¿ãã¨ããã ããã±ã¼ã¸ã¬ãã«ã§ã®å¢çããããã¯ã¼ã¯ã¬ãã«ã§ã®å¢çãªã©
ããã¹ãã³ã¼ããæ¸ãã¿ã¤ãã³ã°ãã§ãããå人çã«ã¯ã©ãã§ãTDDã ã¨æã£ã¦ãã¦ãããã¯äººã®æ©å¹
ã§ãããªããããã«æã£ã¦ãã¾ããä¸å®ããã¹ãã«ããã¨ãã観ç¹ã§è¨ãã°ã
åéã¯ä½ããã¹ãé§åãã¦ããã®ã
TDDã«éã£ã話ã§ã¯ããã¾ããããèªåãã¡ãä½ããã¦ããã®ãæèã§ãã¦ããªãã¨ããããã¾ãã
ã½ããã¦ã§ã¢ãã¹ãã§ã¯ãããã¹ãæ¦ç¥ãã¨ãããã§ã¼ãºã§ãå¿
è¦ãªãã¹ãããç¶²ç¾
åºæºããææãããªã½ã¼ã¹ããåªå
é ä½ããªã©ãå®ãã¾ãã
ã¢ã¸ã£ã¤ã«éçºã§è¨ããã¦ããããã«ãåªå
é ä½ãã¤ãããã¨ãå¿
è¦ã§ãããã®ããã«ã¯ã¾ãå
¨ä½ã俯ç°ã§ããå¿
è¦ãããã¾ãã
åããããªãã¨ãTDDã«ãå¿
è¦ãªã®ã§ã¯ãªãã§ããããï¼
TDDã¯æ¥½ããã¦ä»æ¹ãªãã£ã¦RED->GREEN->REFACTORã®ãµã¤ã¯ã«ããã£ã¨æ¥½ããã§ãã¾ã£ã¦æéãå¿ããã¡ã§ãã
ã§ããããã§ã¯ããã¤ã¾ã§ããªãªã¼ã¹ã§ããªãããã³ã¹ãã«è¦åããªãå質ãã«ãªã£ã¦ãã¾ãã¾ãã
ã ãããæ¦ç¥ãç«ã¦ã¾ããããããã¯ã¨ã¦ãç°¡ç´ ãªãã®ã§ãããã¨æããã§ãã
TDDæ¦ç¥ã¨ããææ¡
ãTDDæ¦ç¥ãã¨ãã¦ãTDDã®ç¨®é¡ãã¨ãTDDã®ç¹æ§ãã縦横ã®ãããªã¯ã¹ã«ãã¦ãèªåãã¡ãåãçµããã¨ãã¦ããéçºææ³ãæç¢ºã«ãã¦ã¿ããã
æç¢ºã«ããã¨ãããããèªåãã¡ã®TDDã®ããã©ã¼ãã³ã¹ã測ãã¾ãã
ããã¯TDDã®å®éåã«ã¤ãªããã¾ãããåºæºãæç¢ºã«ãããã¨ã¯ãä»äººã«ä¼ãããããªããã¨ã«ã¤ãªããã¾ãã
ã¤ã¾ããåºæºã決ããã¨TDDãå°å
¥ãããããªããã§ããã
ã¨ãããã¨ã§Google Docsã§ãããªã¯ã¹ã«ãã¦ã¿ã¾ããã
[ãã¡ã¤ã«]-[å½¢å¼ãæå®ãã¦ãã¦ã³ãã¼ã]ã§ãã¦ã³ãã¼ãã§ãã¾ãã
Google Sheets - create and edit spreadsheets online, for free.
å
ã«è¿°ã¹ãããã«ããã«è¨è¿°ããããããã«ã¤ãã¦ã¯ä¸è¶³ãã¦ãããã®ãééããããã¨æãã¾ããä»ã®è¦³ç¹ãããã§ãããã
ãªã®ã§ãçããããæ´»çºãªè³ªåãæè¦ããããããã§ãã
ãã¡ããããããã£ããã¨ã¯ãããTDDãè¡°éãããã誤解ãæããã¨ãã£ããææãããã¨æãã¾ãã
çãããèããTDDã®å¹æã宿
ãæªæ¥ã«ã¤ãã¦ä¸ç·ã«è°è«ããã¦ã»ããã§ãã
TDDæ¦ç¥ã¯æé·ãã
TDDæ¦ç¥ã¯åãã¦ã®åéã®è¨èªããã¬ã¼ã ã¯ã¼ã¯ã§ã¯ãªããªããã¦ã«ããã¨æãã¾ãã
ãªã®ã§ããã®ã¨ãã¯TBDã¨ãã¾ãã
ããã¦ï¼é±éæ¯ã«æ¯ãè¿ã£ã¦ãå
å®¹ãæ´æ°ãã¾ããããèªåéãã©ããããç¾å®ã«å®è¡ã§ãã¦ãããã§æ´æ°ãã¾ãã
å¿
è¦ã ãã©åºæ¥ã¦ããªãã®ãããã¬ã¼ã ã¯ã¼ã¯ã®æ§è³ªã«ãã£ã¦äºæ¸¬ã¨éã£ãã®ãã
ããã¦ãã¾ãè¨ç»ãã¾ãããã
ããã¸ã§ã¯ããçµããé ã«ã¯TDDã¨ããè¦åº§ã§å¯¾è±¡ã®ã¢ããªã±ã¼ã·ã§ã³ã«æå¹ãªææ®µãè¦ãã¦ããããããã¾ããã
ããªããä¸å¾æãªåéãè¦ããããããã¾ããã
ããªãã®TDDæ¦ç¥ã¯TDDãå°å
¥ããæ¦å¨ã§ãããèªåã®ããã¡ã¼ã¿ã¼ã§ãããã¾ãã
å®å ¨ã«TDDãããã¨ãæçµç®æ¨ã§ã¯ãªã
å®å
¨ã«TDDã§ãããã¨ã¯ãªããªãå°ãªãããããã¾ãããããã¯æéçãªåé¡ãããã ããããæè¡çãªåé¡ãããã¨æãã¾ãã
ãã¡ããåºæ¥ãäºãããã¨æã£ã¦ãã¾ãã
ããã¦å®å
¨ã«TDDãããã¨ã®å®ç¾©ãåã«ã¯ãããã¾ããã
ä»®ã«å
¨ã¦ãAssertFirstã§TDDãããã¨ãå®å
¨ãªTDDã ã¨ãã¦ãæéãç¡éã«ãã£ãã¨ãã«ããã¦ããããããã¨ãæ£ãããã¯åã«ã¯ãããã¾ããã
ãã ããããåéããã¦ãã¾ã人ããããå°ãã®ã§ãä¸ã¤è¨ã£ã¦ããã¾ãã
ã大åãªã®ã¯ååã«å質ã®ãããããã¯ãããªãªã¼ã¹ãããã¨ãã§ãã
TDDæ¦ç¥ã®ãããªãããªã¯ã¹ãã¿ãã¨ãã«å
¨ã¦ãæå¤§ã«ãã¦ãã¾ããããªãããããã¾ããããå¿ãã¦ã¯ããã¾ããã
å質ãå®ç¾©ããããã«è¦åã£ããªãã§ç¶²ç¾
åºæºãææ³ãåªå
é ä½ãã¤ãã¦ããããããããããã®ãããªã¯ã¹ã§ãã
ããã¦ããã®ãªãã§æã广çã ã¨æãTDDãå°å
¥ããããçºè¦ãããããããã®ãã®ã§ãã
TDDæ¦ç¥ã®çµç·¯
ããããã¯ããæ°æ§ã§ããèªã¾ãªãã¦ããã§ãã
TDDã«åºæºããªãºã ãªã©ãæã¡è¾¼ãã§ããããã¾ãä¼ãããã宿½ãã¦ãããã«ã¯ã©ããããããããèãã¦ãã¾ããã
ã¾ããåãæ¥å¸¸ã§ãããæ©ãã§ãã¾ãã
ç¹ã«æ°ããè¨èªããã¬ã¼ã ã¯ã¼ã¯ãããã¯ããã¦ããããæéããªãã¨ã©ããã¦ãããããã«ãªãã¾ãã
TDDBCã«åå ããããã©ããã§TDDã®è©±ãèããã³ã«ã大åãªã®ã¯ãªãã¡ã¯ã¿ãªã³ã°ãããã¹ãã³ã¼ãã«åºæºããã¨è¨ã£ã¦ãã¾ããããèªåã§ããã¾ã ä¼ãããã¦ããã¨ã¯æãã¾ããã§ãããã©ããã¦ãããã·ã§ã³ã§ãã£ã¦ãã¾ãã
åã¯æè¿ã½ããã¦ã§ã¢ãã¹ãã®åå¼·ããããã¨ãå¤ãã®ã§ãããæ°ã¥ãããã§ããããããTDDã俯ç°ããã°ããã®ã ãã¨ã
ããã¦ããã®ã¨ã³ããªã¼æ¸ãã¦ãããªãã§TDDæ¦ç¥ã¨ããè¨èãçã¾ãã¾ããã
ãªã®ã§ãTDDæ¦ç¥ã¯åãã¾ã 宿½ãã¦ãã¾ãããã ãã©ããããããã¨æããã
ä»ãããTDDã®åé¡ãÃãTDDã®ç¹æ§ãã£ã¦ãããããªã¯ã¹ã§ãããã¯ããããªããã©ãããããæ¹éãããã¨ããã¶ãã¨éãã£ã¦æãã¾ããã
ãªã®ã§ã宿½ãã¦ã¿ã¦ãã©ãã©ãé²åããã¦ããããã§ãã