เกรย์คืออะไร Box การทดสอบ? เทคนิค ตัวอย่าง
⚡ สรุปอย่างชาญฉลาด
สีเทา Box การทดสอบจะตรวจสอบแอปพลิเคชันโดยมีความรู้เพียงบางส่วนเกี่ยวกับโครงสร้างภายใน ผสมผสานมุมมองที่ผู้ใช้เห็นจากการทดสอบแบบกล่องดำเข้ากับความเข้าใจเชิงสถาปัตยกรรมที่เพียงพอที่จะอธิบายว่าทำไมจึงเกิดความล้มเหลว แทนที่จะบอกเพียงว่ามันเกิดขึ้น
เกรย์คืออะไร Box การทดสอบ?
สีเทา Box การทดสอบ (สะกดอีกแบบว่า Gray) Box การทดสอบแบบ Grey Testing (การทดสอบสีเทา) เป็นเทคนิคการทดสอบซอฟต์แวร์ที่ทดสอบผลิตภัณฑ์ซอฟต์แวร์หรือแอปพลิเคชันโดยมีความรู้เพียงบางส่วนเกี่ยวกับโครงสร้างภายในของแอปพลิเคชันนั้น จุดประสงค์ของการทดสอบแบบ Grey Testing คือ... Box การทดสอบคือการค้นหาและระบุข้อบกพร่องที่เกิดจากโครงสร้างโค้ดที่ไม่เหมาะสมหรือการใช้งานแอปพลิเคชันที่ไม่ถูกต้อง
ในกระบวนการนี้ มักพบข้อผิดพลาดเฉพาะบริบทที่เกี่ยวข้องกับระบบเว็บ เทคนิคนี้ช่วยเพิ่มประสิทธิภาพ ครอบคลุมการทดสอบ โดยการมุ่งเน้นไปที่ทุกชั้นของระบบที่ซับซ้อน แทนที่จะมุ่งเน้นไปที่ชั้นใดชั้นหนึ่งเพียงอย่างเดียว
สีเทา Box การทดสอบเป็นวิธีการทดสอบซอฟต์แวร์ที่ผสมผสาน สีขาว Box การทดสอบ และ สีดำ Box การทดสอบความแตกต่างระหว่างทั้งสามอย่างนั้นอยู่ที่ว่าผู้ทดสอบสามารถมองเห็นโครงสร้างภายในได้มากน้อยเพียงใด:
- ในสีขาว Box การทดสอบโครงสร้างภายใน (โค้ด) เป็นที่ทราบกันดีอยู่แล้ว
- ในสีดำ Box ไม่ทราบวิธีการทดสอบโครงสร้างภายใน (โค้ด)
- ในสีเทา Box การทดสอบโครงสร้างภายใน (โค้ด) นั้นเป็นที่ทราบกันเพียงบางส่วนเท่านั้น
แผนภาพด้านล่างแสดงวิธีการทั้งสามวิธีบนมาตราส่วนความชัดเจนเดียวกัน
In วิศวกรรมซอฟต์แวร์, สีเทา Box การทดสอบช่วยให้สามารถทดสอบได้ทั้งสองด้านของแอปพลิเคชัน ทั้งส่วนแสดงผลและโค้ดที่อยู่เบื้องหลัง โดยหลักแล้วมีประโยชน์ใน การทดสอบการรวม และ การทดสอบการเจาะ.
ตัวอย่างของสีเทา Box การทดสอบ: ขณะทดสอบคุณสมบัติของเว็บไซต์ เช่น ลิงก์หรือลิงก์ที่ไม่มีเจ้าของ หากผู้ทดสอบพบปัญหาเกี่ยวกับลิงก์เหล่านี้ สามารถทำการเปลี่ยนแปลงในโค้ด HTML และตรวจสอบได้แบบเรียลไทม์ทันที
ทำไมต้องสีเทา Box การทดสอบ
สีเทา Box การทดสอบดำเนินการด้วยเหตุผลดังต่อไปนี้:
- วิธีการนี้รวมข้อดีของการทดสอบแบบกล่องดำและการทดสอบแบบกล่องขาวเข้าไว้ด้วยกัน
- เป็นการนำข้อมูลจากทั้งนักพัฒนาและผู้ทดสอบมาผสานรวมกัน และปรับปรุงคุณภาพโดยรวมของผลิตภัณฑ์ให้ดียิ่งขึ้น
- ช่วยลดภาระงานและขั้นตอนการทดสอบประเภทข้อมูลทั้งแบบใช้งานได้และใช้งานไม่ได้ซึ่งใช้เวลานาน
- ทำให้ผู้พัฒนาซอฟต์แวร์มีเวลาว่างมากพอที่จะแก้ไขข้อบกพร่องได้
- การทดสอบจะดำเนินการจากมุมมองของผู้ใช้ ไม่ใช่มุมมองของผู้ออกแบบ
- ความล้มเหลวสามารถอธิบายได้แทนที่จะรายงานเพียงอย่างเดียว เพราะผู้ทดสอบสามารถมองเห็นเลเยอร์ที่เกิดความล้มเหลวได้
สีเทา Box การทดสอบเทียบกับสีดำ Box ปะทะสีขาว Box การทดสอบ
วิธีการทั้งสามนี้ไม่ได้เป็นทางเลือกที่แข่งขันกัน แต่เป็นการเข้าถึงในสามระดับ และแต่ละวิธีก็ตอบคำถามที่แตกต่างกัน การนำมาเปรียบเทียบกันทำให้การเลือกชัดเจนยิ่งขึ้น
| ฐาน | สีดำ Box การทดสอบ | สีเทา Box การทดสอบ | สีขาว Box การทดสอบ |
|---|---|---|---|
| ความรู้เกี่ยวกับโครงสร้างภายใน | ไม่มี | เป็นบางส่วน | เต็ม |
| แสดงโดย | ผู้ทดสอบและผู้ใช้ปลายทาง | ผู้ทดสอบ และนักพัฒนาที่ทำงานร่วมกับผู้ทดสอบ | นักพัฒนาและวิศวกรทดสอบ |
| หลักการออกแบบการทดสอบ | ข้อกำหนดและคุณสมบัติ | Archiสถาปัตยกรรม, อัลกอริทึม, โครงสร้างข้อมูล และอินเทอร์เฟซ | ซอร์สโค้ดและการควบคุมการไหลของโปรแกรม |
| ระดับทั่วไป | การทดสอบระบบและการยอมรับ | การทดสอบการบูรณาการ การเจาะระบบ และการทดสอบเว็บเซอร์วิส | การทดสอบหน่วยและส่วนประกอบ |
| ความครอบคลุมวัดได้ดังนี้ | ความครอบคลุมของข้อกำหนด | การครอบคลุมอินเทอร์เฟซ ข้อมูล และเส้นทาง | การครอบคลุมคำสั่ง สาขา และเส้นทาง |
| ข้อจำกัดหลัก | สาเหตุของความล้มเหลวยังคงถูกปกปิดไว้ | ความลึกของข้อมูลถูกจำกัดด้วยสิทธิ์การเข้าถึงที่ได้รับอนุญาต | มีราคาแพง และอาจพลาดข้อกำหนดที่ขาดหายไปได้ |
ทีมส่วนใหญ่ใช้ทั้งสามอย่างควบคู่กันไป วงจรชีวิตการทดสอบซอฟต์แวร์และชั้นกล่องสีเทาคือบริเวณที่มักตรวจพบข้อบกพร่องที่เกิดขึ้นระหว่างส่วนติดต่อผู้ใช้และแหล่งเก็บข้อมูล
สีเทา Box กลยุทธ์การทดสอบ
เพื่อแสดงสีเทา Box ในการทดสอบนั้น ผู้ทดสอบไม่จำเป็นต้องเข้าถึงซอร์สโค้ด การทดสอบถูกออกแบบโดยอาศัยความรู้เกี่ยวกับอัลกอริธึม สถาปัตยกรรม สถานะภายใน หรือคำอธิบายระดับสูงอื่นๆ เกี่ยวกับพฤติกรรมของโปรแกรม
เพื่อแสดงสีเทา Box การทดสอบ:
- วิธีการนี้ใช้เทคนิคการทดสอบแบบกล่องดำที่ไม่ซับซ้อน
- วิธีการนี้ใช้หลักการสร้างกรณีทดสอบตามความต้องการ ดังนั้นจึงกำหนดเงื่อนไขทั้งหมดไว้ล่วงหน้าก่อนที่จะทดสอบโปรแกรมด้วยวิธีการยืนยัน (assertion method)
เทคนิคที่ใช้สำหรับสีเทา Box การทดสอบมีดังนี้:
- การทดสอบเมทริกซ์: เทคนิคนี้เกี่ยวข้องกับการกำหนดตัวแปรทั้งหมดที่มีอยู่ในโปรแกรม พร้อมทั้งความเสี่ยงที่แต่ละตัวแปรมี เพื่อให้สามารถมองเห็นตัวแปรที่ไม่ได้ใช้งานและมีความเสี่ยงสูงได้
- การทดสอบการถดถอย: ตรวจสอบว่าการเปลี่ยนแปลงในเวอร์ชันก่อนหน้าส่งผลกระทบต่อส่วนอื่นๆ ของโปรแกรมในเวอร์ชันใหม่หรือไม่ โดยใช้วิธีการต่างๆ เช่น ทดสอบซ้ำทั้งหมด ทดสอบซ้ำกรณีการใช้งานที่มีความเสี่ยง และทดสอบซ้ำภายในไฟร์วอลล์
- การทดสอบอาร์เรย์มุมฉาก หรือ OAT: ช่วยให้ครอบคลุมโค้ดได้สูงสุดด้วยจำนวนกรณีทดสอบที่น้อยที่สุด
- การทดสอบรูปแบบ: ดำเนินการโดยอิงจากข้อมูลในอดีตของข้อบกพร่องของระบบก่อนหน้านี้ ซึ่งแตกต่างจากการทดสอบแบบกล่องดำ การทดสอบแบบ Grey Testing จึงแตกต่างออกไป Box การทดสอบจะเจาะลึกเข้าไปในโค้ดและหาสาเหตุที่ทำให้เกิดความล้มเหลว
สีเทา Box โดยปกติแล้วระเบียบวิธีจะใช้ระบบอัตโนมัติ เครื่องมือทดสอบซอฟต์แวร์ เพื่อทำการทดสอบ มีการสร้าง Stub และ Module Driver เพื่อให้ผู้ทดสอบไม่ต้องสร้างโค้ดด้วยตนเอง
ขั้นตอนการทำสีเทา Box การทดสอบมีดังนี้:
- ขั้นตอนที่ 1: ระบุข้อมูลนำเข้า
- ขั้นตอนที่ 2: ระบุผลลัพธ์
- ขั้นตอนที่ 3: ระบุเส้นทางหลัก
- ขั้นตอนที่ 4: ระบุหน้าที่ย่อย
- ขั้นตอนที่ 5: พัฒนาข้อมูลป้อนเข้าสำหรับฟังก์ชันย่อย
- ขั้นตอนที่ 6: พัฒนาเอาต์พุตสำหรับฟังก์ชันย่อยต่างๆ
- ขั้นตอนที่ 7: ดำเนินการทดสอบสำหรับฟังก์ชันย่อยต่างๆ
- ขั้นตอนที่ 8: ตรวจสอบผลลัพธ์ที่ถูกต้องสำหรับฟังก์ชันย่อยต่างๆ
- ขั้นตอนที่ 9: ทำซ้ำขั้นตอนที่ 4 ถึง 8 สำหรับฟังก์ชันย่อยอื่นๆ
- ขั้นตอนที่ 10: ทำซ้ำขั้นตอนที่ 7 และ 8 สำหรับฟังก์ชันย่อยอื่นๆ
กรณีทดสอบสำหรับสีเทา Box การทดสอบอาจครอบคลุมถึงส่วนติดต่อผู้ใช้แบบกราฟิก (GUI), ความปลอดภัย, ฐานข้อมูล, เบราว์เซอร์ และระบบปฏิบัติการ เป็นต้น แต่ละกรณีที่สร้างขึ้นยังคงต้องการขั้นตอนปกติทั่วไป กรณีทดสอบ คุณลักษณะต่างๆ เนื่องจากกรณีที่ไม่สามารถจำลองขึ้นมาใหม่ได้จากคำอธิบายของตัวเองนั้น แทบจะไม่มีประโยชน์เลยในระหว่างการวิเคราะห์การถดถอย
ที่ซึ่งสีเทา Box การทดสอบถูกนำมาใช้
เทคนิคนี้เหมาะสมกับการใช้งานในกรณีที่ต้องตรวจสอบข้อบกพร่องโดยดูจากสองชั้นพร้อมกัน ซึ่งสถานการณ์ต่อไปนี้เป็นสถานการณ์ที่มักใช้เทคนิคนี้บ่อยที่สุด:
- เวิร์กโฟลว์ที่ใช้ฐานข้อมูลเป็นตัวสนับสนุน: มีการดำเนินการผ่านทางส่วนติดต่อผู้ใช้ จากนั้นจึงสอบถามแถวผลลัพธ์โดยตรงเพื่อยืนยันว่าค่า ประเภท และความสัมพันธ์ได้รับการจัดเก็บตามที่ตั้งใจไว้
- เว็บเซอร์วิสและ API: มีการส่งคำขอและตรวจสอบสถานะการตอบกลับ ส่วนหัว และข้อมูลสำคัญเทียบกับข้อมูลที่เผยแพร่tract ซึ่งเป็นรูปแบบที่ใช้กันทั่วไปของ การทดสอบ API.
- จุดบูรณาการ: ข้อความที่ข้ามขอบเขตระหว่างสองโมดูลจะได้รับการตรวจสอบ โดยทั้งสองโมดูลจะถูกมองว่าเป็นระบบที่กำลังทำงานอยู่ ไม่ใช่ไฟล์ต้นฉบับ
- การประเมินความปลอดภัย: ผู้ทดสอบการเจาะระบบที่ได้รับบัญชีผู้ใช้ทั่วไปและภาพรวมของสถาปัตยกรรม จะจำลองสถานการณ์ของผู้ที่อยู่ในองค์กร ซึ่งเป็นรูปแบบการทำงานแบบกล่องเทามาตรฐาน
- แอปพลิเคชันบนเว็บและส่วนติดต่อผู้ใช้แบบกราฟิก (GUI): ลิงก์เสีย หน้าเว็บที่ไม่มีเจ้าของ การจัดการเซสชัน และการตรวจสอบความถูกต้องฝั่งไคลเอ็นต์ จะได้รับการตรวจสอบทั้งหมดโดยที่มองเห็นโค้ด HTML และการไหลของคำขอได้เพียงบางส่วน
โดยรวมแล้ว ต้นทุนของข้อบกพร่องในระบบจะลดลง เนื่องจากปัญหาจะถูกตรวจพบและอธิบายก่อนที่จะส่งต่อไปยังขั้นตอนต่อไป การทดสอบระบบ หรือการผลิต
สีเทา Box เครื่องมือทดสอบ
ไม่มีเครื่องมือใดทำงานได้ดีในระดับสีเทา Box การทดสอบเพียงอย่างเดียว สิ่งที่หมวดหมู่นี้ต้องการคือ การผสมผสานระหว่างไดรเวอร์อินเทอร์เฟซ เครื่องมือตรวจสอบสำหรับเลเยอร์ด้านล่าง และวิธีการเขียนสคริปต์เพื่อรวมทั้งสองอย่างเข้าด้วยกัน
- ไคลเอ็นต์ API และเว็บเซอร์วิส เช่น Postman และ SoapUIใช้ในการส่งคำขอและตรวจสอบรหัสสถานะและเนื้อหาการตอบกลับ
- ไคลเอนต์ฐานข้อมูลและเครื่องมือสืบค้น SQLใช้เพื่อตรวจสอบสถานะที่คงอยู่หลังจากดำเนินการกับอินเทอร์เฟซ
- เครื่องมือสำหรับนักพัฒนาเบราว์เซอร์และพร็อกซี HTTP เช่น Burp Suiteใช้ในการตรวจสอบและแก้ไขคำขอระหว่างเซสชันที่เน้นด้านความปลอดภัย
- เฟรมเวิร์กการทำงานอัตโนมัติของ UI เช่น Seleniumใช้เพื่อขับเคลื่อนเลเยอร์การนำเสนอภายใน การทดสอบอัตโนมัติ บน
- เครื่องมือบันทึกและตรวจสอบใช้เพื่อเชื่อมโยงความล้มเหลวที่สังเกตได้กับสิ่งที่แอปพลิเคชันบันทึกไว้ภายใน ณ ขณะนั้น
การเลือกใช้มีความสำคัญน้อยกว่าการเดินสายไฟ: เว้นแต่ว่าไดรเวอร์อินเทอร์เฟซและขั้นตอนการตรวจสอบจะทำงานในขั้นตอนการเขียนสคริปต์เดียวกัน ผลลัพธ์ที่ได้คือการตรวจสอบด้วยตนเองสองครั้งแยกกัน แทนที่จะเป็นการทดสอบแบบกล่องสีเทาเพียงครั้งเดียว
สีเทา Box ความท้าทายในการทดสอบ
การมองเห็นเพียงบางส่วนทำให้เกิดปัญหาที่วิธีการบริสุทธิ์ทั้งสองแบบไม่มี และปัญหาที่ทีมงานพบเจอบ่อยที่สุดมีดังต่อไปนี้:
- เมื่อส่วนประกอบที่กำลังทดสอบเกิดความผิดพลาดขึ้น อาจทำให้การทำงานที่กำลังดำเนินอยู่หยุดชะงัก และส่วนที่เหลือของลำดับการทำงานจะไม่ถูกดำเนินการต่อ
- การทดสอบอาจดำเนินการจนเสร็จสมบูรณ์แม้ว่าเนื้อหาของผลลัพธ์จะไม่ถูกต้อง ดังนั้นขั้นตอนการตรวจสอบจึงต้องตรวจสอบค่าต่างๆ แทนที่จะตรวจสอบว่าการทดสอบเสร็จสมบูรณ์หรือไม่
- การครอบคลุมเส้นทางการทำงานของโค้ดทั้งหมดเป็นไปไม่ได้ เนื่องจากผู้ทดสอบไม่เคยเห็นทุกสาขาที่การทดสอบแบบไวท์บ็อกซ์จะเข้าถึงได้
- เอกสารการออกแบบที่ใช้ในการทดสอบอาจล้าสมัย และแบบแผนหรือข้อกำหนดอินเทอร์เฟซที่ล้าสมัยอาจทำให้การออกแบบการทดสอบใช้การไม่ได้โดยไม่รู้ตัว
- ผู้ทดสอบจำเป็นต้องมีความเข้าใจทั้งในด้านเนื้อหาและด้านเทคนิคอย่างลึกซึ้ง ซึ่งเป็นทักษะเฉพาะทางที่หาได้ยากในการสรรหาบุคลากร
- กระจายตัวและหนาแน่นมากtracสถาปัตยกรรม TED ทำให้ยากที่จะระบุว่าความล้มเหลวที่สังเกตได้นั้นเกิดจากส่วนประกอบภายในใดโดยเฉพาะ
ข้อจำกัดเหล่านี้สนับสนุนการปฏิบัติต่อสีเทา Box การทดสอบเป็นเพียงหนึ่งในหลายขั้นตอน ไม่ใช่การทดแทนขั้นตอนอื่นๆ ซึ่งเป็นประเด็นสำคัญที่ถูกกล่าวถึงในวงกว้าง เทคนิคการทดสอบซอฟต์แวร์ และ ประเภทของการทดสอบซอฟต์แวร์มันเข้ากันได้อย่างลงตัว การทดสอบการใช้งาน และแนวทางที่ขับเคลื่อนด้วยข้อกำหนด เช่น การทดสอบตามแบบจำลอง.

