캐스퍼 즈 / 팬텀 제이스 vs 셀레늄


150

UI테스트 를 자동화하기 위해 Selenium을 사용하고 있습니다. 최근에 대다수의 사용자가 Chrome을 사용하는 것을 보았습니다. 그래서 우리는 PhantomJS와 Selenium의 장점과 단점을 알고 싶었습니다.

  • 성능 측면에서 테스트 사례를 실행하는 데 걸리는 시간과 같은 실질적인 이점이 있습니까?
  • 언제 Selenium보다 PhantomJS를 선호해야합니까?

답변:


183

그들은 다른 문제를 공격하고 있습니다. PhantomJS는 명령 줄에서 완벽하게 실행되므로 개발 워크 플로 및 / 또는 지속적인 통합 서버의 일부로 연기 테스트의 첫 번째 계층으로 적합합니다. Selenium은 여러 브라우저를 대상으로하므로 브라우저 간 일관성을 유지하고 여러 운영 체제에서 광범위한 테스트를 수행하는 것이 매우 유용합니다.

웹 응용 프로그램을 다양한 웹 브라우저에서 실행해야하는 경우 PhantomJS로만 UI 테스트를 실행해도 가장 많은 테스트 범위를 얻을 수 없습니다. 그러나 심층 테스트를 수행하기 전에 PhantomJS를 시작하고 기본 상태 검사를 수행하는 것이 좋습니다. 로그인 화면이 실수로 고장 나고 기능이없는 금융 응용 프로그램을 테스트하는 광기가 있다고 상상해보십시오!

최신 PhantomJS의 최신 WebDriver 지원으로이 둘 사이의 선이 약간 흐려집니다. 이제 PhantomJS를 사용하여 먼저 테스트를 빠르게 실행 한 다음 심각한 오류가 발생하지 않는다고 가정하면 Selenium 설정에서 동일한 테스트를 계속 수행 할 수 있습니다.


사람들이 phantomjs를 사용하여 실제 프로덕션 앱에서 성능 관련 통계를 수집하는 방법을 이해하는 데 도움이되는 모든 링크.
spirit3189

34
Ariya Hidayat는 PhantomJs의 제작자 인 것 같습니다
Sebastian Patten

PhantomJS로 테스트를 작성하기 시작한 다음 Selenium을 사용하는 설명 된 워크 플로는 전체 테스트 재 작성을 가정합니다 ... Selenium과 함께 PhantomJS 스크립트를 직접 사용할 수 있습니까?
lajarre

1
멋진 PhantomJS, @AriyaHidayat에 감사드립니다! :)
rinogo

49

Ariya가 언급 한 것처럼 최신 WebDriver 통합을 통해 이제 Selenium을 사용하여 PhantomJS를 구동 할 수 있습니다.

이것은 엄청나게 강력합니다.

체크인 할 때마다 헤드리스 Unix 서버에서 CI를 통해 완전 자동화 된 Selenium 테스트 (PhantomJS를 WebDriver 구현으로 사용)를 실행할 수 있습니다. 그런 다음 브라우저 호환성을 테스트하려면 기본 WebDriver 구현을 Chrome, Firefox 등으로 변경하여 로컬에서 테스트를 실행할 수 있습니다.


41

현재 웹 추출 프레임 워크를 작성 중입니다. XPath를 사용하여 250 개 웹 사이트에서 데이터를 가져 오는 524 개의 테스트가 있습니다. 처음에 프레임 워크는 HTML 파서 인 HTMLCleaner를 사용했지만 Javascript 지원을 원하기 때문에 현재 Selenium을 사용 하고 있습니다. HtmlUnit, Chrome, Firefox 및 PhantomJS 드라이버 에 대한 테스트를 실행했습니다 . 다음은 각 접근 방식의 소요 시간과 실패 횟수를 비교 한 것입니다.

                    Failures    Time (secs) 
HtmlCleaner         0           82  
HtmlUnit            169         102 
Google Chrome       38          562 
Firefox             46          1159    
PhantomJS           40          575

일부 의견 :

  • 경우에 따라 "실패"가 전혀 실패하지 않을 수 있습니다. Javascript가 DOM을 다시 작성하기 때문에 추출기가 실패했을 수 있습니다. 원인을 찾기 위해 실패를 분석하는 중입니다.

  • 즉, HtmlUnit은 가장 빠른 Selenium 드라이버이지만 신뢰할 수 없습니다. 이 신뢰할 수없는 것은 자바 스크립트에만 해당되는 것이 아니며, 태그 밸런싱 알고리즘에서 무언가가 깨져서 "지저분하고 더러워진 실제"HTML을 처리하는 데 문제가있는 것입니다. 이에 대해 몇 가지 문제가 제기되었지만 수정되지 않았습니다 ( HTML-UNIT 1423HTML-UNIT 1046 참조) .

  • 이미지로드 및 스타일 시트를 비활성화하더라도 Firefox는 가장 느린 Selenium 드라이버입니다. 로드 및 초기화 속도가 가장 느리기 때문에 Chrome보다 속도가 느리고 추출에 실패 할 때마다 드라이버를 다시로드해야합니다 (테스트에서 5 개의 드라이버 풀을 생성하여 모두에 대한 URL 검색 지연을 완화합니다) 셀레늄 웹 드라이버).

  • PhantomJS는 Firefox보다 정확도가 높고 Chrome보다 약간 낮지 만 Firefox 시간의 절반 정도입니다. 무엇보다, 나는 내 dev 상자에서 실행할 수 있으며 여러 브라우저를 시작하여 "내 컴퓨터를 인계하지"않기 때문에 작업을 계속할 수 있습니다.

PhantomJS를 강력히 추천합니다.


1
phantomJS로 테스트 스위트를 실행하는 데 9 분이 걸립니까? 영원히 느껴 져야합니다 ...
Kevin

@Kevin 예 :)-그러나 HTMLCleaner는 표준 테스트입니다. JUnit 범주 를 사용 하여 다른 테스트를 선택 사항으로 표시하여 표준 단위 테스트의 일부가 아님을 표시합니다
Mark Butler

감사. 예, 전체 JS 테스트를 수행하고 있으며 몇 페이지 테스트에서 15-20 초와 같이 매우 빙하 적입니다. 아마도 '빙판'의 규모를 hehe :) 조정해야 할 것입니다 :) 홀수이지만 수동으로 수행하면 양식을 클릭하는 데 ~ 5 초 밖에 걸리지 않습니다.
케빈

1
@lucaswxp 예! 그리고 그 사이에 다른 많은 프로젝트가 있습니다. 위에서 설명했듯이 완벽한 선택은 없습니다. 당시에는 HtmlCleaner를 사용했지만 추출 할 페이지에 필요한 경우 PhantomJS를 사용하는 옵션을 추가했습니다.
Mark Butler

1
@iconoclast 아니요-불행히도 이전 고용주에게는 IP가 있습니다.
마크 버틀러

2

Selenium과 PhantomJS의 성능 활용 PhantomJS는 헤드리스 브라우저 기능을 갖추고 있으므로 셀레늄이있는 브라우저 중 하나로 사용하는 것이 좋습니다 (IE, Chrome 등의 기존 브라우저 외에도)이 방법의 장점 :

  1. CI의 웹 응용 프로그램에 대해 Sanity를 수행하는 데 사용할 수 있습니다 (에이전트 컴퓨터에는 IE 또는 크롬이 없더라도) 테스트가 효과적으로 실행됩니다.
  2. 일부 개발 팀은이 방법을 사용하여 빠른 결과를 얻고 적은 시간과 리소스를 소비합니다.
  3. 팬텀 JS의 가장 큰 특징은 멀티 스레딩을 사용하여 병렬 테스트를 실행하는 화면 캡처로 실행 시간을 크게 단축시킵니다.

1

PhantomJS를 사용하면서 직면 한 과제 :

내 응용 프로그램은 웹 응용 프로그램의 가격을 책정했습니다.

  1. Chrome 브라우저에서 제대로 작동하는 로케이터가 phantomJS에서 작동하지 않는 경우가 있습니다.
  2. 때로는 셀레늄으로 더블 클릭 또는 컨텍스트 클릭을 수행하는 동안 클릭하지 않는 첫 번째 위치에서 작업 coz를 확인하기 위해 추가 검사를해야합니다.
  3. 캐시 및 쿠키 지속성. 로그 아웃 한 후 로그인 한 후 데이터는 캐시에 남아 있습니다. | 그래서 우리는 크롬에서 테스트를 수행합니다.
  4. "파일 업로드 문제"를 발견 한 가장 중요한 문제 중 하나입니다. 응용 프로그램의 phantomJs 브라우저에서 파일을 업로드 할 수 없습니다. 우리는 javascriptexcutor, jqueries 많은 것을 시도했지만 그중 아무것도 작동하지 않았습니다. Chrome에서도이 테스트를 수행합니다. 참고 : PhantomJS의 웹 요소와 상호 작용하기 위해 프레임 워크에서 광범위하게 자바 스크립트 함수를 사용했습니다. 한 가지 확실한 것은 PhantomJS에서 실행 시간이 매우 짧다는 것입니다. 따라서 기능 / 성능을 원하는지 여부에 따라 고객 우선 순위에 따라 달라집니다. 엔드 투 엔드 시나리오를 테스트하려면 크롬으로 이동하십시오.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.