2010-01-22 6 views
2

현재 웹 응용 프로그램의 인터페이스를 테스트하기 위해 Selenium을 사용하고 있습니다. 그러나 프레임 워크가 포함 된 웹 페이지에서 작업하기에 좋은 대기 시간 제한을 설정하는 것은 어렵고 많은 기능 (팝업/다운로드)이 부족합니다.신뢰할 수있는 웹 응용 프로그램 GUI 테스트

나는 http://sikuli.csail.mit.edu/을 보았지만 꽤 좋아졌지만, 다시 말해 정확한 버튼/링크를 식별하지 못하는 경우와 같이 매우 신뢰할 만하다.

웹 응용 프로그램을 테스트하기위한 좋은 접근 방법은 무엇입니까?

추신 : 테스터가 코드 내부 (메서드 서명조차도)에 대해 전혀 알지 못하는 경우에도 테스트를 허용하는 코드를 따릅니다.

+0

http://sikuli.csail.mit.edu/이 고장난 것 같습니다. –

답변

3

불행히도 UI 테스트는 일반적으로 신뢰할 만하지 않습니다. XPath을 사용해야하는 이유는 ID가 페이지의 요소에 설정되어 있지 않기 때문입니다. 프레임을 사용해야하는 이유 (프레임이 싫어서 HTML5에서 더 이상 사용되지 않아서 기쁩니다).

불행히도 짐승의 본질이며 셀레늄과 관련하여 브라우저에 대한 UI 테스팅 도구 인 커다란 문제는 사람들이 당신이하는 모든 것을 기록하려고하는 Selenium IDE에서 시작한다는 것입니다. 테스트를 신뢰할 수 없게 만듭니다.

녹음/재생 도구는 테스트를 올바르게 처리 할 수 ​​있도록 녹음/조정/재생이라고해야합니다.

Selenium RC 또는 WebDriver (현재 Selenium 2를 만들기 위해 병합 중임) 테스트를 작성하면 Selenium IDE에서 볼 수있는 문제를 처리 할 수 ​​있습니다. Java, Python, C# 등의 프로그래밍 언어를 사용하여 테스트를 작성할 수 있습니다. 조건문을 테스트에 추가 할 수 있기 때문입니다.

내가 셀레늄을 사용하는 데 덜 전문적인 사람은 DSL을 사용하여 테스트를 작성할 때 더 자연스러운 언어를 사용하는 것입니다.

+0

Selenium은 기본적으로 자동 UI 테스트의 최첨단이라고 생각합니다. 그것이 충분하지 않다면,별로 좋지는 않습니다. – John

+0

WebDriver 녀석들이 최첨단으로 볼 수 있을지 확신하지 못했지만, 일단 2 개의 프로젝트가 완전히 병합되면 내 의견으로는 마일로 가장 좋은 도구가 될 것입니다. – AutomatedTester

1

어쩌면 iMacros for Firefox을 살펴 보았는데, 꽤 잘 작동하고 완전한 AJAX 지원, 플래시, 플렉스, 실버 라이트, 애플릿 지원, Web Page Dialogs 지원 등 많은 미친 짓을 할 수 있습니다. Selenium here과 (아마도 편향된) 비교를 찾을 수 있습니다.

또 다른 옵션은 WebDriver입니다 (다른 대답에서 언급했듯이 Selenium과 병합하여 Selenium 2를 만들지 만 여전히 다른 접근법을 사용함). 그것에 대해 자세히 알아 보려면 (그리고 다른 점은) Introducing WebDriver을 참조하십시오.

하지만 iMacros를 사용해 보겠습니다.

1

Sahi을 살펴보십시오.

  1. Ajax 또는 페이지가로드 될 때까지 기다릴 필요가 없습니다.

  2. DOM 관계 (_near, _in) 대신 XPath를 사용하지 않습니다.

  3. 그것은

    그것은 자동
  4. ID를 생성 처리
  5. 가 레코더 및 재생이 거의에서 작동하는 자동 프레임/iframe을 레코더는 프레임, iframe을, 그리고 팝업 창 작동

  6. 통과 모든 브라우저 및 운영 체제.

  7. 테스트를 실행하는 데 특별한 권한을 사용하지 않습니다.

작년에 Sahi는 공개적으로 7 건의 공개 버전을 보유하고 있으며 포럼에서 지원을 요청합니다.

면책 조항 : 나는 Sahi의 저자입니다.

+1

지금 Sahi를 '평가하고 있습니다. waitForPageToLoad 및/또는 waitForElementPresent에 대한 필요성이 부족하다는 점을 알려줍니다. 저에게, 그것은 최고의 부분 중 하나입니다. –

0

이 대신

selenium.waitForPageToLoad (초과)처럼 사용 selenium.waitForPageToLoad("30000");를 사용;

와의 setTimeout 옵션

selenium.setTimeout (시간 초과)를 사용하여 제한 시간을 설정하는 것을 잊지 마세요;

나는 타임 아웃과 동일한 문제에 직면했다. 타임 아웃을 설정 한 후에는 잘 작동했습니다.

관련 문제