МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах
РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ" ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах Гендерна антидискримінаційна експертиза може зробити нас моральними рабами ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів
Контакти
Тлумачний словник Авто Автоматизація Архітектура Астрономія Аудит Біологія Будівництво Бухгалтерія Винахідництво Виробництво Військова справа Генетика Географія Геологія Господарство Держава Дім Екологія Економетрика Економіка Електроніка Журналістика та ЗМІ Зв'язок Іноземні мови Інформатика Історія Комп'ютери Креслення Кулінарія Культура Лексикологія Література Логіка Маркетинг Математика Машинобудування Медицина Менеджмент Метали і Зварювання Механіка Мистецтво Музика Населення Освіта Охорона безпеки життя Охорона Праці Педагогіка Політика Право Програмування Промисловість Психологія Радіо Регилия Соціологія Спорт Стандартизація Технології Торгівля Туризм Фізика Фізіологія Філософія Фінанси Хімія Юриспунденкция |
|
|||||||
TDD (Test-Driven Development)TDD є однією з основоположних частин XP (eXtreme Programming). Ідеї, покладені в основу XP, направлені на те, щоб зробити процес розробки ПЗ простішим і мати короткі, повторювані цикли розробки з постійним зворотнім зв’язком щодо стану програмної системи. TDD дає можливість розробляти складні програмні системи шляхом виконання простих ітерацій, в яких тести задають напрямок розвитку дизайну та реалізації системи. Найскладнішим у використанні TDD є зміна уявлень програміста про способи побудови коду програми. Замість створення проекту, який описує, які програмні одиниці потрібно створити, створюються тести, кожен з яких описує, як повинна функціонувати маленька програмна одиниця системи. Ці тести визначають дизайн коду, який буде реалізовувати дані програмні одиниці системи. TDD базується на двох методологіях – unit-тестуванні та рефакторингу. Загальна схема розробки при використанні TDD така: 1. Написати тест, який визначає, як, на думку автора, маленька програмна одиниця повинна поводитись. 2. Створити програмну одиницю якомога простішими засобами так, щоб вона пройшла тест. 3. Здійснити рефакторинг коду, зробивши його більш якісним і перевіряючи за допомогою тестів його правильність після внесення кожної зміни. Оскільки TDD є ітеративним процесом, то потрібно повторювати дані кроки, поки не буде досягнуто бажаної якості коду. При використанні TDD системні вимоги (наприклад, сформовані у вигляді use cases) декомпонуються в набір дій, виконання яких приведе до виконання вимог. Для кожної з даних дій спочатку пишеться unit-тест, який повинен перевірити правильність виконання даної дії. Разом зі створенням тесту визначаються чіткі критерії, за якими можна визначити, коли написано достатньо коду для виконання заданої дії. Однією з переваг попереднього написання тестів є те, що це допомагає чіткіше визначити бажану поведінку системи та дати відповіді на деякі основні питання її проектування. Приклад. Однією з вимог до програми є визначити процент влучності баскетболіста за гру та за сезон. З вимоги можна визначити ряд дій, які повинна робити програмна одиниця: – ідентифікувати гравця; – ввести дані, необхідні для визначення проценту влучності в грі; – ідентифікувати гру; – обрахувати середній процент влучності за гру; – обрахувати процент влучності за сезон. Зробивши спрощене припущення, що гравці ідентифікуватимуться за ім’ям, а ігри за датою, можна написати код: Player wally = PlayerList.getPlayer("Wally Wiffer"); // Get playerwally.addGameA("8/9/2003",15,30);wally.addGameA("8/16/2003",25,75);wally.addGameA("8/23/2003",4,16);float gameA = wally.getGameA("8/9/2003"); // Get average for game on 8/9float seasonA = wally.getA(); // Get average seasonassertEquals(0.5, gameA); // Check game average calculationassertEquals(0,36, seasonA); // Check season average calculationНаписавши даний тест, маємо, що потрібно створити класи PlayerList та Player. В PlayerList повинен бути метод getPlayer(String), а в Player – addGameA(String, int, int), getGameA(String), getA(). Коли тест написано, він повинен бути запущений. Спочатку він, звичайно, повинен виконатись з помилками (оскільки код самої програми ще не створено) – це покаже, що сам тест запускається і функціонує. Потім пишеться програма до того часу, поки в тестах не зникнуть помилки. Потім проводиться рефакторинг; після кожного виду рефакторингу знову запускаються тести для перевірки, чи не зруйновано правильність коду. Потім іде перехід до наступної дії програми з повторенням тих же кроків. Даний інкрементальний підхід заставляє програміста здійснювати постійний рефакторинг коду і приводить до того, що зменшується небезпека "занадто-проектування" (overdesign) системи і створення роздутого коду, оскільки код додається невеликими, прорефакториними порціями. Коли розробляється більше і більше коду, число тестів швидко збільшується і створюється ціла система тестів, яку можна виконати в будь-який момент. Дана система тестів є важливою в TDD, тому що її можна використовувати для постійного моніторингу програмної системи і миттєвого виявлення проблем. Оскільки тести виконуються регулярно впродовж процесу розробки, вони допомагають оперативно виявляти і виправляти помилки. Це робить процес розробки ПЗ більш безпечним в плані помилок.
|
||||||||
|