私は現在、プロジェクトの自動化された機能/アクセプタンステストスイートの構築に取り組んでいますが、これらのタイプのテストを作成した経験があまりないため、適切に構造化するための情報を入手したいと思いました。具体的には、ArquillianのGraphene拡張機能を使用しています。
たとえば、A、B、Cの3つのテストがあるとします。
TestA:アプリケーションのアカウントへのログインをテストします。したがって、テストが成功した場合、ブラウザはアカウントのホームページ/情報ページにあるはずです。
TestB:アカウントのパスワードの変更をテストします。これには、アカウントにログインしてから、パスワード変更機能をテストする必要があります。
TestC:アカウントの電子メールの変更をテストします。これには、アカウントにログインしてから、メール変更機能をテストする必要があります。
ログインコードの問題が原因でTestAが失敗した場合、アカウントにログインする必要があるため、TestBとTestCも失敗するはずです。
質問:自動化された機能/受け入れテストはそれぞれ、テストが検証しているものを完了するために必要なプロセスを複製する必要がありますか?この場合、TestBとTestCは、他の作業を行う前にアカウントにログインする必要があります。各テストで明示的に次のようなものを呼び出す必要があります。
/* ...initial test setup code here */
LoginPage.login(username, password);
assertTrue(onCorrectAccountPage);
AccountModification.changePassword(newPassword);
または、TestA(実際のログインテスト)が失敗しても失敗しないように、テストBとCで使用できるセッションにアカウントをモックする方法を使用する必要がありますか?
これらはユーザー受け入れテストであるため、ユーザーが行うことを正確に実行し、必要に応じてログインする必要があると考えましたが、これが不要な複製であり、別の方法で処理する必要があるかどうかはわかりません(つまり、標準の単体テストと同様の機能)であり、この分野でより多くの経験を持つ誰かからフィードバックを得たいと思いました。
前もって感謝します。うまくいけば、私の質問はあまり複雑ではありません。:)