Closed20

Page Object Modelについての資料

makototmakotot
makototmakotot

ページオブジェクトは、テストメンテナンスを強化し、コードの重複を減らすためのテスト自動化で一般的になったデザインパターンです。 ページオブジェクトは、AUT(テスト対象アプリケーション)のページへのインターフェイスとして機能するオブジェクト指向クラスです。 テストは、そのページのUIと対話する必要があるときは常に、このページオブジェクトクラスのメソッドを使用します。 利点は、ページのUIが変更された場合、テスト自体を変更する必要はなく、ページオブジェクト内のコードのみを変更する必要があることです。 その後、その新しいUIをサポートするためのすべての変更は1か所に配置されます。

makototmakotot

ページオブジェクトは、必ずしもページ全体を表す必要はありません。 ページオブジェクトデザインパターンは、ページ上のコンポーネントを表すために使用できます。 AUTのページに複数のコンポーネントがある場合、コンポーネントごとに個別のページオブジェクトがあると、保守性が向上する場合があります。

makototmakotot
makototmakotot

Page objects are a classic example of encapsulation - they hide the details of the UI structure and widgetry from other components (the tests).

UIの構造の詳細を他のコンポーネントからカプセル化するもの

makototmakotot

Despite the term "page" object, these objects shouldn't usually be built for each page, but rather for the significant elements on a page [1].

"ページ"という名前だけども、ページ毎に作られるものではなくて、ページの重要な要素に対して作られるもの

makototmakotot

Page objects are commonly used for testing, but should not make assertions themselves. Their responsibility is to provide access to the state of the underlying page.

Page Objectでアサーションをするべきではなく、ページの状態へのアクセスのみを責務とするべき。

makototmakotot
makototmakotot

So the way that it's written I don't think that I could get any value out of a page object because the test itself is, like the selectors are a lot more straightforward so. I don't really use the page object

makototmakotot

So I actually really don't like the page objects pattern. And the reason why is because, to me, it illustrates that you are testing the same thing regularly. So if I need to select the same thing over and over then I'm probably going through the same process. Often what I'll see is somebody's writing an end to end test.

makototmakotot
makototmakotot

This, too, can be true if the tests are written incorrectly. A common mistake I see in E2E testing is doing the same things in every test — for instance, every test going through the whole registration and login flow before doing whatever is needed for the test. When you do stuff like this, you start seeing a lot of duplication, and that's when you start creating things like "page objects" (which is a poor practice). 😐

重複が多くなるようなテストを書いていることでPage Objectが必要になる。

makototmakotot

On TestingJavaScript.com, I show you how you can get confidence that the registration and login flows are working, and then skip those for the rest of your tests so you can significantly speed up the tests and reduce the points of failure. When you write tests this way and use tools like Cypress Testing Library, practices like page objects are totally unnecessary, and your tests are easier to maintain, more reliable, and run faster.

このスクラップは2023/04/04にクローズされました