Webユーザーインターフェイステストで成功する方法
-
02-07-2019 - |
質問
大きなウェブアプリケーションで Selenium テストキャンペーンを設定しています。 最初に行ったのは、テスト前にデータベース内のSQLデータを初期化し、テストを開始し、結果をアーカイブしてからデータをクリアするフレームワークを構築することでした。
これをMaven 2プロセスに統合し、毎日 TeamCity によって実行されます。専用データベース。
複数のSeleniumテストを設定しましたが、計画どおりには使用されていません。
理由は、回帰以外の理由でテストが中断される場合があることです(データが変更されたり、ストアドプロシージャが再コンパイルされたりする場合があります)。
ユーザーインターフェイスのテストで大きな成功があったかどうか、もしそうなら、その理由を知りたい。コモンズエラーにも興味があります。
解決
テスト容易性は非常に役立ちます。 Webアプリでのテスト容易性の最大のメリットは、ページ上でやり取りする必要があるすべてのHTML要素に一意で一貫した属性がある場合です。 HTML要素を識別するために使用している属性(Seleniumはxpathを使用している)が、ビルド間またはセッション間で一貫性/信頼性がない場合、テストスクリプトは失敗します。また、自動化ツール(この場合はSelenium)がWebページ上のオブジェクトを確実に見つけることができるように、これらの属性は一意でなければなりません。
他のヒント
信頼できる単体テストが必要な場合は、同じ入力が必要です。データベースの開始状態は入力です。そのため、毎回同じ開始データベースが必要です。もちろん、異なる input でテストを行う場合は、別の単体テストを作成する必要があります(結果は明らかに同じではないため)。
このようなことをするときは、常に同じデータベースを出発点として使用します。もちろん、データベースを変更せずにいくつかのテストが失敗する可能性があるため、他のテストは失敗しませんが、他の後続のテストも失敗する可能性があります。単体テストツールで許可されている場合は、テスト間の依存関係を定義して、「親」テストが失敗したときにそれらのテストがまったく実行されないようにする必要があります。
http-unitを使用します。これは、スタイリングがページに追加される前に機能するという利点があります。
http://httpunit.sourceforge.net/ maven2の統合テストフェーズで実行するテストを添付できます。
サイトから
Javaで記述されたHttpUnitは、 ブラウザの動作の関連部分、 フォーム送信、JavaScript、 基本的なhttp認証、cookieおよび 自動ページリダイレクト、および許可 返される検査するJavaテストコード テキスト、XML DOM、または フォーム、テーブル、および リンク。