2009-08-05 10 views
2

내 프로젝트의 테스터는 자동화 된 테스트를 더 쉽게하기 위해 모든 페이지 요소에 고유 한 HTML ID를 원합니다.모든 요소에 HTML ID가 있음을 자동으로 어떻게 확인할 수 있습니까?

ID를 개발할 필요가 없기 때문에이 작업을 수행하는 것을 기억하기가 어렵습니다. 잊지 않도록 어떻게 할 수 있습니까?

나는 Checkstyle이 IntelliJ의 "검사"나 심지어 "검사"라고 말할 수 있다고 생각했지만,이 중 어느 것도이 기능을 지원하지 않는 것 같습니다.

아이디어가 있으십니까?

+3

테스터를 해고하십시오. 그들은 분명히 그 일을 할 능력이 없습니다. – NickFitz

+2

페이지 요소에 고유 한 HTML ID가 있으면 테스트 가능성이 높아질 수 있습니다. 그들이 존재한다는 요구는 무능력 함을 암시하지 않습니다 *. 자동화 된 테스트 프레임 워크의 컨텍스트와 페이지 요소가 프레임 워크와 어떤 관계가 있는지 알지 못하면 ... –

+0

올바른 것은 자동화 된 테스트 프레임 워크입니다. –

답변

7

두 가지 아이디어가 떠 올랐습니다. 1. 무엇이 없습니까? 그래도 작동하지 않으면 2. 새로운 테스터를 얻으십시오. ;)

모든 테스트 엔진에는 어떤 요소가 필요합니까?

+0

자동 테스트 프레임 워크 용입니다. 알다시피, 대부분의 자동화 된 테스트 프레임 워크는 일관된 결과를 얻기 위해 고유 한 ID에 의존합니다. 일부 개발자는 이전에이를 수용해야 했습니까? –

+0

필자는 여러 웹 테스트 프레임 워크를 사용했으며 입력 필드에만 ID가 필요했습니다. 어쨌든 그들을 가지고 있어야합니다. – NotMe

+1

id는 모든 요소에 필요하지 않으며 입력으로 사용되는 요소 만 필요합니다. 대부분의 입력 필드에는 이미 ID 또는 이름이 있습니다. 개발자가 모델에 바인딩 할 때 입력 필드가 필요합니다.따라서 검토 후에 버튼과 링크와 같은 ID가없는 몇 가지 사항 만 있으며 유효성 검사 도구 없이는 상대적으로 쉽게 수행 할 수 있습니다. –

4

자바 스크립트에서 뭔가를 원한다면 jQuery를 사용할 수 있습니다. $("*:not([id])").css('backgroundColor', 'yellow');

노란색으로 ID를 지정하지 않은 채로 아무 것도 색칠하지 않겠습니까? 여기서는 Firebug로 소스를 탐색하고 노란색으로 표시되는 항목을 찾습니다.

$.each($(*:not([id])), function(){ 
    $(this) 
     .css("backgroundColor", "yellow") 
     .addClass("no-id"); 
}); 
+0

그러면 요소에 ID가 있는지 확인 만됩니다. ID가 고유하지는 않습니다. 그러나 이것을 W3C 유효성 검사와 함께 사용할 수 있습니다. –

+0

오른쪽. 이것은 모든 ID가 유효성 검사 때문에 고유하다고 가정합니다. 테스터가 더 쉽게 사용할 수 있도록 실행해야합니다. –

1

모든 요소에 ID를 추가하는 것이 전혀 의미가 없습니다. 그러나 주장하는 경우, 프로덕션 사이트에서 생략 할 수있는 테스트 사이트에 ID를 추가하는 작은 자바 스크립트 코드를 추가 할 수 있습니다.

건물 Chacha102의 생각에

$(document).ready(function() { 
    var index = 1; 
    $.each($(*:not([id])), function(){ 
     $(this).attr("id", "id1000" + index++); //or some other unique generator 
    }); 
} 

그냥이이 테스트 도구 전에 실행해야합니다!

+0

자동화 된 테스트 프레임 워크가 작동하기 위해서는 서로 다른 빌드에서 ID가 일관되어야하므로 생성 ID는 작동하지 않을 것입니다. –

+0

정확합니다. 각 빌드와 일관된 ID 개념을 얻지 못하는 사람들은 진정으로 테스트 가능한 코드를 작성하는 방법을 모릅니다. –

2

모든 단일 페이지의 모든 요소에 ID를 설정하는 것은 나에게 나쁜 계획처럼 보입니다.

  1. ID는 고유해야합니다.
  2. 이것은 귀하의 페이지에 많은 부 풀림을 더할 것입니다.
  3. 이것이 생성되는 경우 ... 나는이 테스트 도구를 사용할 때마다 동일해야합니다.
  4. 이 테스트 도구의 이름은 무엇입니까?
+0

나는이 도구가 Ax : http://www.odin.co.uk/product_axe.html이라고 생각한다. 모든 요소가 버튼, 드롭 다운, 링크 등과 같이 기능적으로 사용되는 요소 만 필요로하는 것은 아니다. 나는 거기에서 희망을 갖고 있었다. 어떤 페이지 요소가 ID를 필요로하는지 정의하고 이에 따라 유효성을 검사 할 수있는 도구 일 수 있습니다. –

2

하여 더 이유를 관리하는 물류 악몽처럼 보인다는 ID를 모든 페이지 이 약간 다른 데이터를 당신이 그것을 액세스 할 때마다이 포함되어 있다고 가정하면 모든 요소

  • 의 "요구"되는 이상한 것 같다 도구가 이것을 지원하지 않는다는 것은 다소 이상한 요청이라는 것입니다. 나 거기 가봤 어.

    위의 jQuery 솔루션을 사용하면 요청한 내용을 얻을 수 있지만, 팀 (또는 팀)이 필요로하는 내용이 아닐 수도 있습니다. 필자는 테스터에게 다시 돌아가서 (발사하지 말 것!) 요구 사항을 조금 더 이해하려고 노력할 것입니다. 정말 마다 요소입니까? 두 페이지를 함께보고 누락 된 부분을 확인하십시오. 아마도 그들은 단지 좌절하고 자신보다 ID가 몇 개 더 필요할 것입니다.

    테스트 도구는 DOM 요소를 ID로만 처리 할 수 ​​있다고 믿기 어렵습니다. 동등하게 잘 작동하는 다른 옵션과 지원을 위해 추가 할 수있는 옵션이 있는지 확인하십시오.(모든 곳에서 ID를 추가하는 것보다 확실히 쉬울 것입니다.)

    마지막으로, ID가 유일한 방법 인 경우 요소 수보다 영구적 인 ID를 할당하는 것을 고려하십시오. innerHTML의 일종의 해시 , 요소의 부모 + 색인 또는 그와 비슷한 것.

    ID를 생성해야하는 경우 고려해야 할 또 다른 사항은 서버 측에서 수행하는 것입니다. 현재 사용중인 언어에 따라 브라우저에서 수행하기가 더 쉬울 수도 있으며 브라우저 성능을 저하시키지 않습니다.

    행운을 빈다. 하루 작업으로 테스트 자동화에 작동하는 사람으로

  • +0

    경험상 문제는 관심있는 요소가 포함 된 중첩 div 태그를 계속 변경하는 팀과 관련이 있습니다. 따라서 다른 모든 테스트주기 테스터는 구조 변경을 고려하여 스크립트를 다시 작성해야합니다. 관심 분야에 고유 한 ID가 있으면 셀렌 (또는 무엇이든) 테스트에서 해당 ID를 참조하기 만하면됩니다. –

    4

    : 과 상호 작용하는 요소에 고유 ID를 추가하는 요청은 테스트의 자동화 제품군에 안정성을 많이 추가 할 예정이다.

    DOM의 모든 단일 요소에 ID를 추가하는 것은 물론 우스운 오버 헤드가 될 것입니다.

    대부분의 프레임 워크는 CSS 또는 XPath 또는 이미지 일치 기능을 사용할 수 있습니다. 이것은 개발자와 테스터간에 의사 소통의 라인이없는 경우에 대한 대대적 인 대안입니다. 그러나 이들 팀간에 의사 소통이 이루어지면이를 추가하는 것이 좋습니다.

    dev 팀으로서 -이 테스트에서 많은 가치를 얻고 있어야합니다. 테스트 환경에 변경 사항을 적용한 후 즉시 즉각적인 피드백을 제공해야합니다. 검사가 불량이라면 그 가치는 떨어질 것입니다. 테스트를 가능한 한 신뢰할 수있게하는 것이 모든 사람의 관심사입니다. 좋은 ID는이 점에서 매우 중요합니다.

    ID와 마찬가지로 자동 생성 ID가 위험을 안고 있습니다. 이것들은 쉽게 보안에 대한 잘못된 인식을 줄 수 있으며 아마 전혀없는 것보다 더 나쁠 수 있습니다. 요점은 ID가 안정적이고 신뢰할 수 있어야한다는 것입니다. 새 요소가 위의 DOM에 추가되면 점진적으로 생성 된 ID가 변경됩니다. 레이블 등에 작은 변화가있을 경우 내용의 해시를 기반으로하는 ID가 변경됩니다.

    또한 테스터로 - 요소를 식별하기위한 xpath를 작성하는 데 30 분을 사용하는 것이 좋지 않습니다. ID를 추가하면 개발자가 5 분 걸릴 것입니다 ..... :)

    관련 문제