Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
labs_dsc.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
104.96 Кб
Скачать

Завдання 3. Пишемо тести для Graph (4 бали)

Створити набір тестів для вашої специфікації Graph. Хоча деякі початкові тести надаються разом з умовою, вам доведеться написати свої власні тестові випадки. Не намагайтеся запускати тести доки не виконаєте пункт 4 даної роботи.

Як і в попередніх лабораторних роботах, ви буде писати JUnit тести для методів класу Graph. Ви маєте писати свої юніт-тести в одному або декількох класах (залежно від способу реалізації).

На додаток до JUnit тестів, ви будуватимете додаткові тести у форматі, визначеному в розділі «формат файлу тестового скрипта». Кожен тест повинен складатися з файлу "тест", що містить послідовність команд, і файлу "очікується", з виводом який очікується від виконання команд. Імена файлів повинні починатися з "lab4" і мати однакове базове ім'я, але з закінченнями ".test" і ".expected", відповідно. Наприклад, ви можете мати командний файл з ім'ям "lab4TestAdd.test" з очікуваним виводом у файлі "lab4TestAdd.expected". Імена тест-файлів повинні бути інформативними, а окремі тести повинні мати коментарі, які пояснюють призначення кожного з тестів. Ці файли повинні розташовуватись у пакеті з тестами разом з ScriptFileTests.java. При запуску ScriptFileTests, він знайде усі тестові файли в поточному каталозі та запустить їх, зберігаючи їхні виводи як "lab4TestAdd.actual" (наприклад). Потім він порівнює фактичний файл з файлом очікувань і генерує помилку, якщо вони різні.

Додайте до своїх тестів кілька абзаців документації пояснюючи обрану стратегію тестування. Розмістіть це у lab4/answers/problem3.txt. Пам'ятайте, що будь-які специфікаційні тести, додані вами повинні задовольняти викладацьку специфікацію, іншими словами, вони повинні виконуватись без помилок для будь-якої працюючої реалізації цього завдання. Будь-які інші тести повинні йти в ImplementationTests. Це означає, що юніт-тестів для методів, які є специфічними для вашої реалізації, навіть якщо ви оголосили ці методи відкритими і написали специфікацій Javadoc коментарі до них, повинні йти в ImplementationTests.

Завдання 4. Реалізуємо Graph (8 бали)

  1. Надайте реалізацію вашого типу - орієнтований граф. Ми просимо, щоб ви спершу турбувалися про хороший дизайн, ніж про продуктивність. Тим не менш, майте на увазі, що в кінцевому підсумку ваш додаток для пошуку шляху буде створювати і працювати з графами дуже великих розмірів, тож масштабованість вашої реалізації графу матиме важливе значення. Оскільки алгоритму пошуку шляху часто доводиться шукати дочірні вузли до даного вузла, ця операція повинна бути виконана швидко, навіть для великих розмірів графу (в ідеалі за фіксовану кількість часу). Ваші операції для побудови графа повинна також бути досить ефективним. Через те, що ваша реалізація, ймовірно, використовуватиме класи з стандартних бібліотеки колекцій, ви повинні розуміти, обчислювальну складність таких класів, як HashMap і ArrayList.

  2. У декількох пунктах, коротко опишіть ваше подання і поясніть, чому ви вибрали саме його. Порівняйте його, з принаймні ще одним іншим поданням, яке ви розглядали. Ви повинні помістити це обговорення в файл з ім'ям lab4/answers/problem4.txt.

  3. Додайте відповідну функцію абстракції та інваріант подання до вихідного коду вашого типу даних Graph (це стосується і будь-якого іншого абстрактного типу даних, який ви створите). На даний момент, ви також повинні реалізувати приватний метод checkRep (). Це допоможе виявляти помилки у реалізації.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]