[asp.net] 물 또는 셀레늄? [닫은]

프리젠 테이션에 대한 자동화 된 테스트를 곧 코딩 할 것입니다. 모든 사람들이 WatiNSelenium을 추천하는 것 같습니다 . ASP.NET 웹 양식의 자동 테스트를 선호하는 것은 무엇입니까? 이 중 어떤 제품이 더 잘 작동합니까?

참고로, WatiN 2.0은 2008 년 3 월 이후 CTP에 포함되어 있습니다.



답변

2009 년 1 분기 어딘가에 WatiN 2.0 베타 릴리스에서 열심히 노력하고 있다고 말하고 싶습니다. 현재 CTP 2.0 버전으로의 주요 업그레이드가 될 것이며 기본적으로 FireFox와 IE를 자동화하는 동일한 기능을 제공 할 것입니다 버전 1.3.0은 IE 자동화를 제공합니다.

그래서 걱정하지 마십시오.

Jeroen van Menen Lead dev WatiN 선택에 도움이 되길 바랍니다.


답변

커뮤니티가 지속적으로 개선하고 지원할 프레임 워크에 대한 장기적인 투자를 원한다면 Selenium이 최선의 선택 일 것입니다. 예를 들어 Matt Raible의 블로그에서이 정보를 발견했습니다.

금요일 현재 Google은 내부 Selenium Farm에서 매일 51K 개 이상의 테스트를 실행하는 50 개 이상의 팀을 보유하고 있습니다. 이 테스트의 96 %는 Selenium RC 및 농기계에서 올바르게 처리됩니다. 나머지 4 %는 부분적으로 오류를 테스트하기위한 RC 버그로 인한 것이지만 원인을 분리하는 것은 어려울 수 있습니다. 셀레늄은 Google 웹 애플리케이션의 기능 테스트를위한 기본 기술로 채택되었습니다. 좋은 소식입니다.

또한 최근 Selenium 모임 중 하나에 가서 Google이 Selenium을 개선하고 Simon Stewart가 개발 한 자동 테스트 도구 인 WebDriver와 통합하는 데 심각한 자원을 투입하고 있음을 알게되었습니다. WebDriver의 주요 장점 중 하나는 브라우저 내에서 Javascript 애플리케이션으로 실행하지 않고 브라우저 자체를 제어한다는 것입니다. 즉, “동일한 원점”문제와 같은 주요 걸림돌은 더 이상 문제가되지 않습니다.


답변

우리는 둘 다 테스트했으며 WaTiN을 사용하기로 결정했습니다. 다른 사람들이 지적했듯이 Selenium에는 WaTiN에서 찾을 수없는 멋진 기능이 있지만 Selenium 작동 문제가 발생했으며 WaTiN보다 테스트를 실행할 때 확실히 느려졌습니다. 올바르게 기억한다면, 우리가 겪은 설정 문제는 Selenium이 WaTiN이 모든 것을 처리하는 실제 브라우저를 제어하는 ​​별도의 앱을 가지고 있다는 사실에서 비롯되었습니다.


답변

나는 노력하고 있었고 여기에 내 초기 생각이 있습니다 …


좋은

  • 빠른 실행.
  • 스크립트 작성 도구는 독립적 인 프로젝트입니다. 내가 아는 것은 Wax (Excel 기반, CodePlex에서 호스팅)와 WatiN 테스트 레코드 (SourceForge에서 호스팅)입니다. Selenium IDE만큼 강력하지도 않습니다.
  • 아주 좋은 IE 지원. 실행중인 인스턴스에 연결하거나 분리 할 수 ​​있습니다. 기본 창 핸들 등에 액세스 할 수 있습니다 (아래 스크립트 예 참조).
  • NuGet 패키지, .NET, Visual Studio 스타일 환경에서 쉽게 실행하고 업데이트 상태를 유지합니다.

나쁜

  • 인터넷 검색 WatiN (watin xyz)은 종종 Google에서 대신 “watir xyz”를 권장합니다. 문서가 많지 않습니다.
  • (문서)가 거의없는 것은 혼란 스럽습니다. 예를 들어 : 처음에는 홍당무가 CSS 선택자를 기본적으로 지원하지 않는 것으로 보입니다. 특히 ‘WatiNCssSelectorExtensions’와 같은 확장 라이브러리와 대안 기술에 대한 많은 블로그 기사 (예 : jQuery / sizzle를 페이지에 삽입)가 있습니다. 스택 오버플로에서 Jeroen van Menen 의 의견을 찾았습니다.이 의견 은 기본 지원이 있음을 나타냅니다. 적어도 수석 개발자는 스택 오버플로에 시간을 보냅니다. 🙂
  • 기본 XPath 지원이 없습니다.
  • 기본 원격 실행 / 그리드 기반 실행이 없습니다.

스크립트 예 (C #). 셀레늄으로는이 작업을 수행 할 수 없습니다 (적어도 알지 못합니다).

class IEManager
{
    IE _ie = null;
    object _lock = new object();

    IE GetInstance(string UrlFragment)
    {
        lock (_lock)
        {
            if (_ie == null)
            {
                var instances = new IECollection(true);  //Find all existing IE instances
                var match = instances.FirstOrDefault(ie=>ie.Url.Contains(UrlFragment));
                _ie = match ?? new IE();
                if (match==null)  //we created a new instance, so we should clean it up when done!
                    _ie.AutoClose = true;
            }
        }

        return _ie;
    }
}

셀렌

  • WatiN보다 느립니다 (특히 새 프로세스를 만들어야하기 때문에).
  • 내장 CSS 선택기 / XPath 지원
  • 셀레늄 IDE는 훌륭합니다 (말할 수는 없지만 동급 최고입니다!).
  • .NET-ish보다 Java-ish 느낌이 더 …하지만 실제로는 프로그래밍 언어에 무관합니다. 모든 명령은 프로세스 외부 ‘드라이버’로 전송됩니다. 드라이버는 실제로 브라우저 인스턴스의 ‘호스트’프로세스입니다. 모든 통신은 프로세스 경계를 ​​가로 질러 입출력해야하며, 이는 WatiN과 관련된 속도 문제를 설명 할 수 있습니다.
  • 분리 된 프로세스- “드라이버”와 “컨트롤”은보다 견고하고 복잡하며, 그리드 / 분산 테스트 환경을보다 쉽게 ​​생성 할 수 있음을 의미합니다. “분배”메커니즘 (예 : Driver & Control 간의 통신)이 WebSphere 또는 다른 기존의 강력한 메시지 큐 관리자를 통해 이루어 졌다면 정말 좋았을 것입니다.
  • Chrome 및 기타 브라우저를 기본적으로 지원합니다.

모든 것에도 불구하고 나는 결국 WatiN과 함께 갔다. 주로 작은 화면 스크래핑 응용 프로그램을 작성하고 개발에 LINQPad를 사용하려고합니다. 원격 IE 인스턴스 (내가 생성하지 않은 인스턴스)에 연결하는 것이 큰 장점입니다. 기존 인스턴스에서 바이올린을 사용할 수 있습니다 … 그런 다음 약간의 스크립트를 실행하십시오 … 그런 다음 바이올린 등을 다시 실행하십시오. 이것은 셀레늄과 관련이 더 어렵습니다.하지만 “일시 중지”가 스크립트에 포함될 수 있다고 생각합니다. 브라우저와 직접 바이올린.


답변

가장 큰 차이점은 Selenium이 다른 브라우저를 지원한다는 것입니다 (IE 또는 FF뿐만 아니라 http://seleniumhq.org/about/platforms.html#browsers 참조) .

또한 Selenium에는 원격 제어 서버 ( http://seleniumhq.org/projects/remote-control/ )가 있으므로 테스트 코드가 실행중인 동일한 시스템에서 브라우저를 실행할 필요가 없습니다. 따라서 웹 앱을 테스트 할 수 있습니다. 다른 OS 플랫폼에서.

일반적으로 Selenium을 사용하는 것이 좋습니다. 몇 년 전에 WatiN을 사용해 왔지만 안정성에 만족하지 못했습니다 (아마도 지금까지 개선되었을 것입니다). Selenium의 가장 큰 장점은 웹 앱을 테스트 할 수 있다는 것입니다. 다른 브라우저에서.


답변

둘 다. Coypu를 사용하십시오. 셀레늄을 감 쌉니다. 훨씬 내구성이 뛰어납니다. https://github.com/featurist/coypu


Ye Oliver 업데이트 맞습니다. 그래 왜 더 나아? 개인적으로 나는 IE 용 Selenium 드라이버가 특히 매우 취약하다는 것을 알았습니다. 아약스 무거운 웹 사이트에서 Selenium for Unit Tests를 운전할 때 다시 발견 한 많은 ‘표준’드라이버 예외가 있습니다.

c #에서 스크립트를 테스트 프로젝트로 작성하고 싶다고 언급 했습니까? 예 수락 지속적인 빌드 배포 내에서 테스트합니다.

잘 코이 푸는 위의 내용을 다룹니다. Selenium의 래퍼로서 다음과 같은 테스트 픽스처를 허용합니다

browser.Visit("file:///C:/users/adiel/localstuff.htm")
browser.Select("toyota").From("make");
browser.ClickButton("Search");

… (구성 가능한 브랜드의) 브라우저가 가동되고 스크립트가 실행됩니다. 범위가 지정된 영역에서 잘 작동하며 매우 확장 가능합니다.

GitHub에는 더 많은 예제가 있으며 아래 Olvier에서 언급했듯이 Adrian의 비디오는 훌륭합니다. 나는 그것이 .Net 세계에서 브라우저 기반 테스트를 추진하는 가장 좋은 방법이라고 생각하며 루비 이름을 따르려고합니다.capybara


답변

둘 다 사용했는데 둘 다 작동하는 것 같습니다. 더 나은 Ajax 지원을 가지고있는 것처럼 셀레늄에 대한 나의 끄덕임. 나는 WaTiN이 성숙 해졌다 고 생각하지만 마지막으로 사용했기 때문에 동일한 것을 가져야합니다.

가장 큰 것은 어떤 개발 환경을 원하십니까? Selenium과 Watin에는 레코더가 있지만 Selenium은 브라우저에 있고 watin은 비주얼 스튜디오에 있습니다. +와-는 둘 다에 있습니다.