ããã«ã¡ã¯ãHabrïŒ ç§ã®ååã¯Vitaliy Kotovã§ããQAéšéã®Badooã§åããŠããããã¹ãã®èªååãããã³å Žåã«ãã£ãŠã¯èªååãã¹ãã®èªååãè¡ã£ãŠããŸãã
ä»æ¥ã¯ãBadooã§Seleniumãã¹ããç°¡åã«æäœã§ããããã«ããæ¹æ³ãæåãã¹ãéšéã®æ åœè ã«ããããæäœããæ¹æ³ãããã³ããããåŸãå©çã«ã€ããŠã話ããŸãã èšäºãèªãã åŸãå段éã®é¢åããè©äŸ¡ãããããããç§ãã¡ã®çµéšãéšåçã«æ¡çšããããšæãã§ãããã
ã¯ããã«
æéãçµã€ã«ã€ããŠãèªåãã¹ãã®æ°ã¯éåžžã«å°è±¡çã«ãªããèªååæ©èœã®æ°ãäžå®ã§ããã¹ãã®æ°ã絶ããå¢å ããŠããã·ã¹ãã ã¯éå¹ççã§ãããšç解ããããã«ãªããŸãã
Badooã§ã¯ããµãŒããŒåŽãšãã¹ã¯ãããWebã1æ¥ã«2åãªãªãŒã¹ãããŸãã ç§ã®ååã®ã€ãªã€ã»ã¯ãã£ããã¯ããã®èšäºã«ã€ããŠã2幎éã1æ¥4幎éçãæ®ãæ¹æ³ããšããèšäºã§éåžžã«è©³çŽ°ã«ããããŠèå³æ·±ã話ãããŸããã ãã®èšäºã®ãããªãäŸãç解ããããããããã«ããããããç解ããããšããå§ãããŸãã
èªåãã¹ãã®ã«ãã¬ããžãé«ãã»ã©ããªãªãŒã¹ããã»ã¹äžã«ãã®æ°ã倧ãã圱é¿ãããããšã¯æããã§ãã ã©ããã§æ©èœãå€æŽããã©ããã§ã¬ã€ã¢ãŠããå€æŽãããã±ãŒã¿ãŒãå¿ èŠãªèŠçŽ ã®æ€çŽ¢ãåæ¢ããã©ããã§A / Bãã¹ãããªã³ã«ããäžéšã®ãŠãŒã¶ãŒã®ããžãã¹ããžãã¯ãç°ãªãããã«ãªããŸããã
ããæç¹ã§ããªãªãŒã¹åŸã®ãã¹ãã®ç·šéã«ã¯ãèªååã次ã®ãªãªãŒã¹ãŸã§ã«ã»ãšãã©ãã¹ãŠã®æéãè²»ãããšããç¶æ³ããããŸããã ãããŠåã§ã æ°ãããã¹ããäœæããã¢ãŒããã¯ãã£ããµããŒãããã³éçºããããã€ãã®æ°ããåé¡ã解決ããæéã¯ãããŸããã§ããã ãã®ãããªç¶æ³ã§äœããã¹ããïŒ é ã«æµ®ãã¶æåã®è§£æ±ºçã¯ãå¥ã®èªååãšã³ãžãã¢ãéãããšã§ãã ãã ãããã®ãœãªã¥ãŒã·ã§ã³ã«ã¯å€§ããªãã€ãã¹ç¹ããããŸãããã¹ããåã³2åã«ãªã£ãå Žåãå¥ã®èªååãšã³ãžãã¢ãåã³éçšããããåŸãªããªããŸãã
ãããã£ãŠãç§ãã¡ã¯å¥ã®éãæ©ã¿ãæåãã¹ãéšéã®äººã«ãã¹ããè¡ãããã«æããããšã決å®ããŸããã圌ãã®ã¿ã¹ã¯ã§ã¯ãªãªãŒã¹åã«ãã¹ããç¬ç«ããŠç·šéããããšã«åæããŸããã ãã®ãœãªã¥ãŒã·ã§ã³ã®å©ç¹ã¯äœã§ããïŒ
ãŸãããã¹ã¿ãŒãèªåãã¹ããä¿®æ£ã§ããå Žåããã¹ã¿ãŒã¯ãã®èœäžã®çç±ãããã«ç解ããããšãã§ããŸãã ãããã£ãŠããã¹ãã®å¯èœãªéãæ©ã段éã§ãã°ãèŠã€ããå¯èœæ§ãé«ããªããŸãã ãã®å Žåãåé¡ãè¿ éãã€ç°¡åã«ä¿®æ£ã§ãã èšå®ãããææ¥ã«ã¿ã¹ã¯ãå®çšŒåã«ç§»è¡ãããããããã¯è¯ãããšã§ãã
次ã«ããã¹ã¯ãããWebèªåãã¹ãã¯ã補åèªäœãšåæ§ã«PHPã§èšè¿°ãããŠããŸãã ãããã£ãŠãèªåãã¹ãã³ãŒãã䜿çšããŠããã¹ã¿ãŒã¯ãã®ããã°ã©ãã³ã°èšèªã§äœæ¥ããã¹ãã«ãéçºããdiffã¿ã¹ã¯ãç解ãããã¹ãäžã«äœãè¡ãããæåã«ã©ããèŠãã¹ãããç解ããããšã容æã«ãªããŸãã
第äžã«ããã圌ãããã¹ããæ¯é ãããªãã圌ãã¯æã æ°ãããã®ãæžãã®ã«æéãããããããããŸããã ããã¯ãã¹ã¿ãŒèªèº«ã«ãšã£ãŠèå³æ·±ããã®ã§ãããã«ãã¬ããžã«åœ¹ç«ã¡ãŸãã
ãããŠæåŸã«ããã§ã«ç解ããããã«ãèªååãšã³ãžãã¢ã¯ãã¢ãŒããã¯ãã£ã®åé¡ã解決ãããã¹ããé«éåãããã¹ããããç°¡åã«ç解ããããããããã«ããå€ãã®æéãè²»ããããšãã§ããŸãã
ãã©ã¹ãæŽçãããŠããŸãã 次ã«ãçæãäœã§ããããèããŠã¿ãŸãããã
QAãšã³ãžãã¢ã¯æ©èœã®ãã§ãã¯ã«å ããŠãã¹ããä¿®æ£ããå¿ èŠããããããã¿ã¹ã¯ã®ãã¹ãã«ã¯æéãããããŸãã äžæ¹ã§ãããã¯ç¢ºãã«ããã§ãã äžæ¹ãBadooã®å°ããªã¿ã¹ã¯ã¯ããã¹ãŠãŸãã¯ã»ãšãã©ãã¹ãŠã圱é¿ãåãã倧èŠæš¡ãªãªãã¡ã¯ã¿ãªã³ã°ãããåªå ãããããšãç解ãã䟡å€ããããŸãã QAéšéã®è²¬ä»»è ã§ããã€ãªã€ã»ã¢ãžã§ãšãã¯ã ãéçºã¯ãŒã¯ãããŒãã¿ã¹ã¯ã®å解ã«ã©ã®ããã«åœ±é¿ãããããšããèšäºã§ãããããªããªã®ããã©ããã£ãŠããã«è³ã£ãã®ãã«ã€ããŠããèªããŸããã ãããã£ãŠãä¿®æ£ã¯æ°è¡ã®ã³ãŒãã«æžããå¿ èŠããããããã«ã¯ããã»ã©æéã¯ããããŸããã
å€æ°ã®ãã¹ããå£ãã倧èŠæš¡ãªã¿ã¹ã¯ã§ã¯ãå€ãã®ãã°ãçºçããå¯èœæ§ããããŸãã ãã®ãããªãªãã¡ã¯ã¿ãªã³ã°åŸã®ãã¹ãã®ä¿®åŸ©ããã»ã¹ã§ãæåãã¹ãäžã«èŠéããããã°ãååšããç¶æ³ã«äœåºŠãééããŸããã ãããŠãç§ãã¡ãèŠããŠããããã«ããã°ãèŠã€ããã®ãæ©ããã°æ©ãã»ã©ããããä¿®æ£ããã®ã¯ç°¡åã§ãã
ãããã£ãŠãå°ããªããšã¯ãèªåãã¹ããäœæããçµéšã®ãªã人ããã¹ããç解ã§ããããã«ããã¹ããé©åã«ããããšã§ãã
ãªãã¡ã¯ã¿ãªã³ã°ã®ãã¹ã
æåã®æ®µéã¯ããªãéå±ã§ããã ãã¹ãã®ãªãã¡ã¯ã¿ãªã³ã°ãéå§ããããŒãžã®ãã¹ãã®ããžãã¯ããã¹ãèªäœã®ããžãã¯ããæ倧éã«åé¢ããããšããããããããžã§ã¯ãã®å€èŠ³ãå€æŽãããšãã«ããã¹ãèªäœã®ã³ãŒãã«è§Šããããšãªãè€æ°ã®ãã±ãŒã¿ãŒå®æ°ãä¿®æ£ããã®ã«ååã§ããã ãã®çµæã PageObjectã®ãããªã¯ã©ã¹ãååŸããŸãã ã ããããã¯ã1ã€ã®ããŒãžãŸãã¯1ã€ã®ã³ã³ããŒãã³ãã«é¢é£ããèŠçŽ ãããã³ããããšã®çžäºäœçšã®æ¹æ³ïŒèŠçŽ ã®åŸ æ©ãèŠçŽ ã®æ°ã®ã«ãŠã³ããã¯ãªãã¯ãªã©ïŒã説æããŸãã ãã®ãããªã¯ã©ã¹ã«ã¯ã¢ãµãŒãã¿ã€ãã®è«çãã§ãã¯ã¯ãªããUIãšã®çžäºäœçšã®ã¿ãå¿ èŠã§ããããšã«åæããŸããã
ããã«ãããéåžžã«ç°¡åã«èªã¿åãããã¹ããåŸãããŸããã
$Navigator->openSignInPage(); $SignInPage->enterEmail($email); $SignInPage->enterPassword($password); $SignInPage->submitForm(); $Navigator->waitForAuthPage();
ãããŠã次ã®ãããªã·ã³ãã«ãªUIã¯ã©ã¹ïŒ
lass SignInPage extends Api { const INPUT_EMAIL = 'input.email'; const INPUT_PASSWORD = 'input.password'; const INPUT_SUBMIT_BUTTON = 'button[type=âsubmitâ]'; public function enterEmail($email) { $this->driver->element(self::INPUT_EMAIL)->type($email); } public function enterPassword($password) { $this->driver->element(self::INPUT_PASSWORD)->type($password); } public function submitForm() { $this->driver->element(self::INPUT_SUBMIT_BUTTON)->click(); } }
ããã§ããã¹ã¯ãŒãã®ãã±ãŒã¿ãŒãå€æŽãããç®çã®å ¥åãã£ãŒã«ããèŠã€ãããã«ãã¹ããäžæããå Žåããããä¿®æ£ããæ¹æ³ãæ確ã«ãªããŸãã ããã«ãenterPasswordïŒïŒã¡ãœãããè€æ°ã®ãã¹ãã§äœ¿çšãããŠããå Žåã察å¿ãããã±ãŒã¿ãŒãå€æŽãããšããã«ãã¹ãŠãä¿®æ£ãããŸãã
ãã®ãã©ãŒã ã§ã¯ããã¹ãã¯ãã§ã«äººã«èŠããããšãã§ããŸãã ãããã¯èªã¿ããããPHPã§ã³ãŒããèšè¿°ããçµéšããªããŠãæäœã§ããŸãã åºæ¬ã説æããã«ã¯ååã§ãã ãããè¡ãããã«ãç¬ç«ãããœãªã¥ãŒã·ã§ã³ã®äŸãšå²ãåœãŠãå«ãäžé£ã®ãã¬ãŒãã³ã°ã»ãããŒãéå¬ããŸããã
ãã¬ãŒãã³ã°
ãã¬ãŒãã³ã°ã¯ãåçŽãªãã®ããè€éãªãã®ãŸã§åŸã ã«è¡ãããŸããã æåã®ã¬ãã¹ã³ã®åŸãã¿ã¹ã¯ã¯å£ãããã¹ããä¿®æ£ããããšã§ãããããã§ã¯ããã€ãã®ãã±ãŒã¿ãŒãä¿®æ£ããå¿ èŠããããŸããã 2çªç®ã®ã¬ãã¹ã³ã®åŸãUIã¯ã©ã¹ã«ããã€ãã®ã¡ãœãããè¿œå ãããã¹ãã§ãããã䜿çšããããšã«ãããæ¢åã®ãã¹ããæ¡åŒµããå¿ èŠããããŸããã 3åç®ä»¥éã圌ãã¯ãã§ã«èªåã§æ°ãããã¹ããæžãããšãã§ããŸããã
ãããã®ã»ãããŒã«åºã¥ããŠããã¹ããé©åã«åŠçããæ¹æ³ãšãããã»ã¹ã§çºçããå¯èœæ§ã®ããèœãšãç©Žã«é¢ããèšäºã瀟å Wikiã«æžã蟌ãŸããŸããã ããå¯ãããã質åãžã®ãã¹ããã©ã¯ãã£ã¹ãšåçãåéããŸããããã±ãŒã¿ãŒãæ£ããæ§æããæ¹æ³ããã®å Žåã¯ãã¹ãçšã«æ°ããã¯ã©ã¹ãäœæãã䟡å€ããããæ¢åã®ãã¹ãã«ãã¹ããè¿œå ãããæ°ããUIã¯ã©ã¹ãäœæããã¿ã€ãã³ã°ãå®æ°ã®æ£ããååä»ãæ¹æ³ãã±ãŒã¿ãŒãªã©ã
çŸåšãæ°ããQAãšã³ãžãã¢ãäŒç€Ÿã«æ¥ããšãWikiããèªåãã¹ãã®æäœã«æ £ããå¿ èŠã®ããèšäºã®ãªã¹ããåãåããŸãã ãŸãããã¹ãããã»ã¹ã§èœäžãã¹ãã«æåã«ééãããšãã圌ã¯ãã§ã«å®å šã«æŠè£ ããŠãããäœããã¹ãããç¥ã£ãŠããŸãã ãã¡ããã圌ã¯ãã€ã§ãç§ãä»ã®ãªãŒãããªã¹ãã«è¿ã¥ããŠãäœããæ確ã«ãããå°ãããããããšãã§ããŸãããããã¯æ£åžžãªããšã§ãã
ç§ãã¡ã¯ãQAãšã³ãžãã¢ãæ°ãããã¹ãã®äœæãå«ãèªåãã¹ãã§äœæ¥ããèœåãã瀟å ã®æé·ã®èŠä»¶ã®1ã€ã§ããããšã§åæããŠããŸãã éçºãããå ŽåïŒãããŠèª°ãããããªãã®ã§ããããïŒïŒãèªååã«ã察åŠããªããã°ãªããªããšããäºå®ã«åããå¿ èŠããããŸãã
Teamcity
Seleniumãã¹ãã¯ããããžã§ã¯ãã³ãŒããšåããªããžããªã«ãããŸãã æåã®Seleniumãã¹ãã®äœæãå§ãããšããPHPUnitãšããã€ãã®åäœãã¹ããæ¢ã«ãããŸããã ãã¯ãããžãŒãäœæããªãããã«ãåãPHPUnitã䜿çšããŠSeleniumãã¹ããå®è¡ãããŠããããã¹ãã®é£ã®ãã©ã«ããŒã«é 眮ããããšã«ããŸããã èªååãšã³ãžãã¢ã®ã¿ããã¹ãã«é¢äžããŠããŸãããããªãªãŒã¹åŸã«è¡ã£ãããããã¹ã¿ãŒã§ãã¹ããããã«å€æŽã§ããŸããã ãããŠãããã«å¿ããŠã圌ãã¯Masterãšãšãã«TeamCityã§ããã¹ããéå§ããŸããã
圌ããã¿ã¹ã¯ã§ãã¹ãã䜿ãå§ãããšããç·šéã¯ã¿ã¹ã¯ã³ãŒããååšããåããã©ã³ãã«å¯ŸããŠè¡ãããããšã«åæããŸããã 第äžã«ãããã«ããããã¹ãã®ç·šéå 容ãã¿ã¹ã¯èªäœãšãã¹ã¿ãŒã«åæã«é ä¿¡ããã第äºã«ãã¿ã¹ã¯ããªãªãŒã¹ããããŒã«ããã¯ãããå Žåãè¿œå ã®ã¢ã¯ã·ã§ã³ãªãã§ç·šéå 容ãããŒã«ããã¯ãããŸããã ãã®çµæããªãªãŒã¹ãã©ã³ãããTeamCityã§ãã¹ãã®å®è¡ãéå§ããŸããã
ãããã£ãŠãèªååããŒã«ããªãªãŒã¹ã®ãã¹ãã®ã¿ãç£èŠã§ããåæã«æ°ããã¿ã¹ã¯ããã¹ãã®ä¿®æ£ãšãšãã«ããã«ãªãªãŒã¹ãããã·ã¹ãã ãååŸããŸããã ãã®ãããªã·ã¹ãã ã§ã¯ãç涯ã«ãããã°ãªãŒã³ãã«ããæäŸãããŸãã :)
ããããããã ãã§ã¯ãããŸããã
diffã¿ã¹ã¯ã§ãã¹ããå®è¡ãã
åã¿ã¹ã¯ã®ãã¹ãŠã®ãã¹ããå®è¡ããããšã¯ãæéãšãªãœãŒã¹ã®äž¡æ¹ã§éåžžã«é«äŸ¡ã§ãã åãã¹ãã«ã¯ãã©ãŠã¶ãŒãæäŸããå¿ èŠãããããã匷åãªSeleniumãã¡ãŒã ããµããŒãããå¿ èŠããããŸãã ãŸãããããžã§ã¯ãããããã€ãããå€æ°ã®èªåãã¹ãã䞊è¡ããŠå®è¡ããã匷åãªãµãŒããŒãå¿ èŠã§ãã ãããŠãããã¯é«äŸ¡ãªåã³ã§ãã
ã©ã®ã¿ã¹ã¯ãå®è¡ãã䟡å€ãããããã¿ã¹ã¯ããšã«åçã«èšç®ããããšã¯ã¯ãŒã«ã ãšå€æããŸããã ãããè¡ãããã«ãåãã¹ãã«ãã§ãã¯å¯Ÿè±¡ã®æ©èœãŸãã¯ããŒãžã«é¢é£ä»ããããã°ã«ãŒãã®ã»ãããå²ãåœãŠãŸããïŒæ€çŽ¢ããããã¡ã€ã«ãç»é²ããã£ãããããã³ã°ã«ãŒããªãã§ãã¹ãããã£ãããã察å¿ããéç¥ããªãŒãããã³ã«æžã蟌ãã¹ã¯ãªãããèšè¿°ããŸããã
次ã«ãã¿ã¹ã¯ã§ãã¹ããå®è¡ããåã«ãGitã䜿çšããŠå€æŽããããã¡ã€ã«ãåæããæ¹æ³ãåŠã³ãŸããã ã»ãšãã©ã®å Žåããããã¯é¢é£ããæ©èœã«äœããã®åœ¢ã§äŒŒãŠããããŸãã¯å¯Ÿå¿ãããã©ã«ããŒã«ãããšãåŒã°ããŸãïŒ
-
/js/search/common.js
-
/View/Chat/GetList.php
-
/tpls/profile/about_me_block.tpl
ã©ã®ã°ã«ãŒãã®ååãšãäžèŽããªããã¡ã€ã«ã®ã«ãŒã«ãããã€ãèãåºããŸããã ããšãã°ããã£ããã§ã¯ãªããã¡ãã»ãŒãžæ©èœãšåŒã°ãããã¡ã€ã«ã®äžéšããããŸãã ãšã€ãªã¢ã¹ã®ããããäœæããmessagerãšãããã¡ã€ã«ãèŠã€ãããããã£ããã°ã«ãŒãã®ãã¹ããå®è¡ããŸãããã¡ã€ã«ãã³ã¢ãã©ã«ããŒã®ã©ããã«ããå Žåã¯ããã¹ãã»ããå šäœãå®è¡ãã䟡å€ããããšå€æããŸãã
ãã¡ããããã®ãããªåé¡ã解決ããããã®æ®éçãªã¢ã«ãŽãªãºã ã¯ååšããŸãã-ããã¯ã©ã¹ã®å€æŽãæãäºæããªãå Žæã§ãããžã§ã¯ãã«åœ±é¿ãäžããå¯èœæ§ã¯åžžã«ãããŸãã ããããããã¯æãããããšã§ã¯ãããŸãããã¹ããŒãžã³ã°ã§ã¯ãäžé£ã®ãã¹ããå®è¡ããåé¡ã«å¿ ãæ°ã¥ãããã«ããããã§ãã ããã«ã次ååæ§ã®åé¡ãèŠéããªãããã®ã«ãŒã«ãèãåºããäºåã«çºèŠããŸãã
äžå®å®ã§å£ãããã¹ã
æåŸã«ããã¹ãããšã¯ãäžå®å®ã§å£ãããã¹ãã«å¯ŸåŠããããšã§ãã 倱æãããã¹ããäœçŸåãããã®ã§ãã©ã®ãã¹ãããã¹ã¿ãŒã§å£ããŠããã®ããã±ãŒã¹ã®50ïŒ ã§åæ Œããããã«ã©ã®ãã¹ãã倱æããã®ããææ¡ããå¿ èŠã¯ãããŸããã ãã¹ãã«èªä¿¡ããªãå Žåããã¹ã¿ãŒã¯ãããã泚ææ·±ã調æ»ãããããã«ç·šéããŸãã
倧ããªã¿ã¹ã¯ããªãªãŒã¹ãããšãããŠãŒã¶ãŒã«ã¯èŠããªãããã€ãã®å°ããªãã°ïŒããšãã°ãæ©èœã«åœ±é¿ããªãJSãšã©ãŒïŒãèš±å¯ãããæ¬çªç°å¢ãžã®éèŠãªå€æŽã®ã¬ã€ã¢ãŠããé ãããããšãªã次ã®ãªãªãŒã¹ã§ä¿®æ£ã§ããŸãã
ãããŠããã¹ã¿ãŒã«ââåæã§ããã°ããã¹ãã§ã¯ããã«é£ãããªããŸãã圌ãã¯æ£çŽã«åé¡ãèŠã€ããŠã¯ã©ãã·ã¥ããŸãã ããã«ããã°ããã¹ã¿ãŒã«ããå Žåããã¹ãã¯ä»ã®ã¿ã¹ã¯ã«è©²åœãå§ããŸãããããã¯éåžžã«æªãããšã§ãã
ãã®ãããªãã¹ãã®ããã«ã次ã®ã·ã¹ãã ãæãã€ããŸããã èœäžãã¹ãã®ååãšåé¡ãä¿®æ£ãããã±ãããæå®ã§ããMySQLãã¬ãŒããå ¥æããŸããã ãã¹ãã¯å®è¡åã«ãã®ãªã¹ããååŸããåãã¹ãã¯ãã®ãªã¹ãå ã§èªèº«ãæ€çŽ¢ããŸãã èŠã€ãã£ãå Žåããã®ãããªãã±ããã®æºåãã§ããŠããªãããšã瀺ãã¡ãã»ãŒãžã§SkippedãšããŒã¯ããããã¹ããå®è¡ããŠãæå³ããããŸããã
ãã°ãã©ãã«ãŒãšããŠãJIRAã䜿çšããŸãã 䞊è¡ããŠãã¹ã¯ãªããã¯cronã«ãã£ãŠè¿œè·¡ããã JIRA APIãä»ããŠãã®ããŒãã«ãããã±ããã¹ããŒã¿ã¹ããã§ãã¯ããŸã ã ãã±ãããã¯ããŒãºç¶æ ã«ãªã£ãå Žåãã¬ã³ãŒããåé€ãããã¹ããèªåçã«åéãããŸãã
ãã®çµæãå£ãããã¹ãã¯å®è¡çµæããé€å€ãããŸãã äžæ¹ã§ã¯ãããã¯è¯ãããšã§ã-圌ãã¯ãã¯ãå®è¡ã«æéãè²»ãããããã®å®è¡ã®çµæããè©°ãŸãããŸãããã äžæ¹ããã¹ã¿ãŒã¯SeleniumManagerãåžžã«éããŠãã©ã®ãã¹ããç¡å¹ã«ãªã£ãŠãããã確èªããå¿ èŠããããããå¿ èŠã«å¿ããŠæåã§ã±ãŒã¹ã確èªããŠãã ããã ãã®ããããã®æ©èœãä¹±çšããªãããã«ããŠããŸããç¡å¹ãªãã¹ãã1ã€ãŸãã¯2ã€ä»¥äžããããšã¯ã»ãšãã©ãããŸããã
äžå®å®ãªãã¹ãã®åé¡ã«æ»ããŸãããã ãã®èšäºã¯UIãã¹ãã«é¢ãããã®ãªã®ã§ããããã¯é«ã¬ãã«ã®ãã¹ãã§ããçµ±åãšã·ã¹ãã ã§ããããšãç解ããå¿ èŠããããŸãã ãã®ãããªãã¹ãã¯ãå®çŸ©äžãäžå®å®ã§ãããããã¯æ£åžžã§ãã ãã ãããããã®äžå®å®æ§ãææ¡ããæããã«ãã±ãŒã¹å ãã«ãããã¹ãããããããåé¢ããããšèããŠããŸãã
ããªãåã«ããã¹ãŠã®ãã¹ãã®éå§ãç¹å¥ãªMySQLããŒãã«ã«èšé²ãã䟡å€ããããšããçµè«ã«éããŸããã ãã¹ãã®ååãå®è¡æéãçµæããã®ã¿ã¹ã¯ãå®è¡ãããã¿ã¹ã¯ãŸãã¯ã¹ããŒãžã³ã°ãªã©ã ãŸããçµ±èšã®ããã«ãããå¿ èŠã§ãã 次ã«ããã®ããŒãã«ã¯ããã¹ããå®è¡ããã³ç£èŠããããã®Webã€ã³ã¿ãŒãã§ã€ã¹ã§ããSeleniumManagerã§äœ¿çšãããŸãã 圌ã«ã€ããŠãã€ãå¥ã®èšäºãæžããŸãã :)
äžèšã®ãã£ãŒã«ãã«å ããŠãæ°ããã³ãŒããããŒãã«ã«è¿œå ãããŸãã-ãšã©ãŒã³ãŒãã ãã®ã³ãŒãã¯ãèœãšããããã¹ãã®èšŒè·¡ã«åºã¥ããŠçæãããŸãã ããšãã°ãã¿ã¹ã¯Aã§ã¯ããã¹ãã¯74è¡ç®ã§è¡ããã85è¡ç®ã§ãUIã¯ã©ã¹ã¯15è¡ç®ã§åŒã³åºãããŸããããªããã®æ å ±ãæ¥çããŠèšè¿°ããªãã®ã§ããïŒ748515ïŒ æ¬¡åããã¹ããä»ã®ã¿ã¹ã¯Bã«è©²åœããå ŽåãçŸåšã®ãšã©ãŒã®ã³ãŒããååŸããããŒãã«ããã®åçŽãªéžæã§ã以åã«åæ§ã®ã¯ã©ãã·ã¥ããã£ããã©ããã確èªããŸãã ååšããå Žåããã¹ãã¯æããã«äžå®å®ã§ãããããã«å¿ããŠæ³šæããããšãã§ããŸãã
ãã¡ããããã¹ãã¯æã å€æŽããããã¹ãã®å¯Ÿè±¡ãšãªãè¡ãå€æŽãããŸãã ãããŠããã°ããã®éãå€ãééãã¯æ°ãããšèŠãªãããŸãã ãã ããäžæ¹ã§ãããã¯ããã»ã©é »ç¹ã«ã¯çºçããŸãããèŠããŠããããã«ããã¹ãããžãã¯ã¯UIããžãã¯ããåé¢ãããŠãããã»ãšãã©å€æŽãããªãããã§ãã ãã®ãããã»ãšãã©ã®äžå®å®ãªãã¹ãã¯ãå®éã«ãã£ããããŠã¿ã°ä»ãããŸãã SeleniumManagerã«ã¯ãæ©èœãæ©èœããããšã確èªããããã«ãéžæããã¿ã¹ã¯ã®äžå®å®ãªãã¹ããåèµ·åã§ããã€ã³ã¿ãŒãã§ã€ã¹ããããŸãã
ãŸãšã
ç§ã¯è©³çŽ°ãè©Šã¿ãŸããããããŸãã«ã现å¿ã®æ³šæãæããã«ããéžã°ãããã°ã«ãŒãã ããèªåãã¹ãã«åŸäºããŠãããã€ã³ãAããããã¹ãã誰ã«ãšã£ãŠã䟿å©ã§ç解ãããããã€ã³ãBã«è³ããŸã§ã®çµè·¯ã説æããŸããã
ãã®ãã¹ã¯ã次ã®æé ã§æ§æãããŠããŸããã
- ãã¹ãŠã®ãã¹ããèšè¿°ããç¹å¥ãªã¢ãŒããã¯ãã£ã®éçºã å€ããã¹ãã®ãªãã¡ã¯ã¿ãªã³ã°ã
- æ°å ¥ç€Ÿå¡åãã®ãã¬ãŒãã³ã°ã»ãããŒãšããã¥ã¡ã³ãã®äœæã
- èªåãã¹ãã®æé©åïŒTeamCityã§ã®ãã¹ãèµ·åã®ãããŒã®å€æŽãç¹å®ã®ã¿ã¹ã¯ã®diffãã¹ãã®å®è¡ã
- ãã¹ãå®è¡ã®çµæã®ç°¡çŽ åïŒãã¹ã¿ãŒã¯ããŸããããããèªåã®ã¿ã¹ã¯ã«é¢é£ããåãããã¹ãã確èªããå¿ èŠããããŸãã
ãã®çµæãæåãã¹ã¿ãŒãSeleniumãã¹ããéåžžã«å¿«é©ã«æäœã§ããã·ã¹ãã ã«ãªããŸããã 圌ãã¯ã©ã®ããã«åäœããã©ã®ããã«å®è¡ããããç解ããããããç·šéããæ¹æ³ãç¥ã£ãŠãããå¿ èŠã«å¿ããŠæ°ãããã®ãæžãããšãã§ããŸãã
åæã«ãèªååãšã³ãžãã¢ã¯ãäžå®å®ãªãã¹ãããã£ããããŠç·šéããããã®ããæ£ç¢ºãªã·ã¹ãã ãäœæãããã¹ããå®è¡ããŠå®è¡çµæã解éããããã®äŸ¿å©ãªã€ã³ã¿ãŒãã§ã€ã¹ãäœæãããã¹ãèªäœãã¹ããŒãã¢ããããŠæ¹åããïŒè€éãªã¿ã¹ã¯ãè¡ãæ©äŒãšæéãåŸãŸããã
ããŒã«ãæ¹åããŠäœ¿ãããããããšãã幞ããã«ãªããŸãã ãæž èŽããããšãããããŸããïŒ