|
| 1 | +#set page( |
| 2 | + paper: "a4", |
| 3 | + margin: (left: 25mm, right: 15mm, top: 20mm, bottom: 20mm), |
| 4 | +) |
| 5 | + |
| 6 | +#set text( |
| 7 | + font: "JetBrains Mono", |
| 8 | + size: 11pt, |
| 9 | +) |
| 10 | + |
| 11 | +#set par( |
| 12 | + leading: 1.4em, |
| 13 | + justify: true, |
| 14 | +) |
| 15 | + |
| 16 | +#set heading(numbering: "1.") |
| 17 | + |
| 18 | +#let organization = "ФГБОУ высшего профессионального образования «Санкт-Петербургский национальный исследовательский университет информационных технологий, механики и оптики»" |
| 19 | +#let faculty = "Факультет программной инженерии и компьютерной техники (ФПИиКТ)" |
| 20 | + |
| 21 | +#let subject_title = "Тестирование программного обеспечения" |
| 22 | + |
| 23 | +#let student_name = "Малышев Михаил Александрович" |
| 24 | +#let group = "Группа P3311" |
| 25 | + |
| 26 | +#let teacher_name = "Наумова Надежда Александровна" |
| 27 | + |
| 28 | +#let year = "2026" |
| 29 | + |
| 30 | +#align(center)[ |
| 31 | + #v(10mm) |
| 32 | + #text(weight: "bold")[#organization] |
| 33 | + #v(3mm) |
| 34 | + #faculty |
| 35 | + #v(25mm) |
| 36 | + |
| 37 | + #text(weight: "bold", size: 16pt)[Отчёт по лабораторной работе №1] |
| 38 | + #v(6mm) |
| 39 | + #text(weight: "bold")[#subject_title] |
| 40 | + #v(2mm) |
| 41 | +] |
| 42 | + |
| 43 | +#v(30mm) |
| 44 | + |
| 45 | +#align(right)[ |
| 46 | + Выполнил: #student_name \ |
| 47 | + #group \ |
| 48 | + \ |
| 49 | + Преподаватель практики: #teacher_name |
| 50 | +] |
| 51 | + |
| 52 | +#v(25mm) |
| 53 | + |
| 54 | +#align(center)[ |
| 55 | + #year |
| 56 | +] |
| 57 | + |
| 58 | +#pagebreak() |
| 59 | + |
| 60 | += Задание |
| 61 | + |
| 62 | +1. Для указанной функции провести модульное тестирование разложения функции в степенной ряд. Выбрать достаточное тестовое покрытие. |
| 63 | +2. Провести модульное тестирование указанного алгоритма. Для этого выбрать характерные точки внутри алгоритма, и для предложенных самостоятельно наборов исходных данных записать последовательность попадания в характерные точки. Сравнить последовательность попадания с эталонной. |
| 64 | +3. Сформировать доменную модель для заданного текста. Разработать тестовое покрытие для данной доменной модели |
| 65 | +Вариант: |
| 66 | + - Функция sin(x) |
| 67 | + - Программный модуль для работы c B деревьями (количество элементов в ключе - до 5, http://www.cs.usfca.edu/~galles/visualization/BTree.html) |
| 68 | + - Описание предметной области: |
| 69 | + ``` |
| 70 | + В эту ночь "Золотое Сердце" летел, оставляя световые годы между собой и туманностью Конской Головы. Зафод, расположившись под небольшой пальмой на мостике, пытался вправить себе мозги солидными порциями пангалактического бульк-бластера. Форд и Триллиан сидели в уголке, обсуждая жизнь и ее последствия. Артур лежал у себя в каюте и листал фордов экземпляр "Путеводителя по Галактике для автостопщиков". Поскольку ему предстояло здесь жить, рассудил он, пора было начинать знакомиться с местными обычаями. |
| 71 | + ``` |
| 72 | + |
| 73 | += Ход работы |
| 74 | + |
| 75 | +*Ссылка на Pull Request:* |
| 76 | +#link("https://github.com/mip3x/itmo-labs/pull/46") |
| 77 | + |
| 78 | +== Задание 1 |
| 79 | + |
| 80 | +Для функции $sin(x)$ реализовано разложение в ряд Тейлора и подготовлены модульные тесты на корректность вычислений с разными входными значениями и значениями точности $epsilon$. |
| 81 | + |
| 82 | +Тестовое покрытие включает: |
| 83 | +- проверку граничных случаев для $epsilon$ (нулевое и отрицательное значение); |
| 84 | +- проверку характерных классов для $x$ (малые значения, средние значения, значения вблизи $pi/2$, $pi$, $3pi/2$, а также достаточно большое $x$); |
| 85 | +- сравнение результата разложения со стандартной библиотечной функцией $sin(x)$ с заданной допустимой погрешностью; |
| 86 | + |
| 87 | +#figure( |
| 88 | + image("sin-plot.svg", width: 90%), |
| 89 | + caption: [График функции $sin(x)$] |
| 90 | +) |
| 91 | + |
| 92 | +== Задание 2 |
| 93 | + |
| 94 | +Для модуля B-дерева реализованы и протестированы ключевые операции: |
| 95 | +- вставка элементов с поддержкой повторов ключей; |
| 96 | +- поиск элемента в дереве; |
| 97 | +- симметричный обход (in-order); |
| 98 | +- удаление элемента; |
| 99 | + |
| 100 | +При тестировании были выбраны характерные наборы данных: |
| 101 | +- пустое дерево и одиночная вставка; |
| 102 | +- последовательные вставки, приводящие к разделению узла (split); |
| 103 | +- неупорядоченные вставки с проверкой, что итоговый обход остается отсортированным; |
| 104 | +- серия вставок с проверкой поиска существующих и отсутствующих ключей; |
| 105 | +- отдельная проверка поведения на дублирующихся значениях; |
| 106 | + |
| 107 | +== Задание 3 |
| 108 | + |
| 109 | +По заданному тексту сформирована доменная модель сцены с основными сущностями: |
| 110 | +- космический корабль ("Золотое Сердце"); |
| 111 | +- персонажи (Зафод, Форд, Триллиан, Артур); |
| 112 | +- небесный объект ("туманность Конской Головы"); |
| 113 | +- книга; |
| 114 | + |
| 115 | +В модели отражены действия и состояния персонажей (обсуждение, чтение, употребление напитка), а также состояние полета корабля и расстояние до небесного объекта |
| 116 | + |
| 117 | +Для доменной модели разработаны модульные тесты: |
| 118 | +- проверка корректной сборки сцены фабрикой; |
| 119 | +- проверка ограничений доменной логики (например, допустимость параметров методов); |
| 120 | + |
| 121 | +#figure( |
| 122 | + image("domain-model.png", width: 95%), |
| 123 | + caption: [Диаграмма доменной модели] |
| 124 | +) |
| 125 | + |
| 126 | += Заключение |
| 127 | + |
| 128 | +В ходе лабораторной работы реализованы и протестированы: |
| 129 | +- вычисление $sin(x)$ через степенной ряд; |
| 130 | +- модуль B-дерева; |
| 131 | +- доменная модель предметной области; |
| 132 | + |
| 133 | +Для каждой части варианта выбрано практическое тестовое покрытие, включающее граничные и характерные случаи. Результаты модульного тестирования подтвердили корректность основной функциональности и соответствие реализованных компонентов требованиям задания. |
0 commit comments