2008-09-29 4 views
3

큰 웹 응용 프로그램에서 Selenium 테스트 캠페인을 설정하고 있습니다. 우리가 한 첫 번째 작업은 테스트 전에 데이터베이스에서 SQL 데이터를 초기화하고 테스트를 시작하고 결과를 보관 한 다음 데이터를 지우는 프레임 워크를 작성하는 것이 었습니다.웹 사용자 인터페이스 테스트를 성공적으로 수행하려면 어떻게해야합니까?

우리는 전용 데이터베이스에서 매일 TeamCity에 의해 실행되는 Maven 2 프로세스에이를 통합했습니다.

지금 여러 개의 Selenium 테스트를 설정했지만 계획대로 사용하지는 않습니다.

이유는 테스트가 회귀 (데이터가 변경되었을 수 있음, 저장 프로 시저가 다시 컴파일되었을 수 있음)와 다른 이유로 때때로 손상된다는 것입니다.

나는 사용자 인터페이스 테스트에 큰 성공을 거두고 싶다면 그 이유를 알고 싶습니다. 커먼즈 에러도 관심이 있습니다.

답변

1

테스트 가능성이 많이 도움이됩니다. 웹 응용 프로그램의 테스트 가능성에서 가장 큰 것은 페이지에서 상호 작용해야하는 모든 HTML 요소에 고유하고 일관된 속성이있는 경우입니다. HTML 요소를 식별하는 데 사용하는 속성 (Selenium이 xpath를 사용함)이 build-to-build 또는 session-to-session과 일치하지 않거나 안정적이지 않으면 테스트 스크립트가 실패합니다. 또한 이러한 속성은 자동화 도구 (이 경우 Selenium)가 웹 페이지에서 오브젝트를 안정적으로 찾을 수 있도록 고유해야합니다.

0

나는 페이지에 스타일이 추가되기 전에 작업의 부가적인 이점이있는 http-unit을 사용합니다.

http://httpunit.sourceforge.net/ 테스트를 첨부하여 maven2의 통합 테스트 단계에서 실행할 수 있습니다. 자바로 작성된 사이트

, HttpUnit은에서

브라우저 동작의 관련 부분을 에뮬레이트, 양식 제출, 자바 스크립트, 기본 HTTP 인증, 쿠키 및 자동 페이지 리디렉션을 포함 , 그리고 자바를 할 수 있습니다 테스트 코드는 페이지를 텍스트, XML DOM 또는 양식, 테이블 및 링크로 반환했습니다.

1

신뢰할 수있는 단위 테스트를 원하면 동일한 입력이 필요합니다. 데이터베이스의 시작 상태는 입력입니다. 따라서 매번 동일한 시작 데이터베이스가 있어야합니다. 물론 다른 입력을 사용하여 테스트를 수행하려는 경우 다른 단위 테스트를 만들어야합니다 (결과가 분명히 동일하지 않음).

이와 같은 작업을 수행 할 때 항상 동일한 데이터베이스를 시작점으로 사용합니다. 물론 데이터베이스의 수정없이 일부 테스트가 실패 할 수도 있습니다. 따라서 다른 테스트가 실패하더라도 다른 테스트는 실패 할 수 있습니다. 유닛 테스트 도구가 허용하는 경우, '부모'가 실패 할 때 테스트가 전혀 실행되지 않도록 테스트 간의 종속성을 정의해야합니다.