2015-01-26 2 views
0

으로 실행되는 IEDriver을 사용하는 Selenium 테스트 슈트가 있습니다. 이 테스트 스위트를 회귀 분석에 사용하는 것이 목표입니다. 각 프로덕션 서버에 대해이 테스트를 실행하고 싶습니다. 현재 나는 어느 서버에서든지이를 가리키고 테스트를 실행할 수 있습니다. 그러나 문제는 내가 한 번에 하나씩 만 실행할 수 있다는 것입니다. 연속적으로 실행하는 것은 너무 오래 걸립니다. 각 Linux 프로덕션 서버에서 하나의 Windows 서버를 가리키는 것은 실현 가능하거나 확장 가능한 옵션이 아닙니다. 가능한 경우 하나의 Windows 서버에서 별도의 스레드에서 실행하는 방법이 필요합니다.여러 서버의 IE에서 동시에 TestNG/Selenium 테스트를 실행할 수 있습니까?

나는 Selenium Grid/Remote Driver을 조사해 왔지만, 이것이 올바른 해결책인지, 아니면 내 목표에 맞게 구현할 수 있는지 확실하지 않습니다. 필자가 읽은 바에 따르면 각각의 "노드"가 다른 프로덕션 서버가되기를 원할 것이라고 생각하지만이 기술에 완전히 익숙하지 않습니다.

스택 오버플로를 둘러 보았습니다.하지만 제 질문에 대한 답변을 찾지 못했습니다. 누구나 이런 종류의 문제에 대한 경험이 있거나 이러한 기술을 사용한다면 귀하의 의견을 높이 평가할 것입니다.

답변

1

Selenium Grid를 사용하여 구현했습니다. 당신이해야 할 일은

은 다음과 같습니다

  1. 다운로드 셀레늄 서버 here
  2. 시작과 같은 하나 개의 서버에 셀레늄 허브 :

    자바 -jar 셀레늄 - 서버 - 독립 - 2.44. 0.jar -role 허브

  3. 과 같이 테스트 서버의 각 하나에

    시작 셀레늄 노드 :

  4. 이 같은 셀레늄 허브를 사용하여 드라이버를 만들기 -hub

    자바 -jar 셀레늄 - 서버 - 독립 - 2.44.0.jar -role 노드 :

    CommandExecutor executor = new SeleneseCommandExecutor(newURL("http://localhost:4444/"), new URL("http://www.google.com/"),capabilities);

    WebDriver 드라이버 = 새로운 RemoteWebDriver (Executor, capabilities);

더 많은 정보 here 및 셀레늄 그리드에서 here

+0

입력 해 주셔서 감사합니다. 상관 없으면 게시 한 것에 대해 몇 가지 질문이 있습니다. 허브와 노드 모두 동일한 컴퓨터에서 만들어야합니까? 또한 SeleneseCommandExecutor()에 어떤 인수를 전달합니까? 예를 들어, 테스트를 실행하려는 서버가 10 대 있으면 어떻게 처리 할 수 ​​있습니까? – mmaynar1

+0

또 다른 언급할만한 점은 IEDriver를 사용하여이 테스트를 실행한다는 것입니다.이 테스트는 Linux에서 실행할 수 없습니다. 이것이 내게 말한 것에 영향을 줍니까? 한 대의 Windows 컴퓨터에서 IE의 여러 인스턴스를 Selenium과 함께 실행할 수 없기 때문에 걱정이되지만 Linux 자체에서 실행할 수는 없습니다. – mmaynar1

+0

허브와 노드는 서로 다른 서버에있을 수 있습니다. 예를 들어 노드가 하나있는 허브 서버 하나와 노드가있는 서버 5 대가 있습니다. 내 경우에는 정확한 수의 드라이버가 필요하지 않았습니다. 다른 설정 (브라우저 및 OS)에 대한 테스트가 필요했기 때문에 드라이버를 만들 때 방금 기능 설정 변수를 사용하여 설정을 변경하고 허브가 드라이버를 만들었습니다 나를 위해. – shudima

0

, 당신은이 :

L을 : 기계가 Java 코드 (로컬 컴퓨터 또는 젠킨스 노드를) 실행.

N : 테스트가 실행되는 브라우저 인스턴스를 호스팅하는 하나 이상의 컴퓨터.

H : LN 사이에서 트래픽을 처리하는 기계입니다.

하나의 시스템에서 전체 제품군을 실행하기에는 너무 많은 테스트가있는 경우 매우 유용한 선택입니다. 자신 만의 VM 그리드가 있다면 SeleniumGridExtras을 사용하여 IE Webdriver의 이상 함을 처리하는 것이 좋습니다.그렇지 않으면 BrowserStack 또는 SauceLabs을 사용하여 신속하게 설정할 수 있습니다.

Selenium Grid가 없어도 병렬 실행을 사용하여 로컬로 여러 테스트 스레드를 실행하고 스레드 수를 늘릴 수 있습니다. (스위트 룸 XML 파일에서 어느 특정 @Test 주석에 threadPoolSize = 3, 또는 parallel="methods" thread-count="28".)

상관없이,하지만, 셀레늄 테스트의 당 기계 실행 시간이 당신의 스위트를 실행하는 데 의미가 충분히 높은 무엇 시리즈에서. IE에서는 주어진 시스템에서 한 번에 두 개 이상의 테스트를 실행하는 것이 현명하지 못한 것으로 간주됩니다. Jenkins 작업을 연쇄 적으로 처리하여 다음 작업 이후에 작업을 완료 할 수 있습니다.

관련 문제