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
   108   109   110   111   112   113   114   115   116   117   118