สายรัดทดสอบคืออะไร? (ตัวอย่าง)
⚡ สรุปอย่างชาญฉลาด
Test Harness ในการทดสอบซอฟต์แวร์เป็นการรวมเอาส่วนประกอบจำลอง (stubs), ตัวขับเคลื่อน (drivers), ข้อมูลทดสอบ และเครื่องมือการดำเนินการเข้าด้วยกัน เพื่อให้ทีมสามารถตรวจสอบความถูกต้องของโมดูลก่อนที่ส่วนประกอบที่จำเป็นทั้งหมดจะเกิดขึ้น เปลี่ยนวงจรการทดสอบที่ติดขัดให้เป็นการตรวจสอบอัตโนมัติที่ทำซ้ำได้ ซึ่งรายงานผลลัพธ์โดยไม่ต้องใช้ความพยายามด้วยตนเอง

ชุดทดสอบในการทดสอบซอฟต์แวร์
ชุดทดสอบในการทดสอบซอฟต์แวร์ คือชุดของสตับ ไดรเวอร์ และเครื่องมือสนับสนุนอื่นๆ ที่จำเป็นในการดำเนินการทดสอบโดยอัตโนมัติ ชุดทดสอบดำเนินการทดสอบโดยใช้ไลบรารีทดสอบและสร้างรายงานการทดสอบ ชุดทดสอบประกอบด้วยข้อมูลทั้งหมดที่จำเป็นในการรวบรวมและรันการทดสอบ เช่น กรณีทดสอบ พอร์ตการปรับใช้เป้าหมาย (TDP) ไฟล์ต้นฉบับที่อยู่ระหว่างการทดสอบ ต้นขั้ว ฯลฯ
กล่าวโดยสรุป ชุดควบคุม (harness) คืออุปกรณ์ที่ห่อหุ้มส่วนประกอบที่คุณต้องการตรวจสอบไว้ภายในสภาพแวดล้อมที่ควบคุมได้ โมดูลข้างเคียงที่ขาดหายไปจะถูกแทนที่ด้วยโปรแกรมจำลองขนาดเล็ก ข้อมูลนำเข้ามาจากชุดข้อมูลคงที่ และผลลัพธ์ทุกอย่างจะถูกบันทึกไว้ในล็อกแทนที่จะอ่านจากหน้าจอ ส่วนต่อไปนี้จะอธิบายว่าทำไมทีมจึงสร้างชุดควบคุมนี้ขึ้นมา มันประกอบด้วยอะไรบ้าง ทำงานอย่างไร และเหมาะสมกับการใช้งานในที่ใด
เหตุใดจึงต้องใช้ชุดทดสอบ?
อุปกรณ์ดังกล่าวมีไว้เพื่อลดระยะเวลารอคอยในระหว่างรอบการทดสอบ เนื่องจากมันจำลองสิ่งที่ไม่พร้อมใช้งาน การทดสอบซอฟต์แวร์ ทีมสามารถเริ่มตรวจสอบพฤติกรรมได้ตั้งแต่สปรินต์แรก แทนที่จะรอจนถึงการรวมระบบขั้นสุดท้าย แผนภาพด้านล่างแสดงตำแหน่งของเครื่องมือตรวจสอบระหว่างสคริปต์ทดสอบและแอปพลิเคชันที่กำลังทดสอบ
- ทำให้กระบวนการทดสอบเป็นแบบอัตโนมัติ
- ดำเนินการชุดทดสอบของกรณีทดสอบ
- สร้างรายงานการทดสอบที่เกี่ยวข้อง
- รองรับการดีบัก
- เพื่อบันทึกผลการทดสอบสำหรับการทดสอบแต่ละครั้ง
- ช่วยให้นักพัฒนาวัดการครอบคลุมโค้ดในระดับโค้ด
- เพิ่มผลผลิตของระบบผ่านระบบอัตโนมัติ
- ปรับปรุงคุณภาพของส่วนประกอบซอฟต์แวร์และแอปพลิเคชัน
- เพื่อจัดการกับเงื่อนไขที่ซับซ้อนที่นักทดสอบพบว่ายากที่จะจำลอง
ผลประโยชน์เหล่านี้มีความสำคัญมากที่สุดในรอบการปล่อยเวอร์ชันสั้นๆ เมื่อมีการปล่อยโค้ดหลายครั้งต่อสัปดาห์ ข้อบกพร่องที่หลงเหลืออยู่จนถึงขั้นตอนการรวมระบบจะก่อให้เกิดต้นทุนที่สูงกว่ามาก tracยิ่งกว่านั้น ยังคุ้มค่าที่จะนำไปแลกกับอะไรบางอย่างในวันที่เขียนขึ้นมา อย่างไรก็ตาม ผลตอบแทนนั้นจะมาถึงก็ต่อเมื่อประกอบสายรัดจากชิ้นส่วนที่ถูกต้องแล้วเท่านั้น
ส่วนประกอบสำคัญของชุดสายไฟทดสอบ
ชุดอุปกรณ์ควบคุมไม่ได้เป็นเพียงโปรแกรมเดียว แต่เป็นการประกอบชิ้นส่วนต่างๆ เข้าด้วยกัน โดยแต่ละชิ้นส่วนจะช่วยขจัดอุปสรรคที่อาจทำให้การทดสอบไม่สามารถดำเนินการได้โดยอัตโนมัติ
- สคริปต์ทดสอบ: คำแนะนำอัตโนมัติที่ระบุขั้นตอนการดำเนินการและผลลัพธ์ที่คาดหวัง เขียนตาม สคริปต์ทดสอบ อนุสัญญา.
- เครื่องมือประมวลผลการทดสอบ: ตัวรันเนอร์ที่อ่านสคริปต์ตามลำดับ แก้ไขความสัมพันธ์ระหว่างสคริปต์ และเริ่มการประมวลผลแบบเรียงลำดับหรือแบบขนาน
- คลังข้อมูลทดสอบ: ค่าอินพุตที่จัดเก็บไว้ภายนอกสคริปต์ในรูปแบบ CSV, JSON, XML หรือฐานข้อมูลที่มีการกำหนดค่าเริ่มต้นไว้แล้ว ซึ่งมักจะถูกเติมโดย ทดสอบเครื่องมือสร้างข้อมูล.
- ไดรเวอร์: โมดูลจำลองที่เรียกใช้งานคอมโพเนนต์ที่กำลังทดสอบ เมื่อเลเยอร์บนสุดที่แท้จริง เช่น ส่วนติดต่อผู้ใช้ ยังไม่เสร็จสมบูรณ์
- ตั๋ว: โมดูลจำลองจะส่งคืนคำตอบสำเร็จรูป เช่น บริการชำระเงินจะตอบกลับว่า “ชำระเงินสำเร็จ” โดยไม่ต้องติดต่อธนาคาร
- ตัวตรวจสอบผลลัพธ์: ตรรกะการยืนยันที่เปรียบเทียบผลลัพธ์ที่ได้จริงกับค่าที่คาดหวัง และระบุผลว่าผ่านหรือไม่ผ่านในแต่ละกรณี
- ชั้นการบันทึกและรายงาน: เวลาที่บันทึก, ภาพหน้าจอ, ข้อมูลจากคอนโซล และสรุปการทำงานที่แสดงรายละเอียดความล้มเหลวทุกครั้ง tracสามารถอ่านได้ในภายหลัง
หากถอดชิ้นส่วนใดชิ้นส่วนหนึ่งออก สายไฟก็จะหยุดทำงานโดยอัตโนมัติ เพราะจะต้องมีการป้อนชิ้นส่วนด้วยมือทุกครั้งที่ใช้งาน
ชุดทดสอบทำงานอย่างไร?
สายรัดจะวนซ้ำแบบเดิมทุกครั้งที่ใช้งาน การรู้ลูปนั้นจะบอกคุณได้อย่างแม่นยำว่าตำแหน่งของคุณเองอยู่ตรงไหน การทดสอบอัตโนมัติ ตรวจสอบการเชื่อมต่อของสินทรัพย์ และขั้นตอนใดที่ล้มเหลวเมื่อการทำงานเปลี่ยนเป็นสีแดง
- เตรียมสภาพแวดล้อม: ระบบควบคุมจะแก้ไขการกำหนดค่าสภาพแวดล้อม เปิดการเชื่อมต่อ และโหลดอุปกรณ์ต่างๆ เพื่อให้การทำงานทุกครั้งเริ่มต้นจากสถานะที่ทราบแล้วเหมือนกัน
- โหลดสคริปต์ทดสอบ: สคริปต์ พารามิเตอร์ และผลลัพธ์ที่คาดหวังจะถูกอ่านจากที่เก็บข้อมูล ไม่มีการป้อนค่าใดๆ ในระหว่างการรัน ซึ่งทำให้การรันครั้งที่สองสามารถเปรียบเทียบได้กับครั้งแรก
- แทนที่โมดูลที่หายไป: คนขับรถจะทำหน้าที่แทนผู้โทรที่ยังไม่มีอยู่จริง และหมายเลขโทรศัพท์สำรองจะทำหน้าที่แทนบริการที่ยังไม่เสร็จสมบูรณ์ ไม่เสถียร หรือมีค่าใช้จ่ายในการเรียกใช้สูง
- เรียกใช้งานแอปพลิเคชันที่กำลังทดสอบ: กลไกการประมวลผลจะเริ่มกระบวนการทำงานตามที่อธิบายไว้ในสคริปต์ ไม่ว่าจะเป็นการเรียกใช้เมธอดหรือ... API คำขอ หรือการโต้ตอบกับเบราว์เซอร์
- บันทึกผลลัพธ์ที่ได้จริง: ค่าที่ส่งกลับ ข้อมูลการตอบกลับ แถวในฐานข้อมูล บรรทัดบันทึก และสถานะหน้าจอ จะถูกบันทึกไว้ทั้งหมดในขณะที่ถูกสร้างขึ้น
- เปรียบเทียบกับผลลัพธ์ที่คาดหวัง: ตัวตรวจสอบผลลัพธ์จะตรวจสอบค่าที่บันทึกไว้แต่ละค่า หากพบความไม่ตรงกัน จะถือว่ากรณีนั้นล้มเหลวและบันทึกทั้งค่าที่คาดหวังและค่าที่สังเกตได้
- บันทึกและรายงาน: สายรัดจะบันทึกเวลาไว้ trace ของการทำงานและสร้างรายงานผลผ่าน/ไม่ผ่านที่นักพัฒนาสามารถอ่านได้โดยไม่ต้องทำการทดสอบซ้ำ
- รื้อถอน: ข้อมูลชั่วคราว การเชื่อมต่อ และสถานะชั่วคราวจะถูกล้างออก เพื่อไม่ให้กรณีถัดไปได้รับข้อมูลที่ตกค้างจากกรณีนี้
💡 เคล็ดลับ: อัปเดตข้อมูลจำลองของคุณทุกครั้งที่โมดูลจริงมีการเปลี่ยนแปลง ข้อมูลจำลองที่ยังคงตอบกลับด้วยรูปแบบของไตรมาสที่แล้วจะรายงานว่าการทำงานเป็นสีเขียว ในขณะที่การผสานรวมในระบบจริงนั้นใช้งานไม่ได้แล้ว
ตัวอย่างการใช้งานจะทำให้เข้าใจลูปได้ชัดเจนยิ่งขึ้น สมมติว่าหน้าชำระเงินพร้อมแล้ว แต่เกตเวย์การชำระเงินยังไม่พร้อม ตัวขับ (driver) ส่งคำขอไปยังอินเทอร์เฟซที่ควรจะส่งตามปกติ ตัวประมวลผล (stub) ตอบกลับมาครั้งแรกด้วยข้อความ "ชำระเงินสำเร็จ" จากนั้นจึงตอบกลับด้วยข้อความหมดเวลา และตัวตรวจสอบ (validator) ยืนยันคำสั่งซื้อในกรณีหนึ่ง และแจ้งให้ลองใหม่ในอีกกรณีหนึ่ง ทั้งสองเส้นทางจะได้รับการตรวจสอบก่อนที่ทีมเกตเวย์จะเขียนโค้ดแม้แต่บรรทัดเดียว
มีสองบริบทที่ใช้ Test Harness
กลไกเดียวกันนี้มีจุดประสงค์ที่แตกต่างกันสองอย่าง และคำศัพท์จะเปลี่ยนแปลงเล็กน้อยขึ้นอยู่กับว่าคุณกำลังอยู่ในกลไกใด
- การทดสอบอัตโนมัติ: มันมี สคริปต์ทดสอบพารามิเตอร์ที่จำเป็นในการเรียกใช้สคริปต์เหล่านี้และรวบรวมผลลัพธ์เพื่อวิเคราะห์
- การทดสอบบูรณาการ: ใช้เพื่อรวบรวมโค้ดหรือโมดูลสองหน่วยที่โต้ตอบกันเพื่อตรวจสอบว่าพฤติกรรมที่รวมกันเป็นไปตามที่คาดหวังหรือไม่
ลองพิจารณาโมดูลการเข้าสู่ระบบและโมดูลโปรไฟล์ที่ต้องแลกเปลี่ยนโทเค็นผู้ใช้ ในบริบทของการบูรณาการ ไดรเวอร์จะจำลองการเข้าสู่ระบบที่สำเร็จและส่งโทเค็นไปยังตรรกะโปรไฟล์ ดังนั้นแผนที่ข้อมูลจึง...pingการตรวจสอบสิทธิ์และการแสดงผลหน้าจอสามารถตรวจสอบได้ทั้งหมดก่อนที่บริการยืนยันตัวตนจริงจะเสร็จสิ้น ในบริบทของการทำงานอัตโนมัติ กรณีทั้งสองนั้นจะถูกเพิ่มเข้าไปในชุดทดสอบและเรียกใช้งานซ้ำในทุกๆ การสร้างโดยไม่ต้องมีใครเข้าไปแก้ไขอีก
ประเภทของชุดสายไฟทดสอบ
เนื่องจากซอฟต์แวร์ถูกสร้างขึ้นเป็นชั้นๆ ดังนั้นชุดตรวจสอบจึงมักถูกออกแบบมาให้เหมาะสมกับชั้นที่มันตรวจสอบ โดยมีอยู่ 4 ประเภทที่ครอบคลุมเกือบทุกโครงการ
A ชุดทดสอบหน่วย การทดสอบนี้ใช้โค้ดขนาดเล็กที่สุด เช่น ฟังก์ชันหรือเมธอดเดียว โดยแทนที่ส่วนประกอบที่จำเป็นทั้งหมดด้วยโค้ดจำลอง วิธีนี้ทำงานได้เร็วที่สุดและบำรุงรักษาง่ายที่สุด ซึ่งเป็นเหตุผลว่าทำไม การทดสอบหน่วย ชุดโปรแกรมมักเป็นเครื่องมือแรกที่ทีมสร้างขึ้น การทดสอบการคำนวณภาษีโดยไม่ต้องแตะต้องโมดูลการเรียกเก็บเงินเป็นตัวอย่างการใช้งานทั่วไป
An ชุดทดสอบการบูรณาการ ตรวจสอบว่าโมดูลสองโมดูลขึ้นไปทำงานร่วมกันได้อย่างถูกต้อง และเป็นชั้นที่ความไม่ตรงกันของข้อมูลและการเรียกใช้งานที่ล้มเหลวปรากฏขึ้น เป็นส่วนประกอบที่อธิบายไว้ใน การทดสอบการรวม ตัวอย่างเช่น ในบริบทข้างต้น การตรวจสอบว่าบริการสั่งซื้อส่งข้อมูลที่ถูกต้องไปยังบริการชำระเงินหรือไม่
A ชุดทดสอบระบบ ขับเคลื่อนกระบวนการทำงานแบบครบวงจรตั้งแต่ต้นจนจบ ทั้งในส่วนของอินเทอร์เฟซ บริการ และฐานข้อมูล ดังนั้น การทดสอบระบบ สามารถยืนยันได้ว่ากฎทางธุรกิจยังคงใช้ได้เมื่อทุกเลเยอร์ปรากฏอยู่ A ชุดทดสอบการถดถอย จากนั้นจะทำการรันชุดคำสั่งที่สะสมไว้ซ้ำอีกครั้งหลังจากการเปลี่ยนแปลงแต่ละครั้ง ซึ่งเป็นสิ่งที่ทำให้... การทดสอบการถดถอย มีประโยชน์เมื่อต้องทำซ้ำสถานการณ์หลายร้อยครั้งในทุกการรวมข้อมูล
เครื่องมือทดสอบสายรัด
แต่ละประเภทเหล่านั้นมักสร้างขึ้นบนเครื่องมือที่มีอยู่แล้วมากกว่าที่จะสร้างขึ้นใหม่ทั้งหมด ตัวเลือกคลาสสิกสองอย่างยังคงเป็นเฟรมเวิร์กในระดับหน่วย:
- จูนิต: เครื่องมือที่ใช้ขณะใช้งาน Java
- นู๋: เครื่องมือที่ใช้ในการใช้ .เฟรมเวิร์ก.เน็ต
นอกเหนือจากสองส่วนนั้นแล้ว ทีมส่วนใหญ่ยังเพิ่มเครื่องมือที่ช่วยขยายขีดความสามารถในการรักษาความปลอดภัยไปยังเบราว์เซอร์ เลเยอร์ API หรือโปรไฟล์การโหลด ตารางด้านล่างแสดงความสัมพันธ์ระหว่างตัวเลือกทั่วไปกับบทบาทของแต่ละตัวเลือก
| เครื่องมือ | เหมาะที่สุดสำหรับ | บทบาทภายในสายรัด |
|---|---|---|
| JUnit | Java ชุดหน่วยและการบูรณาการ | จัดหาไดรเวอร์ อุปกรณ์ติดตั้ง และข้อกำหนดต่างๆ |
| หน่วย | โค้ด C# และ VB.NET บนแพลตฟอร์ม .NET | บทบาทเดียวกันกับ JUnit สำหรับภาษา .NET |
| Selenium | กระบวนการทำงานแบบครบวงจรบนเว็บเบราว์เซอร์ | ทำหน้าที่เป็นตัวขับเคลื่อนสำหรับเลเยอร์ส่วนติดต่อผู้ใช้ |
| TestNG | ใหญ่ Java ห้องสวีทที่ต้องการกลุ่มping และการทำงานแบบขนาน | ทำหน้าที่เป็นเครื่องมือสำหรับดำเนินการทดสอบ |
| ไพเทส | Python บริการและการตรวจสอบระดับ API | อุปกรณ์ต่างๆ ทำหน้าที่เป็นทั้งตัวเชื่อมต่อและผู้ให้บริการข้อมูล |
| Apache JMeter | สถานการณ์การรับน้ำหนัก ความเครียด และประสิทธิภาพ | สร้างปริมาณการรับส่งข้อมูลจำลองต่อแอปพลิเคชันที่กำลังทดสอบ |
| Postman | REST API contracการตรวจสอบ t | มีเซิร์ฟเวอร์จำลองที่ใช้แทนปลายทางที่ยังสร้างไม่เสร็จ |
ไม่ว่าคุณจะเลือกการต่อแบบใดก็ตาม สายไฟจะคุ้มค่าก็ต่อเมื่อใช้งานโดยไม่ต้องมีคนดูแล ดังนั้นควรต่อสายเข้ากับอุปกรณ์ให้เรียบร้อย บูรณาการอย่างต่อเนื่อง เริ่มงานแต่เนิ่นๆ มีตัวเลือกอื่นๆ อีกมากมายที่ระบุไว้ในรายการ Guru99 เครื่องมือทดสอบ โดยสรุปแล้ว ยังมีข้อสงสัยหนึ่งที่ยังคงสร้างความสับสนอยู่ และควรทำความเข้าใจให้ชัดเจนก่อนที่จะเลือกสิ่งใด
ชุดทดสอบเทียบกับกรอบการทดสอบ
หลายคนมักมองว่า Harness และ Automation Framework เป็นสิ่งเดียวกัน แต่จริงๆ แล้วมันตอบคำถามที่แตกต่างกัน: Harness คือสิ่งที่ใช้ในการประมวลผลการทดสอบ ในขณะที่ Framework คือโครงสร้างที่ใช้ในการออกแบบการทดสอบ ตารางด้านล่างแสดงการเปรียบเทียบระหว่างทั้งสองอย่าง
| ทดสอบสายรัด | ทดสอบกรอบการทำงานอัตโนมัติ |
|---|---|
| ชุดทดสอบประกอบด้วยไดรเวอร์และสตับ ซึ่งเป็นโปรแกรมจำลองขนาดเล็กที่โต้ตอบกับซอฟต์แวร์ที่กำลังทดสอบ | มันคือชุดของกระบวนการ ขั้นตอน และเกณฑ์ต่างๆtracแนวคิดและสภาพแวดล้อมที่ออกแบบและนำการทดสอบอัตโนมัติไปใช้ |
| คุณไม่สามารถ "บันทึกและเล่น" สคริปต์ใน Test Harness | ผู้ทดสอบสามารถ "บันทึกและเล่น" สคริปต์ในเฟรมเวิร์กนี้ได้ด้วยตนเอง |
| ชุดทดสอบประกอบด้วยข้อมูลทั้งหมดที่จำเป็นในการรวบรวมและรันการทดสอบ เช่น กรณีทดสอบ พอร์ตการปรับใช้เป้าหมาย (TDP) ไฟล์ต้นฉบับที่อยู่ระหว่างการทดสอบ ต้นขั้ว ฯลฯ | เฟรมเวิร์กการทดสอบอัตโนมัติประกอบด้วยข้อมูล เช่น ไลบรารีการทดสอบ เครื่องมือทดสอบ แนวทางปฏิบัติในการทดสอบอัตโนมัติ แพลตฟอร์มการทดสอบ ฯลฯ |
| สายรัดทดสอบแบ่งออกเป็น การทดสอบระบบอัตโนมัติ การทดสอบการผสานรวม |
กรอบการทำงานอัตโนมัติ ตัวอย่าง การทดสอบที่ขับเคลื่อนด้วยข้อมูล การทดสอบที่ขับเคลื่อนด้วยคำหลัก การทดสอบแบบโมดูลาร์ การทดสอบไฮบริด การทดสอบตามแบบจำลอง Code การทดสอบที่ขับเคลื่อน การทดสอบที่ขับเคลื่อนด้วยพฤติกรรม |

