GitHub Actions Matrix Hexagonal Architecture — คู่มือฉบับสมบูรณ์ 2026 | SiamCafe Blog
GitHub Actions Matrix กับสถาปัตยกรรมหกเหลี่ยมคืออะไร — ทำความเข้าใจจากรากฐานก่อน
GitHub Actions Matrix กับสถาปัตยกรรมหกเหลี่ยม (Hexagonal Architecture) เป็นสองแนวคิดที่คนละสายกันแต่จับมารวมกันได้ดีมากในปี 2026 ผมอ.บอม
ทำงานด้านการเขียนโปรแกรมและระบบเทรดมากว่าสิบสามปี ต้องบอกตรง ๆ ว่าหลายทีมยังเขียนโค้ดแบบรวมศูนย์ คือโค้ดธุรกิจ การเชื่อมต่อฐานข้อมูล การเรียกเซอร์วิสภายนอก อยู่ในไฟล์เดียวกัน พอถึงเวลาทดสอบหรือเปลี่ยนผู้ให้บริการภายนอก ก็ต้องแก้ไปทั่วทั้งโปรเจกต์ สถาปัตยกรรมหกเหลี่ยมแก้ปัญหานี้โดยการแยกแกนธุรกิจออกจากโลกภายนอกอย่างชัดเจน โค้ดหลักไม่รู้จักและไม่สนใจว่าข้อมูลมาจากฐานข้อมูลชนิดใด หรือข้อความแจ้งเตือนถูกส่งออกทางไหน มันคุยผ่านจุดเชื่อมต่อหรือพอร์ตเท่านั้น
ส่วน GitHub Actions Matrix คือฟีเจอร์การสร้างงานอัตโนมัติที่ให้เราทดสอบโค้ดพร้อมกันหลายชุดตัวแปร เช่น ทดสอบกับภาษาเวอร์ชันต่าง ๆ หรือระบบปฏิบัติการหลายแบบในครั้งเดียว เมื่อเอาสองอย่างมารวมกัน จะเกิดพลังที่ชัดเจนมาก เพราะโค้ดที่แยกชั้นดีแล้วจะมีขอบเขตการทดสอบเล็กลง เราสามารถกระจายการทดสอบไปทั้งเมทริกซ์ได้อย่างมีความหมาย ไม่ใช่ทดสอบมั่ว ๆ ให้เสียเวลารอคิวงานโดยไม่จำเป็น
ยกตัวอย่างง่าย ๆ จากโปรเจกต์ของผมเอง ระบบส่งสัญญาณเทรดที่เราดูแลต้องทำงานกับเซอร์วิสตลาดหลายแหล่ง ถ้าเขียนโค้ดธุรกิจยึดติดกับเซอร์วิสใดเซอร์วิสหนึ่ง พอเซอร์วิสนั้นเปลี่ยนรูปแบบข้อมูล เราต้องแก้โค้ดทั้งระบบ แต่เมื่อแยกชั้นด้วยสถาปัตยกรรมหกเหลี่ยม เราเขียนตัวปรับเข้ากันใหม่แล้วทดสอบผ่านเมทริกซ์ที่รวมทั้งเคสธุรกิจและตัวปรับเข้ากันนั้น สุดท้ายก็ส่งผ่านทุกกรณี
บทความนี้ผมจะพาเข้าใจตั้งแต่โครงสร้างแต่ละชั้น การวางเมทริกซ์ทดสอบที่ไม่กินเวลารอฟรี การเขียนไฟล์งานอัตโนมัติให้รู้เรื่องจริง ไปจนถึงข้อควรระวังที่ผมเจอมาเอง เพื่อให้ทีมที่เพิ่งเริ่มใช้งานไม่ต้องเจ็บตัวซ้ำ
สถาปัตยกรรมหกเหลี่ยมมีชื่อเรียกอีกอย่างว่าสถาปัตยกรรมแบบพอร์ตและตัวปรับเข้ากัน แนวคิดคร่าว ๆ คือแบ่งระบบออกเป็นสามวง วงในสุดคือแกนธุรกิจ
ซึ่งมีแต่กฎเกณฑ์และตรรกะล้วน ๆ ไม่มีการเรียกเครือข่าย ไม่มีการอ่านไฟล์ ไม่มีการคุยกับฐานข้อมูลโดยตรง วงถัดออกมาคือพอร์ต ซึ่งเป็นข้อกำหนดว่าระบบนี้ต้องรับข้อมูลอย่างไรและส่งข้อมูลออกอย่างไร สุดท้ายคือตัวปรับเข้ากันที่ทำหน้าที่แปลงเทคโนโลยีจริง เช่น ไดรเวอร์ฐานข้อมูล ไลบรารีส่งข้อความ หรือเซอร์วิสภายนอก ให้เข้ากับพอร์ตที่แกนธุรกิจกำหนดไว้
สถาปัตยกรรมหกเหลี่ยมมีชื่อเรียกอีกอย่างว่าสถาปัตยกรรมแบบพอร์ตและตัวปรับเข้ากัน แนวคิดคร่าว ๆ คือแบ่งระบบออกเป็นสามวง วงในสุดคือแกนธุรกิจ ซึ่งมีแต่กฎเกณฑ์และตรรกะล้วน ๆ ไม่มีการเรียกเครือข่าย ไม่มีการอ่านไฟล์ ไม่มีการคุยกับฐานข้อมูลโดยตรง วงถัดออกมาคือพอร์ต ซึ่งเป็นข้อกำหนดว่าระบบนี้ต้องรับข้อมูลอย่างไรและส่งข้อมูลออกอย่างไร สุดท้ายคือตัวปรับเข้ากันที่ทำหน้าที่แปลงเทคโนโลยีจริง เช่น ไดรเวอร์ฐานข้อมูล ไลบรารีส่งข้อความ หรือเซอร์วิสภายนอก ให้เข้ากับพอร์ตที่แกนธุรกิจกำหนดไว้
เหตุผลที่แยกแบบนี้แล้วทดสอบได้ดีกว่า ก็เพราะแกนธุรกิจเป็นโค้ดล้วนที่ไม่มีสิ่งแวดล้อมภายนอกมากวน เราเขียนชุดทดสอบหน่วยได้เร็วมาก รันเสร็จในไม่กี่วินาที ไม่ต้องรอฐานข้อมูลหรือเครือข่าย พอทดสอบระดับที่ต้องเชื่อมของจริง เราก็แทนตัวปรับเข้ากันด้วยตัวปลอมที่ควบคุมได้
ตอนนี้นี่แหละที่เมทริกซ์ของงานอัตโนมัติเข้ามาเสริม เรากำหนดมิติการทดสอบเป็นตัวแปรสองสามชุด เช่น มิติชั้นที่ทดสอบ แบ่งเป็นชุดทดสอบแกน ชุดทดสอบตัวปรับเข้ากัน และชุดทดสอบรวมปลายทาง มิติฐานข้อมูลที่ต้องรองรับ เช่น ฐานข้อมูลเชิงสัมพันธ์สองยี่ห้อ และมิติเวอร์ชันรันไทม์หลักของภาษาที่ใช้ พอคูณกันแล้วเป็นตารางงานย่อยที่รันขนานกัน งานที่เคยใช้เวลาสี่สิบนาทีถ้ารันเรียงทีละตัว เมื่อรันขนานก็เหลือประมาณสิบนาทีตามตัวงานที่ช้าที่สุด
การกำหนดเมทริกซ์ที่ดีคือศิลปะของการเลือก หลายทีมทำผิดที่เอาทุกมิติคูณกันหมด เช่น สามชั้นคูณสามฐานข้อมูลคูณสามเวอร์ชันภาษา
เท่ากับยี่สิบเจ็ดงานต่อการกดรวมโค้ดหนึ่งครั้ง โควตาการรันขนานของแผนฟรีถูกกินหมด ทีมลงจบช้า ความคิดเห็นในการตรวจโค้ดก็ตามหลัง สุดท้ายคนเริ่มข้ามการรอผลแล้วกดรวมทั้งที่งานยังไม่เสร็จ อันตรายที่สุดคือจุดนั้น
วางเมทริกซ์ทดสอบอย่างฉลาด — ครอบคลุมแต่ไม่ระเบิดคิวงาน
การกำหนดเมทริกซ์ที่ดีคือศิลปะของการเลือก หลายทีมทำผิดที่เอาทุกมิติคูณกันหมด เช่น สามชั้นคูณสามฐานข้อมูลคูณสามเวอร์ชันภาษา เท่ากับยี่สิบเจ็ดงานต่อการกดรวมโค้ดหนึ่งครั้ง โควตาการรันขนานของแผนฟรีถูกกินหมด ทีมลงจบช้า ความคิดเห็นในการตรวจโค้ดก็ตามหลัง สุดท้ายคนเริ่มข้ามการรอผลแล้วกดรวมทั้งที่งานยังไม่เสร็จ อันตรายที่สุดคือจุดนั้น
แนวทางที่ผมใช้คือแยกมิติให้ถูกชั้น ชุดทดสอบแกนธุรกิจรันเร็วและไม่มีขึ้นกับฐานข้อมูล ก็รันกับเวอร์ชันภาษาหลักเวอร์ชันเดียวหรือสองเวอร์ชันก็พอ ไม่ต้องคูณฐานข้อมูลเลย ชุดทดสอบตัวปรับเข้ากันต่างหาก ต้องรันกับฐานข้อมูลจริงทุกยี่ห้อที่ระบบรองรับ แต่ภาษาใช้เวอร์ชันเดียวก็พอ เพราะตรรกะการเชื่อมต่อไม่ได้ต่างกันตามเวอร์ชันภาษา ส่วนชุดทดสอบรวมปลายทาง รันกับชุดผสมที่เป็นตัวแทนจริงในการใช้งานเพียงหนึ่งถึงสองชุด
ตารางเปรียบเทียบแนวทางช่วยให้เห็นภาพชัด
| ชุดทดสอบ | มิติที่ต้องคูณ | จำนวนงานย่อยโดยประมาณ | เวลาที่ใช้ | เหตุผล |
|---|---|---|---|---|
| แกนธุรกิจ | เวอร์ชันภาษา 2 ตัว | 2 | น้อยกว่า 2 นาที | โค้ดล้วน ไม่ขึ้นกับสิ่งแวดล้อม |
| ตัวปรับเข้ากัน | ฐานข้อมูล 3 ยี่ห้อ | 3 | ประมาณ 6 นาที | ต้องพิสูจน์กับฐานข้อมูลจริงทุกตัว |
| รวมปลายทาง | ชุดผสมตัวแทน 2 ชุด | 2 | ประมาณ 10 นาที | ทดสอบทางเดินสำคัญของผู้ใช้ |
| รวมทั้งหมด | — | 7 | 10 นาที (ขนาน) | เดิมถ้ารันเรียงอาจยาวเกิน 40 นาที |
อีกเทคนิคที่ใช้บ่อยคือการยกเว้นเคสที่ซ้ำซ้อนด้วยการตัดเซลล์เฉพาะ เช่น การรองรับเวอร์ชันภาษาเก่าสุดอาจรวมกับฐานข้อมูลรุ่นเก่าเท่านั้น ไม่ต้องรันทุกคู่ เรากำหนดเป็นรายการยกเว้นในไฟล์งานได้ตรง ๆ วิธีนี้ลดจำนวนงานย่อยลงได้โดยยังคงความมั่นใจเหมือนเดิม
เรื่องหนึ่งที่คนมองข้ามคือการแคชการพึ่งพาแยกตามกุญแจของเซลล์ ถ้าทุกเซลล์ดาวน์โหลดแพ็กเกจใหม่หมด งานที่ควรรันเร็วก็กลายเป็นงานช้า เราตั้งกุญแจแคชให้ต่างกันตามเวอร์ชันภาษาและรายการแพ็กเกจ จะช่วยลดเวลาได้มากโดยไม่ต้องเขียนอะไรซับซ้อน
เขียนไฟล์งานอัตโนมัติให้รู้เรื่อง — ตัวอย่างที่นำไปใช้ได้จริง
มาถึงส่วนที่หลายคนรอ การเขียนไฟล์งานจริง ผมยกตัวอย่างโครงที่ผมใช้กับโปรเจกต์หลักของผมเอง ปรับชื่อชุดคำสั่งได้ตามภาษาที่ทีมใช้
name: ทดสอบแบบหกเหลี่ยม
on: pull_request: branches: [main]
jobs: ทดสอบ: runs-on: ubuntu-latest strategy: fail-fast: false matrix: include:
- ชั้น: core
ภาษา: "3.12" ฐานข้อมูล: none
- ชั้น: adapter
ภาษา: "3.12" ฐานข้อมูล: postgres16
- ชั้น: adapter
ภาษา: "3.12" ฐานข้อมูล: mysql8
- ชั้น: e2e
ภาษา: "3.12" ฐานข้อมูล: postgres16 services: ฐานข้อมูล: image: ${{ matrix.ฐานข้อมูล == 'postgres16' && 'postgres:16-alpine' || matrix.ฐานข้อมูล == 'mysql8' && 'mysql:8.0' || '' }} env: POSTGRES_PASSWORD: ทดสอบ options: >- --health-cmd pg_isready --health-interval 5s --health-timeout 3s --health-retries 10 ports:
- 5432:5432
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with: python-version: ${{ matrix.ภาษา }} cache: pip
- run: pip install -r requirements-dev.txt
- run: make test-${{ matrix.ชั้น }}
- name: สแกนกฎสถาปัตยกรรม
if: matrix.ชั้น == 'core' run: python scripts/arch_guard.py
จุดที่ต้องอธิบายเพิ่มมีสามจุด หนึ่งคือค่าไม่มีฐานข้อมูลจะทำให้บล็อกเซอร์วิสรูปภาพว่างเปล่า ซึ่งจริง ๆ แล้วควรแยกเป็นสองงานคืองานแกนธุรกิจที่ไม่ประกาศเซอร์วิสเลย และงานตัวปรับเข้ากันที่ประกาศเซอร์วิส แต่ผมรวมไว้เพื่อให้เห็นโครงในไฟล์เดียว ในงานจริงแนะนำแยกเป็นสองงานเพื่อความอ่านง่าย
สองคือตัวเลือกไม่หยุดทันทีเมื่อเซลล์ใดเซลล์หนึ่งล้ม ถ้าตั้งให้หยุดทันที เซลล์ที่เหลือจะถูกยกเลิกแล้วเราไม่เห็นภาพรวมว่ามีกี่ชั้นที่พัง พอปิดการหยุดทันที เราได้รายงานครบในรอบเดียว แก้ได้รอบเดียวจบ
เครื่องมือดีแค่ไหนก็ไม่มีประโยชน์ถ้ากติกาทีมไม่ชัด สิ่งที่ผมเรียนรู้จากการดูแลโค้ดหลายรุ่นคือ ขอบเขตสถาปัตยกรรมพังไม่ใช่เพราะเทคนิค
แต่พังเพราะความกดดันเวลา พอส่งงานดึก ๆ คนก็เหน็ดเหนื่อย ขอเขียนเร็วที่สุดก่อน ของแทรกเข้ามาในชั้นผิด เมื่อวันรุ่งขึ้นคนอื่นก็ทำตาม เพราะเห็นว่ามีคนทำแล้วแล้วทำไมตนทำไม่ได้ จากจุดนั้นโครงสร้างก็เริ่มหมุนเป็นก้อนเดียวกันอีกครั้ง
นอกจากนี้ควรจำกัดการทริกเกอร์ให้เฉพาะคำขอรวมโค้ด ไม่ต้องรันทุกการกดบันทึก และถ้าโปรเจกต์ใหญ่ ใช้การตรวจเฉพาะโฟลเดอร์ที่เปลี่ยน งานแกนจะไม่ต้องรันเลยถ้ามีการแก้แค่เอกสารในโฟลเดอร์ตัวปรับเข้ากัน
ตรวจขอบเขตให้เป็นนิสัย — กติกาที่ทีมต้องถือร่วมกัน
เครื่องมือดีแค่ไหนก็ไม่มีประโยชน์ถ้ากติกาทีมไม่ชัด สิ่งที่ผมเรียนรู้จากการดูแลโค้ดหลายรุ่นคือ ขอบเขตสถาปัตยกรรมพังไม่ใช่เพราะเทคนิค แต่พังเพราะความกดดันเวลา พอส่งงานดึก ๆ คนก็เหน็ดเหนื่อย ขอเขียนเร็วที่สุดก่อน ของแทรกเข้ามาในชั้นผิด เมื่อวันรุ่งขึ้นคนอื่นก็ทำตาม เพราะเห็นว่ามีคนทำแล้วแล้วทำไมตนทำไม่ได้ จากจุดนั้นโครงสร้างก็เริ่มหมุนเป็นก้อนเดียวกันอีกครั้ง
กติกาที่ทีมผมถือจริงมีสี่ข้อ ข้อแรก แกนธุรกิจห้ามพึ่งพาอะไรนอกตัวเองเด็ดขาด การนำเข้าต้องมาจากมาตรฐานภาษาและโมดูลภายในแกนเท่านั้น ข้อสอง พอร์ตทุกพอร์ตต้องมีตัวปลอมสำหรับทดสอบ ถ้าไม่มีแปลว่าพอร์ตนั้นออกแบบยังไม่ดีพอ ข้อสาม ตัวปรับเข้ากันบางเท่าที่จำเป็น อย่าเขียนตรรกะธุรกิจในตัวปรับเข้ากัน ถ้ารู้สึกว่าต้องเขียนเงื่อนไขธุรกิจในชั้นนี้ ให้ดึงขึ้นแกนผ่านพอร์ต ข้อสี่ ทุกคำขอรวมโค้ดต้องผ่านงานยามสถาปัตยกรรม ไม่มีข้อยกเว้นแม้แต่การแก้พิมพ์ผิด เพราะข้อยกเว้นเดียวคือจุดเริ่มต้นของการไม่มีกฎอีกต่อไป
อีกเรื่องคือการทบทวนความจำเป็นของเมทริกซ์ทุกไตรมาส ระบบเปลี่ยนไปเรื่อย ๆ ฐานข้อมูลที่เคยต้องรองรับสองยี่ห้ออาจเหลือยี่ห้อเดียว เวอร์ชันภาษาเก่าอาจตัดออกได้แล้ว เมทริกซ์ที่ไม่ถูกตัดแต่งจะบวมขึ้นเรื่อย ๆ กินโควตาและเวลาโดยไม่ให้คุณค่าคืน ผมใส่ไว้ในรายการประชุมสิ้นไตรมาสเป็นกิจวัตร ใช้เวลาไม่เกินยี่สิบนาที แต่คุ้มมาก
และอย่าลืมความเป็นเอกสาร ไฟล์งานอัตโนมัติเองก็คือโค้ด ควรมีหัวข้ออธิบายสั้น ๆ ว่าแต่ละมิติมีเหตุผลอะไร คนใหม่ที่เข้ามาจะเข้าใจได้ในห้านาที ไม่ต้องไปถามคนเก่าที่อาจย้ายทีมไปแล้ว
ตัวอย่างการใช้จริงในระบบเทรดของผม — จากปัญหาสู่ทางออก
ขอเล่าเคสจริงในระบบส่งสัญญาณเทรดของทีมผม เดิมโค้ดส่วนกำหนดการส่งสัญญาณ การคำนวณระดับราคาเข้าออก และการเชื่อมต่อเซอร์วิสข้อมูลราคา อยู่ปนกันหมด ทุกครั้งที่เซอร์วิสข้อมูลราคาเปลี่ยนรูปแบบ ทีมต้องหยุดระบบแก้แล้วทดสอบใหม่ทั้งหมด ใช้เวลารอบละสองถึงสามวัน และช่วงที่แก้อยู่สัญญาณจะส่งล่าช้า ลูกค้าเริ่มถามหา
ทางออกคือปรับโครงเป็นสถาปัตยกรรมหกเหลี่ยม แกนธุรกิจคือกฎการคำนวณสัญญาณล้วน ๆ รับราคาเป็นตัวเลขธรรมดา ไม่รู้จักข้อความจากเซอร์วิสใด เรากำหนดพอร์ตรับข้อมูลราคาสองตัวคือพอร์ตสำหรับเซอร์วิสปัจจุบันและพอร์ตสำหรับตัวปลอมในการทดสอบ จากนั้นวางเมทริกซ์ทดสอบโดยแกนธุรกิจรันกับชุดข้อมูลราคาสถานการณ์ที่เตรียมไว้หลายสิบเคส รันจบในวินาที ส่วนตัวปรับเข้ากันรันกับข้อมูลจริงที่บันทึกไว้ พิสูจน์ว่าการแปลงข้อความราคาเป็นตัวเลขถูกต้องทุกกรณี
ผลลัพธ์ที่วัดได้เป็นตัวเลขชัดเจน อัตราความสำเร็จของชุดทดสอบแกนก่อนปรับอยู่ราวแปดสิบเปอร์เซ็นต์เพราะความขึ้นกับสิ่งแวดล้อม หลังปรับขึ้นเป็นเกือบร้อยเปอร์เซ็นต์และเสถียร นาทีที่ใช้ทดสอบต่อคำขอรวมโค้ดลดจากราวสามสิบห้านาทีเหลือประมาณสิบสองนาที และเวลาปรับรองรับเซอร์วิสข้อมูลราคาเพิ่มลงเหลือไม่ถึงวันเดียว เพราะเขียนตัวปรับเข้ากันใหม่แล้วรันชุดทดสอบเดิม
บทเรียนสำคัญจากเคสนี้คือ อย่าปรับโครงทีเดียวทั้งระบบ ผมแยกทำทีละโดเมน เริ่มจากโดเมนที่เจ็บที่
คำถามที่พบบ่อย
GitHub Actions Matrix กับสถาปัตยกรรมหกเหลี่ยมนำมาใช้ร่วมกันได้อย่างไร และเพราะอะไรจึงเข้ากันดี?
สองแนวคิดนี้เข้ากันดีเพราะเสริมกันในจุดที่อีกฝ่ายขาด สถาปัตยกรรมหกเหลี่ยมทำหน้าที่แยกแกนธุรกิจออกจากโลกภายนอก ไม่ว่าจะเป็นฐานข้อมูล เซอร์วิสภายนอก หรือระบบส่งข้อความ โดยการสื่อสารกันผ่านพอร์ตและตัวปรับเข้ากันเท่านั้น ผลคือโค้ดแกนธุรกิจกลายเป็นโค้ดล้วนที่มีขอบเขตการทดสอบเล็กลงและรันได้เร็ว ส่วน GitHub Actions Matrix เป็นเครื่องมือที่ช่วยให้เราทดสอบโค้ดพร้อมกันหลายชุดตัวแปร เช่น เวอร์ชันภาษา ระบบปฏิบัติการ หรือฐานข้อมูลหลายยี่ห้อในครั้งเดียว เมื่อโค้ดถูกแยกชั้นอย่างชัดเจนแล้ว เราสามารถกำหนดมิติการทดสอบในเมทริกซ์ได้อย่างมีความหมาย ไม่ใช่ทดสอบมั่ว ๆ จากประสบการณ์จริงในระบบส่งสัญญาณเทรด พอเซอร์วิสตลาดเปลี่ยนรูปแบบข้อมูล เราเพียงเขียนตัวปรับเข้ากันใหม่แล้วทดสอบผ่านเมทริกซ์ที่รวมเคสธุรกิจกับตัวปรับเข้ากัน ก็ส่งผ่านได้ทุกกรณีโดยไม่ต้องแก้โค้ดทั้งระบบ
โครงสร้างของสถาปัตยกรรมหกเหลี่ยมแบ่งออกเป็นชั้นใดบ้าง และแต่ละชั้นทำหน้าที่อะไร?
สถาปัตยกรรมหกเหลี่ยมหรือที่เรียกอีกอย่างว่าสถาปัตยกรรมแบบพอร์ตและตัวปรับเข้ากัน แบ่งระบบออกเป็นสามวง วงในสุดคือแกนธุรกิจ ซึ่งประกอบด้วยกฎเกณฑ์และตรรกะธุรกิจล้วน ๆ ไม่มีการเรียกเครือข่าย ไม่มีการอ่านไฟล์ และไม่มีการเชื่อมต่อฐานข้อมูลโดยตรง วงถัดออกมาคือพอร์ต ซึ่งเป็นข้อกำหนดว่าระบบต้องรับข้อมูลเข้าอย่างไรและส่งข้อมูลออกอย่างไร สุดท้ายคือตัวปรับเข้ากัน ทำหน้าที่แปลงเทคโนโลยีจริง เช่น ไดรเวอร์ฐานข้อมูล ไลบรารีส่งข้อความ หรือเซอร์วิสภายนอก ให้เข้ากับพอร์ตที่แกนธุรกิจกำหนดไว้ เหตุผลที่การแยกแบบนี้ช่วยให้ทดสอบได้ดีขึ้นคือ แกนธุรกิจเป็นโค้ดล้วนที่ไม่มีสิ่งแวดล้อมภายนอกมากวน เขียนชุดทดสอบหน่วยได้เร็วมาก รันเสร็จในไม่กี่วินาที ส่วนการทดสอบที่ต้องเชื่อมของจริงก็แทนตัวปรับเข้ากันด้วยตัวปลอมที่ควบคุมได้
ควรออกแบบเมทริกซ์การทดสอบอย่างไรให้ครอบคลุมโดยไม่ระเบิดคิวงาน?
หัวใจสำคัญคือการเลือกและแยกมิติให้ถูกชั้น ไม่ใช่เอาทุกมิติมาคูณกันหมด หลายทีมทำผิดพลาดตรงนี้ เช่น สามชั้นการทดสอบคูณสามฐานข้อมูลคูณสามเวอร์ชันภาษา เท่ากับยี่สิบเจ็ดงานต่อการกดรวมโค้ดหนึ่งครั้ง ทำให้โควตาการรันขนานหมดไป ทีมต้องรอนาน และอันตรายที่สุดคือคนเริ่มข้ามการรอผลแล้วกดรวมโค้ดทั้งที่งานยังไม่เสร็จ แนวทางที่แนะนำคือ ชุดทดสอบแกนธุรกิจที่รันเร็วและไม่ขึ้นกับฐานข้อมูล ให้รันกับเวอร์ชันภาษาหลักเพียงหนึ่งหรือสองเวอร์ชันก็พอ ไม่ต้องคูณฐานข้อมูลเลย ชุดทดสอบตัวปรับเข้ากันต้องรันกับฐานข้อมูลจริงทุกยี่ห้อที่ระบบรองรับ แต่ใช้เวอร์ชันภาษาเดียว เพราะตรรกะการเชื่อมต่อไม่ได้ต่างกันตามเว
แนะนำเพิ่มเติม
🎯 เปิดบัญชี XM Forex → สมัคร
📱 แอป iCafeFX → ดาวน์โหลด
📊 สัญญาณฟรี → รับสัญญาณ
📚 คู่มือเทรด → SiamCafeBook
🤝 สมัคร Partner XM → pipaffiliates.com/c?c=72816&l=th&p=6
แนะนำจากเครือข่าย SiamCafe
คู่มือ Forex ที่เกี่ยวข้อง
แหล่งอ้างอิง
- SiamCafe.net - ชุมชนไอทีไทยตั้งแต่ปี 1997
- iCafeFX.com - ศูนย์วิเคราะห์ Forex และทองคำ