การทดสอบตามแบบจำลองคืออะไร?
⚡ สรุปอย่างชาญฉลาด
การทดสอบแบบจำลอง (Model Based Testing) ตรวจสอบพฤติกรรมการทำงานของซอฟต์แวร์เทียบกับการคาดการณ์ที่ทำโดยแบบจำลองเชิงสัมบูรณ์tracสร้างแบบจำลองของระบบ โดยสร้างกรณีทดสอบโดยอัตโนมัติจากเครื่องสถานะจำกัด แผนภูมิสถานะ หรือสัญลักษณ์ UML แทนที่จะทำด้วยมือ
การทดสอบตามแบบจำลองคืออะไร?
การทดสอบตามแบบจำลอง การทดสอบแบบจำลอง (Model-Based Testing: PSA) เป็นเทคนิคการทดสอบซอฟต์แวร์ที่ใช้ตรวจสอบพฤติกรรมการทำงานของซอฟต์แวร์ที่กำลังทดสอบเทียบกับผลการคาดการณ์จากแบบจำลอง แบบจำลองคือคำอธิบายพฤติกรรมของระบบ โดยแสดงในรูปของลำดับการป้อนข้อมูล การกระทำ เงื่อนไข ผลลัพธ์ และการไหลของข้อมูลจากอินพุตไปยังเอาต์พุต แบบจำลองที่ใช้งานได้ต้องเข้าใจได้ง่าย นำกลับมาใช้ใหม่ได้ และแบ่งปันได้ และต้องอธิบายระบบที่กำลังทดสอบได้อย่างแม่นยำ
มีแบบจำลองมากมายให้เลือกใช้ และแต่ละแบบจะอธิบายลักษณะการทำงานของระบบในแง่มุมที่แตกต่างกัน ตัวอย่างที่พบได้ทั่วไป ได้แก่:
- การไหลของข้อมูล
- การควบคุมการไหล
- กราฟความสัมพันธ์
- ตารางการตัดสินใจ
- เครื่องเปลี่ยนสถานะ
การทดสอบโดยใช้แบบจำลอง (Model Based Testing) อธิบายถึงพฤติกรรมของระบบเมื่อตอบสนองต่อการกระทำที่กำหนดโดยแบบจำลอง โดยป้อนการกระทำเข้าไป แล้วตรวจสอบว่าระบบตอบสนองตามที่แบบจำลองคาดการณ์ไว้หรือไม่ หากพบความแตกต่างระหว่างสองสิ่งนี้ แสดงว่าเป็นข้อบกพร่องในซอฟต์แวร์หรือข้อผิดพลาดในแบบจำลอง และทั้งสองอย่างล้วนควรค่าแก่การค้นหา
เป็นวิธีการตรวจสอบความถูกต้องของระบบที่เป็นทางการและมีน้ำหนักเบา และสามารถนำไปใช้กับการทดสอบฮาร์ดแวร์ได้ง่ายพอๆ กับการทดสอบซอฟต์แวร์ เนื่องจากผลการทดสอบมาจากข้อกำหนดด้านพฤติกรรมมากกว่าจากโค้ด เทคนิคนี้จึงเหมาะสมกับ... การทดสอบกล่องดำ ครอบครัวของ เทคนิคการทดสอบซอฟต์แวร์.
ตัวอย่างการทดสอบตามแบบจำลอง
วิธีที่ง่ายที่สุดในการอ่านแบบจำลองพฤติกรรมคือการลองทำตามขั้นตอน แผนภาพด้านล่างแสดงแบบจำลองงานแก้ไขข้อความขนาดเล็ก โดยแต่ละช่องแสดงถึงสถานะที่แอปพลิเคชันสามารถอยู่ในได้ และแต่ละลูกศรแสดงถึงการกระทำที่ผู้ใช้สามารถทำได้
แบบจำลองนี้อธิบายวิธีการเขียนบทกวีใน Notepad อย่างง่ายๆ และการกระทำที่เป็นไปได้ที่เกี่ยวข้องกับแต่ละขั้นตอน สำหรับทุกการกระทำ เช่น การเปิดแอปพลิเคชัน การป้อนบทกวี หรือการบันทึกไฟล์ จะมี... กรณีทดสอบ สามารถสร้างและตรวจสอบผลลัพธ์ได้ การเดินตามเส้นทางที่แตกต่างกันในแผนภาพเดียวกัน เช่น การเริ่มต้นและปิดโดยไม่บันทึก จะสร้างกรณีทดสอบที่แตกต่างกันโดยไม่มีค่าใช้จ่ายในการออกแบบเพิ่มเติม ซึ่งเป็นเหตุผลทางเศรษฐกิจสำหรับเทคนิคทั้งหมดนี้
ประเภทของ MBT
มีเฟรมเวิร์กการทดสอบแบบจำลองอยู่สองประเภท และความแตกต่างระหว่างทั้งสองประเภทนั้นอยู่ที่ช่วงเวลาที่สร้างขั้นตอนการทดสอบ:
- ออฟไลน์ / โดยหลักการ: การสร้างชุดทดสอบก่อนดำเนินการ ชุดทดสอบคือกลุ่มของกรณีทดสอบ และในโหมดนี้ ชุดทดสอบจะถูกจัดเก็บ ตรวจสอบ และเรียกใช้งานซ้ำเหมือนกับชุดทดสอบอื่นๆ การทดสอบอัตโนมัติ สินทรัพย์
- ออนไลน์ / ทันที: การสร้างชุดทดสอบระหว่างการดำเนินการทดสอบ โดยขั้นตอนต่อไปจะถูกเลือกตามการตอบสนองของระบบต่อขั้นตอนก่อนหน้า
การสร้างแบบออฟไลน์เหมาะสำหรับสภาพแวดล้อมที่มีการควบคุมซึ่งต้องการชุดข้อมูลที่ตรวจสอบได้และทำซ้ำได้ ในขณะที่การสร้างแบบออนไลน์เหมาะสำหรับเซสชันการสำรวจระยะยาวกับระบบที่มีสถานะ เนื่องจากตัวสร้างสามารถตอบสนองต่อการตอบสนองจริงแทนที่จะเป็นการตอบสนองที่คาดการณ์ไว้
การทดสอบแบบจำลองทำงานอย่างไร
ไม่ว่าจะใช้เฟรมเวิร์กใด เทคนิคนี้จะดำเนินไปตามขั้นตอนห้าขั้นตอนเหมือนกัน แต่ละขั้นตอนจะสร้างผลลัพธ์ที่ขั้นตอนถัดไปจะนำไปใช้ ซึ่งเป็นเหตุผลว่าทำไมโมเดลจึงกลายเป็นสิ่งที่ทีมดูแลรักษา ไม่ใช่สคริปต์ทดสอบ
- ขั้นตอนที่ 1: สร้างแบบจำลอง แปลข้อกำหนดหรือรายละเอียดให้เป็นนามธรรมtracแบบจำลองพฤติกรรมที่คาดหวัง โดยกำหนดสถานะ การเปลี่ยนผ่านระหว่างสถานะ และปัจจัยนำเข้าที่กระตุ้นให้เกิดการเปลี่ยนผ่านแต่ละครั้ง
- ขั้นตอนที่ 2: เลือกเกณฑ์การคัดเลือกการทดสอบ เกณฑ์ต่างๆ จะบอกให้ตัวสร้างหยุดเมื่อใด เกณฑ์ที่ใช้กันทั่วไป ได้แก่ การครอบคลุมทุกสถานะ ซึ่งจะเยี่ยมชมทุกสถานะอย่างน้อยหนึ่งครั้ง การครอบคลุมทุกการเปลี่ยนผ่าน ซึ่งจะทดสอบลูกศรทุกตัวอย่างน้อยหนึ่งครั้ง และการครอบคลุมเส้นทางหรือการไหลของข้อมูลสำหรับการสำรวจที่ลึกยิ่งขึ้น
- ขั้นตอนที่ 3: สร้างกล้ามเนื้อหน้าท้องtracกรณีทดสอบ t เครื่องมือนี้จะเดินตามแบบจำลองและปล่อยลำดับของค่าสัมประสิทธิ์การหักลบออกมาtracขั้นตอน t ขั้นตอนที่ตรงตามเกณฑ์ที่เลือกไว้ พร้อมทั้งผลลัพธ์ที่คาดหวังในแต่ละขั้นตอน
- ขั้นตอนที่ 4: ทำให้กล้ามเนื้อหน้าท้องเป็นรูปธรรมtracการทดสอบ t เลเยอร์อะแดปเตอร์จะแมปค่า abs แต่ละค่าtracเพื่อก้าวไปสู่การกระทำที่เป็นรูปธรรมต่อระบบ เช่น การโต้ตอบกับส่วนติดต่อผู้ใช้ (UI) API การโทรหรือข้อความโปรโตคอล แผนที่นี้ping เขียนเพียงครั้งเดียวและนำกลับมาใช้ซ้ำในทุกการทดสอบที่สร้างขึ้น
- ขั้นตอนที่ 5: ดำเนินการและกำหนดคำตัดสิน การทดสอบที่เป็นรูปธรรมจะดำเนินการกับระบบที่กำลังทดสอบ โดยแต่ละการตอบสนองที่สังเกตได้จะถูกเปรียบเทียบกับการทำนายของแบบจำลอง และจะมีการบันทึกผลว่าผ่านหรือไม่ผ่าน tracย้อนกลับไปยังองค์ประกอบโมเดลที่สร้างมันขึ้นมา
การขอ tracความสามารถที่สร้างขึ้นในขั้นตอนที่ 5 คือผลตอบแทนที่เป็นรูปธรรม เมื่อข้อกำหนดเปลี่ยนแปลง โมเดลก็จะเปลี่ยนแปลง และการทดสอบที่ได้รับผลกระทบจะถูกสร้างขึ้นใหม่แทนที่จะเขียนใหม่ ซึ่งเป็นเหตุผลว่าทำไมทีมจึงทำการทดสอบบ่อยครั้ง การทดสอบการถดถอย เมื่อเทียบกับข้อกำหนดที่คงที่แล้วจะได้ประโยชน์สูงสุด
รุ่นต่างๆในการทดสอบ
เพื่อให้เข้าใจ MBT ได้อย่างถ่องแท้ จำเป็นต้องเข้าใจแบบจำลองบางส่วนที่อธิบายไว้ด้านล่าง แต่ละแบบจำลองจะแลกเปลี่ยนพลังในการแสดงออกกับความพยายาม ดังนั้นการเลือกใช้จึงขึ้นอยู่กับว่าพฤติกรรมที่กำลังทดสอบนั้นซับซ้อนเพียงใด
เครื่อง จำกัด สถานะ
โมเดลนี้ช่วยให้ผู้ทดสอบประเมินผลลัพธ์ได้โดยขึ้นอยู่กับอินพุตที่เลือก การผสมผสานอินพุตต่างๆ สามารถส่งผลให้ระบบอยู่ในสถานะที่แตกต่างกันได้
ระบบจะมีสถานะเฉพาะและสถานะปัจจุบัน ซึ่งถูกควบคุมโดยชุดข้อมูลป้อนเข้าที่ผู้ทดสอบป้อนเข้ามา
ลองพิจารณาตัวอย่างด้านล่างนี้ ระบบอนุญาตให้พนักงานล็อกอินเข้าสู่แอปพลิเคชัน สถานะปัจจุบันของพนักงานคือ “ออก” และจะเปลี่ยนเป็น “เข้า” เมื่อพนักงานล็อกอินเข้าสู่ระบบแล้ว ในสถานะ “เข้า” พนักงานสามารถดู พิมพ์ และสแกนเอกสารในระบบได้
แผนภาพแสดงสถานะของตัวอย่างนั้นแสดงไว้ที่นี่ โดยแต่ละลูกศรจะมีป้ายกำกับระบุอินพุตที่ทำให้เกิดการเปลี่ยนแปลง
แผนภูมิรัฐ
แผนผังสถานะ (Statechart) เป็นส่วนขยายของเครื่องสถานะจำกัด (Finite State Machine) และสามารถใช้กับระบบที่ซับซ้อนและระบบเรียลไทม์ได้ แผนผังสถานะอธิบายพฤติกรรมต่างๆ ของระบบ มีจำนวนสถานะที่แน่นอน และพฤติกรรมของระบบจะถูกวิเคราะห์และแสดงในรูปของเหตุการณ์สำหรับแต่ละสถานะ ส่วนขยายที่สำคัญในทางปฏิบัติคือลำดับชั้น: แผนผังสถานะอนุญาตให้มีสถานะซ้อนกันและสถานะขนานกันได้ ดังนั้นเครื่องที่ต้องใช้สถานะแบบราบหลายสิบสถานะจึงสามารถวาดได้อย่างกะทัดรัด
ตัวอย่างเช่น ข้อบกพร่องจะถูกแจ้งในเครื่องมือจัดการข้อบกพร่องด้วยสถานะ "ใหม่" เมื่อนักพัฒนาแก้ไขข้อบกพร่องแล้ว สถานะจะต้องเปลี่ยนเป็น "แก้ไขแล้ว" หากข้อบกพร่องยังไม่ได้รับการแก้ไข สถานะจะเปลี่ยนเป็น "เปิดใหม่" แผนผังสถานะควรได้รับการออกแบบให้มีการเรียกใช้เหตุการณ์สำหรับแต่ละสถานะ
แผนภาพแสดงวงจรชีวิตของข้อบกพร่องนั้นแสดงอยู่ด้านล่าง โดยแต่ละสถานะจะแสดงเป็นขั้น และแต่ละขั้นตอนการทำงานจะแสดงเป็นเหตุการณ์ที่ทำให้ข้อบกพร่องเปลี่ยนสถานะไปมาระหว่างกัน
ภาษาการสร้างแบบจำลองรวม (UML)
ภาษาการสร้างแบบจำลองรวม (UML) UML เป็นภาษาสร้างแบบจำลองมาตรฐานอเนกประสงค์ UML ประกอบด้วยชุดเทคนิคการเขียนสัญลักษณ์กราฟิกที่ใช้ในการสร้างแบบจำลองภาพที่สามารถอธิบายพฤติกรรมของระบบที่ซับซ้อนมากได้
UML มีสัญลักษณ์เช่น:
- กิจกรรม
- นักแสดง
- กระบวนการทางธุรกิจ
- ชิ้นส่วน
- ภาษาโปรแกรม
แผนภาพกิจกรรมและแผนภาพสถานะเครื่องจักรเป็นแผนภาพที่ผู้สร้างแบบทดสอบอ่านบ่อยที่สุด ดังที่แบบจำลอง UML ตัวอย่างด้านล่างแสดงให้เห็น
เครื่องมือทดสอบตามแบบจำลอง
แบบจำลองบนกระดาษเพียงอย่างเดียวไม่สามารถสร้างอะไรได้ด้วยตัวเอง จำเป็นต้องมีเครื่องมือสร้าง (generator) เพื่อตรวจสอบแบบจำลองและสร้างเส้นทางการทดสอบ ซึ่งตลาดเครื่องมือนี้แบ่งออกเป็นเครื่องมือสร้างแบบโอเพนซอร์สและแพลตฟอร์มออกแบบการทดสอบเชิงพาณิชย์
- กราฟวอล์คเกอร์ — เครื่องมือโอเพนซอร์สที่อ่านโมเดลที่มีรูปร่างเป็นกราฟแบบมีทิศทาง และสร้างเส้นทางการทดสอบจากโมเดลเหล่านั้น โดยมีตัวสร้างและเงื่อนไขการหยุดที่เลือกได้
- เอฟเอ็มบีที — ชุดเครื่องมือทดสอบแบบจำลองโอเพนซอร์สจาก Intel ที่รองรับการสร้างและดำเนินการทดสอบกับแบบจำลองสถานะ
- คอนฟอร์มิก — ผลิตภัณฑ์เชิงพาณิชย์สำหรับการออกแบบการทดสอบอัตโนมัติ ซึ่งสร้างกรณีทดสอบและสคริปต์จากแบบจำลองพฤติกรรมเชิงกราฟิก
- MaTeLo และ MBTsuite — แพลตฟอร์มเชิงพาณิชย์ที่มุ่งเน้นแบบจำลองการใช้งานทางสถิติและการสร้างชุดทดสอบลงในเฟรมเวิร์กการทำงานอัตโนมัติที่มีอยู่
- สเปค เอ็กซ์พลอเรอร์ - Microsoftส่วนขยายการทดสอบแบบจำลองสำหรับ Visual Studio ซึ่งได้รับการอ้างอิงอย่างกว้างขวางในเอกสารเกี่ยวกับการทดสอบโปรโตคอล
การเลือกใช้เครื่องมือไม่ได้ขึ้นอยู่กับรายการคุณสมบัติมากนัก แต่ขึ้นอยู่กับสองคำถามหลัก คือ ทีมสามารถใช้สัญลักษณ์ใดในการวาดภาพได้จริง และเครื่องมือดังกล่าวสามารถสร้างชุดทดสอบลงในเฟรมเวิร์กการทำงานอัตโนมัติที่ใช้งานอยู่แล้วได้หรือไม่ เครื่องมือสร้างชุดทดสอบที่ไม่มีใครสามารถเรียกใช้งานได้นั้น จะเพิ่มขั้นตอนให้กับกระบวนการแทนที่จะลดขั้นตอนลง
การทดสอบโดยใช้แบบจำลองเทียบกับการออกแบบการทดสอบแบบดั้งเดิม
การเปรียบเทียบกับการออกแบบข้อสอบที่เขียนด้วยมือเป็นสิ่งที่ควรกล่าวถึง เพราะทั้งสองวิธีมีข้อบกพร่องในจุดที่แตกต่างกัน ไม่ใช่ว่าวิธีใดวิธีหนึ่งจะดีกว่ากันเพียงอย่างเดียว
| แง่มุม | การทดสอบตามแบบจำลอง | การออกแบบการทดสอบแบบดั้งเดิม |
|---|---|---|
| แหล่งที่มาของกรณีทดสอบ | สร้างขึ้นโดยอัตโนมัติจากแบบจำลองพฤติกรรม | เขียนขึ้นโดยผู้ทดสอบแต่ละคนตามข้อกำหนด |
| ผลกระทบของการเปลี่ยนแปลงข้อกำหนด | อัปเดตโมเดล สร้างการทดสอบที่ได้รับผลกระทบขึ้นใหม่ | ค้นหาและแก้ไขกรณีทดสอบที่ได้รับผลกระทบแต่ละรายการด้วยตนเอง |
| คุ้มครอง | วัดเทียบกับเกณฑ์ของแบบจำลอง เช่น สถานะทั้งหมด หรือการเปลี่ยนสถานะทั้งหมด | วัดเทียบกับข้อกำหนด และขึ้นอยู่กับการตัดสินใจของผู้ทดสอบ |
| ค่าใช้จ่ายล่วงหน้า | ระดับสูง: ทักษะการสร้างแบบจำลอง การตั้งค่าเครื่องมือ และเลเยอร์อะแดปเตอร์ | ระดับต่ำ: ผู้ทดสอบสามารถเริ่มเขียนได้ทันที |
| เหมาะสมที่สุด | ระบบที่มีสถานะคงที่ อายุการใช้งานยาวนาน และมีข้อกำหนดที่เสถียร | โปรเจกต์ขนาดเล็ก, บทความพิเศษ และงานสำรวจ |
| โหมดความล้มเหลวหลัก | โมเดลที่ไม่ถูกต้องหรือล้าสมัยจะสร้างการทดสอบที่ไม่ถูกต้องโดยไม่แจ้งให้ทราบล่วงหน้า | ช่องว่างและข้อมูลซ้ำซ้อนสะสมมากขึ้นในชุดข้อมูลขนาดใหญ่ |
วิวัฒนาการด้านล่างนี้จะแสดงให้เห็นถึงบริบทของเทคนิคนี้: การดำเนินการทดสอบด้วยตนเองได้ถูกแทนที่ด้วยการดำเนินการอัตโนมัติ และวิธีการแบบใช้โมเดลได้ยกระดับการทำงานอัตโนมัติไปอีกขั้นหนึ่ง นั่นคือในขั้นตอนการออกแบบการทดสอบเอง
ความท้าทายของการทดสอบตามแบบจำลอง
การนำ MBT มาใช้ในองค์กรต้องใช้เงินลงทุนและความพยายามอย่างมาก ต่อไปนี้คือข้อเสียของ MBT ในองค์กรต่างๆ วิศวกรรมซอฟต์แวร์:
- ผู้ทดสอบจำเป็นต้องมีทักษะการสร้างแบบจำลอง ซึ่งการออกแบบการทดสอบแบบดั้งเดิมไม่ได้ต้องการ
- การเรียนรู้ขั้นตอนต่างๆ นั้นใช้เวลานาน และโครงการแรกมักจะมีค่าใช้จ่ายมากกว่าผลประโยชน์ที่ประหยัดได้
- ตัวแบบเองอาจเข้าใจและตรวจสอบได้ยาก โดยเฉพาะอย่างยิ่งเมื่อมันมีขนาดใหญ่ขึ้น
- แบบจำลองที่เบี่ยงเบนไปจากข้อกำหนดจะสร้างการทดสอบที่ผิดพลาดโดยมั่นใจเกินไป
- ชั้นอะแดปเตอร์ที่เปลี่ยน ABStracขั้นตอนต่างๆ ในการนำไปปฏิบัติจริงจะต้องเขียนและดูแลรักษาแยกต่างหาก
- ขนาดของโมเดลจะเติบโตอย่างรวดเร็ว ดังนั้นโมเดลสถานะที่ไม่จำกัดจึงอาจสร้างเส้นทางได้มากกว่าที่ทีมใดทีมหนึ่งจะสามารถดำเนินการได้
ทั้งหมดนี้ไม่ใช่เหตุผลที่จะหลีกเลี่ยงเทคนิคนี้ แต่เมื่อรวมกันแล้ว พวกมันจะอธิบายว่าทำไม MBT จึงมักถูกนำมาใช้กับระบบย่อยที่เสถียรระบบใดระบบหนึ่งก่อน แทนที่จะใช้กับระบบทั้งหมด วงจรชีวิตการทดสอบซอฟต์แวร์ ในครั้งเดียว.
ข้อดีของการทดสอบโดยใช้แบบจำลอง
เมื่อเปรียบเทียบกับต้นทุนแล้ว ประโยชน์ของ MBT มีดังนี้:
- การบำรุงรักษาชุดทดสอบและกรณีทดสอบทำได้ง่าย เนื่องจากเป็นการแก้ไขโมเดลแทนที่จะแก้ไขการทดสอบแต่ละรายการ
- ลดต้นทุนตลอดอายุโครงการระยะยาว
- ปรับตัวดีขึ้น ครอบคลุมการทดสอบเนื่องจากตัวสร้างเส้นทางจะสำรวจเส้นทางที่คนทั่วไปอาจข้ามไป
- ชุดโปรแกรมที่สร้างขึ้นต่างกันสามารถทำงานบนเครื่องจำนวนเท่าใดก็ได้พร้อมกัน
- ตรวจจับข้อบกพร่องได้ตั้งแต่เนิ่นๆ เนื่องจากความคลุมเครือจะปรากฏขึ้นในระหว่างการสร้างแบบจำลอง ก่อนที่จะมีการเรียกใช้โค้ดใดๆ
- จำนวนข้อบกพร่องที่พบเพิ่มขึ้นเมื่อเทียบกับความพยายามในการทดสอบครั้งก่อนหน้า
- ประหยัดเวลาในการออกแบบการทดสอบเมื่อมีแบบจำลองและอะแดปเตอร์แล้ว
- ความพึงพอใจในงานของนักทดสอบดีขึ้น เนื่องจากความพยายามเปลี่ยนจากการเขียนสคริปต์ซ้ำซากไปเป็นการสร้างแบบจำลองและการวิเคราะห์
ผู้ทดสอบสร้างแบบจำลองทางความคิดอยู่แล้วในระหว่างการทำงาน และ MBT เพียงแค่ย้ายแบบจำลองทางความคิดเหล่านั้นลงบนกระดาษ ซึ่งสามารถตรวจสอบ จัดทำเวอร์ชัน และนำกลับมาใช้ใหม่ได้ ส่วนที่อธิบายว่าเทคนิคนี้เหมาะสมกับวิธีการอื่นๆ ที่มีอยู่อย่างไรนั้นได้อธิบายไว้ในส่วนต่อไป ประเภทของการทดสอบซอฟต์แวร์.





