私のプロジェクトのテスターは、自動テストを簡単にするために、すべてのページ要素に一意の HTML ID を必要としています。
開発に ID は必要ないため、これを行うことを覚えておくのは困難です。忘れないようにするにはどうすればよいですか?
Checkstyle のようなものが教えてくれるかもしれないし、IntelliJ の「インスペクション」でさえも教えてくれると思いましたが、どちらもこの機能をサポートしていないようです。
何か案は?
私のプロジェクトのテスターは、自動テストを簡単にするために、すべてのページ要素に一意の HTML ID を必要としています。
開発に ID は必要ないため、これを行うことを覚えておくのは困難です。忘れないようにするにはどうすればよいですか?
Checkstyle のようなものが教えてくれるかもしれないし、IntelliJ の「インスペクション」でさえも教えてくれると思いましたが、どちらもこの機能をサポートしていないようです。
何か案は?
2 つのアイデアが思い浮かびます。それでもうまくいかない場合は、2. 新しいテスターを獲得します。;)
すべての要素に ID が必要なテスト エンジンはどれですか?
日課としてテスト自動化に取り組んでいる者として:相互作用する要素に一意の ID を追加する要求は、自動化された一連のテストに多くの安定性を追加します。
もちろん、DOM 内のすべての要素に ID を追加すると、とんでもないオーバーヘッドになります。
ほとんどのフレームワークには、CSS や XPath、さらには画像マッチングを使用する機能があります。これは、開発者とテスターの間の通信回線がない場合の優れたフォールバックです。ただし、これらのチーム間にコミュニケーションがある場合は、これらを追加することは理にかなっています。
開発チームとして、これらのテストから多くの価値を得る必要があります。テスト環境への変更の展開後、ほぼ即座にフィードバックを提供するはずです。テストが不安定な場合、その価値は急落します。テストをできるだけ信頼できるものにすることは、すべての人の利益になります。この点で、優れた ID は非常に貴重です。
注意点として、自動生成 ID の提案にはリスクが伴います。これらは簡単に誤った安心感を与える可能性があり、おそらくまったくないよりも悪い. ポイントは、ID が安定していて信頼できることです。上記の DOM に新しい要素が追加されると、増分的に生成された ID が変更されます。ラベルなどに小さな変更があると、その内容のハッシュに基づく ID が変更されます。
また、テスターとして - 要素を一意に識別するために xpath を書くのに 30 分を費やすことは、開発者が ID を追加するのに 5 分かかるとしたら、時間の無駄です..... :)
JavaScript で何かが必要な場合は、jQuery を使用できます。
$("*:not([id])").css('backgroundColor', 'yellow');
ID を黄色にしないと、Firebug を使用してソースを調べて、黄色に着色されているものを探すだけです。
$.each($(*:not([id])), function(){
$(this)
.css("backgroundColor", "yellow")
.addClass("no-id");
});
すべてのページのすべての要素に ID を設定するのは、私には悪い計画のように思えます。
ツールがこれをサポートしていない理由は、これがかなり奇妙な要求だからです。そこに行ったことがある。
上記の jQuery ソリューションは、彼らが求めていたものを提供しますが、彼ら (またはチームとしてのあなた) が必要としているものではないかもしれません。私は間違いなくテスターに戻って (彼らを解雇するのではありません!)、要件をもう少し理解しようとします。それは本当にすべての要素ですか?いくつかのページを一緒に見て、何が欠けているかを確認してください。単に不満を感じていて、持っているよりも多くの ID が必要なのかもしれません。
また、テスト ツールが DOM 要素を ID でしかアドレス指定できないとは信じがたいです。同様にうまく機能する他のオプションがあるかどうか、およびそれらをサポートするために自発的に追加できるものがあるかどうかを確認してください。(どこにでも ID を追加するよりも確かに簡単です。)
最後に、ID が唯一の方法である場合は、要素数よりも永続的なもの (innerHTML のある種のハッシュ、要素の親 + インデックスなど) に基づいて ID を割り当てることを検討してください。
ID を生成する必要がある場合に考慮すべきもう 1 つのことは、サーバー側で行うことです。使用している言語によっては、そちらの方が簡単で、ブラウザのパフォーマンスが低下することはありません。
幸運を!
すべての要素に ID を追加しても意味がありません。ただし、彼らが主張する場合は、テスト サイトに Id を追加する小さな JavaScript コードを追加できます。これは、運用サイトでは省略できます。
Chacha102 のアイデアに基づく構築
$(document).ready(function() {
var index = 1;
$.each($(*:not([id])), function(){
$(this).attr("id", "id1000" + index++); //or some other unique generator
});
}
これがテストツールの前に実行されることを確認してください!