บทแนะนำการทดสอบข้อมูลขนาดใหญ่: คืออะไร กลยุทธ์ และวิธีการทดสอบ
⚡ สรุปอย่างชาญฉลาด
การทดสอบบิ๊กดาต้าเป็นการตรวจสอบว่าแอปพลิเคชันบิ๊กดาต้าประมวลผลข้อมูลขนาดเทราไบต์ได้อย่างถูกต้อง รวดเร็ว และปลอดภัย โดยผสมผสานการตรวจสอบความถูกต้องของการจัดเตรียมข้อมูล การตรวจสอบความถูกต้องของ MapReduce และการตรวจสอบความถูกต้องของผลลัพธ์ เข้ากับการตรวจสอบสถาปัตยกรรมและประสิทธิภาพในคลัสเตอร์ Hadoop แบบกระจาย
การทดสอบข้อมูลขนาดใหญ่คืออะไร?
การทดสอบบิ๊กดาต้า คือกระบวนการทดสอบแอปพลิเคชันบิ๊กดาต้าเพื่อให้แน่ใจว่าฟังก์ชันการทำงานทั้งหมดของแอปพลิเคชันนั้นทำงานได้ตามที่คาดหวัง เป้าหมายของการทดสอบบิ๊กดาต้าคือการทำให้แน่ใจว่าระบบบิ๊กดาต้าทำงานได้อย่างราบรื่นและปราศจากข้อผิดพลาด พร้อมทั้งรักษาประสิทธิภาพและความปลอดภัยไว้ได้
บิ๊กดาต้า คือชุดข้อมูลขนาดใหญ่ที่ไม่สามารถประมวลผลได้โดยใช้เทคนิคการคำนวณแบบดั้งเดิม การทดสอบชุดข้อมูลเหล่านี้เกี่ยวข้องกับเครื่องมือ เทคนิค และเฟรมเวิร์กต่างๆ ในการประมวลผล บิ๊กดาต้าเกี่ยวข้องกับการสร้าง การจัดเก็บ การเรียกใช้ และการวิเคราะห์ข้อมูลที่มีปริมาณ ความหลากหลาย และความเร็วที่น่าทึ่ง คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับเรื่องนี้ได้ ข้อมูลขนาดใหญ่, Hadoop และ แผนที่ลด ก่อนที่คุณจะเริ่มทำการทดสอบ
กลยุทธ์การทดสอบ Big Data คืออะไร?
การทดสอบแอปพลิเคชัน Big Data นั้นเป็นการตรวจสอบกระบวนการประมวลผลข้อมูลมากกว่าการทดสอบคุณสมบัติแต่ละอย่างของซอฟต์แวร์ เมื่อพูดถึงการทดสอบ Big Data นั้น การทดสอบประสิทธิภาพและการทดสอบฟังก์ชันการทำงานถือเป็นหัวใจสำคัญ
ในกลยุทธ์การทดสอบข้อมูลขนาดใหญ่ วิศวกร QA จะตรวจสอบความสำเร็จในการประมวลผลข้อมูลขนาดหลายเทราไบต์โดยใช้คลัสเตอร์คอมพิวเตอร์ทั่วไปและส่วนประกอบสนับสนุนอื่นๆ ซึ่งต้องใช้ทักษะการทดสอบระดับสูงเนื่องจากการประมวลผลรวดเร็วมาก การประมวลผลอาจแบ่งออกได้เป็นสามประเภท:
- การประมวลผลแบทช์: ข้อมูลที่จัดเก็บไว้จะถูกประมวลผลตามกำหนดเวลา ดังนั้นการทดสอบจึงมุ่งเน้นไปที่การทำงานให้เสร็จสมบูรณ์และความถูกต้องแม่นยำ
- การประมวลผลตามเวลาจริง: ข้อมูลจะถูกประมวลผลทันทีที่ได้รับ ดังนั้นการทดสอบจึงมุ่งเป้าไปที่ความล่าช้าและการสูญเสียข้อมูล
- การประมวลผลแบบโต้ตอบ: นักวิเคราะห์สอบถามข้อมูลโดยตรง ดังนั้นการทดสอบจึงมุ่งเป้าไปที่เวลาตอบสนองของการสอบถามแบบเฉพาะกิจ
แผนภาพด้านล่างนี้สรุปกลยุทธ์ดังกล่าว
นอกจากนี้ คุณภาพของข้อมูลยังเป็นปัจจัยสำคัญในการทดสอบ Hadoop อีกด้วย ก่อนที่จะทดสอบแอปพลิเคชัน จำเป็นต้องตรวจสอบคุณภาพของข้อมูล และควรพิจารณาเรื่องนี้เป็นส่วนหนึ่งของการทดสอบฐานข้อมูล ซึ่งเกี่ยวข้องกับการตรวจสอบคุณลักษณะต่างๆ เช่น ความสอดคล้อง ความถูกต้อง การซ้ำซ้อน ความสม่ำเสมอ ความถูกต้องสมบูรณ์ และข้อมูลครบถ้วน เป็นต้น ต่อไปในบทเรียนการทดสอบ Hadoop นี้ เราจะเรียนรู้วิธีการทดสอบแอปพลิเคชัน Hadoop
วิธีทดสอบแอปพลิเคชัน Hadoop
ภาพต่อไปนี้แสดงภาพรวมคร่าวๆ ของขั้นตอนต่างๆ ในการทดสอบแอปพลิเคชันบิ๊กดาต้า
การทดสอบข้อมูลขนาดใหญ่ หรือการทดสอบ Hadoop สามารถแบ่งออกได้เป็นสามขั้นตอนหลัก ๆ
ขั้นตอนที่ 1: การตรวจสอบความถูกต้องของการจัดเตรียมข้อมูล
ขั้นตอนแรกในบทช่วยสอนการทดสอบข้อมูลขนาดใหญ่ (Big Data Testing) นี้ เรียกว่าขั้นตอนก่อนการใช้งาน Hadoop ซึ่งเกี่ยวข้องกับการตรวจสอบความถูกต้องของกระบวนการ
- ข้อมูลจากแหล่งต่างๆ เช่น ระบบจัดการฐานข้อมูลเชิงสัมพันธ์ (RDBMS), บล็อก, สื่อสังคมออนไลน์ ฯลฯ ควรได้รับการตรวจสอบความถูกต้องเพื่อให้แน่ใจว่าข้อมูลที่ถูกต้องถูกดึงเข้าสู่ระบบ
- การเปรียบเทียบข้อมูลต้นฉบับกับข้อมูลที่ส่งเข้าสู่ระบบ Hadoop เพื่อให้แน่ใจว่าข้อมูลตรงกัน
- ตรวจสอบว่าข้อมูลถูกต้องหรือไม่tracted และโหลดลงในตำแหน่งที่ถูกต้อง เอชดีเอฟเอส ที่ตั้ง
เครื่องมือที่ชอบ Talend และ Datameer สามารถใช้สำหรับการตรวจสอบความถูกต้องของการจัดเตรียมข้อมูลได้
ขั้นตอนที่ 2: การตรวจสอบความถูกต้อง “MapReduce”
ขั้นตอนที่สองคือการตรวจสอบความถูกต้องของ “MapReduce” ในขั้นตอนนี้ ผู้ทดสอบ Big Data จะตรวจสอบความถูกต้องของตรรกะทางธุรกิจในแต่ละโหนด จากนั้นตรวจสอบความถูกต้องอีกครั้งหลังจากรันบนหลายโหนด เพื่อให้แน่ใจว่า:
- กระบวนการ MapReduce ทำงานได้อย่างถูกต้อง
- กฎการรวมหรือการแยกข้อมูลถูกนำมาใช้กับข้อมูล
- คู่ค่าคีย์จะถูกสร้างขึ้น
- ตรวจสอบความถูกต้องของข้อมูลหลังจากกระบวนการ MapReduce
ขั้นตอนที่ 3: ขั้นตอนการตรวจสอบความถูกต้องของเอาต์พุต
ขั้นตอนสุดท้ายหรือขั้นตอนที่สามของการทดสอบ Hadoop คือกระบวนการตรวจสอบความถูกต้องของผลลัพธ์ ไฟล์ข้อมูลเอาต์พุตจะถูกสร้างขึ้นและพร้อมที่จะย้ายไปยัง EDW (คลังข้อมูลองค์กร) หรือระบบอื่นใดตามความต้องการ
กิจกรรมในขั้นตอนที่สามประกอบด้วย:
- เพื่อตรวจสอบการใช้กฎการเปลี่ยนแปลงอย่างถูกต้อง
- เพื่อตรวจสอบความสมบูรณ์ของข้อมูลและการโหลดข้อมูลเข้าสู่ระบบเป้าหมายสำเร็จ
- เพื่อตรวจสอบว่าไม่มีข้อมูลเสียหายโดยการเปรียบเทียบข้อมูลเป้าหมายกับข้อมูลระบบไฟล์ HDFS
Archiการทดสอบเทค
ขณะนี้ความสนใจได้เปลี่ยนจากข้อมูลไปที่คลัสเตอร์ที่จัดเก็บข้อมูลนั้นแล้ว
Hadoop ประมวลผลข้อมูลปริมาณมหาศาลและใช้ทรัพยากรสูงมาก ดังนั้น การทดสอบทางสถาปัตยกรรมจึงมีความสำคัญอย่างยิ่งต่อความสำเร็จของโครงการ Big Data ของคุณ ระบบที่ออกแบบไม่ดีหรือไม่เหมาะสมอาจทำให้ประสิทธิภาพลดลง และระบบอาจไม่สามารถตอบสนองความต้องการได้ อย่างน้อยที่สุด การปฏิบัติ และควรเรียกใช้บริการทดสอบการทำงานล้มเหลวในสภาพแวดล้อม Hadoop
การทดสอบประสิทธิภาพประกอบด้วยการทดสอบเวลาในการทำงานให้เสร็จสิ้น การใช้หน่วยความจำ ปริมาณข้อมูลที่ส่งผ่าน และตัวชี้วัดระบบอื่นๆ ที่คล้ายคลึงกัน จุดประสงค์ของบริการทดสอบการทำงานสำรองคือการตรวจสอบว่าการประมวลผลข้อมูลเกิดขึ้นได้อย่างราบรื่นในกรณีที่โหนดข้อมูลเกิดความล้มเหลว
การทดสอบประสิทธิภาพ
การทดสอบประสิทธิภาพสำหรับข้อมูลขนาดใหญ่ครอบคลุมสามด้านหลัก
- การนำเข้าและประมวลผลข้อมูล: ในขั้นตอนนี้ ผู้ทดสอบบิ๊กดาต้าจะตรวจสอบว่าระบบสามารถดึงข้อมูลจากแหล่งข้อมูลต่างๆ ได้เร็วแค่ไหน การทดสอบประกอบด้วยการระบุจำนวนข้อความที่คิวสามารถประมวลผลได้ภายในกรอบเวลาที่กำหนด นอกจากนี้ยังรวมถึงความเร็วในการแทรกข้อมูลลงในที่เก็บข้อมูลพื้นฐาน เช่น อัตราการแทรกข้อมูลลงในฐานข้อมูล MongoDB และ Cassandra ฐานข้อมูล
- การประมวลผลข้อมูล: กระบวนการนี้เกี่ยวข้องกับการตรวจสอบความเร็วในการดำเนินการคิวรีหรืองาน MapReduce นอกจากนี้ยังรวมถึงการทดสอบการประมวลผลข้อมูลแบบแยกส่วนเมื่อที่เก็บข้อมูลพื้นฐานได้รับการเติมข้อมูลภายในชุดข้อมูลแล้ว ตัวอย่างเช่น การเรียกใช้งาน MapReduce บน HDFS ที่อยู่เบื้องหลัง
- ประสิทธิภาพของส่วนประกอบย่อย: ระบบเหล่านี้ประกอบด้วยส่วนประกอบหลายอย่าง และจำเป็นอย่างยิ่งที่จะต้องทดสอบแต่ละส่วนประกอบแยกกัน ตัวอย่างเช่น ความเร็วในการจัดทำดัชนีและประมวลผลข้อความ งาน MapReduce ประสิทธิภาพการสืบค้น การค้นหา เป็นต้น
แนวทางการทดสอบประสิทธิภาพ
การทดสอบประสิทธิภาพสำหรับแอปพลิเคชันบิ๊กดาต้าเกี่ยวข้องกับการทดสอบข้อมูลจำนวนมหาศาล ทั้งข้อมูลที่มีโครงสร้างและไม่มีโครงสร้าง และต้องใช้วิธีการทดสอบเฉพาะเพื่อทดสอบข้อมูลขนาดใหญ่เช่นนี้
ขั้นตอนการทำงานด้านล่างนี้แสดงลำดับขั้นตอนของการทดสอบประสิทธิภาพ
การทดสอบประสิทธิภาพจะดำเนินการตามลำดับนี้
- กระบวนการเริ่มต้นด้วยการติดตั้งคลัสเตอร์บิ๊กดาต้า ซึ่งจะต้องนำไปทดสอบประสิทธิภาพ
- ระบุและออกแบบปริมาณงานที่สอดคล้องกัน
- เตรียมความพร้อมสำหรับลูกค้าแต่ละราย (สร้างสคริปต์เฉพาะสำหรับลูกค้าแต่ละราย)
- ดำเนินการทดสอบและวิเคราะห์ผลลัพธ์ (หากไม่บรรลุเป้าหมาย ให้ปรับแต่งส่วนประกอบและดำเนินการทดสอบอีกครั้ง)
- การกำหนดค่าที่เหมาะสมที่สุด
พารามิเตอร์สำหรับการทดสอบประสิทธิภาพ
พารามิเตอร์ต่างๆ ที่ต้องตรวจสอบสำหรับการทดสอบประสิทธิภาพ ได้แก่:
- การจัดเก็บข้อมูล: วิธีการจัดเก็บข้อมูลในโหนดต่างๆ
- บันทึกการเปลี่ยนแปลง: ขนาดของไฟล์บันทึกการเปลี่ยนแปลง (commit log) สามารถขยายได้มากเท่าใด
- การทำงานพร้อมกัน: มีเธรดกี่เธรดที่สามารถทำการเขียนและอ่านข้อมูลได้
- เก็บเอาไว้: ปรับการตั้งค่าแคช "แคชแถว" และ "แคชคีย์"
- เวลาหมด: ค่าสำหรับหมดเวลาการเชื่อมต่อ หมดเวลาการค้นหา ฯลฯ
- พารามิเตอร์ JVM: ขนาดฮีป, อัลกอริทึมการเก็บขยะ (GC) เป็นต้น
- ประสิทธิภาพของ MapReduce: การจัดเรียง การรวมข้อมูล ฯลฯ
- คิวข้อความ: อัตราการส่งข้อความ ขนาดข้อความ ฯลฯ
ทดสอบความต้องการสภาพแวดล้อม
สภาพแวดล้อมการทดสอบนั้นขึ้นอยู่กับประเภทของแอปพลิเคชันที่คุณกำลังทดสอบ สำหรับการทดสอบซอฟต์แวร์ Big Data สภาพแวดล้อมการทดสอบควรประกอบด้วยสิ่งต่อไปนี้
- ควรมีพื้นที่เพียงพอสำหรับการจัดเก็บและประมวลผลข้อมูลจำนวนมาก
- ควรมีคลัสเตอร์ที่มีโหนดและข้อมูลแบบกระจาย
- ควรมีการใช้งาน CPU และหน่วยความจำขั้นต่ำเพื่อรักษาประสิทธิภาพให้สูงเพื่อทดสอบประสิทธิภาพของ Big Data
การทดสอบข้อมูลขนาดใหญ่เทียบกับการทดสอบฐานข้อมูลแบบดั้งเดิม
ตารางด้านล่างนี้แสดงความแตกต่างระหว่างสองสาขาวิชาในแต่ละคุณสมบัติ
| อสังหาริมทรัพย์ | การทดสอบฐานข้อมูลแบบดั้งเดิม | การทดสอบข้อมูลขนาดใหญ่ |
|---|---|---|
| ข้อมูล | โปรแกรมทดสอบทำงานกับข้อมูลที่มีโครงสร้าง | ผู้ทดสอบทำงานได้กับทั้งข้อมูลที่มีโครงสร้างและข้อมูลที่ไม่มีโครงสร้าง |
| แนวทางการทดสอบ | วิธีการทดสอบมีการกำหนดไว้อย่างดีและผ่านการทดสอบตามเวลา | วิธีการทดสอบต้องใช้ความพยายามด้านการวิจัยและพัฒนาที่มุ่งเน้น |
| กลยุทธ์การทดสอบ | ผู้ทดสอบมีตัวเลือกในการใช้กลยุทธ์ "การสุ่มตัวอย่าง" ด้วยตนเอง หรือกลยุทธ์ "การตรวจสอบอย่างละเอียด" โดยใช้เครื่องมืออัตโนมัติ | กลยุทธ์ "การสุ่มตัวอย่าง" ในบิ๊กดาต้าเป็นความท้าทาย |
| โครงสร้างพื้นฐาน | ไม่จำเป็นต้องมีสภาพแวดล้อมการทดสอบพิเศษเนื่องจากขนาดไฟล์มีจำกัด | ต้องมีสภาพแวดล้อมการทดสอบพิเศษเนื่องจากขนาดข้อมูลและไฟล์ขนาดใหญ่ (HDFS) |
| เครื่องมือตรวจสอบความถูกต้อง | ผู้ทดสอบใช้มาโครใน Excel หรือเครื่องมืออัตโนมัติแบบใช้ส่วนติดต่อผู้ใช้ (UI) | ไม่มีเครื่องมือที่กำหนดไว้ตายตัว ขอบเขตของเครื่องมือมีหลากหลาย ตั้งแต่เครื่องมือเขียนโปรแกรมอย่าง MapReduce ไปจนถึง HiveQL |
| เครื่องมือทดสอบ | เครื่องมือทดสอบสามารถใช้งานได้โดยผู้ที่มีความรู้พื้นฐานในการใช้งานและไม่จำเป็นต้องได้รับการฝึกอบรมมากนัก | การใช้งานเครื่องมือทดสอบนั้นต้องอาศัยทักษะและการฝึกอบรมเฉพาะด้าน นอกจากนี้ เครื่องมือเหล่านี้ยังอยู่ในช่วงเริ่มต้น และอาจมีการเพิ่มฟีเจอร์ใหม่ๆ เข้ามาในอนาคต |
เครื่องมือที่ใช้ในสถานการณ์ข้อมูลขนาดใหญ่
ตารางด้านล่างจัดกลุ่มเครื่องมือทั่วไปตามชั้นคลัสเตอร์
| ข้อมูลขนาดใหญ่ Cluster | เครื่องมือข้อมูลขนาดใหญ่ |
|---|---|
| NoSQL: | CouchDB,ฐานข้อมูล MongoDB, Cassandra, Redis, ZooKeeper, HBase |
| แผนที่ลด: | ฮาดูป, รังหมู, แคสเคดดิ้ง, อูซี่, คาฟก้า, S4, MapR, ไลเดอร์ |
| การจัดเก็บ: | S3, HDFS (ระบบไฟล์แบบกระจายของ Hadoop) |
| เซิร์ฟเวอร์: | ยืดหยุ่น Heroku, Google แอปเอ็นจิ้น, อีซีพี |
| การประมวลผล: | อาร์ ยาฮู! ไปป์, เติร์กเครื่องกล, BigSheets, Datameer |
ความท้าทายในการทดสอบข้อมูลขนาดใหญ่
อุปสรรคเชิงปฏิบัติสามประการมักเกิดขึ้นซ้ำๆ ในเกือบทุกโครงการบิ๊กดาต้า
- อัตโนมัติ: การทดสอบระบบอัตโนมัติ การวิเคราะห์ข้อมูลขนาดใหญ่ (Big Data) จำเป็นต้องใช้ผู้ที่มีความเชี่ยวชาญด้านเทคนิค นอกจากนี้ เครื่องมืออัตโนมัติก็ไม่สามารถรับมือกับปัญหาที่ไม่คาดคิดที่เกิดขึ้นระหว่างการทดสอบได้
- การจำลองเสมือน: นี่เป็นหนึ่งในขั้นตอนสำคัญของการทดสอบ ความหน่วงของเครื่องเสมือนทำให้เกิดปัญหาเรื่องเวลาในการทดสอบประสิทธิภาพข้อมูลขนาดใหญ่แบบเรียลไทม์ นอกจากนี้ การจัดการรูปภาพในข้อมูลขนาดใหญ่ก็เป็นเรื่องยุ่งยากเช่นกัน
- ชุดข้อมูลขนาดใหญ่: ความดันสามอย่างมาพร้อมกับปริมาตร
- จำเป็นต้องตรวจสอบข้อมูลเพิ่มเติมและจำเป็นต้องดำเนินการให้เร็วขึ้น
- จำเป็นต้องทำให้ความพยายามในการทดสอบเป็นแบบอัตโนมัติ
- จำเป็นต้องสามารถทดสอบบนแพลตฟอร์มต่างๆ ได้
ความท้าทายในการทดสอบประสิทธิภาพ
- ชุดเทคโนโลยีที่หลากหลาย: แต่ละส่วนประกอบย่อยเป็นของเทคโนโลยีที่แตกต่างกัน และจำเป็นต้องได้รับการทดสอบแยกต่างหาก
- เนื่องจากเครื่องมือบางอย่างไม่พร้อมใช้งาน: ไม่มีเครื่องมือใดเครื่องมือเดียวที่สามารถทำการทดสอบแบบครบวงจรได้ ตัวอย่างเช่น NoSQL อาจไม่เหมาะสำหรับคิวข้อความ
- สคริปต์ทดสอบ: การเขียนสคริปต์ในระดับสูงเป็นสิ่งจำเป็นในการออกแบบสถานการณ์ทดสอบและกรณีทดสอบ
- สภาพแวดล้อมการทดสอบ: เนื่องจากขนาดข้อมูลมีขนาดใหญ่ จึงจำเป็นต้องใช้สภาพแวดล้อมการทดสอบพิเศษ
- โซลูชันการตรวจสอบ: ปัจจุบันมีโซลูชันที่จำกัดซึ่งสามารถตรวจสอบสภาพแวดล้อมทั้งหมดได้
- วิธีแก้ปัญหาการวินิจฉัย: จำเป็นต้องมีโซลูชันเฉพาะเพื่อเจาะลึกไปยังจุดที่เป็นปัญหาคอขวดด้านประสิทธิภาพ



