문제

좋아, 어쩌면 뭔가 빠졌을 수도 있지만 셀레늄의 요점은 보이지 않습니다. 코드를 사용하여 브라우저를 열고 코드를 사용하여 버튼을 클릭하고 코드를 사용하여 텍스트를 확인하는 점은 무엇입니까? 나는 웹 사이트를 읽고 이론적으로 웹 애플리케이션을 자동으로 테스트하는 것이 어떻게 좋을지 알지만 결국 클릭하고 시각적으로 확인하는 것이 아니라이 모든 코드를 작성하는 데 훨씬 더 많은 시간이 걸리지 않습니다. ?

나는 그것을 얻지 못한다 ...

도움이 되었습니까?

해결책

"단위"테스트 프레임 워크에 기능 테스트를 작성할 수 있습니다 (문제는 나중에 이름 지정입니다).

브라우저를 통해 응용 프로그램을 테스트 할 때는 일반적으로 시스템을 완전히 통합하는 시스템을 테스트합니다. 변경 사항을 커밋하기 전에 이미 테스트해야한다고 생각하면 (연기 테스트) 수동으로 테스트하고 싶지 않습니다.

정말 좋은 것은 연기 테스트를 자동화 할 수 있고 QA는이를 강화할 수 있다는 것입니다. 노력의 복제를 줄이고 팀 전체가 더 가까워지면서 꽤 효과적입니다.

추신 : 처음으로 사용하는 연습으로 학습 곡선이 있으므로 처음에는 처음에는 더 오래 걸립니다. 나는 또한 당신이 페이지 객체 패턴, 테스트를 깨끗하게 유지하는 데 도움이됩니다.

Update 1: 테스트는 페이지에서 JavaScript를 실행하여 동적 인 페이지를 테스트하는 데 도움이됩니다. 또한 다른 브라우저로 실행할 수 있으므로 크로스 브라우저 문제를 확인할 수 있습니다 (적어도 비주얼을 확인해야하므로 기능 측면에서).

또한 테스트에서 다루는 페이지의 양이 쌓이면 전체 상호 작용 주기로 빠르게 테스트를 만들 수 있습니다. 페이지 객체 패턴을 사용하여 다음과 같습니다.

   LastPage aPage = somePage
      .SomeAction()
      .AnotherActionWithParams("somevalue")
      //... other actions
      .AnotherOneThatKeepsYouOnthePage(); 
  // add some asserts using methods that give you info
  // on LastPage (or that check the info is there).
  // you can of course break the statements to add additional 
  // asserts on the multi-steps story.

당신이 이것에 대해 점진적으로 가고 있다는 것을 이해하는 것이 중요합니다. 이미 구축 된 시스템 인 경우 작업중인 기능/변경 사항에 대한 테스트를 추가합니다. 길을 따라 점점 더 많은 커버리지를 추가합니다. 대신 설명서로 이동하면 일반적으로 테스트를 놓친 것을 숨 깁니다. 따라서 모든 페이지에 영향을 미치는 변경을 수행하고 (시간이 허용되지 않으므로) 서브 세트를 확인하면 실제로 테스트 한 것과 QA가 작동 할 수있는 것을 알 수 있습니다. 그곳에서 (더 많은 테스트를 추가함으로써).

다른 팁

이것은 일반적으로 단위 테스트에 대해 말하는 일반적인 것입니다. "테스트를 위해 두 배나 많은 코드를 작성해야합니까?" 여기에도 동일한 원칙이 적용됩니다. 보상은 코드를 변경하고 아무것도 깨뜨리지 않는다는 것을 알 수있는 능력입니다.

반복 할 수 있기 때문입니다 같은 반복해서 테스트하십시오.

응용 프로그램이 50 페이지 이상이고 자주 빌드를 수행하고 X 수의 주요 브라우저에 대해 테스트 해야하는 경우 많은 의미가 있습니다.

50 페이지, 각각 10 개의 링크가 있고 일부는 양식을 통과 해야하는 다단계 양식을 가지고 있다고 상상해보십시오. 모든 신용 카드 번호, 모든 주소로 올바르게 작동하는지 확인하기 위해 약 100 가지 정보 세트를 넣습니다. 모든 국가에서 등

수동으로 테스트하는 것은 사실상 불가능합니다. 인적 오류가 발생하기 쉬워 테스트가 올바르게 이루어 졌다고 보장 할 수 없으며 테스트가 테스트되는 것에 대해 테스트가 무엇을 증명했는지 신경 쓰지 마십시오.

또한 현대 개발 모델을 따르는 경우 많은 개발자가 모두 연결이 끊어지고 분산 된 방식으로 동일한 사이트에서 작업하면 (예를 들어 비행기에서 랩톱에서 사이트에서 작업하는 경우) 인간 테스터는 그렇지 않습니다. 액세스 할 수 있어도 단일 개발자가 새로운 것을 시도 할 때마다 다시 테스트 할 인내심이 훨씬 적습니다.

괜찮은 웹 사이트 크기에서 테스트를 자동화해야합니다.

요점은 모든 종류의 자동 테스트와 동일합니다. 코드를 작성하는 데는 "클릭하고 시각적으로 작동하는 것만으로도 작동하는 것", 아마도 10 또는 50 배 더 많은 시간이 걸릴 수 있습니다.

그러나 사소한 응용 프로그램은 결국 50 배 이상 테스트되어야하며, 수동 테스트는 압력을 받고 생략되거나 완화 될 수있는 성가신 일로 인해 버그가 중요한 마감일이 될 때까지 버그가 남아있을 때까지 버그가 남아 있습니다. 이로 인해 계약 처벌로 인한 스트레스가 많은 전 밤 코딩 세션 또는 심지어 금전적 손실이 발생합니다.

Selenium (Watir와 같은 유사한 도구와 함께)을 사용하면 컴퓨터가 좋은 방식으로 웹 앱의 사용자 인터페이스에 대해 테스트를 실행할 수 있습니다. (테스트와 직접 관련이없는 이상한 것이 잘못되었다는 점에 주목하는 것과 같이 인간이 훨씬 더 나은 다른 UI 테스트 조각이 많이 있습니다.)

브라우저를 시작하기 위해 생성 된 HTML을 보지 않고 앱의 전체 스택을 포함시키는 다른 방법이 있습니다. Webrat 그리고 기계화. 이들 중 대부분은 JavaScript-Heavy UI와 상호 작용하는 방법이 없습니다. 셀레늄은 당신이 여기서 다소 덮여 있습니다.

Selenium은 웹 애플리케이션을 테스트하기 위해 모든 수동 클릭 및 입력을 기록하고 다시 실행합니다. 계속해서.

시간이 지남에 따라 나 자신에 대한 연구에 따르면 나는 테스트를 적게하고 일부는 건너 뛰거나 잊어 버리는 경향이 있음을 보여주었습니다.

셀레늄은 대신 각 테스트를 수행하고 실행하십시오. 예상 한 내용을 반환하지 않으면 알려줄 수 있습니다.

이 모든 테스트를 기록하는 데 선불 비용이 있습니다. 단위 테스트와 같은 것을 추천합니다. 아직 가지고 있지 않은 경우 코드의 가장 복잡하고 감동적이거나 가장 업데이트 된 부분으로 사용하십시오.

그리고 해당 테스트를 Junit 클래스로 저장하면 여가에서 자동화 된 빌드의 일부로 또는 JMeter를 사용하여 가난한 사람의 부하 테스트에서 재실행 할 수 있습니다.

과거 작업에서 우리는 웹 애플을 테스트하는 데 사용했습니다. 웹 애플이 모양을 변경하면 테스트를 다시 작성할 필요가 없습니다. 레코드 및 재 플레이 유형 테스트는 모두 다시 설명해야합니다.

셀레늄이 필요한 이유는 무엇입니까? 테스터는 인간이기 때문입니다. 그들은 매일 집에 가고, 항상 주말 일을하고, 병을 앓고, 공휴일을하고, 매번 휴가를 가고, 반복적 인 작업을 수행하고, 필요할 때 항상 주변에 의존 할 수는 없습니다.

테스터를 제거해야한다고 말하는 것은 아니지만 자동화 된 UI 테스트 도구는 시스템 테스터를 보완합니다.

요점은 매뉴얼 및 시간이 많이 걸리는 테스트 이전의 내용을 자동화하는 기능입니다. 그렇습니다. 테스트를 작성하는 데 시간이 걸리지 만 한 번 작성하면 팀이 원하는만큼 자주 실행할 수 있습니다. 그들이 실행할 때마다 웹 응용 프로그램의 동작이 일관성이 있는지 확인하고 있습니다. 셀레늄은 완벽한 제품은 아니지만 브라우저와 현실적인 사용자 상호 작용을 자동화하는 데 매우 능숙합니다.

셀레늄 접근 방식이 마음에 들지 않으면 시도해 볼 수 있습니다. htmlunit, 기존 단위 테스트에 더 유용하고 쉽게 통합 할 수 있습니다.

많은 GWT 프로젝트와 같은 풍부한 웹 인터페이스가있는 응용 프로그램의 경우 Selenium/Windmill/Webdriver 등이 수락 테스트를 만드는 방법입니다. GWT/GXT의 경우 최종 사용자 인터페이스 코드는 JavaScript에 있으므로 일반 Junit 테스트 사례를 사용하여 수락 테스트를 작성하는 것은 기본적으로 의문의 여지가 없습니다. Selenium을 사용하면 실제 사용자 작업 및 예상 결과와 일치하는 테스트 시나리오를 만들 수 있습니다.

Selenium에 대한 나의 경험을 바탕으로 응용 프로그램 논리 및 사용자 인터페이스에서 버그가 표시 될 수 있습니다 (테스트 사례가 잘 작성된 경우). Ajax 프론트 엔드를 다루려면 약간의 노력이 필요하지만 여전히 가능합니다.

나는 그것을 사용하여 다중 페이지 양식을 테스트하는데 동일한 것을 계속해서 입력하는 데 부담이되므로 반복합니다. 그리고 특정 요소가 있는지 확인하는 능력은 훌륭합니다. 다시 한 번, 양식을 예제로 사용하면 최종 셀레늄 테스트가 주문 프로세스가 끝날 때 "주문에 감사드립니다 ..."라는 말과 같은 것이 확인할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top