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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
ÓÐÔÞ·Ö²ã×Ô¶¯»¯²âÊÔʵ¼ù
 
À´Ô´£ºtech.youzan.com ·¢²¼ÓÚ£º 2017-7-5
  3012  次浏览      27
 

1. ±³¾°

ÏÈÀíÒ»ÏÂ×Ô¶¯»¯²âÊԵĸÅÄ´Ó¹ãÒåÉÏÀ´Ëµ£¬Ò»ÇÐͨ¹ý¹¤¾ß(³ÌÐò)µÄ·½Ê½À´´úÌæ»òÕ߸¨ÖúÊÖ¹¤²âÊÔµÄÐÐΪ¶¼¿ÉÒÔ³ÉΪ×Ô¶¯»¯¡£´ÓÏÁÒåÉÏÀ´Ëµ£¬Í¨¹ý±àд½Å±¾µÄ·½Ê½£¬Ä£ÄâÊÖ¹¤²âÊԵĹý³Ì£¬´Ó¶øÌæ´úÈ˹¤¶ÔϵͳµÄ¹¦ÄܽøÐÐÑéÖ¤¡£

ÓÐÔÞÊÇÒ»¼Ò»¥ÁªÍøÐÐÒµµÄ´´Òµ¹«Ë¾£¬²âÊÔÆð²½½ÏÍí£¬·¢²¼·Ç³£Æµ·±£¬¾ÍËãÿ´ÎÖ»»Ø¹éºËÐŦÄÜ£¬¶ÔÈËÊý¼«Éٵö²âÊÔÈËÔ±À´Ëµ¹¤×÷Á¿¾Þ´ó£¬ÇÒ»ù±¾ÊÇÖØ¸´ÀͶ¯£¬¼«Æä¿ÝÔ³ÖÐøÊ±¼ä³¤ÁËÒ²ÈÝÒ׳ö´í¡£

ËùÒÔ³õÆÚÎÒÃDzâÊÔ×Ô¶¯»¯ÇÐÈëµÄ˼··Ç³£¼òµ¥£º´Óʵ¼ÊÓû§µÄ½Ç¶È³ö·¢£¬Ä£ÄâÕæÊµµÄ²Ù×÷£¬Ìæ´úÏÖÓеÄÊÖ¹¤²âÊÔÓÃÀýµÄÖ´ÐС£ÕâÑùÒ»À´£¬Ã¿´ÎÖØ¸´µÄ¹¤×÷¾Í¿ÉÒÔÓÃ×Ô¶¯»¯À´Ìæ´ú£¬²âÊÔÈËÔ±Ö»ÐèÒª¹Ø×¢Ã¿´Î·¢²¼µÄÔöÁ¿ÐèÇó¼´¿É¡£

Ëæ×Žű¾ÊýÁ¿µÄÔö¼Ó£¬ÕâÖÖ×Ô¶¯»¯¸²¸ÇµÄ·½Ê½µÄ±×¶ËÒ²Öð½¥±©Â¶£º

Ö´ÐÐЧÂʵÍÏÂ

¹¹½¨³É¹¦ÂʵÍ(Îó±¨Âʸß)¡£

ÊÜǰ¶ËÑùʽ±ä¸üÓ°Ïì´ó

ÍⲿÒÀÀµ½Ï¶à£¬²»ÊÇËùÓÐÓÃÀý¶¼ÄÜ×Ô¶¯»¯

¸²¸ÇÄÜÁ¦ÓÐÏÞ

ËäÈ»ÎÒÃÇÔÚ²âÊÔ¿ò¼ÜºÍ¹¤¾ß²ãÃæÍ¨¹ý½áºÏselenium-gridʵÏÖÁ˽ű¾²¢·¢Ö´ÐкÍʧ°ÜÓÃÀýÖØÊÔ»úÖÆÒÔÌá¸ßÖ´ÐÐЧÂʺͽµµÍÎó±¨ÂÊ£¬µ«ÊÇÕâÖÖ·½Ê½Ö»ÄÜ»º½âÎÊÌ⣬²¢²»ÄÜ´Ó¸ù±¾½â¾ö¸²¸Ç²»È«µÄÎÊÌâ¡£

ÕýºÃ¸ÏÉϹ«Ë¾µÄSOA·þÎñ»¯½ø³Ì£¬²âÊÔÕâ±ßÒ²¿ªÊ¼ÅäºÏµÄ×ö×Ô¶¯»¯·½ÃæµÄת±ä£¬´ÓÔ­À´µÄºÚºÐϵͳ¼¶×Ô¶¯»¯²âÊÔÏò·Ö²ã×Ô¶¯»¯²âÊÔת±ä¡£

2. ·Ö²ã×Ô¶¯»¯²âÊÔ

ÔÚ̸·Ö²ã²âÊÔ֮ǰ£¬ÏȻع˼¸¸ö¸ÅÄ

µ¥Ôª²âÊÔ£º¶ÔÈí¼þÖеÄ×îС¿É²âÊÔµ¥Ôª½øÐмì²éºÍÑéÖ¤¡£¾ßÌåµÄ˵¾ÍÊÇ¿ª·¢Õß±àдµÄһС¶Î´úÂ룬ÓÃÓÚ¼ìÑé±»²â´úÂëµÄÒ»¸öºÜСµÄ¡¢ºÜÃ÷È·µÄ¹¦ÄÜÊÇ·ñÕýÈ·¡£Í¨³£¶øÑÔ£¬Ò»¸öµ¥Ôª²âÊÔÊÇÓÃÓÚÅжÏij¸öÌØ¶¨Ìõ¼þ£¨»òÕß³¡¾°£©ÏÂij¸öÌØ¶¨º¯ÊýµÄÐÐΪ¡£

¼¯³É²âÊÔ£º¼¯³É²âÊÔÊÇÔÚµ¥Ôª²âÊԵĻù´¡ÉÏ£¬²âÊÔÔÚ½«ËùÓеÄÈí¼þµ¥Ôª°´ÕÕ¸ÅÒªÉè¼Æ¹æ¸ñ˵Ã÷µÄÒªÇó×é×°³ÉÄ£¿é¡¢×Óϵͳ»òϵͳµÄ¹ý³ÌÖи÷²¿·Ö¹¤×÷ÊÇ·ñ´ïµ½»òʵÏÖÏàÓ¦¼¼ÊõÖ¸±ê¼°ÒªÇóµÄ»î¶¯¡£Ò²¾ÍÊÇ˵£¬ÔÚ¼¯³É²âÊÔ֮ǰ£¬µ¥Ôª²âÊÔÓ¦¸ÃÒѾ­Íê³É¡£ÕâÒ»µãºÜÖØÒª£¬ÒòΪÈç¹û²»¾­¹ýµ¥Ôª²âÊÔ£¬ÄÇô¼¯³É²âÊÔµÄЧ¹û½«»áÊܵ½ºÜ´óÓ°Ï죬²¢ÇÒ»á´ó·ùÔö¼ÓÈí¼þµ¥Ôª´úÂë¾À´íµÄ´ú¼Û¡£

ϵͳ²âÊÔ£º½«Ðè²âÊÔµÄÈí¼þ£¬×÷ΪÕû¸ö»ùÓÚ¼ÆËã»úϵͳµÄÒ»¸öÔªËØ£¬Óë¼ÆËã»úÓ²¼þ¡¢ÍâÉ衢ijЩ֧³ÖÈí¼þ¡¢Êý¾ÝºÍÈËÔ±µÈÆäËûÏµÍ³ÔªËØ¼°»·¾³½áºÏÔÚÒ»Æð²âÊÔ¡£ÏµÍ³²âÊÔµÄÄ¿µÄÔÚÓÚͨ¹ýÓëϵͳµÄÐèÇó¶¨Òå×÷±È½Ï£¬·¢ÏÖÈí¼þÓëϵͳ¶¨Òå²»·ûºÏ»òÓë֮ì¶ÜµÄµØ·½¡£

½ÓÏÂÀ´ÎÒÃÇ̸̸ÓÐÔÞÊÇÈçºÎËæ×Åϵͳ²ð·ÖSOA·þÎñ»¯Íƽø·Ö²ã×Ô¶¯»¯²âÊԵġ£ÏÈÀ´¿´¿´¾­µäµÄ²âÊÔ½ð×ÖËþ£º

ÆäÖÐUnit´ú±íµ¥Ôª²âÊÔ£¬Service´ú±í·þÎñ¼¯³É²âÊÔ£¬UI´ú±íÒ³Ãæ¼¶µÄϵͳ²âÊÔ¡£·Ö²ãµÄ×Ô¶¯»¯²âÊÔ³«µ¼²úÆ·µÄ²»Í¬²ã´Î¶¼ÐèÒª×Ô¶¯»¯²âÊÔ£¬Õâ¸ö½ð×ÖËþÒ²Õý±íʾ²»Í¬²ã´ÎÐèҪͶÈëµÄ¾«Á¦ºÍ¹¤×÷Á¿¡£ÏÂÃæÎÒ»áÖð²ã½éÉÜÓÐÔ޵ķֲã×Ô¶¯»¯Êµ¼ù¡£

2.1 Unit-µ¥Ôª²âÊÔ

ÔÚϵͳ²ð·Ö֮ǰ£¬ÓÐÔÞÖ»ÓÐÒ»¸öÅÓ´óµÄ¾ÞÎÞ°Ôϵͳ£¬µ¥Ôª²âÊÔ¼«¶Èȱʧ¡£ÔÚϵͳÖð½¥SOA·þÎñ»¯µÄ¹ý³ÌÖУ¬ÎÒÃÇÖð½¥Ìá³öÁ˶Ե¥Ôª²âÊÔ¸²¸ÇÂʵÄÒªÇó¡£

ÎÒÃǵĵ¥Ôª²âÊÔ»á·Ö±ð×öDAO²ãºÍ·þÎñ²ãµÄ²âÊÔ¡£DAO²ãµÄµ¥Ôª²âÊÔÖ÷Òª±£ÕÏSQL½Å±¾µÄÕýÈ·ÐÔ£¬ÔÚ×ö·þÎñ²ãµÄµ¥Ôª²âÊÔʱ¾Í¿ÉÒÔÒÔDAO²ãÊÇÕýÈ·µÄǰÌá½øÐÐÓÃÀý±àдÁË¡£

ΪÁË×öϸÁ£¶ÈµÄ²âÊÔ£¬ÐèÒª½â¾öµ¥Ôª²âÊÔµÄÍⲿÒÀÀµ¡£ÏµÍ³ºÍÄ£¿éÖ®¼äµÄÒÀÀµ¿ÉÒÔͨ¹ýMock¿ò¼Ü(Mockito/EasyMock)½âñͬʱ¿ÉÒÔ½áºÏh2database½â¾ö¶ÔÊý¾Ý¿âµÄÒÀÀµ£¬Ê¹µÃ²âÊÔÓÃÀý¾¡¿ÉÄÜ×öµ½¿ÉÒÔËæÊ±ËæµØÔËÐС£

ÕâÒ»²ã·¢ÏÖ²¢½â¾öÎÊÌ⸶³öµÄ³É±¾Ïà¶ÔÀ´Ëµ×îµÍ£¬×Ô¶¯»¯ÓÃÀýµÄά»¤³É±¾Ò²²»¸ß£¬×ܵÄÀ´Ëµ×Ô¶¯»¯²âÊÔµÄͶÈë²ú³ö±È×î¸ß¡£

µ¥Ôª²âÊÔµÄÔðÈÎÖ÷ÌåÒ»°ãÀ´ËµÊÇ¿ª·¢ÈËÔ±£¬Ð´µ¥Ôª²âÊÔÒ²ÊÇ¿ª·¢ÈËÔ±¶Ô×Ô¼ºµÄ´úÂë½øÐмì²éµÄÒ»¸ö¹ý³Ì¡£

2.2 Service-·þÎñ¼¯³É²âÊÔ

ÎÒÃÇÔÚ·þÎñ²ãµÄ²âÊÔÊ×Òª¿¼ÂǵÄÊǸ÷ϵͳ(×Óϵͳ)µÄ¼¯³É²âÊÔ¡£ÒòΪÔÚ¾­¹ýµ¥Ôª²âÊÔÕâÒ»²ãµÄ±£ÕÏÖ®ºó£¬ÔÚ·þÎñ²ãÎÒÃǸü¹Ø×¢µÄÊÇij¸öϵͳµÄÊäÈëÊä³ö¹¦ÄÜÊÇ·ñÕýÈ·£¬ÒÔ¼°Èô¸É¸öϵͳ¼äµÄ½»»¥ÊÇ·ñºÍÒµÎñ³¡¾°µÄÒªÇóÒ»Ö¡£

ÏÈÀ´¿´¿´ÎÒÃÇϵͳ²ð·ÖÖ®ºóµÄSOAϵͳӦÓüܹ¹Í¼£º

Õ¹Ïֲ㣺ÀϵÄIronÓ¦Ó㬴úÂëΪphp¡£²ð·ÖÖ®ºóironֻʣϺÍǰ¶Ë½»»¥µÄÕ¹ÏÖ²ãÂß¼­£¬ÒÔ¼°µ÷ÓúËÐÄÒµÎñµÄAPI²ã

ºËÐÄÒµÎñ£ºIronϵͳ²ð·Ö³öÀ´µÄºËÐÄÒµÎñ

ÕâÒ»²ãµÄ±»²â¶ÔÏóÊdzéÀëÁËÕ¹ÏÖ²ãµÄ´úÂë(ǰ¶ËÒÔ¼°²¿·Öºó¶ËÕ¹ÏÖ²ãÂß¼­)¡£

¼øÓÚÓÐÔ޵IJâÊÔÆð²½½ÏÍí(Ó¦¸ÃºÜ¶à´´Òµ¹«Ë¾¶¼ÓÐÀàËÆÇé¿ö)£¬²âÊÔ×ÊÔ´½ôȱ£¬´úÂ븲¸ÇÂʵ͵ÿÉÁ¯¡£ËùÒÔÎÒÃǵijõÆÚ×Ô¶¯»¯ÓÃÀý¸²¸Ç²ßÂÔÊÇÕâÑùµÄ£º

´ÓÀϵÄIronÓ¦ÓõÄAPI½Ó¿Ú×÷ΪҵÎñ³¡¾°¸²¸ÇµÄÇÐÈëµã

ÓÅÏȸ²¸ÇºËÐÄÒµÎñµÄ³¡¾°

ÅäºÏϵͳ²ð·Ö£¬ÓÅÏȸ²¸Ç²ð·Ö³öÈ¥µÄϵͳ

ÒѲð·Ö³öÈ¥µÄϵͳ£¬×öºÃϵͳ·þÎñ²ãµÄ²âÊÔ¸²¸Ç(È«Ãæ¸²¸Ç¸Ã·þÎñµÄ½Ó¿Ú)

²âÊÔÒÀÀµµÄÊý¾Ý×¼±¸ÓÅÏÈÑ¡Ôñµ÷ÓÃϵͳ½Ó¿ÚµÄ·½Ê½(ΪÁËÔö¼ÓÒµÎñ¸²¸ÇÃæ)

²âÊÔ·½Ê½Öð½¥´ÓºÚºÐÏò»ÒºÐ/°×ºÐת±ä

ÕâÑù×öµÄºÃ´¦ÊÇ£¬¿ÉÒÔ¿ìËÙÔö¼ÓÒµÎñ³¡¾°µÄ¸²¸ÇÃæ£¬Í¬Ê±ÊÂÏÈ×¼±¸ºÃµÄAPI½Ó¿ÚÓÃÀý£¬¿ÉÒÔ×÷Ϊϵͳ²ð·ÖºóµÄðÑ̲âÊÔÓÃÀý£¬Æðµ½ºËÐÄÀϹ¦ÄܵĻعé×÷ÓÃ(Ö»ÊÇ×öϵͳ²ð·Ö£¬ÒµÎñÂß¼­ÒÔ¼°¶ÔÕ¹Ïֲ㱩¶µÄ½Ó¿ÚÐÐΪ²»±ä)¡£±Ï¾¹ÔÚ×Ô¶¯»¯²âÊԵĹý³ÌÖУ¬×îŵľÍÊDZ仯£¬»á´øÀ´¸ü¶àµÄ½Å±¾Î¬»¤¹¤×÷£¬¶øÒÔÕâÖÖ·½Ê½¸²¸ÇµÄÓÃÀý£¬Ä¿Ç°À´¿´Î¬»¤³É±¾ºÜµÍ¡£

ÔÙ½éÉÜÒ»ÏÂÕâÒ»²ãµÄ³õÆÚÎÒÃÇÓÃÀýµÄ»ù±¾ÐÎ̬£º

רעÓÚÒµÎñ³¡¾°£¬ºÍUI½Å±¾Ò»Ö£¬Ö»Êǽű¾´Ó²Ù×÷Ò³Ãæ±ä³ÉÁ˵÷Óýӿڡ£Ïà¶ÔÓÚUI×Ô¶¯»¯£¬·þÎñ²ãµÄ½Ó¿Ú²âÊÔ¸ü¼ÓÎȶ¨£¬²âÊÔÓÃÀýÒ²¸üÈÝÒ×ά»¤¡£·þÎñ²ã½Ó¿Ú²âÊÔ¿ÉÒÔ¸ü¹Ø×¢ÓëϵͳÕûÌåµÄÂß¼­(ÒµÎñ)ÑéÖ¤£¬¶øUI×Ô¶¯»¯Ôò»áת±äÎªÒ³ÃæÕ¹Ê¾Âß¼­¼°½çÃæÇ°¶ËÓë·þÎñµÄ¼¯³ÉÑéÖ¤(Õâ¸öÔÚUI²ã»á½éÉÜ)¡£

ÔÝʱ²»×öϵͳ¼äµÄMock¡£¸ü¶àµÄ¿¼ÂÇϵͳ֮¼äµÄñîºÏºÍÒÀÀµ¡£

´î½¨MockServer½â¾öϵͳµÄÍⲿÒÀÀµ£¬Ö÷ÒªÊÇÀàËÆÓÚÖ§¸¶µÈµÚÈý·½ÏµÍ³(¹ØÓÚÎÒÃǵÄMockServer»áÓÐרÃŵÄÎÄÕ½éÉÜ)¡£

½áºÏÎÒÃǵĽ»Ò×ϵͳ¾Ù¸öÀý×Ó£º±ÈÈç½»Ò×ϵͳ»áÒÀÀµÓÚÉÌÆ·ºÍÓªÏú»î¶¯£¬ÄÇÎÒÃǵÄϵ¥³¡¾°µÄÓÃÀý»áÒÀ´Îµ÷ÓÃÉÌÆ·ºÍÓªÏúÕ⼸¸öϵͳµÄAPI¹¹ÔìÊý¾Ý×÷ΪÓÃÀýµÄǰÖÃÌõ¼þ£¬È»ºó°´ÕÕϵ¥µÄÒµÎñ³¡¾°µ÷Óý»Ò×ϵͳµÄϵ¥½Ó¿Ú£¬Ð£Ñé·µ»ØÖµÒÔ¼°Ð´ÈëDBµÄÊý¾Ý£¬×îºó×öºÃÊý¾ÝÇåÀíµÄ¹¤×÷¡£

ÎÒÃÇÔÚÕâÒ»²ãµÄ²âÊÔ¿ò¼ÜÑ¡ÔñÊÇ»ùÓÚ¹«Ë¾Í¨ÓõķþÎñ¿ò¼Ü(Nova)»ù´¡Ö®ÉϴµÄ£¬¼Ü¹¹Í¼ÈçÏ£º

BIT £º·þÎñ½Ó¿Ú¼¯³É²âÊÔ(Business Interface&Integration Test)

SUT£º±»²âϵͳ(System Under Test)

Validator£º¸÷¸öÒµÎñµÄÊý¾Ý¿â½á¹ûÑéÖ¤·â×°

Mock£ºÓÃÀýǰÖÃÌõ¼þÒÀÀµµÄÊý¾ÝMock·þÎñ

HttpClient£º¸ù¾ÝIRONϵͳµÄ½Ó¿Ú·â×°ÁË·µ»ØÍ¨ÓõÄRPCResult¶ÔÏó

Util£º³£Óù¤¾ßÀà·â×°

Biz£ºÔÚ´Ë·â×°ÁËËùÓб»²âϵͳ¶ÔÍⱩ¶µÄ½Ó¿Ú£¬¹©²âÊÔÓÃÀýÖ±½Óµ÷ÓÃ

TestCase£ºÎÒÃÇ·þÎñ½Ó¿Ú²âÊÔÓÖ·ÖΪSDV(System design Verify-ϵͳÉè¼ÆÑéÖ¤)ºÍSIT(System Integration Test-ϵͳ¼¯³É²âÊÔ)¡£°´ÕÕÉÏÃæÌáµ½µÄÓÃÀý¸²¸Ç²ßÂÔ£¬ÎÒÃÇÊÇÔÚϵͳ²ð·Ö֮ǰ£¬Ïȸù¾Ý¸ÃϵͳµÄÒµÎñ³¡¾°ºÍREST½Ó¿Ú²¹³äºËÐĵĽӿڼ¯³É²âÊÔÓÃÀý£¬ºóÐø¿ÉÒÔ×÷Ϊϵͳ²ð·ÖÖ®ºóµÄðÑÌÓÃÀý¡£ÔÚϵͳ²ð·ÖÖ®ºó£¬Ïêϸ²¹³ä¸ÃϵͳµÄ²âÊÔÓÃÀý£¬Á£¶È¸üϸ¡£

Facade£º½áºÏÁËNova¿ò¼Ü£¬¶ÔÍâ·¢²¼¸÷¸öÒµÎñµÄÊý¾Ý¹¹ÔìµÄREST½Ó¿Ú£¬Í¬Ê±¿ÉÒÔ×÷Ϊ²âÊÔÊý¾Ý¹¹Ôìϵͳ£¬¸¨Öú²âÊÔÈËÔ±µÄÊÖ¹¤²âÊÔ

ÕâÒ»²ãµÄ²âÊÔ¸²¸ÇÖ÷ÒªÊÇÓɲâÊÔÈËÔ±½øÐУ¬ÊDzâÊÔÈËÔ±´óÕ¹ÉíÊֵĵط½¡£

ÎÒÃDz»ÐèÒª·Ç³£ÏêϸµÄÁ˽â´úÂëµÄʵÏÖ£¬µ«ÊÇÎÒÃǵÄÓÃÀýÀï³ä·ÖÌåÏÖÁËÎÒÃǶÔϵͳµÄ½á¹¹£¬Ä£¿éÖ®¼ä¹ØÏµµÈµÄ³ä·ÖµÄÀí½â¡£

ºóÐøÎÒÃǶÔÓÚService²ã×Ô¶¯»¯²âÊÔµÄÍÆ½ø²ßÂÔÊÇ£º

Ö𽥷ḻSDV²ãµÄ²âÊÔÓÃÀý£¬²¢ÇÒÔÚÒ»¶¨³Ì¶ÈÉϽøÐÐÓÃÀýÒÀÀµµÄϵͳµÄ½âñ±ÈÈçÊý¾Ý¹¹Ôì´Óµ÷ÓýӿÚÏòÖ±½ÓÍùÊý¾Ý¿âдÈëÊý¾Ýת±ä¡£

Öð½¥Ï¸»¯²ð·ÖÒµÎñ³¡¾°£¬×öºÃÓÃÀýµÄ½âñî¡£

ÓÅÏÈ×ö³¡¾°¸²¸Ç£¬Ö®ºóÔÙ¿¼ÂÇ´úÂ븲¸Ç¡£

2.3 UI-Õ¹ÏÖ²âÊÔ

ÏÈÌáÒ»¸öÎÊÌ⣬¼ÈÈ»ÔÚÎÄÕ¿ªÆªÌáµ½ÁËUI×Ô¶¯»¯²âÊÔÓÐÕâô¶à±×¶Ë£¬ÕâôÀÍÃñÉ˲ƣ¬ÄÇôÊÇ·ñ»¹ÓбØÒª½øÐÐUI²ãµÄ×Ô¶¯»¯ÄØ£¿´ð°¸Êǿ϶¨µÄ£¬ÒòΪUI²ãÊÇÎÒÃǵIJúÆ·×îÖÕ³ÊÏÖ¸øÓû§µÄ¶«Î÷¡£ËùÒÔÔÚ×öºÃÉÏÃæÁ½²ãµÄ²âÊÔ¸²¸ÇÖ®ºó£¬²âÊÔÈËÔ±¿ÉÒÔͶÈë¸ü¶àµÄ¾«Á¦µ½UI²ãµÄ²âÊÔÉÏ¡£ÕýÊÇÒòΪ²âÊÔÈËÔ±»áÔÚUI²ãͶÈë½Ï´ó¾«Á¦£¬ÎÒÃÇ»¹ÊÇÓбØÒªÍ¨¹ý×Ô¶¯»¯À´°ïÖúÎÒÃǽâ·Å²¿·ÖÖØ¸´ÀͶ¯Á¦¡£

¸ù¾ÝÎÒÃǵÄUI²ã×Ô¶¯»¯Êµ¼ù£¬ÌáÒ»ÏÂÎÒÃǵÄUI²ã×Ô¶¯»¯¸²¸ÇµÄÔ­Ôò£º

ÄÜÔڵײã×ö×Ô¶¯»¯¸²¸Ç£¬¾Í¾¡Á¿²»ÔÚUI²ã×ö×Ô¶¯»¯¸²¸Ç

Ö»×ö×îºËÐĵŦÄܵÄ×Ô¶¯»¯¸²¸Ç£¬½Å±¾¿Éά»¤ÐÔ¾¡¿ÉÄÜÌá¸ß

ÎÒÃÇÌá¸ßUI½Å±¾¿Éά»¤ÐԵķ½·¨ÊÇ×ñÑ­Page ObjectÉè¼ÆÄ£Ê½¡£

Page Object

Page ObjectģʽÊÇΪÁ˱ÜÃâÔÚ²âÊÔ´úÂëÖÐÖ±½Ó²Ù×÷HTMLÔªËØ£¬¶ÔWebÒ³ÃæµÄ³éÏ󡣺ô¦ÓУº

¼õÉÙ²âÊÔ´úÂëµÄÈßÓà

Ìá¸ß²âÊÔ´úÂëµÄ¿É¶ÁÐÔºÍÎȶ¨ÐÔ

Ìá¸ß²âÊÔ´úÂëµÄ¿Éά»¤ÐÔ

Ò»¸ö¼òµ¥µÄÀý×Ó

ÒÔÓÐÔÞÊ×Ò³µÄµÇ¼²Ù×÷ΪÀý(Ruby)£º

class LoginPage
include HeaderNav

def login(account, password)
text_account.wait_until_present.set(account)
text_password.set(password)
button_login.wait_until_present.click
return MainPage.new(@browser)
end

private
def text_account
@browser.text_field(:name => 'account')
end
def text_password
@browser.text_field(:name => 'password')
end
def button_login
@browser.button(:class => 'login-btn')
end
end

public·½·¨¶ÔÍâ±©Â¶Ò³ÃæµÄ·þÎñ£¬¶ÔÓÚµÇÂ¼Ò³ÃæÀ´Ëµ¾ÍÊǵǼÐÐΪ

Ò³ÃæµÄUIϸ½ÚÉèΪprivate·½·¨¶ÔÍâÒþ²Ø

Ìø×ªµ½ÐµÄÒ³ÃæºóÔÚ´Ë·½·¨ÖÐreturnÖ®ºóµÄÒ³ÃæµÄ¶ÔÏ󣬱ÈÈçµÇ¼֮ºóÌø×ªµ½Ê×Ò³(MainPage)¡£ÉõÖÁÍ¬Ò»Ò³ÃæÒ²¿ÉÒÔ·µ»Øself×öÁ´Ê½²Ù×÷¡£

¸÷¸öÒ³ÃæµÄ¹«¹²²¿·Ö£¬ÈçÒ³Ãæ¶¥²¿µ¼º½£¬¿ÉÒÔ·â×°³ÉModule¹©¸÷¸öÒ³Ãæ¶ÔÏóÖ±½Óinclude

ÏÂÃæÎÒÃÇÀ´¿´¿´²âÊÔÓÃÀý£º

class TestLogin < Test::Unit::TestCase
def testLogin
@browser = Browser.new
@browser.goto 'youzan.com'
main_page = @browser.login_page.login('xx', '123')
#¶ÏÑÔ
end
end

ÕâÑù×îÖյIJâÊԽű¾³ÊÏֵľÍÊǵ¥´¿µÄÒ³Ãæ²Ù×÷Âß¼­£¬¸üÌù½üÎı¾²âÊÔÓÃÀý¡£

ÏÂÃæÀ´¿´Ò»ÏÂÎÒÃǵIJâÊÔ¿ò¼Ü£º

Base£ºÕâÒ»²ãºÍ´ó¶àÊýUI²âÊÔ¿ò¼Ü´óͬСÒ죬ʹÓõÄÊÇseleniumºÍwatir£¬ÓÃÀý¹ÜÀí·½Ãæ²¢Ã»ÓÐʹÓÃRubyÁìÓòÖËÊÖ¿ÉÈȵÄBDD¿ò¼Ücucumber£¬¶øÊÇ×î»ù±¾µÄµ¥Ôª²âÊÔ¿ò¼ÜMiniTest¡£Í¬Ê±»¹ÒýÈëÁËrubyµÄ¶àḬ̈߳ü£¬ÅäºÏUI½Å±¾µÄ²¢·¢Ö´ÐС£

Actir£ºÎÒÃÇ×Ô¼º·â×°µÄ²âÊÔ¿ò¼Ü

Initializer£º×Ô¶¯°´ÕÕÔ¼¶¨µÄ¹¤³Ì½á¹¹¼ÓÔØËùÓеÄrubyÎļþ£¬²¢¸ù¾ÝPageµÄÀàÃûºÍ·´Éä×Ô¶¯Éú³ÉÁËËùÓÐÒ³ÃæÀàµÄ¶ÔÏóʵÀý¡£

UA£º·â×°ºÃ²âÊÔÐèÒªµÄä¯ÀÀÆ÷User-Agent¡£

Executor£ºÓÃÀýÖ´ÐÐÆ÷¡£»ùÓÚrubyµÄ¶àḬ̈߳üÒÔ¼°selenium-grid£¬ÊµÏÖÁËËùÓÐÓÃÀýµÄµ÷¶È¼°·Ö²¼Ê½Ö´ÐУ¬¿ÉÒÔÒ»¶¨³Ì¶ÈÉÏ´ó´óÌáÉýUI½Å±¾µÄÖ´ÐÐЧÂÊ¡£Ö´ÐÐÆ÷»¹°üÀ¨ÁËʧ°ÜÓÃÀýÖØÊÔ»úÖÆ¡£

Util£º¹¤¾ßÀ࣬°üÀ¨ÁËÅäÖÃÎļþ¶Áд¡¢Êý¾ÝÇý¶¯µÈ¡£

Report£º¸ù¾ÝUI²âÊԽű¾Ö´ÐеÄ×îÖÕ½á¹û(ʧ°ÜÖØÊÔµÄÓÃÀýÒÔ×îÖյĽá¹ûΪ׼)×Ô¶¯Éú³ÉHTML¸ñʽµÄ²âÊÔ±¨¸æ¡£

Cli£º¸ù¾ÝActir¿ò¼ÜµÄÉÏÊö¹¦ÄÜ£¬·â×°³öµÄÃüÁîÐй¤¾ß£¬·½±ã³ÖÐø¼¯³É¡£

Project

Pages£º»ùÓÚPageObjectģʽ°ü×°³öµÄÒ³ÃæµÄ¶ÔÏó

Components£º¸÷¸öÒ³ÃæµÄ¹«ÓõIJ¿·Ö»òÕß²å¼þ£¬ÈçͼƬÉÏ´«¡¢µØÖ·Ñ¡ÔñµÈ¡£°ü×°³ÉModule¹©¸÷¸öÒ³Ãæ¶ÔÏóÐèҪʱֱ½Óinclude¡£

Item£º¸ù¾ÝϵͳҵÎñ³éÏó³öµÄ¶ÔÏó£¬Èç¶©µ¥¡¢ÓÅ»Ýȯ¡¢ÉÌÆ·µÈ

User£º¸ù¾ÝϵͳҵÎñ³éÏó³öµÄ½ÇÉ«¼°ÆäAction£¬ÈçÂò¼ÒµÄ¹ºÂòÐÐΪ¡¢Âò¼ÒµÄÍ˿·¢»õµÈ¡£

Ëæ×Å·þÎñ²ã×Ô¶¯»¯¸²¸ÇÂÊÔ½À´Ô½¸ß£¬UI²ãµÄ×Ô¶¯»¯¸²¸Ç»áÖð½¥×ª±äÎªÒ³ÃæÕ¹Ê¾Âß¼­¼°½çÃæÇ°¶ËÓë·þÎñµÄÕ¹Ïֲ㽻»¥µÄ¼¯³ÉÑéÖ¤¡£ÎÒÃǺóÐø¶ÔÓÚUI²ã×Ô¶¯»¯µÄÑݽø¹æ»®ÊÇÕâÑùµÄ£º

ÒÀÀµ»·¾³µÄMock£¬½â³ýUI½Å±¾µÄÍⲿÒÀÀµ

ÍêÉÆµÄÊý¾Ý×¼±¸£¬¿ÉÒÔͨ¹ýºó¶Ë·þÎñ½Ó¿ÚµÄmockʹUI×Ô¶¯»¯¸ü¹Ø×¢Ò³ÃæÒµÎñÂß¼­µÄ×Ô¶¯Ð£Ñé¡£

Ò³Ãæ½ØÍ¼±È¶ÔУÑéUIÑùʽ¡£

UI²ãµÄ×Ô¶¯»¯²âÊÔÒ²ÊÇÓɲâÊÔÈËÔ±¸ºÔð£¬ÔÚ¸²¸ÇÁ˺ËÐÄÒµÎñºËÐij¡¾°Ö®ºó£¬²»Ó¦¸ÃÔÚÕâ²ãµÄ×Ô¶¯»¯¸²¸ÇÉÏͶÈëÌ«¶àµÄ¾«Á¦ºÍ×ÊÔ´¡£¾ÍËãÎÒÃÇÔÚÒ»¶¨³Ì¶ÈÉÏÌá¸ßÁ˽ű¾µÄ¿Éά»¤ÐÔ£¬¿ÉÊDZϾ¹×Ô¶¯»¯²âÊÔ×îŵľÍÊDZ仯£¬¶øUI½çÃæÊDZ仯ƵÂÊ×î¸ßµÄÒ»²ã£¬ËùÒÔ»¹ÊǵÃͶÈëÒ»¶¨µÄ¾«Á¦Î¬»¤£¬²»ÊÇô£¿

3. ³ÖÐø¼¯³É

ÓÐÁËÉÏÊö¸÷²ãµÄ×Ô¶¯»¯²âÊԽű¾£¬ÏÂÃæÎÒÃÇÐèÒª½¨Á¢Æð³ÖÐø¼¯³ÉÌåϵ¡£ ³ÖÐø¼¯³ÉµÄÄ¿µÄ£º

Á÷³Ì×Ô¶¯»¯£¬Ìá¸ß¹¤×÷ЧÂÊ

×î´ó»¯×Ô¶¯»¯²âÊԽű¾µÄ¼ÛÖµ

ÎÒÃǵijÖÐø¼¯³ÉÊÇ»ùÓÚJenkins´î½¨µÄ£¬Ö÷ÒªµÄ¶¯×÷ÈçÏ£º

´úÂëÌá½»×Ô¶¯Ö´Ðе¥Ôª²âÊÔ

µ¥Ôª²âÊÔͨ¹ýºó×Ô¶¯²¿ÊðÕûÌåµÄ»·¾³

×Ô¶¯Ö´Ðм¯³É×Ô¶¯»¯²âÊÔ(Service/UI)

×Ô¶¯Éú³É¹¹½¨µÄÏêϸ²âÊÔ±¨¸æ£¬Í¬Ê±×Ô¶¯Í¨ÖªÏà¹ØÈËÔ±

³ÖÐø¼¯³ÉËùÐèµÄÖ§³ÅÓУº

²âÊÔ»·¾³×Ô¶¯²¿Êð½Å±¾

´úÂ븲¸ÇÂÊ×Ô¶¯ÊÕ¼¯

JavaÓ¦Óà »ùÓÚJaCoCo+Jenkins²å¼þµÄ·½Ê½

phpÓ¦Óà ͨXdebug+phpunitµÄ·½Ê½

²âÊÔ±¨¸æÏà¹Ø²å¼þ¼°½Å±¾

´úÂ뾲̬¼ì²éµÈ

¶ÔÓÚ³ÖÐø¼¯³ÉÎÒÃǺóÐøµÄÑݽø¹æ»®Êdz¯×ųÖÐø½»¸¶ºÍ³ÖÐø²¿ÊðµÄ·½ÏòŬÁ¦£¬ÔÚ³ÖÐø¼¯³ÉµÄ»ù´¡Ö®ÉÏ£¬×Ô¶¯½«´úÂ벿Êðµ½²âÊÔ»·¾³ÉÏ·½±ã²âÊÔÈËÔ±½øÐÐÊÖ¹¤²âÊÔ¡£

4. ×ܽá

±¾ÎÄÖ÷Òª´ÓÕûÌåÉϽéÉÜÁËÔÚÓÐÔÞSOA»¯µÄ½ø³ÌÖУ¬²âÊÔÍÆÐеķֲã×Ô¶¯»¯Êµ¼ù£¬ÒÔ¼°ºóÐøµÄ·¢Õ¹·½Ïò£¬Í¬Ê±¼òµ¥½éÉÜÁËÏà¹ØµÄ²âÊÔ¿ò¼Ü½á¹¹¡£ÏÂÃæÔÙ´ÓÕûÌ廨¹ËÒ»ÏÂÎÒÃǵķֲã×Ô¶¯»¯µÄÒªµã£º

µ¥Ôª²âÊÔ£º

ÓÅÏȼ¶×î¸ß

Á£¶È×îϸ¡¢¸²¸ÇÃæ×îÈ«

¿ª·¢ÊµÊ©

·þÎñ²âÊÔ

¶Ô²âÊÔÀ´ËµÓÅÏȼ¶×î¸ß

´ÓÒµÎñ³¡¾°µÄ½Ç¶ÈÇÐÈë

ϵͳÍⲿ½Ó¿Ú100%¸²¸Ç

¹Ø×¢ÏµÍ³¼äµÄÒÀÀµºÍµ÷ÓÃ

²âÊÔʵʩ

Ò³Ãæ²âÊÔ

ÓÅÏȼ¶Ïà¶Ô×îµÍ

Ö»±£Ö¤ºËÐŦÄܵÄ×Ô¶¯»¯¸²¸Ç£¬Ö»¹Ø×¢UI²ãµÄÎÊÌâ

ͨ¹ýÊý¾ÝmockµÄ·½Ê½¼õÉÙ¶Ôºǫ́Êý¾ÝµÄÒÀÀµ¡£

²âÊÔʵʩ

ÖÁÓÚ¸÷²ãͶÈëµÄ¾ßÌå±ÈÖØ£¬»¹ÊÇÐèÒª¸ù¾ÝÏîÄ¿µÄÐèÇóÀ´Êµ¼Ê¹æ»®¡£ÔÚ¡¶google ²âÊÔÖ®µÀ¡·Ò»Ê飬¶ÔÓÚgoogle²úÆ·£¬70%µÄͶÈëΪµ¥Ôª²âÊÔ£¬20%Ϊ¼¯³É¡¢½Ó¿Ú²âÊÔ£¬10% ΪUI²ãµÄ×Ô¶¯»¯²âÊÔ¡£

×îºóÔÙÌáһЩ¹Ûµã°É£º

Ô½µ×²ãµÄ×Ô¶¯»¯£¬ÊÕÒæÔ½¸ß

ÖÊÁ¿²»ÊDzâÊÔÈËÔ±Ò»¸öÈ˵ÄÊÂÇé

×Ô¶¯»¯²âÊÔµÄÄ¿µÄ²»ÊÇΪÁ˼õÉÙÊÖ¹¤²âÊÔ£¬¶øÊÇΪÁ˲âÊÔÈËÔ±×ö¸ü¶à¸üÓÐÒâÒåµÄÊÖ¹¤²âÊÔ

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

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

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

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