Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
ÃæÏò¿ª·¢µÄ²âÊÔ¼¼Êõ£¨Èý£©£ºWeb×Ô¶¯»¯²âÊÔ
 
À´Ô´£ºcsdn ·¢²¼ÓÚ£º 2017-8-16
  3286  次浏览      27
 

Òý×Ó£º×ÔÉÏÊÀ¼ÍÄ©Kent BeckÌá³öTDD(Test-Driven Development)¿ª·¢ÀíÄîÒÔÀ´£¬¿ª·¢ºÍ²âÊԵı߽ç±äµÄÔ½À´Ô½Ä£ºý£¬´ÓÔ­±¾ÉÏÏÂÓεÄÒÀÀµ¹ØÏµ£¬Öð²½Ñݱä³ÉÄãÖÐÓÐÎÒ¡¢ÎÒÖÐÓÐÄãµÄ»¥Àµ¹ØÏµ£¬ÉõÖÁºÜ¶à¹«Ë¾ÉèÁ¢ÁËеÄQE(Quality Engineer)ְλ¡£ºÍ´«Í³µÄQA(Quality Assurance)²»Í¬£¬QEµÄÖ÷ÒªÖ°ÔðÊÇͨ¹ý¹¤³Ì»¯µÄÊֶα£Ö¤ÏîÄ¿ÖÊÁ¿£¬ÕâЩÊֶΰüÀ¨µ«²»½öÏÞÓÚ±àдµ¥Ôª²âÊÔ¡¢¼¯³É²âÊÔ£¬´î½¨×Ô¶¯»¯²âÊÔÁ÷³Ì£¬Éè¼ÆÐÔÄܲâÊԵȡ£¿ÉÒÔ˵£¬QEÉíÉϼæ¾ßÁËQAµÄÖÊÁ¿ÒâʶºÍ¿ª·¢µÄ¹¤³ÌÄÜÁ¦¡£ÎÒ»á´Ó¿ª·¢µÄ½Ç¶È·ÖÈýÆÚÁÄÁÄQEÕâ¸öÒà²âÊÔÒ࿪·¢µÄ½ÇÉ«ËùÐèµÄ»ù±¾¼¼ÄÜ¡£

ǰÇé¸ÅÒª£º

- ÃæÏò¿ª·¢µÄ²âÊÔ¼¼Êõ£¨Ò»£©£ºMock

- ÃæÏò¿ª·¢µÄ²âÊÔ¼¼Êõ£¨¶þ£©£ºÐÔÄܲâÊÔ

1 QEµÄ³ÉÈËÀñ£º´Ó¹¦ÄܲâÊÔµ½×Ô¶¯»¯²âÊÔ

×÷ΪQEÈý²¿ÇúµÄ×îºóһƪ£¬ÕâÆªÎÒÃÇÁÄÒ»ÏÂWeb×Ô¶¯»¯²âÊÔ¡£Ïà±ÈÓÚǰÁ½ÆªMock¼¼ÊõºÍÐÔÄܲâÊÔ£¬×Ô¶¯»¯²âÊÔ¿ÉÒÔ˵ÊÇ×î½Ó½ü´«Í³¹¦ÄܲâÊÔ£¨Ò²¼´ÊÖ¹¤²âÊÔ£©µÄÒ»ÖÖ²âÊÔ¼¼Êõ£¬Ò²¿ÉÒÔ˵ÊÇÇø·ÖQEºÍQAµÄ·ÖË®Áë¡£¶øWeb×Ô¶¯»¯²âÊÔ×÷Ϊ×î³£¼ûµÄÒ»Àà×Ô¶¯»¯²âÊÔ£¬Ïà¹ØµÄ×ÊÁϺ͹¤¾ßÒ²ÊÇ×î·á¸»µÄ¡£

2 ×Ô¶¯»¯²âÊÔµÄÀû±×

ÔÚ½éÉܾßÌåµÄWeb×Ô¶¯»¯²âÊÔ¼¼Êõ֮ǰ£¬Ê×ÏÈ¿´Ò»ÏÂ×Ô¶¯»¯²âÊԺ͹¦ÄܲâÊÔµÄÇø±ð¡£ÔÚÎÒ¿´À´£¬Á½Õß×î´óµÄÇø±ðÔÚÓÚ²âÊÔÈËÔ±Éí·ÝµÄ²»Í¬¡£ÔÚ¹¦ÄܲâÊÔÖУ¬²âÊÔÈËÔ±¼ÈÒªÉè¼Æ²âÊÔÓÃÀý£¬ÓÖÒªÔËÐÐÊÖ¹¤²âÊÔ£¬¼ÈÊǵ¼ÑÝÓÖÊÇÑÝÔ±£¬¼ÈÊǽÌÁ·ÓÖÊÇÇòÔ±¡£¶øÔÚ×Ô¶¯»¯²âÊÔÖУ¬ÑÝÔ±ºÍÇòÔ±µÄ½ÇÉ«¶¼±»»úÆ÷ËùÈ¡´ú£¬²âÊÔÈËÔ±Ö»¸ºÔðÉè¼Æ²âÊÔÓÃÀýºÍ±àд×Ô¶¯»¯²âÊԽű¾¡£³ý´ËÖ®Í⣬Ïà¶ÔÓÚ¹¦ÄܲâÊÔ£¬×Ô¶¯»¯²âÊԵIJ»Í¬»¹°üÀ¨£º

2.1 ×Ô¶¯»¯²âÊÔµÄÓÅÊÆ

¸ü¿ìµÄ²âÊÔËÙ¶È£¬´øÀ´¸ü¸ßµÄ²âÊÔЧÂÊ¡£Ò»°ã¶øÑÔ£¬ÔËÐÐÒ»±é¹¦ÄܲâÊÔ¶¼ÒªÒÔСʱΪµ¥Î»£¬ÓеÄÉõÖÁÒÔÌìΪµ¥Î»¡£¶ø×Ô¶¯»¯²âÊÔÔòÒ»°ã¶¼ÔÚ·ÖÖÓ¼¶±ð£¬Èç¹ûÔËÐÐÔÚ·Ö²¼Ê½»·¾³Ï£¬ÉõÖÁ¿ÉÒÔ½µµ½Ãë¼¶¡£Óɴ˿ɼû£¬Í¨¹ý×Ô¶¯»¯²âÊÔ£¬²âÊÔÈËÔ±¿ÉÒÔʡȥ´óÁ¿µÄÊÖ¹¤²âÊÔʱ¼ä£¬´Ó¶øÓиü¶àʱ¼äÈ¥ÊìϤҵÎñºÍÍêÉÆ²âÊÔÓÃÀý£¬ÔÚÌá¸ß×ÔÉí²âÊÔЧÂʵÄͬʱ£¬Ò²ÓÐÖúÓÚÌáÉýÕûÌåµÄÈí¼þÖÊÁ¿¡£

Ìá¸ß²âÊÔ¸²¸ÇÂÊ¡£ÒªÀí½âÕâÒ»µã£¬Ê×ÏÈÒª´ÓÕý½»²âÊÔ·¨ËµÆð¡£¼ÙÉèÒ»¸ö²âÊÔ³¡¾°Éæ¼°3¸ö²âÊÔÒòËØ£¬Ã¿¸ö²âÊÔÒòËØÓÐ3ÖÖ¿ÉÄܵÄȡֵ£¨Ë®Æ½£©£¬ÄÇô¸ù¾ÝÕý½»²âÊÔ·¨£¬×ܹ²ÐèÒªÉè¼Æ8¸ö£¨ÒòËØÊý*(×î´óˮƽÊý-1)+1£©²âÊÔÓÃÀý¡£²âÊÔ³¡¾°Ô½¸´ÔÓ£¬ËùÐèµÄ²âÊÔÓÃÀýÔ½¶à¡£µ±²âÊÔ³¡¾°µÄ¸´ÔӶȳ¬¹ýÒ»¶¨³Ì¶Èºó£¬´¿ÊÖ¹¤µÄ¹¦ÄܲâÊÔÏÔÈ»¾ÍÎÞÁ¦¸²¸ÇËùÓеIJâÊÔÓÃÀýÁË£¬²¢ÇÒËæ×Ÿ´ÔӶȵÄÉý¸ß£¬²âÊÔ¸²¸ÇÂÊ»áÔ½À´Ô½µÍ¡£È»¶ø£¬½èÖú×Ô¶¯»¯²âÊԽű¾£¬ÎÞÂÛ²âÊÔ³¡¾°¶à¸´ÔÓ£¬¶¼Äܱ£Ö¤Ò»¶¨µÄ²âÊÔ¸²¸ÇÂÊ¡£

¸üºÃµÄÎȶ¨ÐԺͿÉÀ©Õ¹ÐÔ¡£¹¦ÄܲâÊÔ¿¿ÈË£¬×Ô¶¯»¯²âÊÔ¿¿»úÆ÷£¬Òò´Ë£¬ÎÞÂÛÊÇÔËÐвâÊÔµÄÎȶ¨ÐÔ£¬»¹ÊDzâÊÔÄÜÁ¦µÄ¿ÉÀ©Õ¹ÐÔ£¨±ÈÈç´Ó²âÊÔ1¸öÓ¦ÓñäΪ²âÊÔ10¸öÓ¦Óã©£¬×Ô¶¯»¯²âÊÔ¶¼Ô¶³¬¹¦ÄܲâÊÔ¡£

¸ù¾ÝÉÏÃæµÄÃèÊö£¬Äã¾Í²»ÄÑÍÆµ¼³ö×Ô¶¯»¯²âÊÔÊÊÓõIJâÊÔ³¡¾°ÁË£º

»Ø¹é²âÊÔ¡£Ã¿Ò»´ÎÓ¦Ó÷¢²¼£¬¶¼°éËæ×ÅÒ»´Î»Ø¹é²âÊÔ¡£¶ÔÓÚÖØ¸´ÐԵŤ×÷£¬»úÆ÷ÏÔÈ»¸üÊʺϡ£

¼æÈÝÐÔ²âÊÔ¡£²»¹ÜÊÇWeb²âÊÔ£¬»¹ÊÇApp²âÊÔ£¬¼æÈÝÐÔ²âÊÔ¶¼ÊDZز»¿ÉÉÙµÄÒ»»·¡£ÒÔWeb²âÊÔΪÀý£¬Í¬ÑùµÄ²âÊÔÓÃÀý£¬ÐèÒªÔÚ²»Í¬µÄä¯ÀÀÆ÷ÉÏ·Ö±ðÔËÐÐÒ»±é£¬Õâ¶Ô²âÊÔÈËÔ±¶øÑÔ²»¿Éν²»ÊÇÒ»ÖÖÕÛÄ¥¡£

´ó¹æÄ£²âÊÔ¡£Èç¹ûÒ»´Î²âÊÔÉæ¼°µÄ²âÊÔÓÃÀý¹ý¶à£¨±ÈÈç100+£©£¬¹¦ÄܲâÊÔÄÑÃâ»áÓÐÒÅ©»òÕßÖØ¸´£¬¶ø×Ô¶¯»¯²âÊÔ¿ÉÒÔÇáËÉÈ·±£Ò»¸ö²»ÉÙ£¬Ò»¸öÒ²²»¶à¡£

һͼÒÔ±ÎÖ®£¬×Ô¶¯»¯²âÊÔµÄÓÅÊÆ¿É¸ÅÀ¨ÎªÏÂͼ£º

2.2 ×Ô¶¯»¯²âÊԵľÖÏÞ

˵ÁËÕâô¶à×Ô¶¯»¯²âÊԵĺô¦£¬µ«×Ô¶¯»¯²âÊÔÒ²²»ÊÇÍòÄܵģ¬ÔÙÀ´¿´Ò»ÏÂËüµÄ¾ÖÏÞËùÔÚ£º

  • ²»µÍµÄ¼¼ÊõÃż÷¡£²»ÂÛÊÇʹÓÃÄÄÖÖ×Ô¶¯»¯²âÊÔ¿ò¼Ü£¬¶ÔÓÚ²âÊÔÈËÔ±¶øÑÔ£¬¶¼´æÔÚÒ»¶¨µÄ¼¼ÊõÃż÷£¬Ò»°ãÖÁÉÙÐèҪѧϰ²¢ÕÆÎÕÒ»Ãűà³ÌÓïÑÔ¡£
  • ¿É¹ÛµÄ¿ª·¢³É±¾ºÍά»¤³É±¾¡£¸úÈκγÌÐòÒ»Ñù£¬ÎÞÂÛÊDZàд×Ô¶¯»¯²âÊԽű¾£¬»¹ÊÇÔÚÐèÇó±ä»¯Ê±Ð޸Ľű¾£¬¶¼ÐèÒª»¨·Ñ´óÁ¿µÄʱ¼ä¡£
  • ÐèÇóÒªÎȶ¨¡£×Ô¶¯»¯²âÊÔµÄǰÌáÊDzâÊÔÓÃÀýÒªÎȶ¨£¬¶ø²âÊÔÓÃÀýÎȶ¨µÄǰÌáÊÇÐèÇóÒªÎȶ¨¡£¶ÔÓÚÁÙʱµÄ»òÕß˵һ´ÎÐÔµÄÐèÇó£¬×Ô¶¯»¯²âÊÔÍùÍùÊǵò»³¥Ê§µÄ¡£
  • Ó¦ÓÃÖÜÆÚ³¤¡£Ó¦ÓõÄÉúÃüÖÜÆÚÔ½³¤£¬×Ô¶¯»¯²âÊÔ½ÚÊ¡µÄʱ¼äÔ½¶à£¬´øÀ´µÄ¼ÛÖµÒ²Ô½´ó¡£

Ó¦¸Ã˵£¬¹¦ÄܲâÊÔÊÇ×Ô¶¯»¯²âÊԵĻù´¡£¬×Ô¶¯»¯²âÊÔÊǹ¦ÄܲâÊԵIJ¹³ä£¬Á½ÕßÏ໥ÒÀÀµ£¬ÓÖÏ໥´Ù½ø¡£²âÊÔÈËÔ±Á½ÊÖ¶¼Òª×¥£¬Á½ÊÖ¶¼ÒªÓ²¡£

3 ÈçºÎ½øÐÐWeb×Ô¶¯»¯²âÊÔ£¿

½ÓÏÂÀ´ÎÒÒÔSeleniumΪÀý£¬½éÉÜÒ»ÏÂÈçºÎ½øÐÐWeb×Ô¶¯»¯²âÊÔ¡£

3.1 Selenium¼ò½é

SeleniumÊÇĿǰ×îÁ÷ÐеÄWeb×Ô¶¯»¯²âÊÔ¿ò¼ÜÖ®Ò»£¬Ö§³ÖÖ÷Á÷µÄä¯ÀÀÆ÷ºÍ²Ù×÷ϵͳ£¬Í¬Ê±Ö§³Ö¶àÖÖ±à³ÌÓïÑÔ½ÓÈë¡£ÎÞÂÛÊDzâÊÔ£¬»¹ÊÇ¿ª·¢£¬¶¼¿ÉÒÔÇáËÉÉÏÊÖ¡£×îеİ汾ÊÇ3.4.0¡£

ͬÀàµÄWeb×Ô¶¯»¯²âÊÔ¿ò¼Ü»¹ÓУº

  • ¿ªÔ´£ºWatir, Sikuli, FitNess
  • ÉÌÒµ£ºHP UFT(QTP), IBM RFT

ͼƬ³ö´¦£ºhttps://www.edureka.co /testing-with-selenium-webdriver

×é³É

  • Selenium IDE: Ò»¿îFirefox²å¼þ£¬ÒÔͼÐλ¯·½Ê½Ö§³ÖÂ¼ÖÆ½Å±¾¡¢×Ô¶¯Éú³É½Å±¾µÈ¹¦ÄÜ¡£ÓÃÓÚ±¾µØ¿ª·¢ºÍµ÷ÊÔTC£¨Test Case£©¡£
  • Selenium WebDriver: ͨ¹ý¸÷ä¯ÀÀÆ÷³§ÉÌÌṩµÄÔ­ÉúDriver£¬Ö¸»Óä¯ÀÀÆ÷½øÐи÷ÀàÒ³Ãæ²Ù×÷¡£

ͼƬ³ö´¦£ºJoin the darkside: Selenium testing with Nightwatch.js

  • Selenium RC£¨ÒÑ·ÏÆú£©: ͨ¹ýÖ²ÈëͳһµÄJS½Å±¾£¬Ö¸»Óä¯ÀÀÆ÷½øÐи÷ÀàÒ³Ãæ²Ù×÷¡£¼æÈÝÐԱȽϲ2.0ÒÔºóÒÑ·ÏÆú¡£
  • Selenium Grid: ÊÊÓÃÓÚ·Ö²¼Ê½»·¾³ÏÂÔËÐдóÁ¿µÄTC£¬Hub¸ù¾ÝTCµÄ»·¾³ÒªÇó·Ö·¢¸ø¸÷¸ö·ûºÏÌõ¼þµÄNodeÖ´ÐС£

ͼƬ³ö´¦£ºJoin the darkside: Selenium testing with Nightwatch.js

ÌØÐÔ

  • ¶àä¯ÀÀÆ÷Ö§³Ö£º³ýÁËÈý´óä¯ÀÀÆ÷Firefox, Chrome, IEÖ®Í⣬»¹Ö§³ÖAndroid, iOSÄÚÖõÄä¯ÀÀÆ÷¡£
  • ¶àƽ̨֧³Ö£ºÈý´ó²Ù×÷ϵͳLinux, Mac, WindowsÉÏÃæ¶¼¿ÉÒÔÔËÐС£
  • ¶àÓïÑÔÖ§³Ö£º¿ÉÒÔÓÃPython, Java, Node, RubyµÈ±àдTC¡£
  • Â¼ÖÆ½Å±¾£¨½öÏÞIDE£©£º¼Ç¼FirefoxÉϵĸ÷ÀàÒ³Ãæ²Ù×÷£¬×Ô¶¯Éú³ÉHTML¸ñʽµÄTC¡£
  • ×Ô¶¯Éú³É½Å±¾£¨½öÏÞIDE£©£º½«Â¼ÖƵÄHTML¸ñʽµÄTCת»¯³ÉÈÎÒâÆäËûÓïÑÔµÄTC¡£
  • Headless£ºÖ§³ÖÔÚÃüÁîÐÐÏ£¬Ö´Ðи÷ÀàTC½Å±¾¡£
  • ·Ö²¼Ê½Ö§³Ö£ºÍ¨¹ýSelenium Grid½«TC·Ö·¢µ½¸÷¸ö½ÚµãÖ´ÐС£

3.2 ÈëÃÅ£ºSelenium IDE

Ê×ÏȰ²×°Firefox£¬È»ºóÏÂÔØSelenium IDE²å¼þ¡£Í¨¹ýFirefoxµÄTools->Selenium IDE²Ëµ¥Ïî¿ÉÒÔÆô¶¯Selenium IDE£¬²Ù×÷½çÃæÈçÏ£º

ʹÓÃSelenium IDEÉú³É×Ô¶¯»¯²âÊԽű¾µÄÒ»°ã²½ÖèÊÇ£º

  1. Ñ¡ÔñAction->Record²Ëµ¥Ïî»òÕßµã»÷ÓÒÉϽǵÄСºìµãÂ¼ÖÆÔ­Ê¼²âÊԽű¾
  2. ÒÔµ÷ÊÔģʽÔËÐнű¾-²é¿´ÈÕÖ¾-Ð޸Ľű¾Ö±ÖÁ½Å±¾¿ÉÒÔÎȶ¨µÄÔËÐÐ
  3. ±£´æ²âÊԽű¾£¨½öÏÞIDEÔËÐУ©»òÕßͨ¹ýFile->Export Test Suites As¡­²Ëµ¥Ïîµ¼³öÆäËûÓïÑԵIJâÊԽű¾£¨¿ÉÔÚÃüÁîÐÐÏÂÔËÐУ©½øÒ»²½ÐÅÏ¢¿ÉÒԲο¼¹Ù·½Îĵµ¡£

3.3 ½ø½×£ºSelenium WebDriver

ÒÔPython3 + FirefoxΪÀý£¬

1) ÃüÁîÐÐÏÂÔËÐÐpip install selenium==3.3.0°²×°selenium

- ÓÉÓÚ×îаæµÄSelenium Python package²»Ö§³ÖGrid£¬Ö»Äܽµ¼¶°²×°3.3.0°æ±¾

2) ÏÂÔØMozilla GeckoDriver£¬½âѹȻºóÌí¼Óµ½ÏµÍ³Path

×¼±¸¾ÍÐ÷ºó£¬´ò¿ªÃüÁîÐУ¬ÊÔ×ÅÔËÐÐ֮ǰ´ÓSelenium IDEµ¼³öµÄPython²âÊԽű¾£¬Ò²¿ÉÒÔÖ±½ÓÊÖд½Å±¾¡£

ʾÀý½Å±¾£º

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
browser = webdriver.Firefox()
browser.get('http://www.baidu.com/')
assert '°Ù¶Èһϣ¬Äã¾ÍÖªµÀ' == browser.title
kw = browser.find_element_by_id("kw");
kw.send_keys('selenium')
kw.send_keys(Keys.RETURN)
WebDriverWait(browser, 10).until( EC.title_contains('selenium_°Ù¶ÈËÑË÷'))
assert browser.find_element_by_css _selector("div.nums").is_displayed()
print("Test pass!")
browser.quit()

½øÒ»²½ÐÅÏ¢¿ÉÒԲο¼¹Ù·½ÎĵµºÍSelenium Python API¡£

3.4 ¸ß½×£ºSelenium Grid

Ç°ÃæÌáµ½£¬Ê¹ÓÃSelenium Grid¿ÉÒÔÇáËɴһ¸ö·Ö²¼Ê½µÄ×Ô¶¯»¯²âÊÔ»·¾³£¬ÌرðÊʺÏÔËÐдó¹æÄ£µÄ²âÊÔÓÃÀýºÍ¼æÈÝÐÔ²âÊÔ£¨¸÷¸ö½ÚµãÔËÐв»Í¬µÄWebDriver£©¡£

ÀûÓùٷ½ÌṩµÄDocker¾µÏñ£¬¿ÉÒÔÔÚ±¾µØÆô¶¯¶à¸öÈÝÆ÷À´´î½¨Ò»¸öSelenium Grid»·¾³£¬ÒÔ2¸öÔËÐÐphantomjs WebDriverµÄ½ÚµãµÄGridΪÀý£º

  1. Æô¶¯Hub: docker run -d -p 4444:4444 ¨Cname hub selenium/hub
  2. Æô¶¯Node-1: docker run -d ¨Clink hub:hub ¨Cname pnode1 selenium/node-phantomjs
  3. Æô¶¯Node-2: docker run -d ¨Clink hub:hub ¨Cname pnode2 selenium/node-phantomjs

µÈËùÓÐÈÝÆ÷³É¹¦Æô¶¯Ö®ºó£¬´ò¿ªä¯ÀÀÆ÷·ÃÎÊhttp://<ip-of-local-Docker-machine:4444>£¬¾Í¿ÉÒÔ¿´µ½Selenium GridµÄ¿ØÖÆÌ¨ÁË¡£

È»ºóÐ޸IJâÊԽű¾Ö¸Ïò±¾µØSelenium GridµÄ·þÎñµØÖ·£¬¾Í¿ÉÒÔͨ¹ýSelenium GridÔËÐвâÊÔÁË¡£

browser = webdriver.Remote(
command_executor=" http://192.168.99.100:4444/wd/hub",
desired_capabilities={'browserName': 'phantomjs'})
browser.implicitly_wait(30)

½øÒ»²½ÐÅÏ¢ÐÅÏ¢²Î¿¼¹Ù·½ÎĵµºÍWiki¡£

4 С½á

ÒÔÉϾÍÊÇÎÒ¶Ô×Ô¶¯»¯²âÊÔµÄһЩ¼û½â£¬»¶Ó­Äãµ½ÎÒµÄÁôÑÔ°å·ÖÏí£¬ºÍ´ó¼ÒÒ»Æð¹ý¹ýÕС£

ÖÁ´Ë£¬ÓйØQEËùÐèÕÆÎÕµÄ3¸ö»ù±¾²âÊÔ¼¼ÊõµÄ½éÉܾ͸æÒ»¶ÎÂä¡£ÎÞÂÛÊÇMock£¬»¹ÊÇÐÔÄܲâÊÔ£¬×Ô¶¯»¯²âÊÔ£¬±¾ÖÊÉ϶¼Ö»ÓÐÒ»¸öÄ¿µÄ£¬½â·Å²âÊÔÈËÔ±µÄÉú²úÁ¦£¬ÈòâÊÔÈËÔ±»Ø¹éÈí¼þÖÊÁ¿£¨Quality£©±¾Éí¡£Èç¹ûÄãÏëÁ˽â¸ü¶à²âÊÔÏà¹ØµÄ¼¼Êõ£¬Ò²»¶Ó­µ½ÎÒµÄÁôÑÔ°åÁôÑÔ£¬ÒÔºóÓлú»áÎÒ»áÔÙÁÄһЩÕâ·½ÃæµÄ»°Ìâ¡£¸Ðл´ó¼ÒµÄ¹Ø×¢¡£

   
3286 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

΢·þÎñ²âÊÔÖ®µ¥Ôª²âÊÔ
һƪͼÎÄ´øÄãÁ˽â°×ºÐ²âÊÔÓÃÀýÉè¼Æ·½·¨
È«ÃæµÄÖÊÁ¿±£ÕÏÌåϵ֮»Ø¹é²âÊÔ²ßÂÔ
È˹¤ÖÇÄÜ×Ô¶¯»¯²âÊÔ̽Ë÷
Ïà¹ØÎĵµ

×Ô¶¯»¯½Ó¿Ú²âÊÔʵ¼ù֮·
jenkins³ÖÐø¼¯³É²âÊÔ
ÐÔÄܲâÊÔÕï¶Ï·ÖÎöÓëÓÅ»¯
ÐÔÄܲâÊÔʵÀý
Ïà¹Ø¿Î³Ì

³ÖÐø¼¯³É²âÊÔ×î¼Ñʵ¼ù
×Ô¶¯»¯²âÊÔÌåϵ½¨ÉèÓë×î¼Ñʵ¼ù
²âÊԼܹ¹µÄ¹¹½¨ÓëÓ¦ÓÃʵ¼ù
DevOpsʱ´úµÄ²âÊÔ¼¼ÊõÓë×î¼Ñʵ¼ù