94 lines
5.1 KiB
Markdown
94 lines
5.1 KiB
Markdown
# Тесты к курсу «Язык программирования 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` |
|
||
|
||
## Скрипт запуска
|
||
|
||
> [!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
|
||
```
|