7

우리는 전형적인 웹 애플리케이션 스택을 가지고 있습니다. 응용 프로그램에 대해 실행되는 셀레늄 (webdriver) 테스트가 120 개 있습니다. 이것은 원형 교차로에서 1 시간이 걸립니다. 우리는 빌드 체인 "컴파일> 단위 테스트> 통합 테스트> GUI 테스트"의 일부로 이들을 실행합니다. gui 테스트는 많은 시간이 걸리고 우리는 어떻게 구조화하는 것이 더 좋은지 궁금해하고 있습니다. 현재 그들은 "행복한 경우와 불행한"사례 테스트입니다. 그들은 상당히 안정하다. 즉, 프로그래머 오류로 인해 실패하지 않을 것이다.Gui 테스트가 너무 오래 걸립니다. 어떻게해야할까요?

빌드 시간을 단축하고 가장 중요한 부분은 GUI 테스트입니다. 우리는 "고객 여행"즉 비즈니스 사용자와 함께 몇 가지 전형적인 유스 케이스를 지정하고 너무 많이 테스트하는 대신 해피 경로를 테스트하려고합니다 .....

어떻게할까요? 당신 GUI 테스트? 여기 내 마음에 와서 몇 가지 아이디어

  • 에만 즉, 행복 경로
  • 는 "고객의 여행 테스트"할 테스트를 실행 한 여러 행복 경로 테스트를 할 수 있습니다 ("페이지를 클릭")
  • 단지 업무 (미션 크리티컬)에 의해 지정 "10"
  • 10 + 내가 감사하겠습니다

야간 빌드 (1 회)으로 "모든 나머지는"당신의 아이디어

0을

감사 마르셀

답변

6

야간은 셀레늄 테스트를위한 완벽한 시간이다 - 당신은 그냥 넣어 기억해야한다 "저를 끄지 마십시오!" 귀하의 컴퓨터에 스티커 메모 :).

또한 야간이 너무 짧아서 모든 테스트를 실행할 수 없으면 항상 Selenium Grid입니다. 그리드를 사용하면 여러 대의 컴퓨터에서 동시에 테스트를 실행할 수 있습니다!

우리는 여러 상황에 적용 할 수있는 몇 가지 테스트를 실시하고 있습니다 (suites). 주요 릴리즈 (테스트, 프리 라이프, 프로덕션) 전에는 모든 것이 실행됩니다. 일반적으로 (매일 또는 매시간) 혼잡 한 날에는 "응용 프로그램을 통한 사용자의 빠른 경로 정상화"제품군 만 실행됩니다. 그리고 누군가가 큰 버그를 "고쳤다"면, 그 부분의 어플리케이션과 관련된 테스트가 실행됩니다.

+0

따라서 모든 제안 사항이 양호한 것 같습니다. 하루 동안 시험을 치러야 할 시간을 낭비하지 마십시오. –

4

시간은 나에게 절대적으로 좋은 것처럼 보입니다.

하나의 제안은 연기 테스트 중 테스트를 결정할 수 있으며 매일 밤마다 실행해야합니다. 즉, 웹 응용 프로그램의 코어 기능을 그대로 보여주는 테스트는 그대로이며 작동 중입니다. 더 자세한 테스트는 다른 시간에 (며칠에 한 번씩) 실행할 수 있습니다.

우리는 약 2 시간이 걸렸습니다. 하나의 테스트가 실패했을 때 문제를 고치고 커밋했으나 CI 서버에서 해결 된 것을 확인하기 위해 오랜 시간 동안 기다려야 만하는 유일한 문제가 있습니다.

+1

로컬 컴퓨터에서 고정 테스트를 확인하지 않는 이유는 무엇입니까? –

+0

물론 로컬 컴퓨터에서 고정 테스트를 확인하지만 Selenium 테스트는 다른 데이터베이스 및 소프트웨어 복사본을 가리 킵니다. 물론 몇 가지 app.config가 변경되고 동일한 버전을 로컬로 가리킬 수 있습니다. – Arran

+0

유일한 문제가 해결되었습니다 :) –

1

TeamCity은 동일한 기계에서 빌드를 병렬로 실행할 수 있으므로 유닛 테스트 및 통합 테스트와 함께 GUI 테스트가 빌드 체인에 있어서는 안됩니다. UI 테스트에는 별도의 데이터베이스와 별도의 빌드가 있어야 개발자 나 수동 테스터 또는 다른 이해 관계자의 시간을 낭비하지 않아야합니다. TeamCity는 모든 통계를 수집하고, 빌드 실패 등에 대한 이메일을 발송합니다.
다음 단계는 병렬 처리입니다.Slanec으로 Mbunit (C#) 또는 TestNG (java)과 함께 Grid (여러 대의 컴퓨터가 필요하지 않음)를 사용할 수 있다고 말했습니다. 그리드의 도움으로 테스트 실행 시간을 줄일 수 있습니다. 10 번까지 모든 테스트를 실행하려면 6 분 (!) 분이 소요됩니다.
또한 큰 테스트에서 일부 테스트를 결합 할 수 있습니다 (그러나 이로 인해 실패 원인을 발견하고 테스트를 유지하기 어려워집니다).
이 단계 후에 Gui 테스트는 각 소스 커밋 후에 실행될 수 있으며 응용 프로그램 버그 상태에 대한 빠른 응답을 제공합니다.

+0

aleh, 의견을 남겨주셔서 감사합니다. 이미 팀워크 설정이 있습니다. 우리는 각 테스트 시나리오에 전용 데이터베이스 등을 가지고 있습니다. 5 명의 요원이 테스트를 병렬로 실행합니다 (언급 된 체인에서). – Marcel

+0

@ Martell은 5 명의 에이전트 사이에서 단위 테스트를 분할 했습니까? Gui 테스트는 별도의 배포없이 체인없이 독립적으로 실행되어야하므로 1 시간 (확인 하겠지만 많이는 아닐 것입니다) 이상 걸리지 않으면 걱정할 필요가 없습니다 –

+0

아니요, 각 체인은 5 개의 에이전트 중 하나에서 실행됩니다. 이 순간 우리에게는 좋을 것입니다. 단위 테스트는 그리 오래 걸리지 않습니다. 우리에게 두통을주고있는 유일한 것은 GUI 테스트입니다. 우리는 사슬에서 그들을 뽑아 내고 (간단한 연기 테스트 만 남겨두고) 전용 타임 슬롯 (어쩌면 밤에)에서 실행해야한다고 생각합니다. 나를 위해 gui 테스트는 페이지를 테스트 할 "자동화 된 품질 보증 담당자"와 같은 것입니다. 개발자가 무언가를 변경하면 해당 지역의 gui 테스트를 팀 또는 개인 팀 빌드를 통해 실행해야합니다. – Marcel

0

위대한 질문, 훌륭한 답변.

120 gui 테스트의 우선 순위를 정할 수 있습니다. 가장 중요한 테스트 나 실패 할 가능성이 가장 높은 테스트를 순서대로 실행할 수 있습니다. 이렇게하면 빌드 시간을 줄이는 데 도움이되지 않지만 빌드에서 유용한 피드백을 더 빨리 얻는 데 도움이됩니다.

이 우선 순위 (상위 10 개)는 수정하지 않아도되지만 릴리스/반복/완료 기사/요일 등에서 변경할 수 있습니다. 예를 들어 최신 GUI 테스트를 먼저 실행할 수 있습니다. 또는 가장 최근에 변경된 것. 또는 가장 최근에 변경된 대부분의 코드를 다루는 코드.

테스트 케이스 우선 순위 지정의 영역에서 진행되는 연구가 꽤 있지만 툴 업과 지원은 즉시 지원됩니다.

관련 문제