Підручник з тестування великих даних: що таке, стратегія, як тестувати
⚡ Розумний підсумок
Тестування великих даних перевіряє, чи застосунок для великих даних обробляє терабайти даних правильно, швидко та безпечно, поєднуючи перевірку розміщення даних, перевірку MapReduce та перевірку виводу з перевірками архітектури та продуктивності в розподіленому кластері Hadoop.

Що таке тестування великих даних?
Тестування великих даних (Big Data Testing) – це процес тестування програми для роботи з великими даними, метою якого є забезпечення належної роботи всіх функцій програми. Мета тестування великих даних – забезпечити безперебійну та безпомилкову роботу системи обробки великих даних, зберігаючи при цьому продуктивність та безпеку.
Великі дані – це сукупність великих наборів даних, які неможливо обробити за допомогою традиційних обчислювальних методів. Тестування цих наборів даних передбачає використання різних інструментів, методів та фреймворків для обробки. Великі дані стосуються створення, зберігання, пошуку та аналізу даних, які вирізняються обсягом, різноманітністю та швидкістю. Ви можете дізнатися більше про Великий даних, Hadoop та MapReduce перш ніж розпочати тестування.
Що таке стратегія тестування великих даних?
Тестування застосунку для великих даних – це радше перевірка його обробки даних, ніж тестування окремих функцій програмного продукту. Коли йдеться про тестування великих даних, ключовими є тестування продуктивності та функціональності.
У стратегії тестування великих даних, інженери з контролю якості перевіряють успішну обробку терабайтів даних за допомогою кластера стандартних даних та інших допоміжних компонентів. Це вимагає високого рівня навичок тестування, оскільки обробка відбувається дуже швидко. Обробка може бути трьох типів:
- Пакетна обробка: Збережені дані обробляються за розкладом, тому тести спрямовані на виконання завдання та його точність.
- Обробка в реальному часі: Записи обробляються одразу після надходження, тому тести спрямовані на виявлення затримки та втрати даних.
- Інтерактивна обробка: Аналітики надсилають запити безпосередньо, тому тести орієнтовані на час відповіді на спеціальні запити.
На діаграмі нижче підсумовано стратегію.
Поряд з цим, якість даних також є важливим фактором у тестуванні Hadoop. Перед тестуванням програми необхідно перевірити якість даних, і це слід розглядати як частину тестування бази даних. Це включає перевірку різних характеристик, таких як відповідність, точність, дублювання, узгодженість, валідність, повнота даних тощо. Далі в цьому посібнику з тестування Hadoop ми дізнаємося, як тестувати програми Hadoop.
Як тестувати Hadoop-застосунки
На наступному рисунку наведено загальний огляд фаз тестування програм для великих даних.
Тестування великих даних, або тестування Hadoop, можна умовно розділити на три кроки.
Крок 1: Перевірка постановки даних
Перший крок у цьому посібнику з тестування великих даних називається етапом перед Hadoop і включає валідацію процесу.
- Дані з різних джерел, таких як СУБД, веб-блоги, соціальні мережі тощо, слід перевірити, щоб переконатися, що в систему надходять правильні дані.
- Порівняння вихідних даних із даними, переданими в систему Hadoop, щоб переконатися, що вони збігаються
- Перевірте правильність данихtracзавантажено та у правильний HDFS розташування
Такі інструменти, як Таленд а Datameer можна використовувати для перевірки стадії обробки даних.
Крок 2: Перевірка “MapReduce”.
Другий крок – це перевірка «MapReduce». На цьому етапі тестер великих даних перевіряє бізнес-логіку на кожному вузлі, а потім перевіряє її після запуску на кількох вузлах, гарантуючи, що:
- Процес MapReduce працює правильно
- Для даних реалізовано правила агрегації або сегрегації даних
- Створюються пари ключ-значення
- Перевірка даних після процесу MapReduce
Крок 3: Етап перевірки вихідних даних
Останнім або третім етапом тестування Hadoop є процес перевірки результатів. Файли вихідних даних генеруються та готові до переміщення до EDW (Enterprise Data Warehouse) або будь-якої іншої системи відповідно до вимог.
Заходи на третьому етапі включають:
- Для перевірки правильності застосування правил перетворення
- Для перевірки цілісності даних і успішного завантаження даних у цільову систему
- Щоб переконатися, що дані не пошкоджені, порівняйте цільові дані з даними файлової системи HDFS
ArchiТестування текстури
Тепер увага переходить з даних на кластер, який їх містить.
Hadoop обробляє дуже великі обсяги даних і є дуже ресурсомістким. Отже, архітектурне тестування є критично важливим для забезпечення успіху вашого проекту з великими даними. Погано або неправильно розроблена система може призвести до погіршення продуктивності, і система може не відповідати вимогам. Як мінімум, продуктивністі а служби тестування відновлення після відмови повинні запускатися в середовищі Hadoop.
Тестування продуктивності включає тестування часу виконання завдань, використання пам'яті, пропускної здатності даних та аналогічних системних показників. Метою служби тестування відновлення після відмови є перевірка того, що обробка даних відбувається безперебійно у разі відмови вузлів даних.
Тестування продуктивності
Тестування продуктивності для великих даних охоплює три основні області.
- Споживання даних та пропускна здатність: На цьому етапі тестер великих даних перевіряє, наскільки швидко система може споживати дані з різних джерел. Тестування включає визначення кількості повідомлень, які черга може обробити за заданий проміжок часу. Воно також включає те, як швидко дані можна вставити в базове сховище даних, наприклад, швидкість вставки в MongoDB та Cassandra , що постійно розширюється.
- Обробка даних: Це включає перевірку швидкості виконання запитів або завдань MapReduce. Це також включає тестування обробки даних окремо, коли базове сховище даних заповнено в наборах даних. Наприклад, запуск завдань MapReduce на базовій HDFS.
- Продуктивність підкомпонентів: Ці системи складаються з кількох компонентів, і важливо тестувати кожен із них окремо. Наприклад, швидкість індексації та використання повідомлення, завдання MapReduce, продуктивність запитів, пошук тощо.
Підхід до тестування продуктивності
Тестування продуктивності для програми Big Data включає тестування величезних обсягів структурованих та неструктурованих даних, і для тестування таких масивних даних потрібен специфічний підхід.
Наведений нижче робочий процес показує послідовність, якої дотримується тест продуктивності.
Тестування продуктивності виконується в такому порядку.
- Процес починається зі створення кластера великих даних, продуктивність якого має бути протестована.
- Визначте та спроектуйте відповідні навантаження
- Підготовка індивідуальних клієнтів (створюються власні сценарії)
- Виконати тест та проаналізувати результати (якщо цілі не досягнуті, то налаштувати компонент та виконати його повторно)
- Оптимальна конфігурація
Параметри для тестування продуктивності
Різні параметри, які необхідно перевірити для тестування продуктивності:
- Зберігання даних: Як дані зберігаються в різних вузлах
- Журнали комітів: Наскільки дозволено збільшувати журнал комітів
- Паралельність: Скільки потоків можуть виконувати операції запису та читання
- Кешування: Налаштуйте параметри кешу «кеш рядків» та «кеш ключів»
- Час очікування: Значення часу очікування з’єднання, часу очікування запиту тощо.
- Параметри JVM: Розмір купи, алгоритми збору вантажів тощо.
- Продуктивність MapReduce: Сортує, об'єднує тощо.
- Черга повідомлень: Швидкість повідомлень, розмір тощо.
Потреби тестового середовища
Потреби в тестовому середовищі залежать від типу застосунку, який ви тестуєте. Для тестування програмного забезпечення для великих даних тестове середовище повинно охоплювати наступне.
- Він повинен мати достатньо місця для зберігання та обробки великої кількості даних
- Він повинен мати кластер із розподіленими вузлами та даними
- Він повинен мати мінімальне використання процесора та пам’яті, щоб підтримувати високу продуктивність для перевірки продуктивності великих даних
Тестування великих даних проти традиційного тестування баз даних
У таблиці нижче порівнюються дві дисципліни за кожною властивістю.
| властивості | Тестування традиційної бази даних | Тестування великих даних |
|---|---|---|
| дані | Тестер працює зі структурованими даними | Тестер працює як зі структурованими, так і з неструктурованими даними |
| Підхід до тестування | Підхід до тестування чітко визначений і перевірений часом | Підхід до тестування вимагає зосереджених зусиль у дослідженнях і розробках |
| Стратегія тестування | Тестер має можливість вибрати стратегію «Вибірка», виконану вручну, або стратегію «Вичерпна перевірка» за допомогою інструменту автоматизації. | Стратегія «вибірки» у великих даних є викликом |
| Інфраструктура | Він не вимагає спеціального тестового середовища, оскільки розмір файлу обмежений | Потрібне спеціальне тестове середовище через великий розмір даних і файлів (HDFS) |
| Інструменти перевірки | Тестер використовує макроси на основі Excel або інструменти автоматизації на основі інтерфейсу користувача | Немає визначених інструментів; діапазон широкий, від інструментів програмування, таких як MapReduce, до HiveQL |
| Тестування інструментів | Інструменти тестування можна використовувати з базовими знаннями експлуатації та меншим навантаженням | Для роботи з інструментом тестування потрібен певний набір навичок та навчання. Крім того, ці інструменти перебувають на початковій стадії розробки, і з часом вони можуть мати нові функції. |
Інструменти, що використовуються у сценаріях великих даних
У таблиці нижче поширені інструменти згруповані за рівнем кластера.
| Великий даних Cluster | Інструменти великих даних |
|---|---|
| NoSQL: | CouchDB, Бази даних MongoDB, Cassandra, Redis, ZooKeeper, HBase |
| MapReduce: | Хадуп, Вулик, Свиня, Каскадний, Оозі, Кафка, S4, MapR, Потік |
| зберігання: | S3, HDFS (розподілена файлова система Hadoop) |
| Сервери: | Еластичний, Heroku, Google Двигун додатків, EC2 |
| Обробка: | R, Yahoo! Труби, Mechanical Turk, BigSheets, Datameer |
Проблеми в тестуванні великих даних
Три практичні перешкоди повторюються майже в кожному проекті великих даних.
- Автоматизація: Тестування автоматизації Для роботи з великими даними потрібна людина з технічними знаннями. Крім того, автоматизовані інструменти не обладнані для вирішення неочікуваних проблем, що виникають під час тестування.
- Віртуалізація: Це один з невід'ємних етапів тестування. Затримка віртуальної машини створює проблеми з часом під час тестування продуктивності великих даних у реальному часі. Крім того, керування зображеннями у великих даних є клопітким.
- Великий набір даних: Три тиски йдуть разом з об'ємом.
- Потрібно перевірити більше даних і зробити це швидше
- Потрібно автоматизувати тестування
- Потрібно мати можливість тестувати на різних платформах
Проблеми тестування продуктивності
- Різноманітний набір технологій: Кожен підкомпонент належить до окремої технології та потребує тестування окремо.
- Недоступність певних інструментів: Жоден окремий інструмент не може виконати комплексне тестування. Наприклад, NoSQL може не підходити для черг повідомлень.
- Тестовий скриптинг: Для розробки тестових сценаріїв та тестових випадків потрібен високий ступінь написання сценаріїв.
- Тестове середовище: Через великий розмір даних потрібне спеціальне тестове середовище.
- Рішення для моніторингу: Існує обмежена кількість рішень, які можуть контролювати все середовище
- Діагностичне рішення: Потрібне спеціальне рішення для детального аналізу вузьких місць продуктивності



