Chromium Chronicle #17: มิกซ์ทดสอบเบราว์เซอร์

ตอนที่ 17: โดย Toby Huang ในซานฟรานซิสโก แคลิฟอร์เนีย (มกราคม 2021)
ตอนก่อนหน้า

การทดสอบเบราว์เซอร์เป็นรูปแบบการทดสอบอัตโนมัติสำหรับโค้ด Chromium ซึ่ง จากต้นทางถึงปลายทาง มากกว่าการทดสอบ 1 หน่วย การทดสอบเบราว์เซอร์จะสร้างอินสแตนซ์เบราว์เซอร์และทดสอบ องค์ประกอบ UI ที่หลากหลาย แทนที่จะต้องทดสอบฟังก์ชันอินพุต/เอาต์พุตเพียงอย่างเดียว เช่นเดียวกับที่การทดสอบ 1 หน่วยทำ การทดสอบอัตโนมัติแบบผสานรวมเป็นสิ่งสำคัญในการจําลอง ประสบการณ์ตั้งแต่ต้นจนจบของผู้ใช้ เมื่อเขียนทดสอบเบราว์เซอร์ คุณมักต้องการ เพื่อดำเนินการตั้งค่าแบบเป็นโปรแกรมที่ผู้ใช้ทำได้ด้วยตนเอง เพื่อช่วยคุณในการดำเนินการดังกล่าว มิกซ์อินคือชุดเครื่องมือสำหรับการแสดงแบบไม่สำคัญ การตั้งค่าการทดสอบเบราว์เซอร์ในแบบที่ใช้ซ้ำได้

ตัวอย่างการมิกซ์ที่มีประโยชน์

  • GuestUserMixin สำหรับการทดสอบโหมดไม่ระบุตัวตน
  • UserPolicyMixin สำหรับการล้อเลียนนโยบายผู้ใช้จากเซิร์ฟเวอร์
  • FakeGaiaMixin สำหรับคำตอบจำลองจากเซิร์ฟเวอร์ Gaia

คุณสร้างมิกซ์ที่กำหนดเองของตัวเองเพื่อให้ตอบโจทย์ได้หลากหลายวัตถุประสงค์

ข้อมูลโค้ดด้านล่างจะเข้าสู่ระบบในฐานะผู้ใช้ผู้มาเยือนสำหรับการทดสอบ คุณต้อง ตรวจสอบว่าฟีเจอร์ใช้งานได้ในโหมดไม่ระบุตัวตน

ควรทำ
class MyGuestBrowserTestClass : public MixinBasedInProcessBrowserTest {
 private:
  GuestSessionMixin guest_session_mixin_{&mixin_host_};
};

LoggedInUserMixin ช่วยให้ลงชื่อเข้าสู่ระบบในฐานะผู้ใช้ Family Link ได้อย่างสะดวกสบาย การทดสอบ หากฟีเจอร์ของคุณมีผลต่อสิ่งที่เกี่ยวกับการควบคุมดูแลเด็ก คุณควรทดสอบฟีเจอร์สำหรับผู้ใช้ภายใต้การควบคุมดูแล ข้อบกพร่องที่เป็นไปได้คือ ลืมว่าผู้ใช้ที่เป็นเด็กปิดใช้โหมดไม่ระบุตัวตนหรือติดตั้งไม่ได้ ส่วนขยายที่ไม่ได้รับการอนุมัติจากผู้ปกครอง LoggedInUserMixin เป็นแบบผสม ที่ประกอบด้วยการผสมอื่นๆ

ควรทำ
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};
};

ประโยชน์หลักๆ อย่างหนึ่งของมิกซ์อินคือการใช้การเรียบเรียงเพลงแทน การสืบทอดค่าเกณฑ์ และการหลีกเลี่ยงปัญหาการสืบทอดค่าเพชรหลายรายการ การรับค่าจากคลาสพื้นฐานทดสอบมากกว่า 1 รายการจะนำไปสู่ปัญหาระดับไดมอนด์ แต่คุณสามารถเลือกใช้มิกซ์แอนด์แมตช์ได้โดยหลีกเลี่ยงปัญหานี้ การใช้มิกซ์อิน ไม่ได้กำจัดการสืบทอดค่าโดยสิ้นเชิงเนื่องจากคลาสการทดสอบเบราว์เซอร์ยังคง ต้องรับค่าจาก MixinBasedInProcessBrowserTest แต่โชคดีที่ คลาสพื้นฐานมีไว้สำหรับวัตถุประสงค์ทั่วไปและใช้ทรัพยากรน้อย

แหล่งข้อมูล