Sprint Summary Report: Sprint 2 - Chayanon6409682538/ProjectCS360_foodadvisor GitHub Wiki

Sprint Summary Report: Sprint 2

ชื่อกลุ่ม: Pakpok

สมาชิกในกลุ่ม:

  1. นายศักรพงศ์ พิพัฒน์พรชัยกุล 6309545033 (พอตเตอร์)
  2. นายชญานนท์ ขันฤทธิ์ 6409682538 (ไรเฟิล)
  3. นายศุภกร อูปแก้ว 6409682918 (ต้า)
  4. นางสาวอนัลลีนา ลิภา 6409682942 (ฟ้า)

ช่วงเวลาดำเนินงาน:

วันที่ 21 ตุลาคม 2567 ถึงวันที่ 30 ตุลาคม 2567

การสรุปงานที่ทำใน Sprint (Summary of Tasks Completed)

ใน Sprint 2 กลุ่มของเราได้ทำงานดังนี้:

  1. พัฒนา Feature ใหม่ : ทีมของเราได้ตัดสินใจว่าจะพัฒนาระบบ Menu ร้านอาหาร ที่สามารถอ่านข้อมูลเมนูจาก database ได้ เพิ่มเมนูใหม่ได้ ลบเมนูได้ และแก้ไขและอัพเดตข้อมูลเมนูใหม่ได้
  • ต้า: ออกแบบเมนูที่จะแสดงในหน้าร้านอาหารแต่ละร้าน ออกแบบ Menu Editor ที่เป็นเมนูเอาไว้จัดการกับเมนูของแต่ละร้าน พัฒนาระบบ frontend ของ Menu และ Menu Editor และฟังก์ชันที่ใช้ api เชื่อมต่อกับ backend ของ strapi
  • ฟ้า: ทำการ research เกี่ยวกับฟังก์ชันที่ใช้ api
  1. พัฒนา Automate Tests:
  • ต้า: พัฒนา test cases เพื่อทดสอบการทำงานของ menu-services
  • ไรเฟิล: - ทดลองนำ Integration test จากตัวอย่างของพี่ TA มาใช้ในโปรเจค
  • ช่วยกันทำส่วน Unit test ของแต่ละฟังก์ชั่นกับต้าซึ่งจะ test ไฟล์ menu-services ที่มีฟังก์ชั่นที่ใช้ API สำหรับรับส่งข้อมูลของ menu ไฟล์สำหรับเทสคือไฟล์ menu.test.js จะมีทั้ง test case สำหรับทดสอบความถูกต้องของข้อมูลที่รับส่งและ error handlig เมื่อเกิดข้อผิดพลาด
  • ตรวจสอบ test case ในไฟล์ menu.test.js และทดลอง run test ในเครื่อง local
  1. การตั้งค่า GitHub Actions Workflow:
  • ไรเฟิล: สร้าง workflow ของโปรเจคสำหรับใช้กับ Github Actions โดยการเขียนไฟล์ github-actions-demo.yml ซึ่งประกอบไปด้วย
    • ชื่อของ workflow
    • trigger events
    • os matrix และ node version matrix
    • jobs และ step การทำงานของ workflow
    • check code สำหรับ clone repository มายัง runner
    • set node แต่ละ version ตาม matrix
    • install dependencies และ build project
    • การรัน unit test ของ project
  1. ปรับปรุง README.md ของ Repository: ทีมได้ดำเนินการพัฒนาและปรับปรุง README.md ใน repository
  • ฟ้า: ได้มีการอธิบายเพิ่มเติมในหน้า README.md ของ Repository ว่าใช้เครื่องมือ jest, supertest, และ strapi สําหรับการทดสอบ รวมทั้งการติดตั้งซอฟต์แวร์ที่จําเป็นกับการตั้งค่า รวมถึงอธิบายว่าไฟล์ทดสอบจะอยู่ในส่วน client คือไฟล์ menu.test.js และอธิบายการดูผลการทดสอบ การเพิ่มการทดสอบใหม่ในอนาคต
    • ได้อธิบายขั้นตอนที่ CI pipeline ทำงานในแต่ละครั้งโดยได้รับคำแนะนำจากไรเฟิลที่เป็นคนสร้าง workflow และระบุไฟล์YAML ที่ใช้ตั้งค่า GitHub Actions หรือเครื่องมือ CI อื่น ๆ, วิธีการทำงานเชื่อมการ push โค้ดหรือ pull request, รวมถึงแสดงวิธีการเรียกใช้ชุดการทดสอบในเครื่องและการทำงานของ CI pipeline
  • ไรเฟิล: อธิบายการทำงานของการทำ Automate test ของโปรเจคและ CI pipeline ของโปรเจค
  • ทุกคน: ร่วมกันอธิบายวิธีการดูผลลัพธ์การทดสอบที่ได้จาก CI pipeline ในหน้า GitHub หรือใน Terminal หลังจากการรันการทดสอบ

การวิเคราะห์ปัญหาและการแก้ไข (Problem Analysis and Solutions)

  1. ปัญหาในการพัฒนา Feature ใหม่ : ปัญหา: ไม่เข้าใจโครงสร้างโค้ดของโปรเจคต้นแบบ การแก้ไข: ศึกษาเกี่ยวกับ strapi โปรเจคอื่นเพิ่มเติมแล้วนำมาเปรียบเทียบกับโปรเจคต้นแบบ

  2. ปัญหาในการพัฒนา Automate Tests : ปัญหา: ไม่สามารถทำ automated test ในส่วนของ integration test ได้ การแก้ไข: สาเหตุมาจากจำเป็นต้องใช้ค่าที่ mock สำหรับ test ส่งไปยัง server strapi ผ่าน plugin ซึ่งไมาสามารถหา plugin สำหรับส่วน menu นี้ได้จึงยังไม่ได้แก้ไข และทำแค่ Unit test อย่างเดียวซึ่งใน unit test ก็ test ฟังก์ชั่นที่มีการใช้ api ในการส่งและรับค่า

  3. ปัญหาในการการตั้งค่า GitHub Actions Workflow : ปัญหา1: ไม่สามารถรัน Test ใน CI pipeline ได้ การแก้ไข: สาเหตุมาจากไม่ได้ตั้ง working directory ที่ถูกต้องสำหรับการรัน test แก้ปัญหาโดยการเพิ่มคำสั่งระบุ working directory เข้าไปใน step การ build และ รัน test ปัญหา2: ไม่สามารถใช้ node version อื่นได้นอกจาก 16 การแก้ไข: สาเหตุมาจากมี dependencies ที่ติดตั้งหลายตัวและความเหมาะสมของการใช้ทุกตัวร่วมกันคือ node version 16 ปัญหา3: ไม่สามารถใช้ os อื่นนอกจาก ubuntu ได้ การแก้ไข: ในส่วนนี้ตั้งค่า matrix สำหรับ os ให้ใช้ macos ด้วย สาเหตุของปัญหามาจาก macos ติดปัญหาตอนติดตั้ง dependencies ไม่สามารถติดตั้ง bettersqlite3 ของ node module ได้ ยังไม่สามารถแก้ไขได้

การประเมินผลของทีม (Team Evaluation)

  1. การทำงานร่วมกัน: ทีมทำงานร่วมกันอย่างมีประสิทธิภาพ โดยมีการแบ่งหน้าที่ชัดเจนตามงาน คือ หน้าที่พัฒนา feature ใหม่, พัฒนา automate test, สร้าง CI pipeline , และ ปรับปรุง Readme ของ repository สมาชิกทีมแต่ละคนมีส่วนร่วมในการทำงาน และร่วมกันช่วยเหลือในการแก้ไขปัญหาที่เกิดขึ้น

  2. การสื่อสาร: ใช้ช่องทาง Discord ของกลุ่มในการสื่อสารกันผ่านข้อความ ยังคงต้องปรับปรุงเรื่องการสื่อสารเนื่องจาก sprint1 และ sprint2 ที่ผ่านมายังมีการประชุมที่ไม่ต่อเนื่อง

การวิเคราะห์การทำงานของทีมและบทเรียนที่ได้(Team Collaboration and Lessons Learned)

  1. การทำงานเป็นทีม: สมาชิกในทีมประมาทในการวางแผนในการทำงาน sprint2 เลยเกิดความล่าช้าในการทำงาน ไม่มีการวางแผนการประชุมงานของทีม ปัญหาที่เกิดขึ้นหลายอย่างได้มีการปรึกษาพี่ TA เนื่องจากปัญหานั้นอยู่นอกเหนือขอบเขตความรู้และความสามารถของสมาชิกในทีม

  2. บทเรียนที่ได้และแผนในการพัฒนาการทำงาน: ตระหนักถึงความสำคัญของการประชุม เพื่อให้การทำงานออกมามีประสิทธิภาพ และเสร็จได้ทันกำหนดที่วางไว้ มีแผนในการวางแผนการประชุมอย่างน้อยอาทิตย์ละ 1 ครั้งเพื่อติดตามความคืบหน้าของงาน จากคำแนะนำของพี่ TA และการหาความรู้เพิ่มเติมของสมาชิกในทีม ทำให้ได้เรียนรู้แนวทางวิธีการในการแก้ไขปัญหาใหม่ ๆ