¡¡¡¡BDDµÄ¸ÅÄî
¡¡¡¡½ÓÏÂÀ´£¬ÎÒÃǼ¯ÌåÌÖÂÛÁËÈçºÎʹÓÃBDDµÄÓÉÍâÏòÄÚ£¨outside-in£©·½·¨£¬À´±ÜÃâÕâЩÀË·Ñ¡£
¡¡¡¡¡ñ ʹÓÃ×Ô¶¯»¯ÑéÊÕÐÔ²âÊÔÓÃÀýÀ´´úÌæÐèÇóÎĵµ
¡¡¡¡¡ñ ʹÓÃ×Ô¶¯»¯ÏµÍ³²âÊÔÓÃÀý´úÌ湦ÄÜÎĵµ
¡¡¡¡¡ñ ʹÓÃ×Ô¶¯»¯Ä£¿é²âÊÔÓÃÀý´úÌæÉè¼ÆÎĵµ
¡¡¡¡µ±Ä£¿éͨ¹ýµ¥Ôª²âÊԺ󣬿ÉÒÔ½Ðø½øÐÐ×Ô¶¯»¯µÄÄ£¿é/¼¯³É²âÊÔ£¬ÏµÍ³²âÊÔ£¬ÒÔ¼°ÑéÊÕ²âÊÔ¡£
¡¡¡¡Õâ¾ÍÐèÒª×Ô¶¯»¯²âÊÔÓÃÀýÓë×ÔÈ»ÓïÑÔµÄÈںϣ¬Ö»ÓÐÓÃ×ÔÈ»ÓïÑÔ°ÑÓÃÀýÃèÊöÇå³þ£¬²ÅÄܱ£Ö¤ÎĵµÓë´úÂëµÄͳһ£¬Éè¼ÆÓë²âÊÔµÄͳһ¡£ÎÒÔÚ´ËÒ²½øÐÐÁËCucumberµÄÒ»¸öСµÄÑÝʾ£¬ÓõÄÊÇÏîÄ¿ÀïµÄÒ»¸öÕæʵµÄÀý×Ó¡£Ê¹ÓÃÁËÊý¾ÝÇý¶¯ºó£¬Ò»ÖÜÄÚ×Ô¶¯»¯ÁË77¸öÇé¾°Scenario£¬²¢·¢ÏÖÁËÒ»¸öBug¡£
¡¡¡¡ÎÊ´ð
¡¡¡¡ÎÊ£ºÈç¹ûÓÉÍâÏòÄÚ¿ª·¢£¬ÄÇôÎÒÿ´Î½öÌá½»Ò»ÐдúÂ룬ҲҪ¾¹ýÂþ³¤µÄ²âÊÔ£¬²ÅÄÜÖªµÀ½á¹ûô£¿
¡¡¡¡´ð£º½«ÐèÇóÇзֳÉСµÄstoryºó£¬Ã¿ÊµÏÖÒ»¸östory£¬¼´½øÈëµ¥Ôª²âÊÔ¡£µ¥Ôª²âÊÔͨ¹ýºó£¬Ìá½»´úÂ룬´ËʱΪÁËÖ¤Ã÷ÓÐÁËдúÂëµÄϵͳ¿ÉÒÔÌṩ¸øÓû§ËùÓÐÀϹ¦ÄÜÒÔ¼°Ð¹¦ÄÜ£¬È·ÊµÐèÒª½øÐÐÄ£¿é/¼¯³É²âÊÔ£¬ÏµÍ³²âÊÔ£¬ÑéÊÕ²âÊÔ£¬Ö»ÓÐͨ¹ýÁËËùÓвâÊÔ£¬²ÅÄܱ£Ö¤µ±Ç°ÓÐÁËдúÂë½øÈëµÄϵͳÊÇ¿ÉÒÔ½»¸¶Ê¹ÓõÄϵͳ¡£¼´Ê¹²âÊÔʱ¼ä½Ï³¤£¬Ò²±Ø¶¨Ð¡ÓÚÊÖ¶¯²âÊÔËùÐèµÄ·´À¡Ê±¼ä¡£
¡¡¡¡ÎÊ£ºGiven/When/Then¿ÉÒÔ¸²¸ÇËùÓÐÇ龰ô£¿
¡¡¡¡´ð£ºÔÚRobert. C. Martin£¬ ¡°Clean Code¡±µÄ×÷ÕßµÄÍøÕ¾ÉÏ£¬ÎÒÕÒµ½ÁËÕâÑùһƪÂÛÊö¡°the truth about BDD¡±£¬²¢ÉîÒÔΪȻ¡£ ´ÓBob´óÊåµÄ¹ÛµãÀ´¿´£¬GIven£¬When£¬Then¸ÕºÃ·ûºÏ²âÊÔ·½·¨ÖеÄ״̬±í·¨£¨state transistion£©£¬Given´ú±íµÚһ̬£¬Then´ú±íµÚ¶þ̬£¬WhenÔòÊÇ´ÓµÚһ̬ÖÁµÚ¶þ̬ת±äµÄÔÒò¡£ÔÚ¡±software testing - a craftman¡°Ò»ÊéÖУ¬¿ªÆªÒ²ÓÐÀàËƵÄÂÛÊö£ºÒÔ±à³ÌÓïÑÔµÄÔÀíÀ´Ëµ£¬ËùÓгÌÐò¶¼¿ÉÒÔ±»ÃèÊö³ÉÓÐÏòÁ¬Í¨Í¼£¬Ã¿ÕÅͼ¶¼ÓÐÒ»¸öÈë¿ÚºÍÒ»¸ö³ö¿Ú¡£°ÑGiven¿´×÷ÆðʼµãA£¬Then¿´×÷½áÊøµãZ£¬WhenÊǵ¼ÖÂAÏòZÕâ¸ö·½Ïò½øÐеĶ¯×÷£¬ÄÇô½«ÕâÕÅͼ·Ö½â³ÉÎÞÊýС״̬ת»»µÄ»°£¬¾Í³ÉΪÁËÈô¸ÉScenario¡£
¡¡¡¡ÎÊ£ºÓÉÍâÏòÄڵĿª·¢£¬Èç¹ûºóÆÚ³öÏֵײãAPI¸Ä±ä£¬»á·ñÒýÆð±ä»¯¹ý¶à£¿¶ÔÓÚ³£±äµÄÏîÄ¿£¬¿ÉÒÔÏÈÊÖ¶¯£¬ÔÙÎȶ¨ºó£¬ÔÙ×Ô¶¯
¡¡¡¡´ð£º´Ó´«Í³ÏîÄ¿¿ª·¢µÄÆÙ²¼Á÷³Ì¿´£¬È·ÊµÈç´Ë£¬ÒòΪ´«Í³¿ª·¢£¬ÐèÇó·ÖÎö2-3¸öÔ£¬Éè¼Æ2-3¸öÔ£¬±àÂë2-3¸öÔ¡£Èç¹û°´ÕÕ´ËÁ÷³ÌÊéд´óÅúÁ¿µÄBDD²âÊÔÓÃÀý£¬ÄÇôһµ©µ×²ãÓöµ½ÊµÏÖÄÑÌ⣬ÐèҪת»»·½Ê½£¬È·Êµ»áµ¼ÖÂÀË·Ñ¡£µ«ÊÇÃô½Ý¿ª·¢ÖУ¬Ã¿¸östoryµÄÖÜÆÚ¶¼ºÜ¶Ì£¬´óÔ¼Ò»ÖÜ£¬Ö»ÒªÄܽ«story·ÖºÃ£¬ÄÇôÔÚÒ»ÖÜÄڵĸı䣬¶¼¿ÉÒÔͨ¹ýÑз¢Óë²âÊÔµÄÐͬ¹¤×÷Íê³É¡£