В загальному
Коли у вас достатньо автоматичного тестування, щоб бути впевненим у своїй постійній інтеграції?
Відповідь, ймовірно, стає зрозумілою, якщо ви подумаєте про те, в чому хочете бути впевненим. Зрештою, він відображає 1-1; кожен тест дає вам впевненість у тому, що тестує:
- Тестування одиниць дає вам впевненість, що клас (або модуль) робить те, для чого тестується.
- Інтеграційне тестування дає вам впевненість, що декілька підрозділів працюють разом таким чином, на який перевіряються.
- Тестова перевірка дає впевненість у тому, що вся програма робить певну річ, як це описано в тесті.
Наприклад, із того, як ви сформулювали своє запитання, ви, напевно, зараз думаєте у великому бізнесі, наприклад:
Я хочу бути впевнений , що моє додаток може зробити X .
Таким чином, ви пишете тест для завершення, який намагається зробити X, і перевіряє, чи правильно це робиться.
Більш конкретні
Це все дуже самореференційно, але це тому, що саме так воно і зводиться. Просто цього не більше.
Наприклад, уявіть, що ви пишете додаток для створення рецептів приготування. Однією з особливостей є те, що якщо ви додаєте різні кількості декількох різних видів сиру, це дає вам правильну температуру та час, щоб усі вони плавилися.
Таким чином, ви можете написати одиничний тест для свого CheeseMeltCalculator
, де ви дасте 100 г Ґуда та 200 г сиру Емменталь, а потім перевірте, що температура та час виходять правильними. Це означає, що тепер ви можете бути впевнені, що CheeseMeltCalculator
працює на 100 г сиру і 200 г сиру. Тепер, якщо ви повторите цей тест з 300г Gouda замість 200g, ви можете бути впевнені, що він працює правильно для різних значень. Ви можете додати тести для 0
, -1
і int.MaxValue
г Гауда , щоб бути впевненим в тому , що код не підніжки (або поїздки правильно , як передбачався) для дивного введення.
Ви можете написати тест на інтеграцію, щоб перевірити, CheeseMeltCalculator
чи правильно він включений у весь процес обчислення температури та часу їжі. Якщо це піде не так, але CheeseMeltCalculator
тести, наведені вище, добре, ви можете бути впевнені, що помилка є в інших калькуляторах або в поєднанні даних різних калькуляторів.
І, нарешті, ви можете написати цільовий тест для створення цілого рецепту, і одна з речей, яку ви перевіряєте, - це температура та час результату. Якщо попередні два рівні тестів добре, але це піде не так, то ви знову можете бути впевнені, що ці частини є правильними і помилка полягає в тому, як обчислення температури інтегрується в додаток. Наприклад, можливо, введення користувача неправильно передано.
І, нарешті , якщо всі ці тести добре, тоді ви можете бути впевнені, що " якщо ви додасте різні кількості кількох видів сиру, це дає вам правильну температуру та час, щоб усі вони плавилися "
Довга історія Коротка
Справа в тому, що ви не можете мати тест "він працює правильно". Ви можете перевірити лише "Якщо я зроблю X, Y станеться".
Однак це саме той матеріал, який повинен бути в технічних характеристиках проекту. Заява на зразок " якщо ви додаєте різні кількості кількох різних видів сиру, це дає вам правильну температуру та час, щоб усі вони плавилися " не тільки дає клієнту чіткі очікування щодо того, що буде робити готовий продукт, але і його можна повернути в автоматизовані тести.
додаткова інформація
Користувач Річард додав цю інформацію в редагуванні:
Мартін Фаулер на своєму веб-сайті має дуже приємне резюме про найпоширеніші стратегії: https://martinfowler.com/articles/microservice-testing/
Я не хочу цього видаляти, але хочу сказати так: У порівнянні з цією відповіддю, це не «резюме», а скоріше набагато більш поглиблене пояснення, з приємною графікою і все.
Моя порада була б: Якщо для вас все має сенс після прочитання моєї відповіді, ви закінчите. Якщо все ще здається незрозумілим, відкладіть трохи часу і прочитайте пов’язану статтю.