การทดสอบแบบไดนามิกคืออะไร? ประเภท เทคนิค และตัวอย่าง

⚡ สรุปอย่างชาญฉลาด

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

  • 🎯 วัตถุประสงค์: ตรวจสอบพฤติกรรมการทำงานจริง ไม่ใช่เอกสารที่อธิบายถึงพฤติกรรมนั้น
  • 🔀 สองสาขา: กล่องสีขาวตรวจสอบโค้ด กล่องสีดำตรวจสอบพฤติกรรม
  • 🧱 สี่ระดับ: การทดสอบระดับหน่วย การทดสอบการบูรณาการ การทดสอบระบบ และการทดสอบการยอมรับ ล้วนเป็นการเรียกใช้โค้ด
  • ⚙️ ไม่ทำงาน: ระบบจะทำการตรวจสอบประสิทธิภาพ การกู้คืน ความเข้ากันได้ ความปลอดภัย และความสามารถในการใช้งาน
  • 🔄 กระบวนการ: กลยุทธ์ การออกแบบการทดสอบ การตั้งค่าสภาพแวดล้อม การดำเนินการ และการรายงานข้อบกพร่อง
  • ???? การแลกเปลี่ยน: การตรวจจับข้อบกพร่องที่ละเอียดขึ้นนั้นแลกมาด้วยเวลา สภาพแวดล้อม และค่าใช้จ่ายที่สูงขึ้น

ประเภท เทคนิค และตัวอย่างของการทดสอบแบบไดนามิก

การทดสอบแบบไดนามิกคืออะไร?

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

การทดสอบคือ การตรวจสอบและการตรวจสอบความถูกต้องและจำเป็นต้องมีการทดสอบทั้งสองแบบเพื่อให้การทดสอบสมบูรณ์ การตรวจสอบ (Verification) ดำเนินการโดยการทดสอบแบบคงที่ (Static Testing) ซึ่งจะตรวจสอบข้อกำหนด เอกสารการออกแบบ และโค้ดโดยไม่ต้องเรียกใช้งาน การตรวจสอบความถูกต้อง (Validation) ดำเนินการโดยการทดสอบแบบไดนามิก (Dynamic Testing) ซึ่งจะเรียกใช้งานเวอร์ชันที่สร้างขึ้นและเปรียบเทียบสิ่งที่แอปพลิเคชันทำจริงกับสิ่งที่ควรจะทำ

ตารางด้านล่างนี้แสดงความแตกต่างระหว่างทั้งสองอย่างได้อย่างชัดเจน

แง่มุม การทดสอบแบบคงที่ (การตรวจสอบ) การทดสอบแบบไดนามิก (การตรวจสอบความถูกต้อง)
Code ดำเนินการ ไม่ มี (ใบกำกับภาษีเต็มรูปแบบ)
กิจกรรมทั่วไป Revการดู การเดินสำรวจ การตรวจสอบ การวิเคราะห์แบบคงที่ การดำเนินการทดสอบในทุกระดับการทดสอบ
คำถามได้รับคำตอบแล้ว เรากำลังสร้างผลิตภัณฑ์อย่างถูกต้องหรือไม่? เรากำลังสร้างผลิตภัณฑ์ที่ถูกต้องหรือไม่?
พบข้อบกพร่อง ข้อกำหนดที่ไม่ชัดเจน การละเมิดมาตรฐานการเขียนโค้ด โค้ดที่ไม่ได้ใช้งาน ผลลัพธ์ไม่ถูกต้อง, หน่วยความจำรั่วไหล, ข้อผิดพลาดด้านเวลา, ความล้มเหลวในการรวมระบบ
เริ่ม ทันทีที่สิ่งประดิษฐ์นั้นปรากฏขึ้น เมื่อมีไฟล์ปฏิบัติการแล้ว
ต้นทุนสัมพัทธ์ของการแก้ไข ต่ำกว่า เนื่องจากตรวจพบข้อบกพร่องได้เร็วกว่า สูงกว่า เพราะข้อบกพร่องจะปรากฏให้เห็นในภายหลัง

ตัวอย่างการทดสอบแบบไดนามิก

ตัวอย่างการใช้งานสั้นๆ จะแสดงให้เห็นว่าการทดสอบแบบไดนามิกทำงานอย่างไรในทางปฏิบัติ

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

เมื่อผู้ใช้ป้อนชื่อผู้ใช้เป็น “Guruระบบจะยอมรับเมื่อป้อน “99” เมื่อผู้ใช้ป้อน “Guruเมื่อป้อนค่า "99@123" แอปพลิเคชันจะแสดงข้อความแสดงข้อผิดพลาด ผลลัพธ์นี้แสดงให้เห็นว่าโค้ดทำงานแบบไดนามิกตามข้อมูลที่ผู้ใช้ป้อน

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

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

การทดสอบแบบไดนามิกทำอะไร?

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

การทดสอบแบบไดนามิกยังช่วยให้มั่นใจได้ถึงความสม่ำเสมอทั่วทั้งซอฟต์แวร์ ดังตัวอย่างนี้แสดงให้เห็น

ในแอปพลิเคชันธนาคารจะมีหน้าจอหลายหน้า เช่น บัญชีของฉัน การโอนเงิน และอื่นๆ Bill ชำระเงิน ทั้งหมดนี้มีช่องสำหรับกรอกจำนวนเงิน

สมมติว่าช่อง "บัญชีของฉัน" แสดงจำนวนเงินเป็น 25,000 บาท ช่อง "โอนเงิน" แสดงจำนวนเงิน 25,000 บาท และ... Bill หน้าจอการชำระเงินแสดงจำนวนเงิน 25000 ดอลลาร์ จำนวนเงินเท่ากัน แต่รูปแบบการแสดงผลไม่เหมือนกัน ทำให้ซอฟต์แวร์ทำงานไม่สอดคล้องกัน

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

ประเภทของการทดสอบแบบไดนามิก

การทดสอบแบบไดนามิกแบ่งออกเป็นสองประเภท

  • สีขาว Box การทดสอบ
  • สีดำ Box การทดสอบ

แผนภาพด้านล่างแสดงความสัมพันธ์ระหว่างสองหมวดหมู่กับระดับการทดสอบที่อยู่ต่ำกว่า

การทดสอบแบบไดนามิกแบ่งออกเป็นแบบกล่องขาวและแบบกล่องดำ โดยมีระดับการทำงานและระดับที่ไม่เกี่ยวกับการทำงาน

แต่ละประเภทและวัตถุประสงค์การใช้งานมีรายละเอียดดังต่อไปนี้

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

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

การทดสอบแบบกล่องดำนั้นแบ่งออกเป็นสองประเภทอีกครั้ง

  • การทดสอบสมรรถนะ
  • การทดสอบแบบไม่ใช้งาน

การทดสอบสมรรถนะ

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

การทดสอบการทำงานมีหลายระดับ ซึ่งระดับที่สำคัญที่สุดมีสี่ระดับดังต่อไปนี้

  • การทดสอบหน่วย — หน่วย (Unit) คือส่วนของโค้ดขนาดเล็กที่สามารถทดสอบได้ การทดสอบหน่วยจะดำเนินการกับหน่วยซอฟต์แวร์แต่ละหน่วย และดำเนินการโดยนักพัฒนา
  • การทดสอบการผสานรวม — ขั้นตอนนี้ดำเนินการหลังจากทำการทดสอบหน่วยย่อยแล้ว โดยการรวมหน่วยย่อยที่สามารถทดสอบได้แต่ละหน่วยเข้าด้วยกัน ขั้นตอนนี้อาจดำเนินการโดยนักพัฒนาหรือผู้ทดสอบก็ได้
  • การทดสอบระบบ — ดำเนินการเพื่อให้แน่ใจว่าระบบทำงานได้ตามข้อกำหนด โดยทั่วไปจะดำเนินการเมื่อระบบทั้งหมดพร้อมใช้งานแล้ว โดยผู้ทดสอบ หลังจากที่ส่งเวอร์ชันทดสอบให้ทีม QA แล้ว
  • การทดสอบการยอมรับ — ดำเนินการเพื่อตรวจสอบว่าระบบตรงตามข้อกำหนดทางธุรกิจและพร้อมใช้งานหรือติดตั้งหรือไม่ โดยทั่วไปผู้ใช้งานปลายทางจะเป็นผู้ดำเนินการ

การทดสอบแบบไม่ใช้งาน

การทดสอบที่ไม่ใช้งาน การทดสอบแบบไม่เน้นฟังก์ชันการทำงาน (Non-functional testing) เป็นเทคนิคการทดสอบที่ไม่มุ่งเน้นไปที่ด้านฟังก์ชันการทำงาน แต่เน้นไปที่คุณลักษณะที่ไม่เกี่ยวข้องกับฟังก์ชันการทำงานของระบบ เช่น การรั่วไหลของหน่วยความจำ ประสิทธิภาพ หรือความทนทาน การทดสอบแบบไม่เน้นฟังก์ชันการทำงานจะดำเนินการในทุกระดับการทดสอบ

มีเทคนิคการทดสอบที่ไม่เกี่ยวข้องกับการทำงานอยู่มากมาย ซึ่งเทคนิคที่สำคัญที่สุดมี 5 เทคนิคดังต่อไปนี้

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

เทคนิคการทดสอบแบบไดนามิก

เมื่อกำหนดประเภทข้อมูลเรียบร้อยแล้ว คำถามต่อไปคือวิธีการดำเนินการทดสอบแบบไดนามิกในทางปฏิบัติ

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

ภายใน STLC กระบวนการทดสอบแบบไดนามิกที่แท้จริงเริ่มต้นจากการออกแบบกรณีทดสอบ แผนภาพด้านล่างแสดงลำดับของกิจกรรม ซึ่งแต่ละกิจกรรมจะได้รับการอธิบายต่อไป

ขั้นตอนการทดสอบแบบไดนามิก ตั้งแต่การออกแบบการทดสอบ การดำเนินการทดสอบ ไปจนถึงการรายงานข้อบกพร่อง

ก่อนเริ่มกระบวนการ ต้องตกลงกลยุทธ์ที่จะใช้สำหรับการทดสอบแบบไดนามิกก่อน

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

เมื่อกำหนดกลยุทธ์และได้รับการอนุมัติจากฝ่ายบริหารแล้ว กระบวนการออกแบบกรณีทดสอบจริงก็จะเริ่มต้นขึ้น

การออกแบบและการดำเนินการทดสอบ

ในขั้นตอนนี้ ทีมงานได้ระบุสิ่งต่อไปนี้

  • คุณสมบัติที่จะทดสอบ
  • เงื่อนไขการทดสอบที่ได้มาจากคุณลักษณะเหล่านั้น
  • รายการความคุ้มครองที่ได้มาจากเงื่อนไขการทดสอบ
  • กรณีทดสอบที่ได้มาจากรายการความครอบคลุม

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

การตั้งค่าสภาพแวดล้อมการทดสอบ

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

ทดสอบการทำงาน

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

บันทึกรายงานข้อผิดพลาดแล้ว

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

ข้อดีของการทดสอบแบบไดนามิก

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

ข้อเสียของการทดสอบแบบไดนามิก

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

คำถามที่พบบ่อย

นักพัฒนาซอฟต์แวร์รับผิดชอบด้าน "กล่องขาว" โดยทำการตรวจสอบหน่วยและส่วนประกอบต่างๆ ผู้ทดสอบคุณภาพ (QA testers) รับผิดชอบด้าน "กล่องดำ" ตั้งแต่การทดสอบระบบเป็นต้นไป และผู้ใช้งานปลายทางจะเป็นผู้ปิดวงจรด้วยการทดสอบการยอมรับ (acceptance testing)

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

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

กรอบหน่วยต่างๆ เช่น JUnit, TestNG และ pytest รวมถึงตัวรัน UI และ API เช่น Selenium, Cypress และ Postmanโหลดเครื่องมือต่างๆ เช่น JMeter ครอบคลุมด้านที่ไม่ใช้งานของ อัตโนมัติ.

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

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

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

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

สรุปโพสต์นี้ด้วย: