Go to file
2026-02-20 09:58:40 +03:00
gradle/wrapper initial commit 2026-02-20 09:30:07 +03:00
src initial commit 2026-02-20 09:30:07 +03:00
build.gradle initial commit 2026-02-20 09:30:07 +03:00
gradlew initial commit 2026-02-20 09:30:07 +03:00
gradlew.bat initial commit 2026-02-20 09:30:07 +03:00
images.png initial commit 2026-02-20 09:30:07 +03:00
README.md update varik 2026-02-20 09:58:40 +03:00
settings.gradle initial commit 2026-02-20 09:30:07 +03:00

Лабораторная работа #1 — Модульное тестирование

Дисциплина: Тестирование ПО
Вариант: 342582
Автор: Карпов А.

Структура проекта

src/main/java/ru/akarpov/tpo1/
├── task1/SecFunction.java           — разложение sec(x) в ряд Тейлора
├── task2/BTree.java, BTreeNode.java — B-дерево (maxDegree = 3)
└── task3/                           — доменная модель (8 классов)

src/test/java/ru/akarpov/tpo1/
├── task1/SecFunctionTest.java       — 10 тестов
├── task2/BTreeTest.java             — 16 тестов
└── task3/DomainModelTest.java       — 12 тестов

Задание 1 — sec(x)

Реализовано разложение sec(x) в степенной ряд через числа Эйлера:

sec(x) = Σ E_{2n} · x^{2n} / (2n)!, n = 0..6

Тестовое покрытие: нулевой аргумент, чётность функции, сравнение с 1/cos(x) по таблице значений, сходимость ряда, граница сходимости (|x| → π/2), невалидные аргументы.

Задание 2 — B-дерево

Реализовано B-дерево с maxDegree = 3 (до 2 ключей на узел) с операциями insert, find, delete.

Тестирование методом белого ящика: в алгоритме выделены характерные точки (CREATE_ROOT, SPLIT_ROOT, INSERT_INTO_LEAF, DELETE_FROM_INTERNAL, MERGE_CHILDREN и др.), которые логируются в trace-список. Тесты проверяют последовательность прохождения точек для заданных наборов данных.

Задание 3 — Доменная модель

Текст: «Артур смотрел по сторонам с ужасом и изумлением. Перед ними, на расстоянии, которое он был не в состоянии ни оценить, ни даже осознать, рядами висели в пространстве сумрачные сферические тела, окруженные непонятными конструкциями, сплетенными из металла и света.»

Выделенные сущности: Person, Emotion, Distance, Space, SphericalBody, Construction, Material, Observation.

Person (Артур)
  ├── чувствует → Emotion (HORROR, AMAZEMENT)
  ├── не может оценить → Distance (incomprehensible)
  └── смотрит → Observation
                  ├── Space
                  │     └── rows of SphericalBody (сумрачные)
                  │                  └── Construction (непонятные)
                  │                        └── Material (METAL, LIGHT)
                  └── Distance

images.png

Тестовое покрытие: изолированные тесты каждой сущности + интеграционный тест полной сцены.

Запуск

./gradlew test

Отчёт: build/reports/tests/test/index.html

Технологии

  • Java 21
  • JUnit 5.10.2
  • Gradle