Chromium Chronicle #17: Trình kết hợp thử nghiệm trình duyệt

Tập 17: của Toby Huang ở San Francisco, CA (tháng 1 năm 2021)
Các tập trước

Kiểm thử trình duyệt là một hình thức kiểm thử tự động đối với mã crôm. Kiểm thử toàn diện so với kiểm thử đơn vị. Các bài kiểm thử trình duyệt tạo các thực thể trình duyệt và kiểm thử nhiều phần tử trên giao diện người dùng thay vì chỉ kiểm thử chức năng đầu vào/đầu ra thuần tuý như kiểm thử đơn vị. Việc tích hợp kiểm thử tự động đóng vai trò quan trọng trong việc mô phỏng trải nghiệm toàn diện của người dùng. Khi viết chương trình kiểm thử trình duyệt, bạn thường muốn thực hiện các thao tác thiết lập theo phương thức lập trình mà người dùng có thể thực hiện theo cách thủ công. Để giúp bạn làm điều này, mixin là một bộ công cụ để thiết lập thử nghiệm trình duyệt không quan trọng theo cách có thể sử dụng lại.

Ví dụ về cách kết hợp hữu ích:

  • GuestUserMixin để thử nghiệm chế độ ẩn danh
  • UserPolicyMixin để mô phỏng chính sách người dùng từ máy chủ
  • FakeGaiaMixin để mô phỏng phản hồi từ máy chủ Gaia

Bạn có thể tạo kiểu kết hợp tuỳ chỉnh của riêng mình để phục vụ nhiều mục đích!

Đoạn mã dưới đây đăng nhập với tư cách là người dùng khách cho thử nghiệm của bạn. Bạn cần đảm bảo tính năng của mình hoạt động ở chế độ ẩn danh.

Nên
class MyGuestBrowserTestClass : public MixinBasedInProcessBrowserTest {
 private:
  GuestSessionMixin guest_session_mixin_{&mixin_host_};
};

LoggedInUserMixin là một cách thuận tiện để đăng nhập với tư cách là người dùng Family Link trong quá trình thử nghiệm. Nếu tính năng của bạn ảnh hưởng đến bất kỳ điều gì liên quan đến tính năng giám sát của trẻ em, thì bạn nên kiểm thử tính năng dành cho người dùng được giám sát. Một lỗi có thể xảy ra là quên rằng người dùng là trẻ em đã tắt chế độ ẩn danh hoặc không thể cài đặt tiện ích khi chưa được cha mẹ phê duyệt. LoggedInUserMixin là một hỗn hợp phức hợp kết hợp với các mixin khác.

Nên
class MyChildBrowserTestClass : public MixinBasedInProcessBrowserTest {
 protected:
  void SetUpOnMainThread() override {
    MixinBasedInProcessBrowserTest::SetUpOnMainThread();
    logged_in_user_mixin_.LogInUser();
  }

 private:
  LoggedInUserMixin logged_in_user_mixin_{&mixin_host_,
                                          LoggedInUserMixin::LogInType::kChild,
                                          embedded_test_server(), this};
};

Một trong những lợi ích chính của mixin là sử dụng thành phần thay vì tính kế thừa và tránh được các vấn đề về đa kế thừa của kim cương. Việc kế thừa từ nhiều lớp cơ sở kiểm thử sẽ dẫn đến sự cố về kim cương, nhưng bạn có thể kết hợp và so khớp các mixin mà vẫn tránh được vấn đề này. Việc sử dụng mixin không hoàn toàn loại bỏ được tính kế thừa vì lớp kiểm thử trình duyệt vẫn cần kế thừa từ MixinBasedInProcessBrowserTest, nhưng may mắn thay, lớp cơ sở đó đa dụng và gọn nhẹ.

Tài nguyên