Chromium Chronicle #17: Kombinasi Pengujian Browser

Episode 17: oleh Toby Huang di San Francisco, CA (Januari 2021)
Episode sebelumnya

Pengujian browser merupakan bentuk pengujian otomatis untuk kode Chrome yang lebih menyeluruh dibandingkan pengujian unit. Pengujian browser membuat instance browser dan melakukan pengujian berbagai elemen UI alih-alih hanya menguji fungsionalitas input/output murni seperti yang dilakukan pengujian unit. Pengujian otomatis terintegrasi penting untuk simulasi pengalaman pengguna dari ujung ke ujung. Saat menulis pengujian {i>browser<i}, Anda sering kali ingin untuk melakukan tindakan penyiapan secara terprogram yang dapat dilakukan pengguna secara manual. Untuk membantu Anda melakukannya, mixin adalah rangkaian alat untuk mengerjakan tugas yang sulit penyiapan pengujian browser dengan cara yang dapat digunakan kembali.

Contoh mixin yang berguna:

  • GuestUserMixin untuk menguji mode samaran
  • UserPolicyMixin untuk meniru kebijakan pengguna dari server
  • FakeGaiaMixin untuk meniru respons dari server GAIA

Anda dapat membuat mixin kustom sendiri untuk memenuhi berbagai tujuan.

Cuplikan di bawah ini login sebagai pengguna tamu untuk pengujian Anda. Penting untuk pastikan fitur Anda berfungsi dalam mode samaran.

Anjuran
class MyGuestBrowserTestClass : public MixinBasedInProcessBrowserTest {
 private:
  GuestSessionMixin guest_session_mixin_{&mixin_host_};
};

LoggedInUserMixin adalah cara yang mudah untuk login sebagai pengguna Family Link untuk pengujian Anda. Jika fitur Anda memengaruhi segala sesuatu yang berhubungan dengan pengawasan anak, Anda harus menguji fitur Anda untuk pengguna yang diawasi. Kemungkinan bug adalah lupa bahwa pengguna anak menonaktifkan mode samaran atau tidak dapat menginstal ekstensi tanpa persetujuan orang tua. LoggedInUserMixin adalah mixin gabungan yang terdiri dari campuran lainnya.

Anjuran
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};
};

Salah satu manfaat utama mixin adalah menggunakan komposisi daripada pewarisan, dan menghindari masalah terkait pewarisan multi-diamond. Mewarisi lebih dari satu kelas dasar pengujian menyebabkan masalah {i>diamond<i}, tetapi Anda dapat mencampur dan mencocokkan campuran sambil menghindari masalah ini. Menggunakan mixin tidak sepenuhnya menyingkirkan pewarisan karena kelas pengujian browser masih harus mewarisi dari MixinBasedInProcessBrowserTest, tetapi untungnya bersifat umum dan ringan.

Resource