Kaynağa Gözat

Merge branch 'master' of u21-25prischep/ISRPO into master

ypv 2 ay önce
ebeveyn
işleme
cabce06f1e

+ 29 - 0
Лекции/DDos/Прищеп_DDoS.md

@@ -0,0 +1,29 @@
+# Эволюция DDoS-атак
+## Введение
+ - **Определение DDoS-атаки (Distributed Denial of Service)**: Это атака, направленная на перегрузку сервера, сети или веб-ресурса, с
+   целью сделать их недоступными для пользователей. Используются тысячи или даже миллионы устройств, которые одновременно отправляют запросы на сервер.
+  - **Опасности DDoS-атак**: Основной опасностью является потеря доступа к ресурсам, финансовые потери, ущерб репутации и возможное использование атак для сокрытия других видов злоумышленной активности.
+  - **Рост числа атак**: Статистика показывает, что число DDoS-атак значительно увеличилось в последние годы, а также возросли их
+   масштабы и сложность.
+
+## Ранние DDoS-атаки
+- **Первые атаки (1990-е годы)**: Начало эры DDoS-атак можно отнести к 1990-м годам, когда стали использоваться такие методы как **SYN Flood** и **Ping of Death**.
+-- **SYN Flood**: Атака, при которой злоумышленник посылает множество запросов на установление соединения, не завершая их, что вызывает перегрузку сервера.
+-- **Ping of Death**: Атака, использующая искаженные пакеты ICMP (ping), что могло вызвать сбои в работе операционных систем.
+- **Отсутствие сложных инструментов**: В то время DDoS-атаки проводились вручную, и для этого использовались команды типа `ping` и другие базовые утилиты.
+
+## Эра ботнетов и IoT
+- **Появление ботнетов**: С развитием интернета и увеличением числа подключенных устройств, злоумышленники стали использовать **ботнеты** — сети зараженных компьютеров, которые контролируются удаленно для проведения атак.
+-- **Mirai и атака на Dyn DNS в 2016 году**: Этот инцидент стал одним из самых крупных в истории, когда ботнет Mirai использовал уязвимости в IoT-устройствах (веб-камеры, маршрутизаторы и другие устройства) для атаки на Dyn DNS. Это привело к значительному сбою в работе многих крупных интернет-ресурсов, таких как Twitter, Netflix и Reddit.
+- **IoT-устройства как цель атак**: Устройства интернета вещей (например, камеры видеонаблюдения, умные телевизоры и даже термостаты) часто обладают уязвимостями, которые позволяют злоумышленникам контролировать их и использовать для проведения DDoS-атак.
+![enter image description here](https://f1comp.ru/wp-content/uploads/2019/10/1-1.png)
+## Современные тенденции
+- **Терабитные атаки**: Современные атаки могут достигать гигантских масштабов. Атаки в несколько терабит в секунду становятся все более частыми и могут выводить из строя даже самые мощные серверы.
+- **Новые методы атак**:
+-- **DNS Amplification**: Эта атака использует уязвимости в протоколе DNS для усиления мощности атаки. Злоумышленник отправляет запросы к DNS-серверам, которые отвечают большим объемом данных, направленных на целевой сервер.
+-- **Атаки на уровне приложений (HTTP Flood)**: Современные атаки не ограничиваются только уровнями сети и транспортного уровня. Атаки на уровне приложений, например HTTP Flood, могут вызывать перегрузку серверов путем отправки большого количества HTTP-запросов, что сложнее для защиты.
+![enter image description here](https://www.baeldung.com/wp-content/uploads/sites/4/2023/01/http.png)
+- **Искусственный интеллект в DDoS-атаках**: Некоторые группы киберпреступников начали использовать **ИИ** и **машинное обучение** для повышения эффективности атак. Искусственный интеллект позволяет более точно выбирать цели, адаптироваться к мерам защиты и даже подстраиваться под изменения в инфраструктуре атакуемых сервисов.
+
+## Заключение
+Эволюция DDoS-атак от простых техник в 90-х до сложных, многоплатформенных атак с использованием ИИ в настоящее время подчеркивает значительную угрозу для современных интернет-ресурсов. Защита от таких атак требует комплексных мер, включая использование распределенных систем защиты, мониторинг трафика и улучшение безопасности IoT-устройств.

+ 8 - 0
Лекции/DDos/Прищеп_DDoS_В.md

@@ -0,0 +1,8 @@
+Что такое DDoS-атака?  
+Атака, перегружающая сервер или сеть для их недоступности.
+
+Что использовали для атак в 1990-х?  
+Простые методы, например, SYN Flood и Ping of Death.
+
+Какие устройства используют сейчас для атак?
+IoT-устройства, такие как камеры и маршрутизаторы.

+ 57 - 0
Лекции/JUnit/JUnit.md

@@ -0,0 +1,57 @@
+
+# JUnit
+### История и развитие JUnit
+JUnit был создан в 1997 году Кентом Беком и Эрихом Гаммой для тестирования Java-программ. Это один из первых фреймворков для модульного тестирования, который стал стандартом в разработке на Java благодаря своей простоте и эффективности.
+-   **JUnit 3**: Первая популярная версия, которая ввела аннотации и концепцию тестовых наборов.
+-   **JUnit 4**: Представлена в 2006 году, добавила поддержку аннотаций из Java 5, что упростило создание и выполнение тестов.
+-   **JUnit 5**: Включает модульную архитектуру, позволяющую расширять функциональность через плагины.
+
+На протяжении времени JUnit стал основой для разработки тестов благодаря своей интеграции с IDE и инструментами сборки.
+
+### Основные компоненты JUnit
+
+#### JUnit 4
+
+-   **Описание**: Фреймворк для модульного тестирования Java-приложений.
+-   **Особенности**: Использование аннотаций (@Test, @Before, @After), поддержка исключений и таймаутов.
+-   **Преимущества**: Простота использования, интеграция с популярными IDE.
+
+#### JUnit 5
+
+-   **Описание**: Последняя версия, обеспечивающая модульную архитектуру.
+-   **Особенности**: Поддержка динамических тестов, расширяемость через плагины.
+-   **Преимущества**: Гибкость, поддержка новых возможностей Java.
+
+### Преимущества JUnit
+
+1.  **Интеграция с инструментами разработки**:
+    
+    -   Поддержка популярных IDE (Eclipse, IntelliJ IDEA).
+    -   Интеграция с системами сборки (Maven, Gradle).
+2.  **Открытый исходный код**:
+    
+    -   Бесплатное использование.
+    -   Активное сообщество, которое поддерживает и развивает фреймворк.
+3.  **Поддержка различных версий Java**:
+    
+    -   Совместимость с различными версиями Java.
+    -   Возможность использования новых функций языка.
+4.  **Автоматизация тестирования**:
+    
+    -   Легкость в написании и выполнении тестов.
+    -   Поддержка сложных сценариев тестирования.
+
+### Недостатки JUnit
+
+1.  **Ограниченная поддержка других языков**:
+    
+    -   Основной фокус на Java, ограниченная поддержка других JVM-языков.
+2.  **Требования к изучению**:
+    
+    -   Необходимость изучения аннотаций и структуры тестов.
+3.  **Отсутствие встроенной поддержки отчетности**:
+    
+    -   Требуется использование сторонних инструментов для генерации отчетов.
+    
+**Заключение**  
+JUnit — это мощный инструмент для модульного тестирования Java-приложений, который предлагает множество преимуществ, таких как интеграция с инструментами разработки и поддержка различных версий Java. Однако он также имеет свои ограничения, включая фокус на Java и необходимость изучения структуры тестирования. Несмотря на эти ограничения, JUnit остается популярным выбором среди разработчиков благодаря своей открытости и поддержке сообщества. Выбор этого инструмента зависит от конкретных потребностей и контекста проекта.

+ 9 - 0
Лекции/JUnit/JUnit_Вопросы.md

@@ -0,0 +1,9 @@
+В каком году была представлена JUnit 4? В 2006 году.
+
+Какие основные преимущества JUnit? Интеграция с инструментами разработки, открытый исходный код, поддержка различных версий Java, автоматизация тестирования.
+
+Какая версия JUnit включает модульную архитектуру?JUnit 5.
+
+Какие языки поддерживает JUnit? Основной фокус на Java, с ограниченной поддержкой других JVM-языков.
+
+Какие недостатки у JUnit? Ограниченная поддержка других языков, необходимость изучения аннотаций и структуры тестов, отсутствие встроенной поддержки отчетности.

+ 66 - 0
Лекции/Selenium/Selenium.md

@@ -0,0 +1,66 @@
+
+# Selenium
+### История и развитие Selenium
+
+Selenium был создан в 2004 году Джейсоном Хьюггинсом, инженером компании ThoughtWorks, для автоматизации тестирования веб-приложений. Первоначально это был внутренний инструмент, но вскоре он стал популярным благодаря своим возможностям.
+
+-   **Selenium Core**: Первая версия, позволявшая выполнять тесты прямо в браузере, используя JavaScript.
+-   **Selenium RC (Remote Control)**: Разработан для преодоления ограничений политики безопасности браузеров. Позволял писать тесты на различных языках программирования.
+-   **Selenium WebDriver**: Представлен в 2009 году, стал более мощным и гибким инструментом, заменив Selenium RC. Он взаимодействует с браузерами напрямую, что обеспечивает более точное и быстрое выполнение тестов.
+-   **Selenium Grid**: Позволяет распределять тесты по разным машинам и браузерам, обеспечивая параллельное выполнение.
+-   **Selenium IDE**: Запущен как плагин для браузера Firefox, позволяющий записывать и воспроизводить тесты без написания кода.
+    
+На протяжении времени Selenium стал стандартом в области автоматизации тестирования веб-приложений благодаря своей гибкости, поддержке множества языков программирования и активному сообществу разработчиков.
+
+
+### Основные компоненты Selenium
+
+#### Selenium WebDriver
+-   **Описание**: Инструмент для автоматизации взаимодействия с веб-браузерами. WebDriver управляет браузерами напрямую, что обеспечивает более точное и быстрое выполнение тестов.
+-   **Особенности**: Поддержка множества языков программирования (Java, C#, Python и др.) и браузеров (Chrome, Firefox, Safari, Edge).
+-   **Преимущества**: Высокая производительность, возможность тестирования динамического контента.
+
+#### Selenium IDE
+-   **Описание**: Инструмент для записи и воспроизведения тестов, доступный как плагин для браузеров.
+-   **Особенности**: Простой интерфейс, не требует навыков программирования, подходит для быстрого создания прототипов тестов.
+-   **Преимущества**: Легкость использования, возможность экспорта тестов в код для дальнейшего использования в WebDriver.
+
+#### Selenium Grid
+-   **Описание**: Инструмент для параллельного выполнения тестов на разных машинах и в различных браузерах.
+-   **Особенности**: Позволяет распределять тестовые нагрузки, ускоряет процесс тестирования за счет одновременного выполнения тестов.
+-   **Преимущества**: Экономия времени, возможность масштабирования тестового окружения.
+
+Эти компоненты делают Selenium мощным инструментом для автоматизации тестирования веб-приложений.
+
+
+### Преимущества Selenium
+
+1.  **Кроссбраузерное тестирование**:
+    
+    -   Поддерживает многие популярные браузеры, такие как Chrome, Firefox, Safari, Edge и Opera.
+    -   Обеспечивает возможность тестирования веб-приложений в разных средах.
+2.  **Открытый исходный код**:
+    -   Бесплатное использование без лицензионных затрат.
+    -   Большое и активное сообщество, которое постоянно обновляет и улучшает инструмент.
+3.  **Поддержка различных языков программирования**:
+    -   Гибкость в выборе языка: Java, Python, C#, Ruby и другие.
+    -   Возможность интеграции с другими инструментами и фреймворками.
+4.  **Автоматизация сложных сценариев**:
+    -   Поддержка динамического контента и сложных пользовательских взаимодействий.
+    -   Возможность написания сложных тестовых сценариев.
+
+### Недостатки Selenium
+
+1.  **Ограничения в тестировании графики**:
+    -   Трудности с тестированием графических элементов, таких как изображения и видео.
+    -   Не всегда эффективно для тестирования интерфейсов с богатой графикой.
+2.  **Требования к настройке**:
+    -   Необходимость установки и настройки драйверов для каждого браузера.
+    -   Требует времени на настройку окружения и инфраструктуры для тестирования.
+3.  **Отсутствие встроенной поддержки отчетности**:
+    -   Необходимо использовать сторонние инструменты или писать собственные решения для генерации отчетов о тестировании.
+4.  **Поддержка мобильных приложений**:
+    -   Ограниченная поддержка тестирования мобильных приложений по сравнению с веб-приложениями.
+
+**Заключение**
+Selenium — это мощный и гибкий инструмент для автоматизации тестирования веб-приложений, который предлагает множество преимуществ, таких как кроссбраузерное тестирование и поддержка различных языков программирования. Однако он также имеет свои недостатки, включая сложности с тестированием графических элементов и требования к настройке. Несмотря на эти ограничения, Selenium остается популярным выбором среди тестировщиков благодаря своей открытости и поддержке сообщества. Выбор этого инструмента зависит от конкретных потребностей и контекста проекта.

+ 10 - 0
Лекции/Selenium/Selenium_вопросы.md

@@ -0,0 +1,10 @@
+Когда был создан Selenium и кем? Selenium был создан в 2004 году Джейсоном Хьюггинсом, инженером компании ThoughtWorks.
+
+Что такое Selenium WebDriver и когда он был представлен? Selenium WebDriver — это инструмент для автоматизации взаимодействия с веб-браузерами, представленный в 2009 году.
+
+Какую функцию выполняет Selenium Grid? Selenium Grid позволяет распределять тесты по разным машинам и браузерам, обеспечивая параллельное выполнение.
+
+Какие языки программирования поддерживает Selenium WebDriver? Selenium WebDriver поддерживает Java, C#, Python и другие языки программирования.
+
+Какие основные ограничения есть у Selenium? Основные ограничения включают сложности с тестированием графических элементов и требования к настройке окружения.
+

+ 57 - 0
Лекции/TestNG/TestNG.md

@@ -0,0 +1,57 @@
+
+
+# TestNG
+
+**История и развитие TestNG**
+TestNG был разработан в 2004 году Эвом Салалей и представляет собой мощный фреймворк для автоматизации тестирования в Java. Он был создан для устранения недостатков существующих фреймворков, таких как JUnit, и для обеспечения большей гибкости и функциональности в процессе тестирования.
+
+**Начало разработки**: Создание TestNG стало реакцией на необходимость более современных инструментов для тестирования, которые могли бы поддерживать сложные сценарии и аннотации.
+
+**Адаптация современных принципов:** TestNG включил поддержку аннотаций, что позволяет более интуитивно создавать тестовые сценарии и конфигурацию тестов.
+
+**Поддержка множества парадигм тестирования**: TestNG не только поддерживает юнит-тестирование, но и функциональное, интеграционное и даже end-to-end тестирование.
+
+**Слияние с другими инструментами**: Успешно интегрируется с различными фреймворками и инструментами, такими как Selenium, для повышения производительности тестирования.
+
+
+
+## *Основные компоненты TestNG**:
+
+**TestNG Annotations**
+**Описание**: Аннотации в TestNG упрощают процесс создания и настройки тестовых методов.
+**Особенности**: Используемые аннотации включают @Test, @BeforeSuite, @AfterSuite и другие, позволяющие задавать порядок выполнения тестов и конфигурацию.
+**Преимущества**: Это делает тестирование более читаемым и управляемым.
+
+**TestNG XML Configuration**
+**Описание:** Файлы конфигурации XML позволяют удобно управлять настройками тестов.
+**Особенности:** Позволяет задавать группы тестов, запускать их в параллельном режиме и упрощает создание отчетов.
+**Преимущества**: Упрощает организацию тестирования и предоставляет гибкость в конфигурации.
+
+**Reporting**
+**Описание:** TestNG автоматически генерирует отчеты о выполнении тестов.
+**Особенности:** Отчеты содержат информацию о пройденных и неудачных тестах, включая логи и стек-трейсы.
+**Преимущества**: Позволяет быстро оценить состояние тестов, облегчая анализ результатов.
+Преимущества TestNG
+
+**Гибкость в конфигурации тестов:**
+Позволяет легко создавать и настраивать тестовые группы и зависимости между тестами.
+Поддержка параллельного выполнения тестов значительно ускоряет процесс тестирования.
+
+**Поддержка различных типов тестирования:**
+TestNG подходит как для юнит-тестирования, так и для интеграционного и функционального тестирования, что делает его универсальным инструментом.
+
+**Легкость в использовании и интеграции**:
+Легко интегрируется с различными фреймворками, такими как Selenium, и другими инструментами CI/CD, что делает его универсальным решением для автоматизации тестирования.
+Недостатки TestNG
+
+**Необходимость изучения нового синтаксиса:**
+Если у команды уже есть опыт работы с другими фреймворками, изучение аннотаций и структуры TestNG может занять время.
+
+**Ограниченная поддержка для статики и динамики контента:**
+Несмотря на это, TestNG сам по себе не поддерживает специфические функции тестирования, которые требуют вмешательства других инструментов.
+
+**Не всегда идеально для очень сложных сценариев:**
+В некоторых случаях, возможно, потребуется более глубокая кастомизация и настройка для сложных тестовых сценариев.
+
+**Заключение**
+TestNG является мощным инструментом для автоматизации тестирования, который предлагает множество преимуществ, таких как гибкость в конфигурации и поддержка различных типов тестирования. Несмотря на некоторые недостатки, такие как необходимость изучения нового синтаксиса и ограничения в специфичных сценариях, TestNG продолжает оставаться популярным выбором среди тестировщиков благодаря своей функциональности и активному сообществу. Выбор этого инструмента зависит от конкретных потребностей и контекста проекта. Если нужно больше деталей по какому-то аспекту, дайте знать!

+ 9 - 0
Лекции/TestNG/TestNG_Вопросы.md

@@ -0,0 +1,9 @@
+Когда был разработан TestNG и кто является его автором? TestNG был разработан в 2004 году Эвом Салалей.
+
+Какие основные компоненты TestNG помогают в автоматизации тестирования? Основные компоненты TestNG включают аннотации, конфигурацию в формате XML и автоматическую генерацию отчетов.
+
+Какую гибкость предоставляет TestNG в процессе тестирования? TestNG позволяет легко создавать группы тестов, управлять зависимостями между тестами и поддерживать параллельное выполнение.
+
+Какие недостатки есть у TestNG? Некоторые недостатки включают необходимость изучения нового синтаксиса и ограниченную поддержку специфических функций тестирования.
+
+На какие типы тестирования ориентирован TestNG? TestNG подходит для юнит-тестирования, интеграционного тестирования и функционального тестировани.