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

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

Тестування на основі даних (Data Driven Testing) – це метод тестування програмного забезпечення, який зберігає тестові дані в таблицях або електронних таблицях, щоб один скрипт міг перевірити багато комбінацій вхідних даних. Він відокремлює тестову логіку від даних, зменшуючи дублювання скриптів та зусилля на обслуговування.

  • 📊 Основна концепція: Один тестовий скрипт зчитує вхідні дані з файлів .xls, .csv, .xml або джерел баз даних і автоматично виконує кожен набір даних.
  • 🧱 Дизайн каркасу: Визначте тестові випадки, напишіть загальні кроки один раз, виведіть дані на зовнішній вигляд, а потім зацикліть скрипт для кожного рядка даних.
  • Підвищення ефективності: Для тестування 1000 комбінацій логінів потрібен один параметризований скрипт замість 1000 окремих скриптів.
  • 🛠️ інструменти: Такі платформи, як Testsigma, Testiny та Testpad керувати параметризованими наборами даних та повідомляти про помилки для кожного рядка даних.
  • Найкраща практика: Використовуйте реалістичні дані, враховуйте позитивні та негативні результати та створюйте динамічні твердження з наборів даних.
  • ⚠️ Компроміс: Якість тестування залежить від навичок автоматизації, а великі набори даних збільшують обсяг роботи з перевірки та обслуговування.

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

Тестування на основі даних

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

Фреймворк, керований даними

Фреймворк, керований даними — це фреймворк для автоматизованого тестування, в якому вхідні значення зчитуються з файлів даних і зберігаються у змінних у тестових скриптах. Він дозволяє тестувальникам створювати як позитивні, так і негативні тестові випадки в одному тесті. Вхідні дані у фреймворку, керованому даними, можуть зберігатися в одному або кількох джерелах даних, таких як .xls, .xml, .csv та бази даних. На діаграмі нижче показано, як вхідні значення надходять з файлу даних у тестовий скрипт.

Фреймворк, керований даними

Чому саме тестування на основі даних?

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

приклад:

Припустимо, що ми хочемо протестувати систему входу з кількома полями введення на 1000 різних наборах даних.

Щоб перевірити це, ви можете скористатися такими різними підходами:

Підхід 1) Створіть 1000 скриптів, по одному для кожного набору даних, і запускайте кожен тест окремо один за одним.

Підхід 2) Вручну змініть значення в тестовому сценарії та запустіть його кілька разів.

Підхід 3) Імпортуйте дані з аркуша Excel. Отримайте тестові дані з рядків Excel по одному та виконайте скрипт.

Серед трьох наведених сценаріїв перші два є трудомісткими та тривалими. Тому ідеально дотримуватися третього підходу.

Таким чином, третій підхід є не що інше, як структура, керована даними.

Типи тестових даних у тестуванні на основі даних

Цінність тестування на основі даних безпосередньо залежить від якості наборів даних, які ви передаєте у свої тестові скрипти. Добре розроблений файл даних поєднує кілька категорій тестових даних, щоб один скрипт міг перевірити нормальну поведінку, обробку помилок та обмеження за один прогін:

  • Позитивні (дійсні) дані: Правильні дані, такі як дійсне ім’я користувача та пароль, що використовуються для підтвердження того, що програма приймає те, що вона повинна приймати.
  • Негативні (недійсні) дані: Неправильні або деформовані дані, які слід відхилити, такі як неправильний пароль або спеціальні символи в числовому полі.
  • Дані про межі: Значення на межах дозволених діапазонів, такі як ім'я користувача з 1 або 255 символів, які часто виявляють приховані дефекти.
  • Пусті або нульові дані: Пусті поля, що перевіряють перевірку обов'язкових полів та повідомлення про помилки.
  • Великі обсяги даних: Масово або випадково згенеровані записи, що використовуються для перевірки продуктивності та стабільності під реальним навантаженням.

Після підготовки правильних даних наступним кроком є ​​створення самої структури.

Як створити фреймворк автоматизації на основі даних

Структура автоматизації на основі даних

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

Крок 1) Визначте тестові приклади

  • Введіть правильні ім’я користувача та пароль – вхід успішний
  • Введіть неправильне ім’я користувача та правильний пароль – Помилка входу
  • Введіть правильне ім’я користувача та неправильний пароль – Помилка входу

Крок 2) Створіть докладні кроки тестування для вищезазначених 3 тестових випадків

Тестовий приклад № Опис Етапи тестування Дані тесту очікувані результати
1 Перевірте логін на наявність дійсних облікових даних
  1. Запустіть програму
  2. Введіть пароль користувача
  3. Натисніть OK
  4. Перевірте результати
Ім'я користувача: дійсний пароль: дійсний Успішний вхід
2 Перевірте логін на недійсні облікові дані
  1. Запустіть програму
  2. Введіть пароль користувача
  3. Натисніть OK
  4. Перевірте результати
Ім'я користувача: неправильний пароль: дійсний Помилка входу
3 Перевірте логін на недійсні облікові дані
  1. Запустіть програму
  2. Введіть пароль користувача
  3. Натисніть OK
  4. Перевірте результати
Ім'я користувача: дійсний пароль: недійсний Помилка входу

Крок 3) Створіть тестовий сценарій

Якщо ви помітили, кроки тестування залишаються спільними для всіх 3 тестових випадків. Вам потрібно створити тестовий скрипт для виконання цих кроків:

// This is Pseudo Code

// Test Step 1: Launch Application
driver.get("URL of the Application");

// Test Step 2: Enter Username
txtbox_username.sendKeys("valid");

// Test Step 3: Enter Password
txtbox_password.sendKeys("invalid");

// Test Step 4: Check Results
If (Next Screen) print success else Fail

Крок 4) Створіть файл Excel/CSV з вхідними тестовими даними, як показано на зразку нижче

Структура автоматизації на основі даних

Крок 5) Змініть скрипт для циклічного перебору вхідних тестових даних. Вхідні команди також повинні бути параметризовані.

// This is Pseudo Code
// Loop 3 Times
for (i = 0; i & lt; = 3; i++) {
    // Read data from Excel and store into variables
    int input_1 = ReadExcel(i, 0);
    int input_2 = ReadExcel(i, 1);

    // Test Step 1: Launch Application
    driver.get("URL of the Application");

    // Test Step 2: Enter Username
    txtbox_username.sendKeys(input_1);
    // Test Step 3: Enter Password

    txtbox_password.sendKeys(input_2);
    // Test Step 4: Check Results
    If(Next Screen) print success
    else Fail
}

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

  • Введіть неправильне ім’я користувача та пароль – помилка входу
  • Введіть правильне ім’я користувача та пароль – Помилка входу
  • Введіть порожнє ім’я користувача та порожній пароль – Помилка входу

І так далі

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

Щойно ваша структура готова, правильний інструмент спрощує керування даними, виконання та звітність.

Найкращий інструмент для тестування на основі даних

1) Testsigma

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

Під час моїх проектів з тестування на основі даних я використовував можливості параметризації Testsigma для виконання ідентичних тестових сценаріїв на основі кількох комбінацій даних із зовнішніх джерел, таких як файли Excel та CSV. Здатність платформи перебирати рядки даних автоматично значно розширила охоплення моїх тестів, а детальна звітність про результати на рівні даних допомогла мені швидко визначити, які конкретні комбінації вхідних даних спричинили збої на веб-, мобільному та API-рівнях.

Testsigma

Особливості гри:

  • Інтеграція зовнішніх джерел даних: Ця функція забезпечує пряме підключення до електронних таблиць Excel, файлів CSV та таблиць бази даних для централізованого керування тестовими даними. Вона усуває жорстко закодовані значення та дозволяє вам підтримувати тестові дані незалежно від логіки тестування. Ви можете оновлювати набори даних без зміни тестових скриптів, що забезпечує гнучкість та зручність обслуговування. Я використовую це для ефективного керування сотнями варіацій даних, зберігаючи при цьому...ping тестові сценарії чисті та придатні для повторного використання.
  • Автоматизована ітерація багаторядкових даних: Testsigma автоматично виконує тестові сценарії для кількох рядків даних за один тестовий прогін, значно розширюючи охоплення. Ви можете перевірити численні комбінації вхідних даних, граничні умови та варіації бізнес-правил без дублювання тестових випадків. Ця функція прозоро обробляє послідовність даних та логіку ітерацій. Я вважаю це особливо ефективним для комплексного регресійного тестування з мінімальними накладними витратами на обслуговування скриптів.
  • Параметризація кроку динамічного тестування: Це дозволяє замінити статичні значення динамічними параметрами, які отримують дані із зовнішніх джерел під час виконання. Ви можете налаштувати кроки тестування для адаптації до різних вхідних даних, умов та очікуваних результатів на основі значень набору даних. Ця функція підтримує складні перетворення даних та умовну логіку. Я покладаюся на неї для створення гнучких тестових сценаріїв, які враховують різноманітні бізнес-вимоги та робочі процеси користувачів.
  • Звітування про виконання на рівні даних: Платформа генерує детальні звіти, які розбивають результати тестування за окремими комбінаціями даних, показуючи точно, які вхідні дані пройшли тестування, а які ні. Ви можете аналізувати закономірності, виявляти проблемні діапазони даних та tracзбої в певних рядках набору даних. Ця функція надає візуальні інформаційні панелі та експортовану аналітику для спілкування із зацікавленими сторонами. Я рекомендую використовувати ці висновки для визначення пріоритетів покращення якості даних та вдосконалення стратегій тестування даних.
  • Підтримка кросплатформних систем на основі даних: Testsigma розширює можливості тестування на основі даних для веб-, мобільних пристроїв та API-тестування в рамках уніфікованих робочих процесів. Ви можете застосовувати ті самі набори даних для перевірки узгодженості на різних рівнях додатків та технологіях. Ця функція забезпечує комплексну наскрізну перевірку з параметризованими потоками даних. Я використовував її, щоб перевірити, чи правильно обробка даних на серверній частині відображається у фронтенд-інтерфейсах на кількох платформах одночасно.

Плюси

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

мінуси

  • Мені довелося ретельно керувати наборами даних, оскільки великі обсяги можуть швидко призвести до плутанини

ціни:

  • Ціна: Індивідуальне ціноутворення з можливостями тестування на основі даних, включеними до комплексного плану підписки
  • Безкоштовний пробний період: 14-денна безкоштовна пробна версія

Відвідайте Testsigma >>

14-денна безкоштовна пробна версія


2) Testiny

Testiny — це сучасна хмарна платформа для управління тестовими випадками, яку я використовував для ефективної організації тестових випадків на основі даних, зберігаючи при цьомуping чіткий розмежування між тестовою логікою та параметризованими наборами даних. Він створений для команд, яким потрібно керувати різноманітними комбінаціями даних протягом багатьох тестових запусків без втрати tracлегкість.

Під час виконання проектів, керованих даними, з TestinyМені сподобалося, як його функції масового редагування та шаблонів дозволили легко масштабувати варіації тестів на сотні рядків даних. Платформа інтегрується з Jira, GitHub та GitLab, тому невдалі комбінації даних посилаються на проблему. tracавтоматично.

Testiny

Особливості гри:

  • Редагування масового тестового випадку: Testiny дозволяє редагувати, дублювати та параметризувати багато тестових випадків одночасно, що пришвидшує створення варіацій на основі даних. Ви можете застосовувати зміни до різних папок за лічені секунди, не торкаючись кожного випадку окремо. Я покладаюся на це, розширюючи охоплення на нові набори даних без переписування скриптів.
  • Налаштовувані поля для введення даних: Це дозволяє визначати власні поля для кожного проєкту, щоб атрибути набору даних можна було змінювати tracзберігається разом із кожним тестовим запуском. Ви можете чітко записувати вхідні значення, очікувані результати та умови в одному місці. Я використовую ці поля, щоб складні параметризовані сценарії було легко перевіряти пізніше.
  • Тестовий запуск у реальному часі Tracking: Платформа відображає статус виконання в реальному часі всіма членами команди, тому тестування на основі даних залишаються прозорими. Ви можете призначати випадки, відстежувати відсотки успішних/неуспішних тестів та виявляти заблоковані комбінації даних у міру їх виникнення. Я вважаю це корисним для keeping Керівники з контролю якості інформовані без постійних зустрічей щодо статусу.
  • PDF-файли та звіти для спільного використання: Testiny генерує чіткі PDF-звіти з діаграмами та зведеннями виконання, якими можна поділитися з нетехнічними зацікавленими сторонами. Ви можете фільтрувати за набором даних, етапом або релізом. Я надсилаю їх в кінці кожного спринту, щоб повідомити про стан якості.
  • Рідний випуск TracІнтеграції ker: Він підключається до Jira, GitHub, GitLab, Azure DevOps, лінійний, Asana, Confluence, Trello та monday.com, щоб рядки даних, що не вдалися, швидко перетворювалися на заявки. Ви можете узгодити робочі процеси виконання тестів та інженерії. Я помітив, що це значно зменшує тертя у передачі обов'язків між командами контролю якості та розробки.

Плюси

  • Я помітив, що масове редагування спрощує підтримку тестів на основі даних, навіть коли набори даних зростають.
  • З'єднувальний Testiny до нашої дошки Jira знадобилося кілька хвилин, і невдалі комбінації даних одразу видавалися як квитки.
  • Переклад повідомлень tracking дає мені чітке уявлення про те, які комбінації даних все ще очікують на виконання в будь-якому запуску

мінуси

  • Мені бракувало вбудованих розширених перехоплювачів автоматизації API для дуже великих параметризованих регресійних наборів

ціни:

  • Ціна: Безкоштовний план для максимум 3 користувачів; платні плани масштабуються за кількістю місць та додають преміум-підтримку
  • Безкоштовний пробний період: 21-денна безкоштовна пробна версія

Visit Testiny >>

21-денна безкоштовна пробна версія


3) Testpad

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

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

Testpad

Особливості гри:

  • Ієрархічні контрольні списки тестів: Testpad організовує параметризовані тести у вкладені контрольні списки, щоб ви могли групувати пов'язані варіанти даних під одним батьківським випадком. Ви можете розгортати та згортати гілки, щоб зосередитися на певних наборах даних. Я використовую це для візуального оформлення складних матриць даних.
  • Редагування за допомогою клавіатури: Він дозволяє створювати, робити відступи та змінювати порядок тестових елементів за допомогою комбінацій клавіш, що дозволяє швидко створювати великі плани на основі даних. Ви можете залишатися в процесі, не тягнучись за мишею. Я вважаю, що це значно скорочує час отримання нових рядків набору даних.
  • Доступ для гостьових тестувальників: Testpad підтримує необмежену кількість гостьових тестувальників без плати за кожне робоче місце, що дозволяє залучати експертів у певній предметній області для певних комбінацій даних. Ви можете запросити зацікавлених сторін для перевірки граничних випадків без додаткових витрат на ліцензування. Я покладаюся на це під час прийняття користувачем параметризованих сценаріїв.
  • Звіти, якими можна миттєво поділитися: Платформа генерує легкі звіти, якими можна поділитися за посиланням, тож прогрес видно без відкриття інструменту. Ви можете фільтрувати за тестером, статусом або гілкою тестування. Я надсилаю їх менеджерам продуктів після кожного тестування на основі даних.
  • Питання TracПосилання ker: Він пов'язує невдалі тести із заявками Jira або GitHub за допомогою простих посилань, тому помилки рядків даних швидко спрямовуються до розробників. Ви можете додавати контекст безпосередньо з елемента контрольного списку, що не вдався. Я дозволяю тестувальнику зосередитися на виконанні, дозволяючи інструментам керувати маршрутизацією.

Плюси

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

мінуси

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

ціни:

  • Ціна: Вартість планів починається від 59 доларів США на місяць, а для більших команд доступні індивідуальні корпоративні плани.
  • Безкоштовний пробний період: 30-денна безкоштовна пробна версія

Visit Testpad >>

30-денна безкоштовна пробна версія

Найкращі практики тестування на основі даних

Нижче наведено найкращі практики тестування на основі даних:

  • Ідеально використовувати реалістичну інформацію під час процесу тестування на основі даних
  • Навігацію тестового потоку слід закодувати в тестовому сценарії
  • Керуйте віртуальними API значущими даними
  • Використовуйте дані для керування динамічними твердженнями
  • Тест як позитивний, так і негативний
  • Перепрофілюйте функціональні тести на основі даних для безпеки та продуктивності

Переваги тестування на основі даних

Тестування на основі даних пропонує багато переваг. Деякі з них:

  1. Дозволяє тестувати програму з кількома наборами значень даних під час Регресійне тестування
  2. Тестові дані та дані перевірки можуть бути організовані лише в одному файлі, і він відокремлений від логіки тестового випадку.
  3. Завдяки цьому інструменту можна зберігати тестові скрипти в одному репозиторії. Це спрощує розуміння, підтримку та управління тестами.
  4. Дії та функції можна повторно використовувати в різних тестах.
  5. Деякі інструменти генерують тестові дані автоматично. Це корисно, коли потрібні великі обсяги випадкових тестових даних, що допомагає заощадити час.
  6. Тестування на основі даних можна виконувати на будь-якому етапі розробки. Тестові випадки на основі даних зазвичай об'єднуються в один процес. Однак їх можна використовувати в кількох тестових випадках.
  7. Дозволяє розробникам і тестувальникам чітко відокремлювати логіку своїх тестових випадків/сценаріїв від тестових даних.
  8. Одні й ті ж тестові випадки можна виконувати кілька разів, що допомагає зменшити кількість тестових випадків та скриптів.
  9. Будь-які зміни в тестовому скрипті не впливають на тестові дані

Недоліки тестування на основі даних

Деякі недоліки методу автоматизованого тестування на основі даних:

  1. Якість тестування залежить від навичок автоматизації команди впроваджувачів
  2. Валідація даних – це трудомістке завдання під час тестування великої кількості даних.
  3. Підтримка є великою проблемою, оскільки для тестування на основі даних потрібен великий обсяг коду.
  4. Потрібні технічні навики високого рівня. Тестеру, можливо, доведеться вивчити абсолютно нову мову сценаріїв.
  5. Буде більше документації, здебільшого пов'язаної з управлінням скриптами, тестовою інфраструктурою та результатами тестування.
  6. Для створення та підтримки файлів даних потрібен текстовий редактор, наприклад Блокнот.

Тестування на основі даних проти тестування на основі ключових слів

Початківці часто плутають тестування на основі даних з тестуванням на основі ключових слів, оскільки обидва підходи відрізняють розробку тестів від тестових скриптів. Різниця полягає в тому, що екстерналізується: тестування на основі даних екстерналізує вхідні значення, тоді як тестування на основі ключових слів екстерналізує самі дії як ключові слова повторного використання. У таблиці нижче порівнюються ці два підходи:

Параметр Тестування на основі даних Тестування на основі ключових слів
Що екстерналізовано Тестові дані (вхідні дані та очікувані результати) Тестові дії (ключові слова, такі як Вхід, Клік, Перевірка)
Джерело даних Таблиці Excel, CSV, XML або бази даних Таблиці ключових слів плюс додаткові таблиці даних
Необхідні навички Помірні знання скриптів Більше початкових зусиль для проектування; менше коду для створення нових тестів
Найкраще підходить для Повторення одного сценарію з багатьма комбінаціями вхідних даних Створення багатьох сценаріїв з блоків дій, що повторно використовуються
технічне обслуговування Оновлення файлів даних без дотику до скриптів Оновлювати бібліотеку ключових слів, коли змінюється поведінка програми

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

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

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

Selenium з TestNG or JUnit, UFT, та хмарні платформи, такі як Testsigma підтримуйте це. Будь-яка мова, яка може читати зовнішні файли, включаючи Java, Python, та C#, можуть реалізувати фреймворк, керований даними.

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

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

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

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