Automation Testing với Playwright – Phần 3: Tìm hiểu về Fixture và Page Object Model (POM)

Chào mọi người, đây là chuỗi bài viết xuyên suốt quá trình tự học Automation testing với framework Playwright (sử dụng Typescript) của mình, trong quá trình học mình ghi chú và trình bày lại để dễ dàng ghi nhớ và chia sẻ tới cộng đồng. Do đó chắc chắn sẽ có nhiều thiếu sót, mọi người có thể góp ý đóng góp qua phần bình luận, mình sẽ ghi nhận và cải thiện <3

Trong quá trình kiểm thử tự động chúng ta thường gặp phải những thách thức lớn liên quan đến bảo trì, độ ổn định, và tính tái sử dụng mã nguồn kiểm thử. Việc không có một framework, cấu trúc cụ thể để quản lý dữ liệu và tương tác với giao diện người dùng có thể dẫn đến nhiều bất tiện và bảo trì code trong tương lai. Vì vậy việc hiểu và áp dụng Fixture và Page Object Model (POM) vào trong kiểm thử tự động là điều rất quan trọng và hữu ích.

1. Fixture là gì?

Fixture là một khái niệm giúp quản lý trạng thái ban đầu và dữ liệu trong quá trình kiểm thử tự động. Để hiểu rõ hơn, hãy tưởng tượng bạn đang kiểm thử một ứng dụng có chức năng đăng nhập. Mỗi lần bạn chạy một bài kiểm thử, bạn cần một tài khoản người dùng để đăng nhập, và có thể cần kiểm tra nhiều trạng thái khác nhau như trạng thái đăng nhập hay chưa đăng nhập. Fixture chính là nơi bạn định nghĩa những dữ liệu và trạng thái này, ngoài ra thao tác đăng nhập sẽ được thực hiện rất nhiều lần của mỗi lượt kiểm thử vì vậy nó sẽ lặp lại rất nhiều, chúng ta nên tái sử dụng bước đăng nhập bằng cách đưa nó vào fixture, và gọi nó chạy ở mỗi test case. Nó giúp bạn duy trì tính độc lập giữa các kiểm thử và đảm bảo tính nhất quán của kết quả.

Khi thực hiện nhiều bài kiểm thử, việc đảm bảo rằng mỗi kiểm thử bắt đầu từ một trạng thái nhất quán là quan trọng. Trong trường hợp này, bạn có thể sử dụng Fixture để quản lý trạng thái đăng nhập. Thay vì phải đăng nhập ở mỗi bài kiểm thử, bạn chỉ cần đảm bảo rằng bạn bắt đầu từ một trạng thái đã đăng nhập.

Nếu bạn không sử dụng Fixture, mỗi bài kiểm thử sẽ phải chịu trách nhiệm đăng nhập và đảm bảo rằng trạng thái đăng nhập là chính xác. Điều này không chỉ làm tăng sự lặp lại trong mã nguồn kiểm thử mà còn làm giảm tính nhất quán và dễ bảo trì của mã nguồn.

Bằng cách sử dụng Fixture, bạn có thể tạo một trạng thái đăng nhập chung và tái sử dụng nó cho mỗi bài kiểm thử. Điều này giúp giảm sự lặp lại, làm tăng tính nhất quán và giúp mã nguồn kiểm thử trở nên dễ đọc hơn.

2. Page Object Model (POM)

Page Object Model là một mô hình thiết kế giúp tổ chức mã nguồn và tương tác với các thành phần trên giao diện người dùng, và có rất nhiều mô hình khác nhau như ScreenPlay Model , Façade Design Pattern , Fluent Design Pattern . Tuy nhiên, Page Object Model vẫn đang được sử dụng rộng rãi và phổ biến nhất. Nó đặt mỗi trang web hoặc mỗi phần của trang web vào một đối tượng riêng biệt gồm các hàm là những tương tác hoặc logic xử lý thao tác trên trang. Điều này giúp mã nguồn trở nên dễ đọc, bảo trì và tái sử dụng.

Ví dụ:

LoginPage: Đối tượng này chứa các phương thức để thực hiện các hành động trên trang đăng nhập, như điền thông tin đăng nhập và nhấn nút đăng nhập.
Khi bạn viết bài kiểm thử, bạn chỉ cần tương tác với LoginPage gồm các phương thức như đăng nhập, chúng ta sẽ dùng mã để tự động hóa các bước như truy cập giao diện đăng nhập, nhập username, nhập password, nhấn nút đăng nhập. Thay vì phải lo lắng về cách thao tác với các thành phần trực tiếp dư thừa và lặp lại nhiều nơi. Nếu có thay đổi trong giao diện người dùng, bạn chỉ cần cập nhật LoginPage cụ thể là phần phương thức đăng nhập mà không ảnh hưởng đến toàn bộ mã nguồn kiểm thử.

Kết luận

Việc sử dụng Fixture và Page Object Model (POM) trong kiểm thử tự động mang lại nhiều lợi ích quan trọng. Fixture giúp quản lý trạng thái và dữ liệu kiểm thử một cách hiệu quả, trong khi POM giúp tổ chức mã nguồn kiểm thử một cách rõ ràng và linh hoạt. Ở bài viết này mình chỉ trình bày tóm ngắn gọn nhất, chúng ta sẽ tìm hiểu các áp dụng Fixture và POM khi viết kịch bản kiểm thử với Playwright ở các bài viết tiếp theo nhé!

Trần Thanh Bình

Kiểm thử phần mềm, Testing, Tester, Automation Testing, Auto Test, Playwright, Typescript, thanhbinhbent

Lượt xem: 337

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Lên đầu trang