自動テストを使用して、Web アプリケーションの機能を検証します。テストケースでのアサーションをより複雑で柔軟にするために、「TestID」の導入を検討しています。つまり、テストケースがページ上の要素を見つけて検証するのに役立つ HTML マークアップ内の ID です。さらに、これらの TestID により、ページ上のデータが限られているために現在不可能な、より具体的な統合テストが可能になります。
しかし、次の点が私たちを躊躇させます。
- テスト ID の導入は、テスト用にテスト済みを変更することを意味します
- セキュリティ- 内部ドメイン オブジェクト ID と、そうでなければページに表示されないその他の情報を開示します。
- 標準- TestID をマークアップにどのように配置するかによって、要素または属性の意図されたセマンティックな使用に違反する可能性が高くなります (たとえば、「id」または「class」属性、その他の html 要素など)。
- 干渉- TestID がアプリケーション コードに干渉する可能性がある
- パフォーマンス- TestID は (ユーザーにとって) 不要なマークアップであり、ページ サイズを増加させます (大きなページでのみ重要です)。
TestID をテスト/ステージング HTML に制限することは良い考えではないようです。なぜなら、本番環境で使用されるコードをテストしたいのは明らかであり、テスト/ステージング環境が異なる動作をすることを望んでいないからです。実際、現在、リリース後にライブ システムに対してテスト スイートの一部を実行しています。
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>