Unit Test มันช่วยกัน App Crash ได้นะ (Infinite Loop)

วันนี้ไปส่องใน Grafana แล้วพบว่า มี Build อันนี้ ใช้เวลา Run ผิดปกติ เลยไปส่องดู Code ถ้าใหมาแบบนี้ Jenkins มันทำงานไปเรื่อยๆ จนถึง Timeout ที่ตั้งไว้แน่ๆ แล้วอาจจะมีประเด็นขอ Waive Test ได้เพราะนาน หลังจากลอง Pull Code แล้วลอง Run Test ดูก็พบว่า Test แมร่ง Run ค้างไปเรื่อยๆ 10 นาที ยังไม่หยุดครับ เลยต้องเข้าไปดู Code จาก Code ข้างต้น เราพบว่า Line ที่ 12 มันมีปัญหา while (remainingLot != 0) ถ้าตัวเลขจากที่ตั้งต้น แล้วตัด Lot แล้วดันติดลบขึ้นมา มันจะ Infinite Loop ครับ หากเคสนี้หลุดไป Production App / Web ขึ้นมา อาจจะทำให้เกิด Bug ที่ตรวจจับสาเหตุได้ยาก เช่น กดแล้ว App ปิดตัวลง หรือ เว็บตอบสนองช้าลง / ตัว Container OOMKilled เพราะ Resource ถูกใช้งานไปเรื่อยๆ จนหมด การแก้ไข Code ถ้าเอาง่ายๆ ผมปรับ while (remainingLot >= 0) แต่เพื่อให้งานของเรามีคุณภาพทั้งส่วน Technical และ Business ผมทำ Excel ให้ทาง BA หยอดเลขในเคสต่างๆแทนครับ จะได้ครบทั้ง Technical และ…








