Тест-датасет (Test Data) – це набір даних, які використовуються для виконання тестів під час тестуванна ПЗ. Ці дані вводяться у тести для перевірки різних аспектів програмного продукту, таких як правильність роботи, відповідність вимогам, ефективність та інші характеристики. Тест-датасети можуть включати в себе різні види даних, такі як числа, рядки, дати, файли, зображення тощо, в залежності від конкретного тестового сценарію. Основні аспекти тест-датасетів:
Відповідність вимогам | Тест-датасети повинні відображати реальні умови використання програмного продукту та включати дані, які можуть виникнути в реальному середовищі. |
Репрезентативність | Дані в тест-датасетах повинні бути достатньо репрезентативними, щоб враховувати різноманітність можливих сценаріїв використання. |
Граничні значення | Тест-датасети часто включають в себе граничні значення, які перевіряють межі допустимих значень і можуть призвести до помилок. |
Тестові сценарії | Кожен тестовий сценарій може вимагати власного тест-датасету, який відображає умови саме цього тесту. |
Повторне використання | Тест-датасети можна використовувати повторно для різних тестів або в різних частинах тестового циклу. |
При розробці тестів і виборі тест-датасетів важливо враховувати реальні умови використання продукту та забезпечувати відповідність вимогам та ефективне виявлення помилок. Тест-датасети визначають вхідні дані для тестів і можуть суттєво впливати на покриття тестування та якість виявлення дефектів.
Тест-датасети можуть включати різноманітні дані та інформацію в залежності від типу тестів та конкретних вимог проєкту. Нижче подано приклади різних видів даних, які можуть бути включені до тест-датасетів:
Числові дані | ◦ Цілі числа. ◦ Дійсні (з плаваючою комою) числа. ◦ Великі та малі значення для перевірки меж та роботи з екстремальними значеннями. |
Рядкові дані | ◦ Тексти різної довжини. ◦ Спеціальні символи та символи з різних алфавітів. ◦ Дані з пробілами або іншими спеціальними символами. |
Дані дат та часу | ◦ Дати з різних періодів (сьогодні, минуле, майбутнє). ◦ Різні формати дат та часу. ◦ Дані, які включають в себе зміну часового поясу або літній/зимовий час. |
Дані для тестів граничних значень | Границі допустимих значень параметрів, межі допустимого діапазону. |
Дані для тестів на введення | ◦ Коректні дані, щоб перевірити правильність обробки валідних вхідних даних. ◦ Некоректні дані, щоб перевірити обробку невалідних вхідних даних. |
Дані для тестів на функціональність | ◦ Вхідні дані, що відображають різні сценарії використання продукту. ◦ Дані, які перевіряють взаємодію з іншими частинами системи. |
Дані для тестів на продуктивність | ◦ Великі обсяги даних для перевірки ефективності та завантажувальної здатності. |
Дані для тестів безпеки | ◦ Дані, що можуть викликати помилки безпеки (SQL-ін’єкції, переповнення буфера тощо). ◦ Дані для тестування доступу до обмежених ресурсів. |
Дані для тестування інтерфейсів | Дані для введення через різні інтерфейси (веб, мобільний, API). |
Дані для тестів на відновлення | Дані, які моделюють втрату з’єднання чи аварійне вимкнення системи. |
Переваги
Використання тест-датасетів у тестуванні має численні переваги, які сприяють підвищенню ефективності тестового процесу. Деякі з основних переваг включають:
Реалістичність тестів | Тест-датасети можуть відображати реальні умови використання продукту, допомагаючи впевнитися, що тести проводяться в умовах, близьких до реального використання. |
Покриття різноманітних сценаріїв | Тест-датасети дозволяють вам покривати різноманітні сценарії використання, включаючи граничні умови, неправильні вхідні дані та інші аспекти, що сприяє високій якості тестування. |
Впевненість в правильності результатів | З використанням тест-датасетів можна більш впевнено стверджувати, що результати тестів є об’єктивними і релевантними для реального використання продукту. |
Автоматизація тестування | Тест-датасети є важливим елементом автоматизованих тестів. Вони дозволяють легко повторювати тести з різними вхідними даними та аналізувати результати. |
Спрощення створення тестів | Застосування тест-датасетів полегшує створення тестових сценаріїв. Замість ручного введення великої кількості даних можна використовувати готові тест-датасети або автоматизовані генератори тестових даних. |
Прискорення процесу тестування | Завдяки попередньому підготовленню тест-датасетів можна ефективно виконувати тести та отримувати результати швидше, що важливо для процесу Continuous Integration / Continuous Delivery (CI/CD). |
Масштабованість тестового процесу | Тест-датасети дозволяють розширювати обсяг тестів і визначати, як продукт веде себе при великій кількості різних вхідних даних. |
Покращення виявлення помилок | Тест-датасети допомагають виявляти різні види помилок, такі як проблеми з обробкою великих обсягів даних, некоректними вхідними даними та інших. |
Складнощі
Хоча використання тест-датасетів має численні переваги, в тому числі покращення реалістичності тестів та ефективності тестового процесу, також можуть виникати деякі складнощі.
Неадекватність тестових даних | Якщо тест-датасети не відображають реальні умови використання продукту, це може призвести до недостатньої валідації та недооцінки можливих проблем. |
Складність управління тест-датасетами | Управління великою кількістю тест-датасетів може бути складною задачею. Потрібно враховувати версії, зберігання та організацію тестових даних. |
Великі обсяги даних | Деякі тестові сценарії можуть вимагати великих обсягів тестових даних, що може призвести до складнощів у зберіганні, обробці та швидкості виконання тестів. |
Невідповідність базі даних | Якщо тестові датасети використовуються для тестування баз даних, можуть виникнути проблеми невідповідності структури тестових даних реальним даним. |
Специфічність для конкретного тесту | Деякі тест-датасети можуть бути специфічними для конкретного тесту, що обмежує їхню універсальність та можливість повторного використання. |
Необхідність оновлення | Під час розвитку проєкту тестові сценарії та вимоги можуть змінюватися, що вимагає адаптації тест-датасетів. |
Конфіденційність даних | Якщо тест-датасети містять конфіденційні дані, це може викликати проблеми з безпекою та вимагати особливого оброблення. |
Труднощі з управлінням залежностями між тестами | Якщо тести використовують спільні дані, виникає питання управління залежностями між тестами та визначенням порядку виконання. |
Інструменти
Існує ряд інструментів, які можна використовувати для підготовки тест-датасетів, залежно від конкретних вимог проєкту та специфіки тестових завдань.
Excel або інші електронні таблиці | Електронні таблиці, такі як Microsoft Excel чи Google Sheets, можуть бути використані для створення і редагування тест-датасетів. Вони надають зручний інтерфейс та можливості часткової автоматизації завдяки макросам та формулам. |
Генератори тестових даних | Існують спеціальні інструменти для генерації випадкових чи реалістичних тестових даних. Приклади цих інструментів включають Faker (для різних мов програмування), Mockaroo, DataFactory та інші. |
SQL-запити | Для тестування можна використовувати SQL-запити для створення, оновлення чи видалення тестових даних. Це може бути корисно, зокрема, при тестуванні систем, що використовують бази даних. |
API для генерації даних | Деякі компанії та сервіси надають API для генерації тестових даних. За допомогою таких API можна отримати реалістичні дані для тестування. |
Спеціалізовані інструменти для тестування баз даних | Деякі інструменти, такі як DbUnit для Java чи tSQLt для Microsoft SQL Server, можуть допомагати в підготовці та управлінні тестовими даними в базах даних. |
Середовища розробки та інструменти тестування | Інколи тестові дані можна підготовити за допомогою розробницьких середовищ та інструментів тестування, таких як Eclipse, Microsoft Visual Studio, Atom, SlickEdit. |
Важливо вибирати інструмент відповідно до конкретних потреб вашого проєкту та враховувати його ефективність у підготовці тестових даних для різних видів тестів.
В цьому відео поговоримо про:
00:00 Тест-датасети
06:13 Переваги
09:56 Складнощі
14:15 Інструменти