В загальному
Коли у вас достатньо автоматичного тестування, щоб бути впевненим у своїй постійній інтеграції?
Відповідь, ймовірно, стає зрозумілою, якщо ви подумаєте про те, в чому хочете бути впевненим. Зрештою, він відображає 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/
Я не хочу цього видаляти, але хочу сказати так: У порівнянні з цією відповіддю, це не «резюме», а скоріше набагато більш поглиблене пояснення, з приємною графікою і все.
Моя порада була б: Якщо для вас все має сенс після прочитання моєї відповіді, ви закінчите. Якщо все ще здається незрозумілим, відкладіть трохи часу і прочитайте пов’язану статтю.