русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Автономне налагодження модуля.


Дата додавання: 2014-10-07; переглядів: 922.


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

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

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

До достоїнств висхідного тестування ставляться

  • простота підготовки тестів і
  • можливість повної реалізації плану тестування модуля.

Це пов'язане з тим, що тестовий стан інформаційного середовища готується безпосередньо перед звертанням до модуля, що налагоджується

Недоліками такого виду тестування є:

  • тестові дані готуються, як правило, не в тій формі, що розрахована на користувача (крім випадку, коли налагоджує останній, головний, модуль програм);
  • великий обсяг налагоджуваємого програмування (при налагодженні одного модуля часто доводиться становити для різних тестів багато ведучих налагоджуємих модулів);
  • необхідність спеціального тестування сполучення модулів.

До достоїнств спадного тестування ставляться наступні його особливості:

  • більшість тестів готується у формі, розрахованої на користувача;
  • у багатьох випадках щодо невеликий обсяг програмування (імітатори модулів, як правило, досить прості й кожний придатний для великого числа, нерідко - для всіх, тестів);
  • відпадає необхідність тестування сполучення модулів.

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

Виходячи з того, що спадне тестування, у принципі, є кращим, зупинимося на прийомах, що дозволяють якоюсь мірою перебороти зазначені труднощі. Насамперед необхідно організувати налагодження програми таким чином, щоб якомога раніше були налагоджені модулі, що здійснюють уведення даних, - тоді тестові дані можна готовити у формі, розрахованої на користувача, що істотно спростить підготовку наступних тестів. Далеко не завжди це уведення здійснюється в головному модулі, тому доводиться в першу чергу налагоджувати ланцюжка модулів, що ведуть до модулів, що здійснюють зазначене уведення (порівн. з методом цілеспрямованої конструктивної реалізації в лекції 7). Поки модулі, що здійснюють уведення даних, не налагоджені, тестові дані поставляються деякими імітаторами: вони або включаються в імітатор як його частина, або вводяться цим імітатором.

При спадному тестуванні деякі стани інформаційного середовища, при яких потрібно тестувати модуль, можуть не виникати при виконанні програми ні при яких вхідних даних. У цих випадках можна був б взагалі не тестувати модуль, тому що помилки, що виявляються при цьому, не будуть проявлятися при виконанні програми ні при яких вхідних даних. Однак так надходити не рекомендується, тому що при змінах програми (наприклад, при супроводі ПЗ) не використані для тестування модуля стану інформаційного середовища можуть уже виникати, що вимагає додаткового тестування цього модуля (а цього при раціональній організації налагодження можна було б не робити, якщо сам даний модуль не змінювався). Для здійснення тестування модуля в зазначених ситуаціях іноді використовують підходящі імітатори, щоб створити необхідний стан інформаційного середовища. Частіше ж користуються модифікованим варіантом спадного тестування, при якому модулі перед їхньою інтеграцією попередньо тестуються окремо (у цьому випадку в оточенні модуля з'являється ведучий модуль, поряд з імітаторами модулів, до яких може звертатися модуль). Однак, представляється більше доцільної інша модифікація спадного тестування: після завершення спадного тестування модуля для досяжних тестових станів інформаційного середовища треба його окремо протестувати для інших необхідних станів інформаційного середовища.

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

Досить важливим при автономному налагодженні є тестування сполучення модулів. Справа в тому, що специфікація кожного модуля програми, крім головного, використовується в цієї програми у двох ситуаціях: по-перше, при розробці тексту (іноді говорять: тіла) цього модуля й, по-друге, при написанні звертання до цього модуля в інших модулях програми. І в тім, і в іншому випадку в результаті помилки може бути порушена необхідна відповідність заданої специфікації модуля. Такі помилки потрібно виявляти й усувати. Для цього й призначене тестування сполучення модулів. При спадному тестуванні тестування сполучення здійснюється попутно кожним новим тестом, що, що вважають найдужчим достоїнством спадного тестування. При висхідному тестуванні звертання до модуля виробляється не з модулів програми, що налагоджується, а із провідного відладочного модуля. У зв'язку із цим існує небезпека, що останній модуль може пристосуватися до деяким "оманам" модуля, що тестується. Тому приступаючи (у процесі інтеграції програми) до налагодження нового модуля доводиться тестувати кожне звертання до раніше налагодженого модуля з метою виявлення непогодженості цього обігу з тілом відповідного модуля (і не виключено, що винувато в цьому раніше налагоджений модуль). Таким чином, доводиться частково повторювати в нових умовах тестування раніше налагодженого модуля, при цьому виникають ті ж труднощі, що й при спадному тестуванні.

Автономне тестування модуля доцільно здійснювати в чотири послідовно виконуваних кроки.

Крок 1. На підставі специфікації модуля підготуйте тест для кожної можливості й кожної ситуації, для кожної границі областей припустимих значень всіх вхідних даних, для кожної області зміни даних, для кожної області неприпустимих значень всіх вхідних даних і кожної неприпустимої умови.

Крок 2. Перевірте текст модуля, щоб переконатися, що кожний напрямок будь-якого розгалуження буде пройдене хоча б на одному тесті. Додайте відсутні тести.

Крок 3. Переконаєтеся по тексту модуля, що для кожного циклу існує тест, для якого тіло циклу не виконується, тест, для якого тіло циклу виконується один раз, і тест, для якого тіло циклу виконується максимальне число раз. Додайте відсутні тести.

Крок 4. Перевірте по тексту модуля його чутливість до окремих особливих значень вхідних даних - всі такі значення повинні входити в тести. Додайте відсутні тести.


<== попередня лекція | наступна лекція ==>
Аксіоми налагодження. | Комплексне налагодження програмного засобу.


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн