Files
fission-console/doc/plans/archive-function-upload-tests-2026-05-04.md
T

3.2 KiB
Raw Blame History

План тестирования: загрузка функций из архива (Fission Console)

Дата: 2026-05-04

Цели

  • Проверить корректность загрузки функций из архива для всех поддерживаемых языков (Python, Node.js, Ruby, PHP)
  • Проверить работу линтера, валидацию entrypoint, соответствие языка, структуру архива
  • Проверить обработку ошибок, edge-cases, граничные размеры

Категории тестов

1. Валидные случаи

  • Python: demo.py с def main(), entrypoint demo.main
  • Node.js: demo.js с module.exports = main, entrypoint demo.main
  • Ruby: demo.rb с def main, entrypoint demo.main
  • PHP: demo.php с function main, entrypoint demo.main
  • Архив с несколькими файлами (несколько языков, только один выбран)
  • Архив с подпапками (файл demo.py внутри src/)
  • Entrypoint с нестандартным именем (myfunc.py, entrypoint myfunc.main)

2. Ошибочные случаи

  • Нет файла с нужным именем (entrypoint demo.main, а demo.py отсутствует)
  • Нет функции с нужным именем (demo.py есть, но нет def main)
  • Язык выбран Python, а в архиве только .js
  • Язык выбран Node.js, а в архиве только .py
  • Entrypoint пустой
  • Entrypoint без точки ("main")
  • Архив пустой
  • Архив > 100 KB
  • Суммарный размер файлов > 100 KB (zip bomb)
  • Файл с синтаксической ошибкой (Python, JS, Ruby, PHP)

3. Пограничные случаи

  • demo.py ровно 100 KB
  • Архив с demo.py и demo.js, язык Python, entrypoint demo.main
  • Архив с demo.py и demo.js, язык Node.js, entrypoint demo.main
  • demo.py с def main(event, context)
  • demo.py с def main() и def main2()
  • demo.py с def main : (без скобок)
  • demo.py с декоратором @fission_entry
  • demo.py с не-ASCII именем функции

4. UI/UX

  • Проверка сообщений линтера (ошибки, предупреждения, OK)
  • Проверка отображения имени архива, entrypoint, языка
  • Проверка что после ошибки можно загрузить исправленный архив

Автоматизация

  • Тесты реализовать на Go (backend), Python (pytest), JS (playwright) — по необходимости
  • Для каждого теста: архив, ожидаемый результат, шаги UI/REST, ожидаемое сообщение

Ход выполнения

  • Подготовить тестовые архивы
  • Реализовать автотесты (минимум: backend REST, опционально UI)
  • Зафиксировать результаты в doc/reports/