アサーションは、効果的な自動化テストを構築するために不可欠です。テストの目的が特定の機能が期待通りに動作することを確認することであれば、アサーションはアプリケーションが期待する動作をしているか確認するステップです。
ベストプラクティスに従うことで、アサーションでテストの効果を最大化することができます。
最終目標を念頭に置く
重要なのはテストの目的です。致命的な障害が発生しないことを確認するためにシンプルなスモークテストを作成する場合、アサーションはアプリケーションの最も重要なエレメントが表示されているかを最優先で確認すべきです。このような場合、ページのすべてのエレメントにアサーションを行うことはテストの目的ではありません。重要なのは主要な機能であり、細かい部分ではないからです。
一方、特定の機能が期待どおりに動作することを確認するリグレッションテストを作成する場合、表示される各エレメントにアサーションを追加すれば、期待するユーザーエクスペリエンスがその機能から得られることを確認できます。
細かすぎない最も厳格な条件を見つける
アサーションを細かくすればするほど、それほど重要でない変化でも誤った不合格判定が出やすくなります。一方、アサーションが粗すぎると、実際には不合格判定とすべきケースでも「すべて良好」と判定される可能性があります。
たとえば、テストのある時点でURLがログインユーザーに対して正しいページを表示しているかを確認したい場合、パス名に対してURLアサーションを作成するという方法があります。次のようなアサーションタイプを設定すると、アサーションの厳密さを制御できます。
- pathname equals /{{@user_id}}/settings/apis (パス名が/{{@user_id}}/settings/apisに等しい) をアサート
- pathname ends with settings/apis (パス名がsettings/apisで終わる) をアサート
- pathname contains settings/apis (パス名がsettings/apisを含む) をアサート
アプリケーションでAPIの設定ページが確実に表示されていることを確認することが目的で、個別のユーザーIDの確認が重要でない場合、細かすぎず十分な厳格さを持つ "ends with" アサーションタイプが最適です。
変数を使用して動的アサーションを作成する
変数を使用すると、テストの実行コンテキストに基づくアサーションを作成でき、コンテキストに沿った検証を行うことができます。以下のケースでは変数の使用を検討しても良いでしょう。
受注処理を行うEコマースアプリケーションのケース
- 新しい注文書の作成ステップを記録します。
- ページから注文ID番号を抽出し、変数として格納します。
- 最近の注文のサマリーを示すページに移動します。
- 最初の注文書のテキストが注文ID変数と一致するかアサート処理で確認します。
ページエレメントから抽出された値を変数に割り当てる際、値に余分な文字が含まれている場合は、JavaScriptスニペットを使用して不要な文字を削除できます。例については、スニペットの例のページを参照してください。
詳細はこちら
アプリケーションのアサーション戦略に関係なく、必ずチームの他のメンバーと同じページを使用してください。具体的なアサーションタイプの詳細については、次のガイドを参照してください。