Sprint Summary Report: Sprint 2 - Chayanon6409682538/ProjectCS360_foodadvisor GitHub Wiki
Sprint Summary Report: Sprint 2
ชื่อกลุ่ม: Pakpok
สมาชิกในกลุ่ม:
- นายศักรพงศ์ พิพัฒน์พรชัยกุล 6309545033 (พอตเตอร์)
- นายชญานนท์ ขันฤทธิ์ 6409682538 (ไรเฟิล)
- นายศุภกร อูปแก้ว 6409682918 (ต้า)
- นางสาวอนัลลีนา ลิภา 6409682942 (ฟ้า)
ช่วงเวลาดำเนินงาน:
วันที่ 21 ตุลาคม 2567 ถึงวันที่ 30 ตุลาคม 2567
การสรุปงานที่ทำใน Sprint (Summary of Tasks Completed)
ใน Sprint 2 กลุ่มของเราได้ทำงานดังนี้:
- พัฒนา Feature ใหม่ : ทีมของเราได้ตัดสินใจว่าจะพัฒนาระบบ Menu ร้านอาหาร ที่สามารถอ่านข้อมูลเมนูจาก database ได้ เพิ่มเมนูใหม่ได้ ลบเมนูได้ และแก้ไขและอัพเดตข้อมูลเมนูใหม่ได้
- ต้า: ออกแบบเมนูที่จะแสดงในหน้าร้านอาหารแต่ละร้าน ออกแบบ Menu Editor ที่เป็นเมนูเอาไว้จัดการกับเมนูของแต่ละร้าน พัฒนาระบบ frontend ของ Menu และ Menu Editor และฟังก์ชันที่ใช้ api เชื่อมต่อกับ backend ของ strapi
- ฟ้า: ทำการ research เกี่ยวกับฟังก์ชันที่ใช้ api
- พัฒนา 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
- การตั้งค่า 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
- ปรับปรุง 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)
-
ปัญหาในการพัฒนา Feature ใหม่ : ปัญหา: ไม่เข้าใจโครงสร้างโค้ดของโปรเจคต้นแบบ การแก้ไข: ศึกษาเกี่ยวกับ strapi โปรเจคอื่นเพิ่มเติมแล้วนำมาเปรียบเทียบกับโปรเจคต้นแบบ
-
ปัญหาในการพัฒนา Automate Tests : ปัญหา: ไม่สามารถทำ automated test ในส่วนของ integration test ได้ การแก้ไข: สาเหตุมาจากจำเป็นต้องใช้ค่าที่ mock สำหรับ test ส่งไปยัง server strapi ผ่าน plugin ซึ่งไมาสามารถหา plugin สำหรับส่วน menu นี้ได้จึงยังไม่ได้แก้ไข และทำแค่ Unit test อย่างเดียวซึ่งใน unit test ก็ test ฟังก์ชั่นที่มีการใช้ api ในการส่งและรับค่า
-
ปัญหาในการการตั้งค่า 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)
-
การทำงานร่วมกัน: ทีมทำงานร่วมกันอย่างมีประสิทธิภาพ โดยมีการแบ่งหน้าที่ชัดเจนตามงาน คือ หน้าที่พัฒนา feature ใหม่, พัฒนา automate test, สร้าง CI pipeline , และ ปรับปรุง Readme ของ repository สมาชิกทีมแต่ละคนมีส่วนร่วมในการทำงาน และร่วมกันช่วยเหลือในการแก้ไขปัญหาที่เกิดขึ้น
-
การสื่อสาร: ใช้ช่องทาง Discord ของกลุ่มในการสื่อสารกันผ่านข้อความ ยังคงต้องปรับปรุงเรื่องการสื่อสารเนื่องจาก sprint1 และ sprint2 ที่ผ่านมายังมีการประชุมที่ไม่ต่อเนื่อง
การวิเคราะห์การทำงานของทีมและบทเรียนที่ได้(Team Collaboration and Lessons Learned)
-
การทำงานเป็นทีม: สมาชิกในทีมประมาทในการวางแผนในการทำงาน sprint2 เลยเกิดความล่าช้าในการทำงาน ไม่มีการวางแผนการประชุมงานของทีม ปัญหาที่เกิดขึ้นหลายอย่างได้มีการปรึกษาพี่ TA เนื่องจากปัญหานั้นอยู่นอกเหนือขอบเขตความรู้และความสามารถของสมาชิกในทีม
-
บทเรียนที่ได้และแผนในการพัฒนาการทำงาน: ตระหนักถึงความสำคัญของการประชุม เพื่อให้การทำงานออกมามีประสิทธิภาพ และเสร็จได้ทันกำหนดที่วางไว้ มีแผนในการวางแผนการประชุมอย่างน้อยอาทิตย์ละ 1 ครั้งเพื่อติดตามความคืบหน้าของงาน จากคำแนะนำของพี่ TA และการหาความรู้เพิ่มเติมของสมาชิกในทีม ทำให้ได้เรียนรู้แนวทางวิธีการในการแก้ไขปัญหาใหม่ ๆ