Page 110 - 4190
P. 110

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

            лежно і лише потім з’єднані разом. Це приводить до менших, більш
            спеціалізованих класів, зменшення зв’язаності і більш чистих інтер-
            фейсів. Використання  mock-об’єктів також вносить вклад у модуля-

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

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

            тести достатньо повні. Вони виявляють будь-які непередбачені зміни
            поведінки коду.
                  Тести  можуть  використовувати  як  документацію.  Добрий  код

            розкаже про те, як він працює краще від будь-якої документації. До-
            кументація  і  коментарі в  коді  можуть  застаріти.  Це  може  збивати з
            толку  програмістів,  які  вивчають  код.  А  оскільки  документація,  на

            відміну від тестів, не може сказати, що вона застаріла, такі ситуації,
            коли документація не відповідає дійсності – не рідкість.

                  Недоліки розроблення через тестування

                  1. Головним недоліком TDD є те, що до нього важко звикнути.
                  2. Існують задачі, які неможливо (у крайньому випадку, на поточ-
            ний момент) рішити тільки за допомогою тестів. Зокрема, TDD не до-

            зволяє механічно  продемонструвати адекватність розробленого коду
            в області безпеки даних і взаємодії між процесами. Безумовно, безпе-
            ка основана на коді, в якому не повинно бути дефектів, Але вона ос-

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

                  3. Розроблення через тестування складно застосовувати в тих ви-
            падках, коли для тестування необхідне проходження функціональних
            тестів. Прикладами може бути: розроблення інтерфейсу користувача,

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


                                                             110
   105   106   107   108   109   110   111   112   113   114   115