Page 112 - 4190
P. 112

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

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

            роблення через тестування про те, наскільки це осмислено тестувати
            private-  і    protected-методи  та  дані.  Один  переконаний,  що  досить
            протестувати  будь-який  класс  тільки  через  його  public-інтерфейс,
            оскільки private-члени – це лише деталі реалізації, яка може змінюва-

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

            лише ускладнить ситуацію: модульне  тестування передбачає тесту-
            вання найменших можливих модулів функціональності.
                  Fake-,  mock  –  об’єкти  та  інтеграційні  тести.  Модульні  тести

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

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

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

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

            тися.
                  2. Інтерфейс повинен мати дві реалізації. Перша, власне надає до-
            ступ до ресурсу, і друга, що є fake- або mock-об’єктом. Все, що робить

            fake- об’єкти, це додають повідомленням вигляду «Об’єкт person збе-
            режено» в лот, щоб потім перевірити правильність поведінки.  Mock-
            об’єкти  відрізняються  від    fake-об’єктів  тим,  що  самі  містять  твер-

            дження  (assertion), що перевіряють поведінку коду, який тестується.
            Методи fake- і mock-об’єктів, що повертають дані, можна налагодити

                                                             112
   107   108   109   110   111   112   113   114   115   116   117