การทดสอบแบ็กเอนด์ของเว็บแอปที่ขับเคลื่อนด้วยเนื้อหา

การทดสอบแบ็กเอนด์ของเว็บแอปพลิเคชันคือส่วนสำคัญของกระบวนการพัฒนาและการตรวจสอบที่ต่อเนื่อง นอกจากนี้ ดูการทดสอบสำหรับฟรอนท์เอนด์

การพัฒนาที่ทดสอบ

ในการพัฒนาที่ขับเคลื่อนด้วยการทดสอบ (TDD) ระบบจะแปลงข้อกำหนดของแอปพลิเคชันเป็นกรณีทดสอบก่อนที่จะนำแอปพลิเคชันไปใช้อย่างเต็มรูปแบบ ระหว่างการพัฒนา การทดสอบเหล่านี้จะเขียนขึ้นก่อนและนำไปใช้ต่อๆ ไปเมื่อมีการสร้างแอปพลิเคชัน ข้อกำหนดที่ชัดเจน (เช่น กรณีทดสอบ) ทำให้โค้ดในขั้นสุดท้ายมีโครงสร้างที่ดี ตรงตามข้อกำหนดทั้งหมด และถูกต้อง ซึ่งสำคัญมากในช่วงเริ่มต้นของการพัฒนา

การผสานรวมอย่างต่อเนื่องและการทดสอบอัตโนมัติ

การทดสอบการผสานรวมอย่างต่อเนื่อง (CI) จะทดสอบการเปลี่ยนแปลงโค้ดต่างๆ โดยอัตโนมัติ เช่น ในระหว่างการตรวจสอบโค้ดหรือเมื่อมีการรวมโค้ดไว้ในที่เก็บโค้ด การทดสอบอัตโนมัติจะช่วยปรับปรุงคุณภาพและความเชื่อมั่นโดยรวมของโค้ดที่ส่งโดยลดความเสี่ยงของการหยุดทำงานหรือการถดถอยระหว่างการพัฒนา เราขอแนะนำให้ตั้งค่าระบบการทดสอบอัตโนมัติสำหรับสภาพแวดล้อมของคุณเพื่อให้แอปพลิเคชันมีประสิทธิภาพ ใช้ระบบที่สถาปัตยกรรม แพลตฟอร์ม และภาษารองรับ และผสานรวมเข้ากับไปป์ไลน์การพัฒนาได้อย่างราบรื่น เช่น ใช้ GitHub Actions สำหรับเวิร์กโฟลว์ CI หรือไปป์ไลน์ CI ที่กำหนดเองในระบบคลาวด์ ซึ่งปรับแต่งสำหรับการกำหนดค่าของคุณ

ดูข้อมูลเพิ่มเติมเกี่ยวกับหลักการทดสอบอัตโนมัติและวิธีปรับปรุงการทดสอบ ดูข้อมูลเพิ่มเติมเกี่ยวกับการทดสอบการผสานรวมอย่างต่อเนื่อง และแนวทางปฏิบัติที่ดีที่สุดในการใช้งาน การตั้งค่า และการวัดความสำเร็จ

ในขั้นตอนถัดไป ให้ลองใช้ไปป์ไลน์การนำส่งต่อเนื่อง (CD) อัตโนมัติเพื่อทำให้การเปลี่ยนแปลงและการอัปเดตแอปพลิเคชันใช้งานได้โดยอัตโนมัติ

การทดสอบ 1 หน่วย

การทดสอบหน่วยหมายถึงการทดสอบโค้ดส่วนเล็กๆ ในตัวแบบแยกส่วน ใช้เฟรมเวิร์กการทดสอบหน่วยที่เราแนะนำและเป็นที่นิยมสำหรับเฟรมเวิร์กหรือภาษาแบ็กเอนด์ของคุณ เช่น สำหรับแอปพลิเคชันแบบโมโนลิธที่ใช้ Java ให้ใช้ JUnit หรือแอปพลิเคชันแบบ Serverless ที่ใช้ JavaScript (รวมถึง Dart หรือ TypeScript) ให้ใช้เฟรมเวิร์กที่สร้างขึ้นสำหรับการทดสอบ JavaScript เช่น Jest

เฟรมเวิร์กแบ็กเอนด์ที่ทันสมัยส่วนใหญ่มีทรัพยากรเฉพาะสำหรับการทดสอบ ลองผสานรวมฟีเจอร์เหล่านี้เข้ากับไปป์ไลน์ CI เพื่อทำการทดสอบโดยอัตโนมัติ ตรวจสอบว่าการทดสอบหน่วยให้ความครอบคลุมของโค้ดที่ดีสำหรับแอปพลิเคชันของคุณ เฟรมเวิร์กการทดสอบส่วนใหญ่จะมีฟีเจอร์สำหรับการวิเคราะห์และรายงานเกี่ยวกับการครอบคลุมของการทดสอบ รวมถึงผสานรวมกับไปป์ไลน์ของบิลด์ได้

การทดสอบการผสานรวม

การทดสอบการผสานรวมหมายถึงการทดสอบโมดูลหรือส่วนต่างๆ ของแอปพลิเคชันที่มีขนาดใหญ่ขึ้นร่วมกัน การทดสอบการผสานรวมจะเน้นที่การผสานรวมส่วนต่างๆ ในสถาปัตยกรรมของคุณเมื่อเทียบกับการทดสอบหน่วย (ซึ่งโฟกัสที่แต่ละส่วนของโค้ด) ซึ่งอาจรวมถึงขั้นตอนการดำเนินการตั้งแต่ต้นจนจบที่ครอบคลุมขั้นตอนและโมดูลต่างๆ ในแอปพลิเคชันด้วย

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

การทดสอบลักษณะการทำงานและฟังก์ชัน

เมื่อเข้าใกล้แบ็กเอนด์ (หรือโมดูลหรือคอมโพเนนต์แต่ละรายการ) เป็นกล่องทึบแสง การทดสอบการทำงานจะเน้นไปที่อินพุตและเอาต์พุตของระบบ แม้ว่าการทดสอบเชิงพฤติกรรมอาจพบได้ทั่วไปสำหรับฟรอนท์เอนด์ แต่ก็มีบทบาทสำคัญในการยืนยันความสมบูรณ์ของระบบแบ็กเอนด์ด้วย การทดสอบประเภทนี้จะยืนยันว่าระบบมีการตอบสนองและทำงานตามที่คาดไว้ต่ออินพุตที่แตกต่างกัน

การทดสอบการถดถอย

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

การทดสอบควัน

การทดสอบควันหรือที่เรียกว่าการทดสอบการยืนยันบิลด์จะเน้นการยืนยันฟังก์ชันที่สำคัญที่สุดของแอปพลิเคชันแบ็กเอนด์ การทดสอบควันจะครอบคลุมกรณีการใช้งานที่สำคัญสำหรับแอปพลิเคชันของคุณ โดยครอบคลุมมากกว่าการทดสอบการผสานรวมซึ่งแยกฟีเจอร์บางรายการและทรัพยากร Dependency ภายนอกออก การทดสอบ Smoke เป็นการยืนยันชั้นเพิ่มเติมก่อนที่จะโปรโมตแอปพลิเคชันในสภาพแวดล้อมการทดลองใช้เพื่อให้ทำงานได้อย่างถูกต้อง การทดสอบควันอาจประกอบด้วยการทดสอบหน่วยอัตโนมัติหรือการทดสอบการทำงานด้วยตนเองที่ดำเนินการโดยทีม QA

สภาพแวดล้อมในการผลิตและการทดลองใช้

สภาพแวดล้อมการทดลองใช้คือสําเนาของสภาพแวดล้อมเวอร์ชันที่ใช้งานจริงซึ่งมีแซนด์บ็อกซ์เพื่ออํานวยความสะดวกในการทดสอบ การทำให้ใช้งานได้โดยเฉพาะจะช่วยลดความเสี่ยงของปัญหาที่เกิดกับสภาพแวดล้อมการใช้งานจริง และช่วยให้ทำการรับประกันคุณภาพได้ง่ายขึ้น สภาพแวดล้อมการทดลองใช้ช่วยให้คุณทดสอบระบบได้ใกล้เคียงกับสภาพแวดล้อมของเวอร์ชันที่ใช้งานจริง

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

การทดสอบกับข้อมูลที่ใช้ในเวอร์ชันที่ใช้งานจริงให้ประโยชน์อย่างยิ่งในการทดสอบลักษณะการทำงานของแอปพลิเคชันกับข้อมูลจริง อย่าลืมพิจารณาผลกระทบด้านความเป็นส่วนตัวและความจำเป็นด้านพื้นที่เก็บข้อมูลสำหรับสภาพแวดล้อมการทดลองใช้ดังกล่าว และออกแบบข้อมูลที่ระบบแบ็กเอนด์ใช้อย่างรอบคอบ การเข้าถึงสภาพแวดล้อมดังกล่าวควรมีการควบคุมอย่างเข้มงวด โดยเฉพาะอย่างยิ่งหากมีการใช้ข้อมูลที่ใช้งานจริง

พิจารณาขนาดของระบบและพิจารณาว่าสภาพแวดล้อมที่ยืนหยัดนั้นเหมาะสมกับแอปพลิเคชันของคุณหรือไม่ สภาพแวดล้อมแบบทดลองใช้ที่ทำให้ใช้งานได้โดยอัตโนมัติผ่านระบบการนำส่งอย่างต่อเนื่องยังมอบโอกาสเพิ่มเติมในการทดสอบบิลด์รายวันหรือรายสัปดาห์ รวมถึงให้การตรวจสอบอย่างละเอียดเพิ่มเติมก่อนเปิดตัวด้วย

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