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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
ʹÓà Selenium ʵÏÖ»ùÓÚ Web µÄ×Ô¶¯»¯²âÊÔ
 
À´Ô´£ºjibm ·¢²¼ÓÚ£º 2017-7-18
  3677  次浏览      27
 

Selenium ¼°ÆäʵÏÖÔ­Àí

Selenium µÄÖ÷Òª¹¦ÄܰüÀ¨£º

1£©²âÊÔÓëä¯ÀÀÆ÷µÄ¼æÈÝÐÔ£º²âÊÔÓ¦ÓóÌÐòÄÜ·ñ¼æÈݹ¤×÷ÔÚ²»Í¬ä¯ÀÀÆ÷ºÍ²Ù×÷ϵͳ֮ÉÏ¡£

2£©²âÊÔϵͳ¹¦ÄÜ£ºÂ¼ÖÆÓÃÀý×Ô¶¯Éú³É²âÊԽű¾£¬ÓÃÓڻع鹦ÄܲâÊÔ»òÕßϵͳÓÃÀý˵Ã÷¡£

¼ò¶øÑÔÖ®£¬Selenium ¾ÍÊÇÒ»¿î¿ÉÒÔÂ¼ÖÆÓû§²Ù×÷£¬°ïÖú Web ²âÊÔÈËÔ±¼ò»¯Öظ´ÀͶ¯µÄ¹¤¾ß¡£

ĿǰΪֹ Selenium ÓÐÁ½ÖÖ°æ±¾£º

Selenium 1£¨Selenium RC£¬Remote Control£©£º´«Í³ Selenium ¿ò¼Ü£¬Ö§³Ö¶àÖÖ±à³ÌÓïÑԽű¾Éú³É¡£µ«ÐèÒªÆô¶¯Ò»¸ö´úÀí Server À´´¦ÀíÓû§Óë²âÊÔ Server Ö®¼äµÄͨѶ¡£

Selenium 2£¨Selenium Webdriver£©£ºÈ«ÐÂ×Ô¶¯»¯½Ó¿Ú£¬Í»ÆÆÁË Selenium 1 µÄһЩÏÞÖÆ£¬ÌÞ³ýÁËÖмä Server£¬µ«ÓÉÓÚдÕâÆªÎÄÕÂΪֹ×Ô¶¯Éú³É½Å±¾¹¤¾ß¶Ô Selenium 2 µÄÖ§³Ö»¹²»ºÃ£¬ÊʺÏÊìϤ Selenium API µÄÊÖд case ²âÊÔÈËԱʹÓá£

ÔĶÁ±¾ÎĶÁÕß¿ÉÒÔѧϰµ½ÒÔϼ¼ÄÜ£º

Á˽â Selenium ×Ô¶¯»¯²âÊÔ¿ò¼ÜµÄ»ù±¾¸ÅÄî¡£

ѧ»á´î½¨Ó¦Óà Selenium ×Ô¶¯»¯²âÊÔ¿ò¼ÜµÄ»·¾³¡£

´î½¨Ò»¸ö×Ô¼¯³ÉµÄ²âÊÔÈÝÆ÷ÒÔ³ÖÐø²âÊÔ Selenium ²âÊÔÓÃÀý¡£

±¾ÎÄ×ÅÖØ½éÉÜ´«Í³ Selenium 1 µÄÔ­Àí¼°Ê¹Ó÷½·¨¡£½ÓÏÂÀ´ÈÃÎÒÃÇ¿´¿´ Selenium ÊÇÈçºÎµ÷ÓÃÂ¼ÖÆ½Å±¾²¢ÊµÏÖ×Ô¶¯²âÊԵġ£

Selenium 1 ʵÏÖÔ­Àí

Selenium ÒýÈëÁË Remote Control Server ÕâÑùÒ»¸ö´úÀí Server£¬JavaScript ½Å±¾×¢ÈëºÍÓë Server ͨѶ¶¼Í¨¹ýÕâ¸ö´úÀí Server À´½øÐС£ÈçÏÂͼËùʾ£º

ͼ 1. Remote Control ģʽÔËÐÐÁ÷³Ì

Ö®ËùÒÔÒýÈëÕâ¸ö´úÀí Remote Control Server ÊÇÒòΪ¡°Í¬Ô´²ßÂÔ¡±µÄÏÞÖÆ£¬Í¨¹ýÕâ¸ö´úÀí·þÎñÆ÷À´¡°ÆÛÆ­¡±Ô¶³Ì Server£¬´ïµ½Ê¹ÆäÒÔΪÊÇ´Óͬһ¸öµØ·½ load ´úÂëÒÔÕýÈ··µ»ØÇëÇóÊý¾ÝµÄЧ¹û¡£

Á÷³Ì˵Ã÷£º

¿Í»§¶Ë½¨Á¢Óë selenium-RC server µÄÁ¬½Ó¡£

Selenium RC Server Æô¶¯Ò»¸öä¯ÀÀÆ÷£¨»òÊÇÒѾ­Ê¹ÓÃÖУ©£¬²¢×¢Èë JS ´úÂë

½« Selenese ´úÂë´«µ½¿Í»§¶ËµÄ Selenium-Core ÖС£

Selenium-Core ·­Òë²¢½âÎöÖ´ÐÐÓû§Â¼ÖƵIJÙ×÷¡£

ÈôúÀí Server ½øÐÐͨѶ

Remote Control Server ¸ºÔð¸úÔ¶³Ì Web Ó¦Ó÷þÎñÆ÷½øÐÐͨѶ¡£

²Ù×÷Íê³É£¬ÏÔʾ½á¹û£¬²¢Ö´ÐÐÏÂÒ»Ö¸Áî¡£

ÒÔÉϾÍÊÇ Selenium Remote Control µÄÖ´ÐÐÔ­Àí£¬½ÓÏÂÀ´µÄÕ½ÚÖн«Ò»²½²½ÒÔͼÀý¼Ó˵Ã÷µÄ·½Ê½¿ìËÙ˵Ã÷ÈçºÎʹÓà Selenium À´Â¼Öƽű¾£¬µ¼Èë Java ¹¤³Ì£¬È»ºó¶¨ÆÚά»¤¹¤³Ì¡£

ʹÓà Selenium ʵÏÖ×Ô¶¯»¯²âÊÔ

ʹÓà Selenium IDE Â¼ÖÆÓû§²Ù×÷

Selenium IDE ÊÇÒ»¸ö»ùÓÚ Firefox µÄ²å¼þ£¬Óû§¿ÉÒÔÔÚͨ¹ýÕâ¸ö²å¼þ½«¿Í»§¶Ë²Ù×÷Â¼ÖÆ³É½Å±¾²¢µ¼³öΪ Java¡¢c#¡¢Ruby µÈ¶àÖÖÔËÐÐÓïÑÔÒÔ±ãͳһ¹ÜÀí²âÊÔÓÃÀý¡£

ÏÂÔØ FireFox£º ÍÆ¼ö Firefox 5.0 ÒÔÉÏ£¬Ä¿Ç° Selenium IDE Ö»Ìṩ Firefox µÄ²å¼þ¡£

ÏÂÔØ Selenium IDE£ºhttp://seleniumhq.org/download/

°²×°²å¼þ£º

Tools --> Add-ons --> ½«ÏÂÔØµÄ selenium-ide-1.x.xpi ÎļþÍÏÈë¶Ô»°¿ò¼´¿É°²×°¡£

°²×°ºó¿ÉÒÔÆô¶¯ IDE ²å¼þ²é¿´ÊÇ·ñ°²×°³É¹¦¡£

ͼ 2. Æô¶¯ Selenium IDE ²å¼þ

°²×°ºó£¬ÒÔ IBM Systems Director ²úƷΪÀý£¬ËµÃ÷ÈçºÎʵÏÖ¡°Óû§µÇ¼¡±Õâ¸ö²âÊÔÓÃÀý¡£

µã»÷Â¼ÖÆ°´Å¥ ÈçÏÂͼ 3 ÖÐµÄ 1

Â¼ÖÆ¹ý³ÌÖУ¬µÇ¼Óû§½çÃæ£¬ÊäÈëÓû§ÃûÃÜÂë¡£ÈçÏÂͼ 4

È»ºó¿ÉÒÔͨ¹ýÊÇ·ñ°üº¬Ä³Ð©×Ö·û´®À´ÑéÖ¤ÊÇ·ñµÇ¼³É¹¦¡£Èç¹ûÏÂͼ 5

»Øµ½µÇ¼ IDE ½çÃæ£¬²é¿´ÒÑÂ¼ÖÆ²½Öè Èçͼ 3 ÖÐµÄ 2

ÔÚ IDE ½çÃæÖпÉÒÔÑéÖ¤Â¼ÖÆµÄ½Å±¾£¬±ØÒªÊ±»Øµ½µÚËIJ½£¬Èçͼ 3 ÖÐµÄ 3

ÔÚ IDE ÖÐÖØÔËÐÐÂ¼ÖÆµÄ½Å±¾Í¨¹ý¾Í˵Ã÷½Å±¾Ã»ÎÊÌ⣬¿ÉÒÔÓÃÓÚ²âÊÔÓÃÀý´úÂëµ¼³öÁË¡£

ͼ 3. Selenium IDE Â¼ÖÆ´°¿Ú

ͼ 4. Â¼ÖÆ¹ý³ÌÖУ¬ÊäÈëÓû§ÃûÃÜÂë

ͼ 5. ͨ¹ýÈ·ÈÏÊÇ·ñ°üº¬Ä³Ð©ÎÄ×ÖÀ´ÑéÖ¤ÊÇ·ñ³É¹¦µÇ¼

ʹÓà Selenium IDE µ¼³ö JUnit ²âÊÔÓÃÀý

ÔÚ Selenium IDE ÖÐÖ´Ðгɹ¦ºó£¬¾Í¿ÉÒ԰ѲâÊԽű¾µ¼³ö³É JUnit ²âÊÔÓÃÀýÁË£¬Èçͼ 6 Ëùʾ£º

ͼ 6. µ¼³ö JUnit ´úÂë

µ¼³öÓÃÀýÈçÏ£º

Çåµ¥ 1. VerifyLogin.java

import com.thoughtworks.selenium.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class VerifyLogin extends SeleneseTestCase {
@Before
public void setUp() throws Exception {
selenium = new DefaultSelenium ("localhost", 4444, "*chrome", "localhost:8422/");
selenium.start();
}

@Test
public void testVerifyDirectorLogin() throws Exception {
selenium.setTimeout("300000");
selenium.open("/ibm/console/logon.jsp");
selenium.type("id=j_username", "test");
selenium.type("id=j_password", "test");
selenium.click("id=other");
selenium.waitForPageToLoad("300000");
verifyTrue(selenium.isTextPresent("IBM Systems Director"));
}

@After
public void tearDown() throws Exception {
selenium.stop();
}
}

˵Ã÷£ºÊ×ÏÈʵÀý»¯Ò»¸ö DefaultSelenium ¶ÔÏ󣬴«ÈëµÄ²ÎÊý·Ö±ðÊÇ RC ·þÎñÆ÷ IP¡¢¶Ë¿Ú¡¢ä¯ÀÀÆ÷ÀàÐͺʹý²âÊ﵀ Server µÄÐÅÏ¢¡£È»ºóÔÚ²âÊÔ·½·¨Àïµ÷Óà Selenium 1 µÄ API£¬ÕâÀïµÄ´úÂëÍêÈ«ÓÉ IDE Éú³É£¬¾ÍΪÎÒÃÇʡȥÁ˺ܶàÖØ¸´´úÂ빤×÷¡£

ÔËÐвâÊÔÓÃÀý£º

ÓÐÁË»ùÓÚ JUnit µÄÔËÐвâÊÔÓÃÀý¾Í¿ÉÒÔ°ÑËüµ¼Èëµ½ Java IDE ÖÐÖ´ÐвâÊÔÁË¡£Ö´ÐÐÖмÈÐèÒª¿Í»§¶ËÇý¶¯Ö§³Ö£¨ÓÃÓÚ Eclipse ±àÒ룩£¬Ò²ÐèÒªÆô¶¯ RC Server£º

Selenium RC Server ÏÂÔØ£ºhttp://seleniumhq.org/download/

Selenium Client Driver£ºhttp://seleniumhq.org/download/

Ö´ÐÐÃüÁî java ¨Cjar selenium-server-standalone-2.5.0.jar Æô¶¯ Selenium RC Server£º

ͼ 7. Æô¶¯ Selenium RC Server

Æô¶¯ºó¾Í¿ÉÒÔÖ±½ÓÔÚ Eclipse ÖÐÔËÐвâÊÔÓÃÀý£¬RC Server ¾Í»áÆô¶¯Ð´°¿Ú²¢×Ô¶¯°´ÕÕÂ¼ÖÆ½Å±¾½øÐвâÊÔ¡£²¢¿ÉÔÚ Eclipse Öв鿴ÔËÐнá¹û¡£

ÏÂÃæÈÃÎÒÃÇ¿´¿´ÔõÑùÍÑÀë Eclipse ×Ô¼º´î½¨Ò»¸ö¿ÉÒÔ³ÖÐø²âÊÔµÄÈÝÆ÷¡£

¹¹½¨ JUnit ²âÊÔÈÝÆ÷ÒÔ³ÖÐø²âÊÔ Selenium µÄ²âÊÔÓÃÀý

ÎÒÃǴµÄÕâ¸öÈÝÆ÷¿ÉÒÔ¼ì²âij¸öÎļþ¼ÐÀïËùÓеIJâÊÔÓÃÀý×Ô¶¯ÔËÐÐ JUnit ´úÂë½øÐвâÊÔ¡£Èç¹ûÐèÒª»¹¿ÉÒÔ½«Õâ¸öÈÝÆ÷ºÏ²¢µ½³ÖÐø¼¯³É»·¾³ÀÒÔ´ïµ½²»¼ä¶Ï³ÖÐø¹¦ÄÜÐÔ²âÊÔµÄÐèÇó¡£

ÔÚÕâÀïÎÒÃÇ»áÓõ½ Ant ¹¤¾ß¡£¿ÉÒÔÔÚÕâÀïÏÂÔØ£º

Ant ÏÂÔØ£ºhttp://ant.apache.org/

»ù´¡¼Ü¹¹

ͼ 8. »ùÓÚ Selenium µÄ JUnit µÄ²âÊÔÈÝÆ÷¼Ü¹¹Í¼

¿ÉÒÔ¿´¼û²âÊÔÈËÔ±µÄ¹¤×÷Èç×ÏÉ«¼ýÍ·Ëùʾ£¬¶ø×Ô¶¯»¯¹¤×÷ÈçÀ¶É«¼ýÍ·Ëùʾ¡£

ÕâÌ׿ò¼ÜµÄÒâÒåÔÚÓÚ£¬ËüÄÜ×Ô¶¯Ê¶±ð²âÊÔÓÃÀý£¬²¢¶ÁÈ¡ÅäÖÃÎļþÒÔ²âÊÔÌ×¼þÔËÐв»Í¬µÄ²âÊÔÓÃÀý¡£Ëü»¹¿ÉÒÔ±»ºÏ²¢µ½ÏîÄ¿³ÖÐø¼¯³ÉÈí¼þÖУ¬¶¨ÆÚµØ³ÖÐø½øÐлùÓÚ Web µÄ¹¦ÄÜÐÔ²âÊÔ£¬²¢½«±¨¸æÒÔÓʼþÐÎʽ֪ͨ¹ÜÀíÈËÔ±¡£

˵Ã÷£º

ÓɲâÊÔÈËÔ±Â¼ÖÆ½Å±¾²¢µ¼³ö JUnit¡£

²âÊÔÈËÔ±ÐÞ¸ÄÅäÖÃÎļþ£¬½«²âÊÔÓÃÀý°üº¬ÔÚ²âÊÔÌ×¼þÖС£

ºÏ²¢ÔÚ³ÖÐø¼¯³ÉÈí¼þºó£¬¿ò¼Ü»á¶¨ÆÚ¼ì²âÅäÖõIJâÊÔÌ×¼þ

Öð¸ö¼ÓÔØ²âÊÔÓÃÀý¡£

ÒÔ²âÊÔÌ×¼þΪµ¥Î»ÆäÖ´ÐÐËùÓвâÊÔÓÃÀý¡£

Ö´ÐÐÍê³Éºó½«²âÊÔÌ×¼þµÄ½á¹û±¨¸æÒÔÓʼþÐÎʽ֪ͨ¹ÜÀíÈËÔ±

ʵÏÖÕâÌ׿ò¼Ü×î¹Ø¼üµÄµ±Êô Ant Ö´Ðнű¾ÁË£¬Ò²ÊdzÌÐòÖ´ÐеÄÈë¿Ú¡£ÕâÀïÁгö Ant µÄÔËÐнű¾£¬ÒÔ¹©¶ÁÕ߲ο¼£º

Çåµ¥ 2. Build.xml

ÒÔÏÂΪ²¿·ÖÖØµãÄÚÈÝ£¬»áÔÚºóÃæ¼ÓÒÔ˵Ã÷¡£ÍêÕûµÄ build.xml Çë²é¿´¸½¼þ¡£
<?xml version="1.0" encoding="UTF-8"?>
<project name="automationtesting" default="run" basedir=".">
¡­¡­
<!-- µ÷Óà Junit task ÔËÐвâÊÔÓÃÀý-->
<mkdir dir="${xml}/${var}" />
<junit printsummary="yes">
<classpath>
<fileset dir="${lib}">
<include name="**/*.jar" />
</fileset>
<pathelement path="${classpath}" />
</classpath>
<batchtest todir="${xml}/${var}">
<filelist refid="casesToBeRunning"></filelist>
<formatter type="xml" />
</batchtest>
</junit>
¡­¡­
<!-- µ÷Óà Junitreport task Éú³É±¨±í-->
<junitreport todir="${reports}">
<fileset dir="${xml}/${var}">
<include name="TEST-*.xml" />
</fileset>
<report id="${var}_Report" format="noframes" todir="${reports}/html">
<param name="TITLE" expression="Automation Testing Results for ${var}" />
</report>
</junitreport>
¡­¡­

<!-- µ÷Óà mail task ·¢ËÍÓʼþ-->
<mail mailhost="xx.xx.xx.xx" subject="${reportResult} Result for TestSuite: ${var}">
<from address="AutomationTestTool" />
<to address="xxxx@cn.ibm.com" />
<message mimetype="text/html" src="${reports}\html\Testsuite-report-${var}.html">
</message>
<fileset dir="${reports}\html">
<include name="Testsuite-report-${var}.html" />
<include name="Testcase-reports-${var}.zip" />
</fileset>
</mail>
</project>

˵Ã÷£º³ÌÐòµÄÈë¿ÚÊÇ Run task£¬ÔÚ Run task ÀïÏÈÊDZàÒëÕû¸ö¹¤³Ì£¬È»ºó¶ÁÈ¡ TestSuites.xml ÅäÖÃÎļþ£¬Ñ­»·Ö´ÐÐÿһ¸ö²âÊÔÌ×¼þ¡£¹ý³ÌÖУ¬ÒÔ´ËÖ´ÐÐÒÔϲÙ×÷£º

¶ÁÈ¡ÅäÖõIJ¢ÇÒʵÏÖ TestCase µÄ Java Àࣻ

µ÷Óà Ant µÄ junit task Ö´ÐвâÊÔÓÃÀý£»

µ÷Óà Ant µÄ junitreport task Éú³É±¨±í£»

µ÷Óà Ant µÄ mail task ·¢Ëͱ¨±íµ½Ö¸¶¨ÓÊÏä¡£

Çåµ¥ 3. TestSuites.xml ÅäÖÃÎļþÑùÀý

<TestSuites>
<TestSuite enable="false" id="DiscoverTestSuite">
<Testcase>VerifyLogin</Testcase>
<Testcase>DiscoverDevice</Testcase>
</TestSuite>
<TestSuite enable="true" id="DeleteDeviceTestSuite">
<Testcase>VerifyLogin</Testcase>
<Testcase>DeleteDevice</Testcase>
</TestSuite>
</TestSuites>

˵Ã÷£ºÅäÖÃÎļþÖж¨ÒåÁËÁ½¸ö²âÊÔÌ×¼þ£¬µÚÒ»¸ö°üº¬ÁË 2 ¸ö²âÊÔÓÃÀý£¬ÏÈ Login ÔÙ·¢ÏÖÉ豸¡£µÚ¶þ¸öÒ²°üº¬ÁË 2 ¸ö²âÊÔÓÃÀý£¬ÏÈ Login ÔÙɾ³ýÉ豸¡£¶øµÚÒ»¸ö²âÊÔÌ×¼þ enable=false ½«²»±»Ö´ÐС£

µ½´ËΪֹ£¬Ò»¸ö¼òµ¥µÄ¿É³ÖÐø²âÊÔ¿ò¼Ü¾ÍÒѾ­´î½¨Íê±Ï£¬À´ÔËÐÐÏ¿´¿´½á¹û°É

ÔËÐвâÊÔ×齨

Óà ant ÃüÁîÖ´ÐÐ Build.xml ¼´¿ÉÔËÐвâÊÔ¿ò¼Ü¡£

ͼ 9. ¹¤¾ßÔËÐÐʱ

Ö´ÐÐÍê³Éºó¾Í»á½«ËùÓвâÊÔÓÃÀýµÄ½á¹ûÒÔ±¨¸æÐÎʽ·¢ËÍÓʼþµ½Ö¸¶¨ÓÊÏä¡£

ͼ 10. ±¨¸æÊ½Ñù

½áÊøÓï

±¾ÎÄÊ×ÏȽéÉÜÁË Selenium ÒÔ¼° Selenium 1 µÄʵÏÖÔ­Àí¡£½ô½Ó×ÅÓÃÒ»¸ö Login µÄ¼òµ¥Àý×Ó½²ÊöÁËÈçºÎÈ¥´î½¨ Selenium ÔËÐл·¾³£¬²¢½«Æäµ¼³öΪ JUnit ´úÂë¡£×îºó¹¹½¨ÁËÒ»¸ö»ùÓÚ Ant µÄ×Ô¶¯»¯²âÊÔ Selenium ¿ò¼Ü£¬³ÖÐøµØ¶ÔÉú³ÉµÄ JUnit ²âÊÔÓÃÀý½øÐйÜÀíÒÔ¼°¹¦ÄÜÐÔ²âÊÔ¡£¶ÁÕßÒ²¿ÉÒÔ½è¼ø¸Ã½Å±¾´î½¨×Ô¼ºµÄÇáÁ¿¼¶µÄµ¥Ôª²âÊÔ¿ò¼Ü¡£

ĿǰÖ÷Á÷µÄ web ×Ô¶¯»¯²âÊÔ¿ò¼Ü»¹ÓÐ QTP£¬»ùÓÚ Ruby µÄ WATIR¡£ÓëÕâЩ¿ò¼ÜÏà±È£¬Selenium Ö§³Ö IE¡¢Mozilla Firefox µÈ¶àÖÖä¯ÀÀÆ÷£¬Í¬Ê±Ö§³Ö×Ô¶¯Â¼Öƽű¾ÒÔ¼° Java¡¢C#¡¢Ruby µÈ¶àÖÖÔËÐÐÓïÑÔµÄ×Ô¶¯Éú³É£¬²âÊÔÓÃÀýÖÆ×÷¿ì½Ý£¬ÔËÐÐÒ²±È½Ï¿ìËÙ¡£¶ÔÓÚ½ÏΪÇáÁ¿¼¶Ïà±ÈÆðÀ´ Selenium ÒªÏԵøüΪÁé»îʵÓá£Selenium ²»½öÓÃÓÚ¹¦ÄÜÐÔ²âÊÔ¼°»Ø¹é²âÊÔ£¬Í¬Ê±Ò²¿ÉÓÃÓÚ Web ¿ÉÊÓ»¯ÑéÊÕ²âÊÔ¡£¸ü¶àµÄ£¬Selenium ¿É¼¯³ÉÔÚÖîÈç Cruise ³ÖÐø¼¯³ÉÈí¼þÖУ¬ÎªÕûÌåÏîÄ¿Ìṩ¸ü´ó¼¯³É²âÊÔ·¶Î§¡£

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

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

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

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