4
0

+ Intro to C test suite.

This commit is contained in:
SAVELIY BAKTURIN
2026-02-10 13:40:02 +00:00
commit ca1c008cce
8 changed files with 802 additions and 0 deletions

93
README.md Normal file
View File

@@ -0,0 +1,93 @@
# Тесты к курсу «Язык программирования 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
```