courses:devops:project

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
courses:devops:project [2022/12/10 09:08]
127.0.0.1 external edit
courses:devops:project [2024/03/01 13:58] (current)
korytov.pavel
Line 34: Line 34:
     * Проверка на соответствие стилю кодирования / бьютификакция - подключаем проверку стиля кодирования (технологии ниже) и встраиваем ее в цепочку запуска     * Проверка на соответствие стилю кодирования / бьютификакция - подключаем проверку стиля кодирования (технологии ниже) и встраиваем ее в цепочку запуска
       * Проверка на pep8 - используем https://​pypi.org/​project/​pep8/​       * Проверка на pep8 - используем https://​pypi.org/​project/​pep8/​
-      * Приведение ​к pep8 - https://pypi.org/project/autopep8/+      * Форматирование Python (yapf) - https://​github.com/​google/​yapf 
 +      * Форматирование Python (black) - https://​github.com/​psf/​black 
 +      * Форматирование ​Python (flake8) ​- https://github.com/​PyCQA/​flake8 
 +      * Форматирование HTML, JS (prettier) - https://​prettier.io 
 +      * Форматирование Python (pindent) - http://​svn.python.org/projects/​python/​trunk/​Tools/​scripts/​pindent.py 
 +      * Форматирование Python (pybetter) - https://​github.com/​lensvol/​pybetter 
 +      * Форматирование Python (ssort) - https://​github.com/​bwhmather/​ssort 
 +      * Форматинование Pyhton (usort) - https://​github.com/facebook/usort
       * Проверка бьютификатором для HTML - https://​pypi.org/​project/​html-linter/​       * Проверка бьютификатором для HTML - https://​pypi.org/​project/​html-linter/​
       * Причесывание бьютификатором HTML - https://​pypi.org/​project/​css-html-prettify/​       * Причесывание бьютификатором HTML - https://​pypi.org/​project/​css-html-prettify/​
Line 40: Line 47:
     * Статический анализ - подключаем статическую проверку (через pylint) и встраиваем ее в цепочку запуска     * Статический анализ - подключаем статическую проверку (через pylint) и встраиваем ее в цепочку запуска
       * **Анализ по 10 существующим критериям** - выберите по 10 уникальных критериев проверки,​ настройте запуск на них и допустите все десять ошибок в коде проекта:​)       * **Анализ по 10 существующим критериям** - выберите по 10 уникальных критериев проверки,​ настройте запуск на них и допустите все десять ошибок в коде проекта:​)
-      * **Создание своего критерия и проверка толко по нему** - проверяем на наличие переменных,​ название которых совпадает с вашим именем +      * **Создание своего критерия и проверка только по нему** - проверяем на наличие переменных,​ название которых совпадает с вашим именем
     * Интеграционные тесты - пишем интеграционные тесты (через requests) и встраиваем их в цепочку запуска     * Интеграционные тесты - пишем интеграционные тесты (через requests) и встраиваем их в цепочку запуска
       * Проверка на коды возврата       * Проверка на коды возврата
       * Проверка на заголовки       * Проверка на заголовки
       * Проверка на загрузку файла       * Проверка на загрузку файла
-    * Selenium - пишем selenium тесты и встраиваем их в цепочку запуска (нельзя использовать для selenium отдельный контейнер,​ реализуйте тесты в рамах контейнера tester) +    * Selenium - пишем selenium тесты и встраиваем их в цепочку запуска (нельзя использовать для selenium отдельный контейнер,​ реализуйте тесты в рамах контейнера tester). ​См. описание ниже.
-      * **Заполнение формы авторизации (включая проверку верстки страницы)** - тест на заполнение формы и проверка ответа сервера,​ + проверка верстки страницы (ее динамической части) +
-      * **Правка html кода страницы** - вносим свои изменения в код страницы (добавляем лишние кнопки,​ меняем атрибуты полям - проверяем) +
-      * **Загрузка и получение файлов** ​ - проверка роутов на загрузку и получение файлов +
-      * **Переадресация,​ корректные коды возврата** - проверка запросов с переадресацией,​ проверка кодов возврата +
-      * **Отлов js исключений в консоли** - для этого задания вам потребуется модифицировать шаблон веб-страницы добавлением обработчика для ошибок js (рекомендую собирать ошибки в атрибут тега), а в selenium проверять содержимое этого тега +
-      * **Получение списка преподавателей кафМОЭВМ** - работаем не с демо приложением,​ а со страницей кафедры на сайте ЛЭТИСилами selenium (через запуск js кода) извлекаем список +
-      * **Поиск и обнаружение ​ошибок в консоли JS** -  +
-      * **Получение списка сертификатов пользователя по ссылке на профиль Stepik** - работаем не с демо приложением, а со stepik.org. Силами selenium (через запуск js кода) извлекаем список +
-      * **Получение списка PR в открытом github репозитории** - +
   * Docker   * Docker
     * Внешний SSH доступ в контейнеры - организуем доступ через протокол SSH контейнер одним из следующих способов:​ или по ключу в каталоге с проектом,​ или генерируем пароль для доступа и сообщаем его при сборке / запуске,​ или генерируем новую пару ключе и выводим их в файлы. Порт для SSH должен быть доступен снаружи docker-compose конфигурации.     * Внешний SSH доступ в контейнеры - организуем доступ через протокол SSH контейнер одним из следующих способов:​ или по ключу в каталоге с проектом,​ или генерируем пароль для доступа и сообщаем его при сборке / запуске,​ или генерируем новую пару ключе и выводим их в файлы. Порт для SSH должен быть доступен снаружи docker-compose конфигурации.
Line 80: Line 78:
       * **Ядра процессора** - ограничьте доступные в каждом контейнере количество ядер ЦПУ до (1 + НОМЕР_ВАРИАНТА % 2) (остаток от деления номера вашего варианта на два)       * **Ядра процессора** - ограничьте доступные в каждом контейнере количество ядер ЦПУ до (1 + НОМЕР_ВАРИАНТА % 2) (остаток от деления номера вашего варианта на два)
       * **Максимальное Количество процессов** - ограничьте до количества НОМЕР_ВАРИАНТА       * **Максимальное Количество процессов** - ограничьте до количества НОМЕР_ВАРИАНТА
 +
 +=== Selenium-тесты ===
 +Задача в написании Selenium-тестов - написать автотесты для нескольких форм ИС ИОТ. Тестовый инстанс находится по адресу https://​dev.digital.etu.ru/​trajectories-test/​.
 +
 +Тест должен включать в себя следующие шаги:
 +
 +  - Авторизация через ETU ID.
 +    * Используйте ваш логин/​пароль из ЛК ЛЭТИ. Укажите их в .env-файле,​ коммитить в репозиторий **не нужно**
 +    * Вы должны получить в системе права администратора. Если не получите - пингуйте нас в Discord.
 +    * В системе все персональные данные заменены на сгенерированные.
 +  - Если ваш вариант включает в себя работу с ОПОП, РП или формой "​Распределение документов",​ авторизуйтесь за пользователя id=1305 (Schimmel Вадим August) на форме "​Авторизация за другого пользователя"​. У этого пользователя есть все права на все документы.
 +  - Проверьте функционирование формы, указанной в задании:​
 +    * Инструкции по формам есть по ссылке:​ https://​digital.etu.ru/​doku.php?​id=navigation:​iot
 +    * Большинство форм включают в себя сохранение какого-то состояния (вкладки документа,​ выдача прав и т.п.). В таком случае задача - ввести в форму какие-то значения (не обязательно осмысленные),​ сохранить,​ обновить страницу и проверить,​ что внесенные данные сохранены.
 +    * В работе с документами - можете создать новый документ или взять существующий в статусе "​черновик"​. Если создаете новый, не забудьте удалить.
 +    * В работе с документами - берите документы с кафедрой,​ соотвествующей вашему положению в таблице "​Варианты заданий"​ (см. ниже). Так мы избежим конфликтов из-за одновременного выполнения тестов.
 +    * В работе с пользователями - берите пользователей,​ у которых фамилия соответствует вашей сгенерированной (можно посмотреть сверху в сайдбаре).
 +  ​
 +=== Перечень кафедр ===
 +
 +Кафедра,​ в которой вы работаете = (ваш номер в "​Варианты заданий"​) % 40 + 1.
 +
 +Кафедры:​
 +
 +  - каф.АМ
 +  - каф.ЛИНС
 +  - каф.ЭПУ
 +  - каф.ИИСТ
 +  - каф.ВМ
 +  - каф.МНЭ
 +  - каф.РАПС
 +  - каф.ЭП
 +  - каф.ЭУТ
 +  - каф.ФЛ
 +  - каф.ИМ
 +  - каф.ТВ
 +  - каф.МОЭВМ
 +  - каф.МСК
 +  - каф.БЖД
 +  - каф.СО
 +  - каф.ВТ
 +  - каф.САПР
 +  - каф.ФЭТ
 +  - каф.Фот
 +  - каф.МВЭ
 +  - каф.ПМИГ
 +  - каф.ИНЯЗ
 +  - каф.ТОЭ
 +  - каф.СП
 +  - каф.ПЭ
 +  - каф.ТОР
 +  - каф.БТС
 +  - каф.РС
 +  - каф.САУ
 +  - каф.ИКГП
 +  - каф.ЭТПТ
 +  - каф.РЯ
 +  - каф.МИТ
 +  - каф.ФХ
 +  - каф.РЭС
 +  - каф.ИЗОС
 +  - каф.АПУ
 +  - каф.ИС
 +  - каф.ФВиС
 +
 +
 +Это не все кафедры ЛЭТИ, только те, по которым есть более 100 РП.
  
 ==== Варианты средней сложности ==== ==== Варианты средней сложности ====
Line 108: Line 173:
 ==== Варианты высокой сложности ==== ==== Варианты высокой сложности ====
  
-Будут, но в 2023.+1. Автоматизация тестирования курсовых по Android 
 + 
 +Идея - разработать набор github actions, которые будут ​по состоянию репозитория проверять (базово) соответствие этапам выполнения работы и генерировать / отображать статус в readme.  
 + 
 +Подробности об этапах:​ 
 + 
 +https://​se.moevm.info/​doku.php/​staff:​courses:​application_development_for_mobile_platforms:​course_work:​topics 
 + 
 +Проверяем:​ 
 +  - Макет и UC (есть вики страницафайл макета загружен в репо) 
 +  - UI на заглушках (если задан нужный тег- проверяем наличие исходников андроид проекта,​ его собираемость через github actions, .gitignore , название пакета ) 
 +  - Юнит-тесты ( тег, сборка и запуск) 
 +  - App is ready (тег, требования,​ запуск,​ запуск стресстестов) 
 +  - Оценка сложности UI вашего приложения (вики станица и ее содержимое) 
 +  - Пояснительная записка (наличие файлов ) 
 +  - Интеграционные тесты ( тег, сборка и запуск) 
 + 
 +Используем в качестве технологий github actions. Сдаем отдельным репо. 
 + 
 +2. Проверка корректности учебных работ на языке Python (командная строка)  
 + 
 +Идея - автоматизировать процесс проверки лабораторных и курсовых работ.  
 + 
 +Для проверки кода - pylint, для тестирования работы в командной строке https://​github.com/​cucumber/​aruba,​ для профилирования работы - valgrind. 
 + 
 +Формат выполнения ​ github actions. Сдаем отдельным репо. 
 + 
 +Этапы проверки 
 +  * Успешная проверка на явные синтаксические проблемы через линтер(не запустится,​ нет комментов,​ невменяемые имена переменных....) 
 +  * Успешное тестирование работы на заранее известных примерах аргументов командной строки (== приложение не падает с заранее известными аргументами ) 
 +  * Стресс-тестирование аргументов командной строки (проверка,​ что если подавать почти рандомные аргументы,​ приложение не сломается. Аргументы необходимо генерировать рандомно,​ но в соответствии с описанием ожидаемой структуры ) 
 +  * Стресс-тестирование stdin 
 +  * Профилирование работы по памяти и времени ( valgrind + time) 
 + 
 +3. Проверка корректности учебных работ на языке С (командная строка)  
 + 
 +Аналогично теме 2, но компилируем в gcc (и проверяем что все ок с компиляцией) + другие линтеры. 
 + 
  
 ===== Правила оценивания ===== ===== Правила оценивания =====
Line 124: Line 227:
 Все работы сдаются только и исключительно в виде PR в репозиторий курса. Подробно:​ Все работы сдаются только и исключительно в виде PR в репозиторий курса. Подробно:​
  
-https://​github.com/​moevm/​devops-1h2022/​blob/​main/​README.md+https://​github.com/​moevm/​devops-1h2024/​blob/​main/​README.md
  
 ===== По работе в selenium ===== ===== По работе в selenium =====
courses/devops/project.1670663296.txt.gz · Last modified: 2023/02/16 08:41 (external edit)