Щоб завантажити або не завантажити дані для тестових одиниць із зовнішніх файлів


17

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

Компроміс, з яким я постійно боюсь:

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

Чи один із цих антитіл?


Які типи даних?
Джон Рейд

@JonReid: Переважно текст.
DudeOnRock

Відповіді:


11

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

--- Більш детальна відповідь ---

З мого досвіду, я думаю, що це сильно залежить від мети вашого тесту. Ось правило, яке я використовував у минулому, і це допомогло мені вирішити:

Ви насправді тестуєте невелику одиницю коду? (Справжній одиничний тест)

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

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

  1. Цей тест не стосується ясності коду для програмістів (хоча це все ще важливо - хтось повинен це підтримувати), а про те, щоб провести достатньо різних типів даних через цілий фрагмент системи, щоб бути впевненим, що він працює.
  2. Часто я буду писати код сантехніки для завантаження та використання тестових даних, але самі дані створює хтось інший (як правило, в моєму випадку працівник QA). Зазвичай ці люди не є програмістами, тому я не можу очікувати, що вони редагують код.

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


9

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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.