문제

자동 테스트를 사용하여 웹 응용 프로그램의 기능을 확인합니다. 테스트 사례에 대한 주장을 덜 복잡하고 유연하게 유연하게 만들기 위해, 우리는 'testids'의 도입, 즉 HTML 마크 업에있는 IDS의 도입을 고려하여 테스트 케이스가 페이지에서 요소를 찾고 확인하는 데 도움이됩니다. 또한 이러한 TESTID는 페이지의 제한된 데이터로 인해 현재 불가능한보다 구체적인 통합 테스트를 허용합니다.

그러나 여기에 우리를 망설이는 이유는 다음과 같습니다.

  • 테스트 ID를 소개한다는 것은 의미합니다 테스트를 위해 테스트를 변경합니다
  • 보안 - 우리는 페이지에 표시되지 않는 내부 도메인 객체 ID 및 기타 정보를 공개합니다.
  • 표준 - 테스트를 마크 업에 넣는 방법에 따라 요소 또는 속성의 의도 된 의미 론적 사용 (예 : 'ID'또는 'class'속성, 기타 HTML 요소 등)을 위반할 가능성이 높습니다.
  • 간섭 - TestIDS는 응용 프로그램 코드를 방해 할 수 있습니다
  • 성능 - TestID는 불필요한 마크 업 (사용자에게)이며 페이지 크기를 늘리십시오 (큰 페이지에서만 중요)

HTML을 테스트/준비하도록 TestID를 제한하는 것은 프로덕션에 사용될 코드를 테스트하고 테스트/스테이징 환경이 다르게 행동하기를 원하지 않기 때문에 좋은 생각이 아닙니다. 실제로, 우리는 현재 릴리스 후 라이브 시스템에 대해 테스트 스위트의 일부를 실행합니다.

TestID가 좋은 생각이라고 생각하십니까? 그렇다면 어떻게 마크 업에 넣을 것인가?


내가 말하는 내용을 보여주는 샘플 마크 업 :

<!-- this test id allows an integration test to verify that
  the carrot 188271 is in fact green but exposes the id to the user -->
<tr id="testid-carrot-id-188271">
    <td class="color">green</td>
    <td class="size">doesn't matter</td>
</tr>
도움이 되었습니까?

해결책

나는 더 쉽고 더 나은 테스트의 이점이 인식 된 위험을 능가한다고 말하고 싶습니다. 다음과 같은 내용에 대해 이야기하고 있다고 가정합니다. ID = 'resultDetail'추가는 페이지의 결과 세부 요소에 자동 테스트를 쉽게 찾을 수 있습니다. 나는 솔직히 그것에 해를 끼치 지 않는다. 내가 지나치게 단순한 견해를 가지고 있다면, 아마도 당신은 당신이 고려하고있는 것에 대한 더 나은 아이디어를 제공하기 위해 샘플 마크 업을 던질 수 있습니다.

샘플 마크 업을 보았을 때 사용자가 ID를 사용할 수있는 데 아무런 문제가 없습니다. 많은 응용 프로그램이 도메인 ID를 노출시킵니다. 사실, 내 경험상, 종종 도메인 ID는 UI의 필수 부분입니다. 종종 ID는 더 자세한 정보를 클릭하여 편집, 삭제 등을 클릭 할 수있는 링크입니다.

다른 팁

라이브 사이트에서 테스트를위한 코드를 남기지 않을 것입니다. 그것은 단지 나쁜 원칙과 해킹을 초대하는 것입니다.

테스트 ID가 페이지의 다른 ID와 충돌하지 않도록 (IDS는 고유해야 함) 라이브 코드에서 참조되지 않도록 형식화되어있는 한 (무언가가 있다고 판단 할 수없는 경우. 여기에서 더 큰 잘못) 그러면 ID가없는 테스트 사이트와 라이브 사이트 사이에 동작에 차이가 없어야합니다.

내 생각에, 모범 사례는 개발 사이트에서 테스트 코드가 올바르게 실행되도록 설계하고 제거하면 라이브 사이트에 해를 끼치 지 않는다는 것을 알고 있습니다. 내 사이트가 라이브 버전을 정기적으로 테스트하여 제대로 작동하는지 확인 해야하는지 걱정할 것입니다.

XPath와 같은 요소를 식별하기 위해 다른 것을 사용하는 것을 고려해 보셨습니까? 귀하의 페이지가 얼마나 역동적인지는 모르겠지만, XPath는 원하는 요소에 대해 매우 구체적 일 수 있습니다.

개인적으로 나는 테스트 ID로 생산 HTML을 부풀리지 않을 것입니다.

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