4
0
Files
public-tests-2026/README.md
2026-03-08 18:08:25 +00:00

95 lines
5.1 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.
# Тесты к курсу «Язык программирования C++»
Условия лабораторных работ вы можете найти в таблице курса.
Порядок запуска локального тестирования:
1. Склонировать этот репозиторий
```bash
git clone https://gitea.mkorn.me/ai360-cpp/public-tests-2026.git
```
2. Инициализировать [виртуальную среду Python](#виртуальная-среда-python)
3. Скомпилировать разработанную программу
4. Выполнить команду:
```bash
python main.py --executable-path <путь к исполняемому файлу> --suite <набор тестов>
```
*Примечание*. В *nix-подобных системах команда `python` может быть недоступна, вместо неё используйте команду `python3`.
5. Для ускорения отладки рекомендуется создать скрипт, выполняющий шаги 3-4.
6. Для обновления тестов выполнить команду:
```bash
git pull
```
## Лабораторные работы
Ниже представлена таблица доступных для тестирования (как локально, так и автоматически в репозиториях) лабораторных работ с названием набора тестов для тестера (`suite`).
| № | Лабораторная работа | Набор тестов |
|:--:|:--------------------|:-----------------|
| 0 | Интро | `intro` |
| 1 | Представление чисел | `fixed_floating` |
## Скрипт запуска
> [!NOTE]
> Вы можете запустить команду `python main.py --help` для получения справочной информации.
Тестер выполняет тестирование программы методом "чёрного ящика", то есть на вход *input* программа выдаёт какой-то выход *output*, который должен быть правильным с точки зрения текущего теста. Необходимыми и достаточными параметрами [`main.py`](main.py) являются:
* `--executable-path <path/to/executable>` - путь к исполняемому файлу;
* `--suite <name>` - выбор задания (набор тестов).
Поскольку отсутствие оптимизации при сборке и санитайзеры могут замедлить вашу программу, то имеет смысл установить множитель максимального времени исполнения процесса на все тесты:
* `--timeout-factor <float>` - множитель максимального времени исполнения порождённого процесса программы (по умолчанию: `1.0`).
Для генерации полного отчёта (общая информация и информация по каждому тесту) в формате JSON:
* `--report-output-path <filename>` - генерация JSON отчёта с заданным названием файла (по умолчанию: нет генерации).
Имеется возможность проверить программу с поддержанными динамическими анализаторами и дебаггерами:
* `--dynamic-wrapper <choice>` - запуск приложения в обёртке динамического анализатора или дебаггера (по умолчанию: нет обёртки).
*Примечание*. Требуемая операционная система: **Linux**. Обёртки: дебаггер [`gdb`](https://www.sourceware.org/gdb/), динамический анализатор [`valgrind`](https://valgrind.org/).
## Виртуальная среда Python
Для тестирования рекомендуется создать [виртуальную среду `venv`](https://docs.python.org/3/library/venv.html) и тестироваться через неё. Таким образом, можно поднять уровень изоляции от всей системы и избежать установки конфликтующих библиотек:
1. создание новой среды:
```bash
python -m venv venv
```
2. активация текущей командной строки как `venv`:
```bash
source ./venv/bin/activate
# на Linux/MacOS (Bash)
```
```powershell
.\venv\Scripts\Activate.ps1
# на Windows (Powershell)
```
```bat
.\venv\Scripts\activate.bat
REM на Windows (CMD)
```
3. установка всех необходимых для тестирования библиотек:
```bash
pip install -r requirements.txt
```