การทดสอบแบบไดนามิกคืออะไร? ประเภท เทคนิค และตัวอย่าง
⚡ สรุปอย่างชาญฉลาด
การทดสอบแบบไดนามิกจะเรียกใช้แอปพลิเคชันและสังเกตพฤติกรรมของโค้ดที่กำลังทำงานอยู่เมื่อได้รับข้อมูลป้อนเข้าจริง ทำให้ผู้ทดสอบสามารถตรวจสอบฟังก์ชันการทำงาน ประสิทธิภาพ และความเสถียร ซึ่งการตรวจสอบเอกสารเพียงอย่างเดียวไม่สามารถเปิดเผยได้
การทดสอบแบบไดนามิกคืออะไร?
การทดสอบแบบไดนามิก การทดสอบแบบไดนามิกเป็นวิธีการทดสอบซอฟต์แวร์ที่ใช้ทดสอบพฤติกรรมแบบไดนามิกของโค้ดซอฟต์แวร์ จุดประสงค์หลักของการทดสอบแบบไดนามิกคือการตรวจสอบพฤติกรรมของซอฟต์แวร์ด้วยตัวแปรแบบไดนามิก ซึ่งเป็นตัวแปรที่ไม่คงที่ และเพื่อค้นหาจุดอ่อนในสภาพแวดล้อมการทำงานของซอฟต์แวร์ โค้ดจะต้องถูกเรียกใช้งานเพื่อทดสอบพฤติกรรมแบบไดนามิก
การทดสอบคือ การตรวจสอบและการตรวจสอบความถูกต้องและจำเป็นต้องมีการทดสอบทั้งสองแบบเพื่อให้การทดสอบสมบูรณ์ การตรวจสอบ (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การเรียกใช้งานแอปพลิเคชันหรือโค้ดนั้นต้องการทรัพยากรจำนวนมาก
- การทำเช่นนั้นจะเพิ่มต้นทุนของโครงการ เพราะไม่ได้เริ่มต้นตั้งแต่ช่วงต้นของวงจรชีวิตซอฟต์แวร์ และปัญหาที่ได้รับการแก้ไขในภายหลังจะมีค่าใช้จ่ายในการซ่อมแซมสูงกว่า
- สภาพแวดล้อมที่เหมือนกับการใช้งานจริงและข้อมูลทดสอบที่สมจริงเป็นสิ่งจำเป็น และทั้งสองอย่างนี้ต้องใช้ความพยายามในการสร้างและบำรุงรักษา


