Тестирование
Как мы проверяем работу функций, скорость инструментов, защиту личных данных и удобство выполнения задач.
Мы тестируем все наши пакеты, особенно клиентские инструменты командной строки (CLI), которыми пользуются люди и ИИ-агенты. Здесь можно узнать, что мы проверяем перед обновлением: работают ли функции, быстро ли выполняются задачи и безопасно ли обрабатываются личные данные. Проверки зависят от назначения пакета: общей библиотеки, клиентского инструмента или сайта документации.
Что мы проверяем
| Область | Что проверяем |
|---|---|
| Функциональность | Функции делают обещанное, возвращают правильные результаты и понятно объясняют ошибки. |
| Совместимость | Пакеты работают вместе, обновления сохраняют существующие данные, клиентские инструменты устанавливаются и запускаются на поддерживаемых системах. |
| Качество поиска | Поиск находит полезные источники и ставит лучшие результаты ближе к началу. |
| Производительность | Обычные задачи выполняются быстро, в том числе с большими архивами, без чрезмерного расхода памяти или загрузок. |
| Безопасность | Учётные данные не попадают в журналы и репозитории, данные для агента соответствуют запросу, действия учитывают разрешения. |
| Удобство (UX) | Человек может найти функцию, понять результат и выполнить задачу. |
Мы сочетаем автоматические проверки с ручной оценкой. Успех тестов подтверждает проверенные случаи, но не гарантирует работу в любой возможной ситуации.
Функциональность и опубликованные пакеты
Мы проверяем отдельные части пакета, затем их совместную работу. Для клиентских CLI также устанавливаем и запускаем пакет, который получит пользователь. Это помогает найти проблемы, незаметные в среде разработчика: например, отсутствующий файл или параметр, который не передаётся в общую библиотеку.
Например, поиск в одном чате не должен возвращать сообщения из другого. Если ответ нашёлся в ответном сообщении, фильтры автора и даты всё равно должны соблюдаться. Точный поиск и поиск связанных источников проверяются отдельно; их работа описана в архитектуре поиска.
Тесты пакета остаются рядом с его кодом. Общие средства тестирования и эксперименты находятся в cli-testing. Изменения общей библиотеки также нужно проверять в клиентских инструментах, которые её используют. Например, проверка поиска в опубликованных пакетах запускает настоящие инструменты Telegram и MAX с вымышленными сообщениями и заблокированной сетью.
Обычные проверки выполняются автоматически при разработке. Длительные сравнения скорости и проверки с реальными аккаунтами запускаются отдельно. Повседневные тесты используют вымышленные данные и временные хранилища; проверки реальных аккаунтов используют разрешённые тестовые аккаунты, а приватные результаты не публикуются.
Качество поиска и ранжирование
Найти сообщение по теме и найти ответ — разные задачи. Мы проверяем вопросы с известным ответом, вопросы без ответа в архиве и ответы, которые не повторяют слова вопроса.
Мы также проверяем порядок. Полезный ответ на первом месте экономит больше усилий, чем тот же ответ на десятом.
| Показатель | Что он показывает |
|---|---|
| Success@10 | Как часто хотя бы один полезный результат попадает в первую десятку. |
| Recall@10 | Какая доля известных релевантных материалов попадает в первую десятку. |
| Precision@10 | Какая доля результатов в первой десятке релевантна. |
| MRR | Насколько близко к началу находится первый релевантный результат. |
| nDCG@10 | Идут ли самые полезные результаты первыми, когда одни результаты лучше других. |
Например, 43,8% Success@10 означает, что у 43,8% проверенных вопросов хотя бы один релевантный результат попал в первую десятку. Это не означает, что найдены все нужные сообщения или что ответ стоит первым.
Мы также проверяем, найдены ли полезные сообщения до сортировки: изменение порядка не вернёт пропущенный ответ. Когда вопрос помогает улучшить поиск, он становится примером для разработки. Чтобы понять, помогает ли улучшение в других случаях, нужны новые вопросы. Каждый отчёт указывает, какие показатели он содержит. Расчёты и эксперименты описаны в руководстве по оценке поиска.
Производительность и ресурсы
Мы измеряем время выполнения всей задачи, расход памяти и их изменение с ростом данных. Для поиска это включает поиск сообщений, сортировку, добавление полезных ответов и подготовку результата.
Мы смотрим на обычное время ожидания и более медленные запуски. В отчётах они могут называться p50 (половина измеренных запусков укладывается в это время) и p95 (95% укладываются в него). Первый запуск сравнивается с последующими, а подготовка архива измеряется отдельно от поиска.
Если функция использует загружаемую модель, мы измеряем объём и время загрузки, время запуска и расход памяти. Небольшая загрузка не обязательно означает небольшой расход памяти. В сравнении указываются компьютер и нагрузка, чтобы результат одного устройства не выглядел обещанием для всех. Подробные замеры находятся в экспериментах поиска.
Безопасность и приватность
Мы проверяем, что может раскрыть ваши данные или заставить инструмент сделать то, чего вы не просили:
- Учётные данные в журналах. Пароли, токены доступа и коды входа не должны появляться в журналах, отчётах об ошибках или результатах для ИИ-агента.
- Секреты в репозиториях. Перед публикацией кода мы проверяем файлы и историю изменений на случайно сохранённые учётные данные или личную информацию.
- Данные для агентов. Результат должен содержать данные, запрошенные для задачи, и выбранный контекст. Запрос об одном чате не должен раскрывать посторонние чаты, другие аккаунты или данные входа.
- Действия и разрешения. Чтение сообщения не должно отправлять новое. Мы проверяем, что агент не может сделать запрещённое изменение, а инструкции внутри сообщения не дают дополнительных разрешений.
- Неожиданный ввод и файлы. Мы проверяем обработку некорректных запросов, повреждённых или очень больших файлов и имён, которые могут сохранить загрузку вне выбранной папки. Такие случаи должны обрабатываться безопасно и с соблюдением ограничений.
Мы используем вымышленные данные и тестовые учётные данные, проверяем результаты и журналы, сканируем репозитории и проверяем зависимости на известные проблемы безопасности. Иногда человеку нужно проследить работу кода; один автоматический анализ не доказывает отсутствие любых утечек. Подробная процедура описана в методике безопасности.
О настройках, которыми вы можете управлять, читайте в разделах безопасность и разрешения. Доступ агента через другие инструменты требует отдельных ограничений.
Удобство и документация
Мы проверяем реальные задачи: может ли человек найти нужную команду, понять ошибку и определить, выполнена ли задача? На сайте документации мы пробуем открывать руководства, переходить по ссылкам, пользоваться поиском и копировать инструкции.
Мы проверяем клавиатуру, мобильные экраны, доступность и все поддерживаемые языки. Автоматические проверки находят сломанные ссылки, отсутствующие переводы и некоторые проблемы доступности. Ручная проверка оценивает понятность инструкций, смысл примеров и полезность следующего шага.
При разработке мы ищем ошибки в коде, запускаем тесты функций, проверяем документацию и короткий набор браузерных задач. Перед публикацией автоматическая сборка шире проверяет весь сайт, его ссылки и поведение в браузере. Точные команды для разработчиков находятся в руководствах репозиториев, включая руководство cli-testing.
Чтобы подробнее изучить отдельную проверку, перейдите к связанным средствам тестирования или экспериментам. Их отчёты должны показывать, что проверялось, что прошло успешно и что ещё требует внимания.