tpo1/README.md
2026-02-20 09:58:40 +03:00

71 lines
3.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Лабораторная работа #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](images.png)
Тестовое покрытие: изолированные тесты каждой сущности + интеграционный тест полной сцены.
## Запуск
```bash
./gradlew test
```
Отчёт: `build/reports/tests/test/index.html`
## Технологии
- Java 21
- JUnit 5.10.2
- Gradle