Page 113 - 4190
P. 113
так, щоб вони повертали при тестуванні одні і ті ж правдоподібні да-
ні. Вони можуть емалювати помилки так, щоб код обробки помилок,
міг бути детально протестований. Іншими прикладами fake-служб,
що корисні при тестуванні, можуть бути: служба кодування, яка не
кодує дані, генератор випадкових чисел, який завжди видасть одини-
цю. Fake- або mock- реалізації є прикладом впровадження залежнос-
ті( dependency injection).
Використання fake- і mock-об’єктів для представлення зовнішньо-
го світу приводить до того, що справжня база даних та інший зовніш-
ній код не будуть протестовані в результаті процесу розроблення че-
рез тестування. Щоб уникнути помилок, необхідні тести реальних ре-
алізацій інтерфейсів, що описані вище. Ці тести можуть бути відділе-
ні від інших модульних тестів і реально є інтеграційними тестами. Їх
необхідно менше, ніж модульних, і вони можуть запускатися рідше.
Тим не менше, найчастіше вони реалізуються, використовуючи ті ж
бібліотеки для тестування (testing framework), що і модульні тести.
Інтеграційні тести, які змінюють дані в базі даних, повинні відмі-
няти стан бази даних до того, який був до запуску тесту, навіть, якщо
тест не пройшов. Для цього часто застосовують такі засоби:
1. Метод TearDown, що наявний в більшості бібліотек для тесту-
вання.
2. Try...catch...finall у структури обробки винятків, там де вони до-
ступні.
3. Трансакція баз даних.
4. Створення знімку(snapshot) бази даних перед запуском тестів і
повернення до нього після закінчення тестування.
5. Скидання бази даних у чистий стан перед тестом, а не після
нього. Це може бути зручно, якщо цікаво переглянути стан бази да-
них, що залишився після непроходження тесту.
Питання для самоконтролю
1. Що собою являє розроблення програмного забезпечення через
тестування?
2. Що означає абревіатура TDD ?
3. Дайте визначення тесту при розробленні програмних продуків?
4. З яких етапів складається тест?
5. Що означає автоматизований модульний тест?
6. Зобразіть графічно цикл розроблення програмного забезпе-
чення через тестування.
113