Shared library คืออะไร และทำไมเราจึงควรใช้ในทีมและองค์กร วันนี้อยากจะมาเล่าเรื่อง Doppio Common Library

Doppio_Toasty-EDlT0R

Other

March 24, 2026

Table of Content

สวัสดีครับ บทความนี้อยากจะมาแชร์ไอเดียซึ่งหลายๆ คนอาจจะมีประสบการณ์กับอะไรพวกนี้มาอยู่แล้ว แต่มือใหม่ในด้าน Automation หลายๆ คน อาจจะยังไม่รู้จัก หรือยังไม่เข้าใจว่ามันคืออะไร บทความนี้ผมจะมาอธิบายให้ฟังกันครับ

จุดเริ่มต้น

หลายๆ คนที่ทำ automation อาจจะเคยประสบพบเจอกับเหตุการณ์ว่า พอเราย้ายไปทำโปรเจค automation อันใหม่แล้วบางทีเราก็มักจะเจอกับสิ่งที่เราเคยทำไปแล้ว ยกตัวอย่างเช่น

  1. ตอนอยู่โปรเจค A ฉันก็ต้องทำเรื่องการ download PDF ลงมาจากหน้าเว็บ แล้วก็ทำการ verify ว่าใน PDF มีข้อความที่ระบุหรือไม่
  2. ตอนอยู่โปรเจค X ฉันก็เคยต้องทำการตรวจสอบว่า บนหน้าเว็บหรือหน้าแอพที่ฉันเปิดอยู่ มันมีรูปนี้แสดงอยู่หรือเปล่า (Image processing)

และเหตุการณ์อื่นๆ ในลักษณะคล้ายกัน คือ เรา หรือเพื่อนร่วมทีมของเราที่อาจจะอยู่คนละโปรเจคหรือคนละทีม ได้เจอโจทย์คล้ายๆกันมาบ้างแล้ว และสิ่งที่เราต้องการในสถานการณ์นี้ก็คือ ทำยังไงให้เราสามารถสิ่งที่เราหรือใครสักคนในองค์กรเราเคยทำมาแล้ว ให้ได้เร็ว ไม่ต้องไปเสียเวลาเหมือนทำใหม่อีกรอบ ณ จุดเริ่มต้น (แบบตั้งไข่เลยนะ) เรามักจะมีประโยคคลาสสิคที่เราส่งไปให้เพื่อน “เฮ้ยๆ ขอโค้ดหน่อยดิ” , “เฮ้ยๆ ไป copy ได้ที่ repo ไหนบ้าง” ประมาณนี้ ทีนี้ถามว่ามันก็ตอบโจทย์ที่เราต้องการได้นะ ก็คือ ไม่ต้องเสียเวลาไปทำใหม่ แต่มันก็มีข้อเสียที่ยิ่งใหญ่อยู่ก็คือ
การที่เราจะต้อง copy กันต่อๆ ไปเรื่อยๆ มันจะมีปัญหาว่า

  1. โค้ดมีบั้ก แล้วก็ copy ไปใช้ต่อๆ กันไปจน track กันไม่ได้ว่า ใครใช้เวอร์ชั่นมีบัค ใครใช้เวอร์ชั่นปรับปรุงแล้ว และ version ปรับปรุงแล้วก็อาจจะแตกแขนงออกไปเป็น ปรับปรุงแบบ A , ปรับปรุงแบบ B , ปรับปรุงแบบ C
  2. ไม่มี standard ของ feature นั้นๆ เช่น มี keyword หรือ function ที่เอาไว้ตรวจสอบ pdf พอไม่มี standard กลายเป็นในทีมหรือในองค์กรอาจจะมี คีย์เวิดที่ทำหน้าที่เดียวกัน 5–6 แบบ แต่ละแบบเขียนต่างกัน รับ argument ต่างกัน พอคนย้ายโปรเจ็คสลับที่กัน ก็จะไม่สามารถทำงานได้ต่อเนื่อง เพราะต้องเสียเวลาเรียนรู้ว่า ของทีมนี้เค้าทำยังไงนะ ไม่เห็นเหมือนตอนทีมชั้นทำ PDF เลย

Solution

จากปัญหาข้างต้นของการ copy โค้ดไปมา มันก็เลยมีไอเดียที่ใช้ได้ดีและแพร่หลาย นั่นก็คือ การทำ “Shared Library” หรือ “Shared Module” ขึ้นมาไว้ใช้ตรงกลาง ใครที่มาจากสายพวก Development จะคุ้นเคยดีกับคำว่า Don’t reinvent the wheel ก็คือ ถ้ามันมีคนสร้างล้อรถเอาไว้แล้ว พวกแกก็จงอย่าเสียเวลาไปสร้างล้อรถอีก ไปเอาล้อรถที่คนอื่นเค้าทำไว้แล้วมาใช้ประกอบเป็นรถไปเลย ถ้าให้ยกตัวอย่างก็เหมือนการที่คุณทำ Automate web โดยใช้ SeleniumLibrary แล้วมันก็มีคนทำ Keyword พร้อมใช้ในการ Click , Input Text อะไรมาไว้ให้แล้ว คุณก็แค่ไปหยิบมาใช้ประกอบร่างทำเป็น testcases ซึ่งสิ่งที่เราจะพูดถึงวันนี้มันก็คือการทำ Library ขึ้นมาไว้ใช้ตรงกลางแล้วแชร์กันระหว่างทีมภายในบริษัท ใน Doppio เราเรียก Library นี้ว่า Doppio Common Library (แต่ในบริษัทไม่มีใครเรียกชื่อนี้เลย เพราะมันยาว มันจะถูกเรียกติดปากว่า “Dobby”) , สำหรับ concept ของ Dobby นั้นก็ simple เรียบง่ายมากก็คือ มันจะเป็น Library ที่คนในบริษัท สามารถทำการ pip install ลงมาในเครื่องได้ง่ายๆ เหมือนพวก SeleniumLibrary และข้างในก็จะมี keyword ที่จะต้องใช้กันบ่อยๆไว้มากมาย เพื่อให้คนที่เอาไปใช้ ใช้งานได้เลยไม่ต้องเสียเวลาไปทำเอง

บางส่วนของ Keyword ที่ไว้พร้อมให้ใช้ทำ Mobile App automation ในDobby
บางส่วนของ Keyword ที่ไว้พร้อมให้ใช้ทำ Web Automation ในDobby
บางส่วนของ keyword ที่มีไว้ให้พร้อมใช้ในงานทั่วไป ใน Dobby

หลักการทำงานของมันคือยังไง

จริงๆ หลักการทำงานของมันก็ง่ายๆ เพราะมันก็เป็นแค่ Code ชุดนึง ที่ประกอบไปด้วย Python กับ Robot framework และเอาไปไว้บน repository ที่ใดที่หนึ่งเอาไว้เก็บชุดของโค้ด สิ่งที่อาจจะยากขึ้นมาหน่อยคือพยายามทำให้มี workflow ในการทำงานที่เมื่อมีการออกเวอร์ชั่นใหม่ ไม่ว่าจะเป็นการแก้บัค หรือเพิ่มฟีเจอร์ใหม่ๆ แล้วเราสามารถจัดการมันได้อย่างเป็นระเบียบและใช้เวลาน้อยที่สุด จึงได้ออกมาตาม workflow การทำงานด้านล่าง

Workflow ในการ Release version ใหม่ของ Dobby ที่ Doppio
  • เริ่มต้นจากสมาชิกคนใดก็ได้ของ Doppio เกิดไอเดียขึ้นมาว่า อยากจะเพิ่มฟีเจอร์นี้ลงไปใน Dobby project หรือ ไปเจอว่ามีบัค และอยาก contribute เพื่อแก้บัคนั้น สมาชิกคนนั้นก็ clone source code ทำการแก้ไข แล้วเปิด Merge request มาเหมือนการทำ automation ทั่วไป
  • ตัว Automated unit test จะทำการรันเทสโดยอัตโนมัติเพื่อตรวจสอบว่า changes ที่ทำการเพิ่มลงไปนั้นไม่ได้ไปทำให้ฟีเจอร์ใดๆ มีปัญหา
  • หลังจากนั้นโค้ดจะถูกรีวิวโดย Tech lead ทั้งในแง่ของการตั้งชื่อ keyword การใส่ Unit test รวมถึง Description ที่จะถูกเอาไป Gen เป็น keyword documentation
  • เมื่อ Code review ผ่าน โค้ดจะถูก merge เข้าสู่ branch หลักและหลังจากนั้น Jenkins จะทำการ trigger การ auto build bundle package โดยอัตโนมัติ (ถ้าใครไม่เข้าใจคำว่า bundle package ให้คิดง่ายๆ ว่า คือ package ที่พร้อมให้คน pip install ลงไปใช้)
  • หลังจากที่ตัว bundle package ถูก build แล้ว จะถูกนำไปวางไว้ที่ private central repository โดยมีเลข version ที่ถูก auto increase และรอการดาวน์โหลดไปใช้งาน
  • นอกจากนี้ตัว Jenkins จะทำการส่ง Slack notification ไปเพื่อประกาศให้ทุกคนในทีม /บริษัทรู้ว่า มี Dobby version ใหม่แล้วน้า มีฟีเจอร์อะไรใหม่ เพื่อให้ทุกคนมี visibility ร่วมกัน
  • และตัว Jenkins ยังจะมีการทำ Keyword document โดยอัตโนมัติ และ publish ขึ้นสู่หน้าเว็บเพื่อเป็น Reference สำหรับคนใช้งาน ถ้าใครอยากดูว่าตัว Document หน้าตาเป็นยังไง ก็ลองไปดูได้ที่ https://doppiotech.gitlab.io/dobbycommonlibrary/
    ปล: ตอนนี้เรายังไม่ได้เปิดรับ contributor จากข้างนอก และ ยังไม่ได้เปิดให้บุคคลทั่วไปสามารถ download dobby ได้นะครับ แต่ก็มีโอกาสในอนาคต
ตัวอย่างหน้า Info web page และ Keyword document สำหรับเวอร์ชั่นต่างๆ ของ Dobby
สร้าง Visibility ให้ทุกคนเห็นร่วมกันผ่าน Slack

ข้อดี / ข้อควรระวัง

ข้อดี

  1. แก้ปัญหาโค้ดกระจัดกระจาย copy โค้ดกันไปมา โค้ดบินว่อนทั่วบริษัทได้เป็นอย่างดี
  2. มี Process ในการ release version ใหม่ เพื่อช่วยสร้าง visibility ให้กับทั้งทีม/องค์กร พร้อมทั้ง Document ที่ช่วยให้ผู้ใช้นำไปใช้งานได้อย่างสะดวกและเป็นระเบียบ
  3. เพิ่ม Speed ในการทำงาน โดยเอาเวลาไปทำงานอย่างอื่นที่สร้าง Value มากกว่าการทำงานซ้ำซ้อนกับสิ่งที่เคยมีคนในทีม/องค์กรได้ทำไปแล้ว ★

ข้อควรระวัง

  1. Process การทำ Automated unit test / การรีวิวโค้ดควรจะต้องถูกออกแบบมาอย่างดีและมีคุณภาพ เพราะการที่มีโค้ดที่เสียหายหลุดเข้าไปใน main branch สามารถกระทบกับหลายโปรเจคได้ในวงกว้าง
  2. ควรต้องมีการพยายามกระจายและให้หลายๆ คนได้มีโอกาสเป็น contributor เพื่อฝึกฝน skill และหลีกเลี่ยงการที่คนในทีมไม่ได้เรียนรู้และหยิบของสำเร็จรูปมาใช้อย่างเดียว

สำหรับบทความนี้ตอนนี้ก็เริ่มยาวแล้วเลยขอจบไว้เพียงเท่านี้ก่อนนะครับ ถ้าเพื่อนๆ พี่ๆ น้องๆ ท่านใดมีคำถามหรืออยากจะแลกเปลี่ยนความรู้กันก็ยินดีมากๆ ครับ และถ้าใครสนใจอยากลองทำงานใน environment แบบนี้ ก็ติดต่อมาได้ที่ careers@doppiotech.com ได้เลย เรายังรับ Full stack QA automation engineer อีกหลายตำแหน่งจ้า วันนี้ลาไปก่อน ขอบคุณที่ติดตามคร้าบ

Related Blog

Automation Test

คิดและเลือก automation framework อย่างไรในปี 2023

จริงถึงแม้จะจั่วหัวไว้ว่าเป็นปี 2023 แต่จริงๆหลักการนี้ใช้ได้ทุกปีแหละครับ แหะๆ ซึ่งบทความนี้ได้แรงบันดาลใจจากที่ว่า ช่วงนี้น้องๆ หลายคนที่เคยทำงานด้วยกัน ทักมาปรึกษาโน้นนี่นั่นกันอยู่เป็นระยะๆ หลายๆครั้งมีน้องบางคนเข้าไปทำงานในบริษัทที่ยังไม่มี Automation เลย พูดง่ายๆ คือการเข้าไปเริ่มตั้งไข่ให้เองนักเลงพอ และหลายคนจะกลับมาถามคำถามเดียวกัน (คำถามเดียวกันจริงๆนะ) บทสนทนาจะเป็นประมาณนี้ น้อง : พี่โอ ว่างไหมพี่โอ : ครับน้อง : สบายดีนะครับโอ : สบายดีครับ เราล่ะเป็นไงบ้างน้อง : พี่โอ cypress นี่ดีไหมครับ (ไม่พูดพร่ำทำเพลง get to the point ดีมาก) พอคุยไปคุยมา เรามักจะได้คำตอบว่า น้องได้รับมอบหมายว่าให้เริ่มต้นทำ Automation โดยเริ่มตั้งแต่เลือก Framework ไปจนถึงวาง Project structure วันนี้เลยอยากจะมาลองแชร์ว่า ปกติเวลาเราจะเลือก Framework มาใช้เนี่ยเราควรดูอะไรบ้าง แต่ก่อนจะเข้าเรื่องบอกก่อนเลยว่า มันไม่มีคำว่า “ดี” หรือ “ไม่ดี”…

QA

สามเหลี่ยม’ ที่จะช่วยจัดการ project ให้ดี

"สามเหลี่ยมกู้ชีพ" เคล็ดลับการบริหารโปรเจกต์และต่อรองฉบับสายเทค ในการทำงานสาย Tech ไม่ว่าจะเป็น Developer, QA หรือ Software Tester ปัญหาที่พบบ่อยที่สุดคือ "เวลาไม่พอ" หรือ "สโคปงานที่เพิ่มขึ้นกะทันหัน" หลายคนเลือกที่จะแก้ปัญหาด้วยการทำงานหนักหรืออยู่ล่วงเวลา (OT) แต่วิดีโอนี้ได้นำเสนอทางออกที่ยั่งยืนกว่าผ่านแนวคิด "สามเหลี่ยมบริหารจัดการ" 1. รู้จัก 3 แกนหลักของสามเหลี่ยม หัวใจสำคัญของการบริหารโปรเจกต์ประกอบด้วย 3 ส่วนที่สัมพันธ์กันคือ เวลา (Time), ขอบเขตงาน (Scope) และ ทรัพยากร (Resource) กฎเหล็กของสามเหลี่ยมนี้คือ "ถ้าแกนใดแกนหนึ่งเปลี่ยน อีก 2 แกนที่เหลือต้องเปลี่ยนตามเพื่อรักษาความสมดุล" ตัวอย่างเช่น หากเวลาลดลง (Deliver ช้าลง) สิ่งที่ต้องพิจารณาคือ: เพิ่ม Resource: อาจจะขอคนเพิ่ม แต่ต้องเป็นคนที่มีความรู้อยู่แล้ว (Knowledge) ถึงจะช่วยได้จริง ซึ่งในความเป็นจริงนั้นหาได้ยาก ลด Scope: นี่คือสิ่งที่ควรตั้งคำถามกับ PM หรือลูกค้าว่า "มีส่วนไหนที่ตัดออกได้บ้างเพื่อให้เราส่งมอบงานได้ทันเวลา?"…

QA

Software Tester/QA 100.1

วันนี้มาด้วยชื่อ blog แปลกๆ คือปกติมันต้องเริ่มด้วย 101 แต่ว่าอันนี้มันยิ่งกว่า 101 มันเป็นจุดเริ่มต้นยิ่งกว่านั้นเอาเป็นชื่อ 100.1 ละกันนะ Inspiration เริ่มมาจากมีน้องๆหลายคนมากมาสมัครงานแบบที่ไม่มีประสบการณ์ software testing เลย มีทั้งแบบ new grad และแบบที่อยากเปลี่ยนสายงาน จาก IT support มั่ง Sale มั่ง Admin มั่งทั้งที่จบตรงและไม่ตรงสาย เอาจริงๆเห็น potential น้องๆหลายคนเลยนะ ที่สามารถเรียนรู้และเปลี่ยนสายงานได้ (แล้วก็หางาน QA ให้ได้สำเร็จ ของไม่ตรงสายได้แล้วหนึ่งคน เย่) คือที่เห็น น้องๆหลายคนอยากเปลี่ยนสาย ก็พยายามไปหาความรู้ บางคนเริ่มไปดู automate บางคนไปอ่านกับเรียนวิธีการ test text box ต่างๆ เอาจริงๆก็ดีใจที่เห็นน้องอยากเปลี่ยนสายแล้วลงทุนเรียนรู้ แต่อีกมุมนึงก็รู้สึกว่าหลายๆคนไปกันแบบโหวงๆ ยังไม่รู้ด้วยซ้ำว่าจุดที่ชั้นไปอ่านไปเรียนมันคือตรงไหนของงาน ไม่เข้าใจลักษณะงานหลักๆเลยด้วยซ้ำ ก็เลยตั้งใจเขียนอันนี้ไว้เป็น guideline ให้มือใหม่อยากเข้าวงการ ให้อ่านแล้วเห็นภาพใหญ่ ก่อนจะเจาะลึกแต่ละส่วนละกันนะ…