Підручник з тестування великих даних: що таке, стратегія, як тестувати

⚡ Розумний підсумок

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

  • 🔘 Основний фокус: Перевіряється обробка даних по всьому кластеру, а не окремі функції продукту.
  • ☑️ Три фази: Стадіювання даних, MapReduce та перевірка виводу формують кожен тестовий цикл Hadoop.
  • Якість даних понад усе: Відповідність, точність, дублювання, узгодженість, валідність та повнота перевіряються перед тестуванням програми.
  • 🧪 Archiпитання текстури: Служби продуктивності та відновлення після відмови підтверджують, що кластер переживає збій вузла без втрати пропускної здатності.
  • 🛠️ Параметри налаштування: Вимірюються структура сховища, журнали комітів, паралельність, кешування, тайм-аути та налаштування JVM.
  • ⚠️ Відомі проблеми: Прогалини в навичках автоматизації, затримка віртуальних машин та величезні набори даних ускладнюють тестування великих даних.

Посібник з тестування великих даних, що охоплює стратегію, фази тестування Hadoop та тестування продуктивності

Що таке тестування великих даних?

Тестування великих даних (Big Data Testing) – це процес тестування програми для роботи з великими даними, метою якого є забезпечення належної роботи всіх функцій програми. Мета тестування великих даних – забезпечити безперебійну та безпомилкову роботу системи обробки великих даних, зберігаючи при цьому продуктивність та безпеку.

Великі дані – це сукупність великих наборів даних, які неможливо обробити за допомогою традиційних обчислювальних методів. Тестування цих наборів даних передбачає використання різних інструментів, методів та фреймворків для обробки. Великі дані стосуються створення, зберігання, пошуку та аналізу даних, які вирізняються обсягом, різноманітністю та швидкістю. Ви можете дізнатися більше про Великий даних, Hadoop та MapReduce перш ніж розпочати тестування.

Що таке стратегія тестування великих даних?

Тестування застосунку для великих даних – це радше перевірка його обробки даних, ніж тестування окремих функцій програмного продукту. Коли йдеться про тестування великих даних, ключовими є тестування продуктивності та функціональності.

У стратегії тестування великих даних, інженери з контролю якості перевіряють успішну обробку терабайтів даних за допомогою кластера стандартних даних та інших допоміжних компонентів. Це вимагає високого рівня навичок тестування, оскільки обробка відбувається дуже швидко. Обробка може бути трьох типів:

  • Пакетна обробка: Збережені дані обробляються за розкладом, тому тести спрямовані на виконання завдання та його точність.
  • Обробка в реальному часі: Записи обробляються одразу після надходження, тому тести спрямовані на виявлення затримки та втрати даних.
  • Інтерактивна обробка: Аналітики надсилають запити безпосередньо, тому тести орієнтовані на час відповіді на спеціальні запити.

На діаграмі нижче підсумовано стратегію.

Діаграма стратегії тестування великих даних, що показує типи обробки даних, перевірені інженерами з контролю якості

Поряд з цим, якість даних також є важливим фактором у тестуванні Hadoop. Перед тестуванням програми необхідно перевірити якість даних, і це слід розглядати як частину тестування бази даних. Це включає перевірку різних характеристик, таких як відповідність, точність, дублювання, узгодженість, валідність, повнота даних тощо. Далі в цьому посібнику з тестування 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 включає тестування величезних обсягів структурованих та неструктурованих даних, і для тестування таких масивних даних потрібен специфічний підхід.

Наведений нижче робочий процес показує послідовність, якої дотримується тест продуктивності.

Робочий процес підходу до тестування продуктивності: від налаштування кластера великих даних до оптимальної конфігурації

Тестування продуктивності виконується в такому порядку.

  1. Процес починається зі створення кластера великих даних, продуктивність якого має бути протестована.
  2. Визначте та спроектуйте відповідні навантаження
  3. Підготовка індивідуальних клієнтів (створюються власні сценарії)
  4. Виконати тест та проаналізувати результати (якщо цілі не досягнуті, то налаштувати компонент та виконати його повторно)
  5. Оптимальна конфігурація

Параметри для тестування продуктивності

Різні параметри, які необхідно перевірити для тестування продуктивності:

  • Зберігання даних: Як дані зберігаються в різних вузлах
  • Журнали комітів: Наскільки дозволено збільшувати журнал комітів
  • Паралельність: Скільки потоків можуть виконувати операції запису та читання
  • Кешування: Налаштуйте параметри кешу «кеш рядків» та «кеш ключів»
  • Час очікування: Значення часу очікування з’єднання, часу очікування запиту тощо.
  • Параметри 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 може не підходити для черг повідомлень.
  • Тестовий скриптинг: Для розробки тестових сценаріїв та тестових випадків потрібен високий ступінь написання сценаріїв.
  • Тестове середовище: Через великий розмір даних потрібне спеціальне тестове середовище.
  • Рішення для моніторингу: Існує обмежена кількість рішень, які можуть контролювати все середовище
  • Діагностичне рішення: Потрібне спеціальне рішення для детального аналізу вузьких місць продуктивності

Поширені запитання

Якість даних перевіряється в рамках тестування бази даних, перед початком тестування програми. Тестери перевіряють відповідність, точність, дублювання, узгодженість, валідність та повноту, а також шукають нулі, проблеми з кодуванням та зміщення стовпців.

Штучний інтелект генерує синтетичні тестові дані, які відображають виробничий процес, не розкриваючи приватні записи, позначає аномалії конвеєра, які пропускають фіксовані правила, та визначає пріоритети перевірок валідації для виконання. Перевірка бізнес-логіки людиною залишається важливою.

Copilot та подібні агентські помічники пришвидшують шаблонний код: запити порівняння HiveQL, PySpark твердження та скрипти узгодження. Спочатку запустіть згенерований код на завідомо справному наборі даних, оскільки правдоподібний запит може перевірити неправильні стовпці.

Перевірка схеми підтверджує, що вхідні записи містять очікувані поля, типи та нульові значення, перш ніж вони потраплять до HDFS або NoSQL-сховища. Виявлення дрейфу схеми при отриманні коштує набагато менше, ніж tracпізніше виведення пошкодженого виводу.

Команди поєднують масковану підмножину, вибірку з робочої області, згенеровані записи, що підкреслюють граничні випадки, такі як нулі та викиди, та відтворені історичні потоки. Вибірка сама по собі є ризикованою, оскільки рідкісні записи спричиняють помилки, які варто знайти.

ETL-тестування перевіряє структуровані завантаження у сховище за допомогою визначених інструментів та передбачуваних обсягів. Тестування великих даних охоплює структуровані та неструктуровані дані на розподіленому кластері, де валідація виконується на MapReduce або HiveQL.

Виміряйте коефіцієнт прийому повідомлень порівняно з розміром повідомлення, додайте журнал обробки, щоб підтвердити відновлення черги, та завершіть роботу вузла посеред потоку, щоб перевірити, чи нічого не втрачено. Порівняйте підраховане вікно подій джерела з вікном приймача.

SQL та HiveQL, одна мова для MapReduce або Spark вакансії, практичні знання HDFS та NoSQL-сховища, а також написання скриптів для тестових систем. Аналітичне мислення важливіше, оскільки не існує єдиного комплексного інструменту.

Підсумуйте цей пост за допомогою: