2012-05-25 2 views
5

저는 여러 가지 방법으로 모든 종류의 브라우저 테스트를 자동화하는 방법을 연구했습니다. Seleniums 웹 사이트는 매우 모호하며 취할 수있는 가장 좋은 경로입니다. 내가 셀렌, Nunit, Selenium Grid, C#, webdriver/remote control을 이용한 자동화 된 브라우저 테스팅

  1. 셀레늄 Webdriver
  2. 원격 제어
  3. 셀레늄 그리드
  4. 아파치 개미
  5. NUNIT (및 그 밖의 거의 모든 것이이 작업을 수행해야 할 수 있습니다)
  6. 를 설치 한

나는 finall 혼자 힘으로 포기하고이 일을하는 가장 좋은 방법을 알고 싶습니다.

나는

  1. 로드 다른 브라우저의 숫자
  2. 로드 (내가 설정 한) 가상 머신
  3. 의 수에 동일한 웹 페이지에 동일한 웹 페이지에 수 있어야합니다 수 다른 브라우저 결과를 비교하는 스냅 샷을 찍을 수 있습니다.

저는 C# 프로그래밍에 대한 지식이 있으며 Nunit을 통해 테스트를 실행하는 것을 선호합니다.

내 방향을 알려주거나 이미 가지고있는 웹 사이트로 안내해 줄 수 있습니까? 감사합니다.

+0

를 참조 할 수 있습니다 다른 브라우저에 대한 스냅 샷을하려면이 웹 페이지를 참조하십시오. 여러 브라우저에 같은 웹 페이지로드'한 번에 의미합니까? 또는 순차적으로? –

+0

즉시. 따라서 여러 브라우저가 열리고 동일한 웹 페이지가로드됩니다. – lbrown

+0

MBunit으로 전환 할 수 있습니까? 조사를 한 끝에 Nunit은 병렬화를위한 최상의 도구가 아니라는 결론에 도달했습니다. –

답변

8

나는 당신의 모든 포인트를 만족시키는 Selenium WebDriver와 함께 junit을 사용하여 테스트 프레임 워크를 구축했다. 그게 당신이 요구하는 것과 정확히 똑같지는 않지만, 당신이 상관없이 도움을 줄 수 있다고 생각합니다.

로드 셀레늄의 격자를 사용하여 다른 브라우저

의 수에 동일한 웹 페이지는이 설정이 매우 간단합니다. 테스트하려는 환경으로 일부 가상 시스템을 설정하십시오.우리의 환경에서, 예를 들어, 우리는 다음과 같은

  • IE7과 윈도우와 파이어 폭스
  • IE8과 윈도우와 파이어 폭스
  • 윈도우와 같은 설정에 (가상 머신으로) 네 개의 노드로 실행하는 그리드가 셀레늄은 IE의 한 인스턴스는 Windows 노드에서 실행을 허용 할 것을 권장하는 파이어 폭스

주와 IE9과 파이어 폭스

  • 리눅스. 앞에서 언급 한 각 노드에는 지정된 IE의 인스턴스 하나와 지정된 FF의 인스턴스 5 개가 주어진 시간에 실행되도록 허용됩니다. 그리드 설정과 허브 설정이 완료되면 테스트를 시작하는 것이 쉽습니다. WebDriver에서 DesiredCapabilities 개체를 사용하여 원하는 환경을 설정 한 다음 테스트를 중단하고 결과가 반환되기를 기다립니다.

    Platform desiredPlatform; 
    DesiredCapabilities desiredCapabilities; 
    desiredPlatform = Platform.LINUX; 
    desiredCapabilities = DesiredCapabilities.firefox(); 
    desiredCapabilities.setPlatform(desiredPlatform); 
    desiredCapabilities.setVersion("11"); 
    
    WebDriver driver = new RemoteWebDriver("http://hubURL", desiredCapabilities); 
    

    로드 나는 스레드에서, unconvential 방법이기는하지만, 실행 테스트를 강제로이 일을 해결

    (내가 설정 한) 가상 머신의 수에 동일한 웹 페이지 방법. 각 JUnit 테스트는 별도의 스레드에 필요한 모든 RemoteWebDrivers를 만드는 공유 스레드 라이브러리를 사용합니다. 부모 스레드가 앉아서 모든 스레드가 종료되기를 기다리는 동안이 스레드들 각각은 해당 노드에서 동시에 실행됩니다. 그런 다음 멀티 스레딩으로 실행되는 다음 테스트로 넘어갑니다.

    모든 하위 스레드에서 Junit 스택 추적을 검색하는 것과 같은 몇 가지 문제가 발생했습니다. Std.err을 부모 스레드의 바이트 스트림으로 리디렉션하여 해결했습니다. 모든 오류는 해당 문자열로 전달되어 문자열로 변환되고 각 테스트가 끝나면 Std.out으로 출력됩니다. 테스트가 끝날 때 생성 된 html 페이지는 완벽하게 작동 한 Std.out을 포함합니다.

    하면 다른 브라우저를 비교 스냅 샷을 할 수 있어야 내가 원격으로 스크린 샷을 잡아 몇 가지 고유 한 문제가, 일이 입수했습니다 동안

    발생합니다. 프로세스가 서비스로 실행중인 경우 IE는 검은 스크린 샷을 반환합니다. 해결 방법은 명령 줄에서 jar를 실행하고 사용자를 로그인 상태로 유지하는 것입니다.이 경우 스크린 샷이 올바르게 반환됩니다. 이것은 브라우저의 알려진 문제이며 실제로 문제에 대한 좋은 해결책이 없습니다. 스크린 샷을 촬영하면 로컬 컴퓨터에 원격 컴퓨터의 실행중인 브라우저에서 캡처 한 스크린 샷을 저장이

    WebDriver augmentedDriver = new Augmenter().augment(driver); 
    TakesScreenshot ss = (TakesScreenshot) augmentedDriver; 
    String base64Screenshot = ss.getScreenshotAs(OutputType.BASE64); 
    byte[] decodedScreenshot = Base64.decodeBase64(base64Screenshot.getBytes()); 
    FileOutputStream fos = new FileOutputStream(new File(imageName)); 
    fos.write(decodedScreenshot); 
    fos.close(); 
    

    처럼 거의 작동합니다.

    실제로 브라우저 자동화는 여전히 안정화를 위해 고심하고 있습니다. 당신이 요구하는 것과 같은 많은 중요한 기능이 있습니다. 그것은 단지 어떤 프레임 워크에서든 잘 구현되어 있지 않습니다. 하지만 시간이 지나면 많은 사람들이 진정 될 것이며 QA 개발자는 어디에서나 기뻐할 것이라고 확신합니다.

  • +0

    몇 가지 다른 질문에 대한 귀하의 연구 결과를 보았고 귀하는 자동화 된 테스트에 매우 숙련 된 것처럼 보입니다. 우연히 하시겠습니까? 튜토리얼이나 공개 된 코드를 대중에게 공개하십시오. – lbrown

    1

    두 번째 사항 : 그리드를 사용하는 대신 지속적인 통합 서버가 작업을 수행 할 수 있습니다. 우리 회사에서는 젠킨스 (Jenkins)를 사용하고 구성 매트릭스 (Configuration Matrix)를 사용합니다. 여러 젠킨스 노드에서 동일한 작업을 수행 할 수 있습니다.

    제 1의 경우, 젠킨스도 여기에서 도움이 될 수 있다고 생각합니다. 같은 노드에서 여러 작업을 실행할 수 있습니다. 나는 그것을 결코 시도하지는 않았지만 나는 완벽하게 확신하지 못했다. 그리고 이것은 단지 하나의 아이디어 일뿐입니다. 나는 그런 해결책을 정말로 추천하지 않습니다. Selenium Grid를 사용하여 테스트를 병렬로 실행하는 방법을 설명하는 this blog post을 읽어 볼 수도 있습니다. 자바를 사용하는 사람들에게 나는 약 parallel tests with TestNG에 대한 읽기를 권합니다.

    세 번째 요점은 다소 모호합니다. 스냅 샷은 무엇을 의미합니까? 어떤 결과를 비교하고 싶습니까?

    -1

    the free Telerik Testing Framework도 고려해 볼 수 있습니다. 이것은 Telerik의 상용 Test Studio 제품의 토대입니다. 테스팅 프레임 워크는 브라우저 간 지원을 제공하고 AJAX (Dynamic Content Situation)에 대한 훌륭한 작업을 수행하며 파일 업로드/다운로드 대화 상자와 같은 OS 수준 대화 상자도 처리 할 수 ​​있습니다. 언제든지 브라우저의 스냅 샷을 찍을 수도 있습니다.

    선호하는 주자 안에 프레임 워크를 래핑 할 수 있습니다. 나는 문제없이 NUnit과 MbUnit을 사용했다.

    자동화에 도움이 필요하면 지원 패키지 옵션도 있습니다.

    :

    0

    셀레늄 RC는 구식이고 webdriver는 셀레늄 테스트를 만드는 더 신뢰할 수있는 방법이다 (공개 나는 그들의 시험 스튜디오 전도자로 Telerik 작동). 위의 응답을 자바 측에서 더 많이 볼 수 있습니다. 언급은

    IDE에서 (특급 VS), NUnit과 셀레늄이 간단한 스크립트 만들기에 How to setup C#,nUnit and selenium client drivers on VSExpress for Automated tests

    을 참조 설치하는 방법에

    가가를 시작 webdriver C# 및 셀레늄을 사용하여 여기 묻는 질문을 달성하는 방법에 대한 자세한 정보는 아래의 브라우저는 몇 가지 단계가 다른 브라우저의 수에 동일한 웹 페이지를로드하는 방법에 Creating Basic Selenium web driver test case using Nunit and C#

    를 참조 How to invoke locally different types of browser driver using selenium and c#

    를 참조하시기 바랍니다 않습니다 이 설정을 위해 다수의 가상 머신에 동일한 웹 페이지를로드 할 때 일반 webdriver 대신 원격 webdriver를 사용해야합니다. 또한 원격 웹 드라이브를 사용하면 여러 유형의 브라우저를 시작할 수 있습니다. How to invoke/run different type of web driver browser using remote webdriver in C#

    하면`1을 말할 때이 링크 Capturing screen shots using remote/local webdriver in C#/Selenium webdriver

    관련 문제