Linux kernel

Ядро Linux (Linux kernel) — це програмний компонент, який стоїть між апаратним забезпеченням комп’ютера і програмами, що запускає користувач.

Його задача — забезпечити, щоб програми могли працювати безпосередньо не з “залізом”, а через упорядковану, безпечну й контрольовану систему.

Основні функції ядра Linux

Управління процесами

Ядро:

  • запускає програми
  • перемикає процеси
  • розподіляє процесорний час
  • завершує процеси
  • контролює багатозадачність

Саме завдяки ядру одночасно можуть працювати браузер, музика, термінал і десятки фонових процесів.

Управління пам’яттю

Ядро визначає:

  • скільки оперативної пам’яті дати кожному процесу
  • які дані вивантажити у swap
  • як гарантувати, що одні процеси не можуть «влізти» в пам’ять інших

Це критично для стабільності та безпеки.

Робота з обладнанням

Ядро використовуює драйвери, щоб “говорити” з:

  • процесором
  • диском (SSD/HDD)
  • відеокартою
  • мережею
  • USB-пристроями
  • клавіатурою і мишею

Програма не може напряму звертатися до пристроїв — це робить ядро.

Управління файловими системами

Ядро підтримує кілька файлових систем:

  • ext4
  • xfs
  • btrfs
  • FAT / NTFS (через модулі)

Воно знає, як створювати файли, читати, видаляти, переміщати та захищати їх.

Система безпеки

Ядро Linux керує:

  • правами доступу (r/w/x)
  • користувачами та групами
  • SELinux/AppArmor (розширена безпека)
  • ізоляцією процесів

Це одна з причин, чому Linux вважається дуже безпечним.

Архітектура ядра Linux

Ядро Linux — монолітне, але модульне.

Монолітне

Основна частина ядра виконується у одному просторі (kernel space), що дає:

  • високу продуктивність
  • швидку взаємодію між компонентами

Модульне

Функціональність ядра можна розширити модулями. Драйвери – можна завантажувати та вивантажувати без перезавантаження системи.

Структура ядра Linux

  • системні виклики (syscalls)
  • драйвери
  • менеджер пам’яті
  • планувальник процесів
  • мережевий стек
  • файлові системи
  • засоби безпеки

Як ядро Linux завантажується

Спрощено можна пояснити цей процес наступним чином:

  1.   BIOS/UEFI запускає bootloader (наприклад, GRUB).
  2. Завантажується образ ядра (vmlinuz).
  3. Ядро ініціалізує драйвери й апаратне забезпечення.
  4. Запускає init/systemd — перший процес (PID 1).
  5. Завантажується вся система.

Чому ядро Linux настільки важливе?

Тому що воно:

  • стабільне
  • швидке
  • безпечне
  • портабельне (працює на сервері, телефоні, маршрутизаторі, суперкомп’ютері)
  • відкрите (open source), тому будь-хто може його досліджувати або покращувати

Саме тому на Linux працює більшість інтернету та сучасних технологій.

Ядро Linux — це монолітне модульне ядро операційної системи, яке керує пам’яттю, процесами, обладнанням, файлами та безпекою, забезпечуючи взаємодію між програмами та апаратною частиною комп’ютера.

Для додаткової візуалізації є відео.

Test Schedule

Test Schedule (графік тестування) — це частина процесу тестування програмного забезпечення, яка визначає терміни, етапи та послідовність виконання тестових робіт.

Іншими словами, це план по часу, який показує коли саме і в якій послідовності буде виконуватись тестування — від підготовки середовища до завершення звітності.

Мета Test Schedule

  • Забезпечити організованість і контроль процесу тестування.
  • Допомогти управляти ресурсами (часом, людьми, середовищем).
  • Дати змогу відслідковувати прогрес і своєчасно виявляти затримки.
  • Узгодити тестування з графіком розробки (Dev/Test/Release календарем).

Основні елементи Test Schedule

  1. Етапи тестування (Phases)
    • Наприклад:
      • Підготовка тестового середовища
      • Розробка тест-кейсів
      • Виконання тестів
      • Регресійне тестування
      • Звітність і завершення тестування
  2. Терміни виконання (Timeline / Duration)
    • Початкова та кінцева дата кожного етапу.
    • Орієнтовна тривалість (у днях або тижнях).
  3. Відповідальні особи (Assigned Resources)
    • Хто виконує певні завдання (QA Engineer, Automation QA, Test Lead).
  4. Залежності (Dependencies)
    • Від яких подій чи завдань залежить початок або завершення етапу
      (наприклад, “System Test починається після завершення інтеграційного тестування”).
  5. Контрольні точки (Milestones)
    • Ключові дати: готовність середовища, завершення тест-кейсів, початок регресії, реліз.
  6. Ризики затримок
    • Потенційні причини відставання від графіка та способи реагування.

Приклад спрощеного Test Schedule

ЕтапПочатокКінецьВідповідальнийКоментар
Підготовка тестового середовища04.11.202506.11.2025DevOps, QA LeadСтворення staging середовища
Розробка тест-кейсів05.11.202510.11.2025QA Team80% покриття функціоналу
Виконання тестів11.11.202520.11.2025QA EngineersОсновне функціональне тестування
Регресійне тестування21.11.202524.11.2025Automation QAПеред релізом
Звітність і аналіз25.11.202526.11.2025QA LeadTest Summary Report

Важливо розуміти, що:

  • Test Schedule часто є частиною Test Plan, але може існувати і як окремий документ або артефакт (наприклад, у вигляді діаграми Ганта чи календаря в Jira).
  • Регулярне оновлення графіка допомагає команді бачити реальний стан тестування й оперативно реагувати на зміни.

Операційна система Linux

Linux — це сімейство операційних систем, побудованих на базі ядра Linux, створеного Лінусом Торвальдсом у 1991 році. Це не «одна ОС», а масштабний набір рішень, які охоплюють обслуговування серверів, комп’ютерів, смартфонів, supercomputers, вбудованих пристроїв.

Історія створення Linux

На початку 1990-х Лінус Торвальдс, студент з Фінляндії, вирішив створити власне ядро операційної системи для навчальних цілей. Він опублікував його з відкритим кодом під ліцензією GPL.

Цей крок мав колосальний ефект:

  • тисячі програмістів почали безкоштовно покращувати систему
  • Linux став основою для сотень дистрибутивів
  • з часом він перетворився на ключову платформу сучасного інтернету

Linux не належить жодній компанії — тільки спільноті. Розвитком ядра керує Linux Foundation, до якого входять Google, IBM, Intel, Red Hat, Meta та інші гіганти.

Ядро Linux — основа системи

Ядро (kernel) — «серце» ОС.

Воно відповідає за:

  • Управління процесами – запускає, перемикає, зупиняє програми.
  • Управління пам’яттю – виділяє RAM програмам і стежить, щоб вони не заважали одна одній.
  • Роботу з файлами – розпізнає файлові системи (ext4, xfs, btrfs).
  • Взаємодію з обладнанням – драйвери для процесора, відеокарти, мережі, пристроїв.
  • Безпеку та права доступу – контролює, хто і які дії може виконувати.

Linux – це дистрибутиви

Навколо ядра збирають «готові системи» — дистрибутиви (distributions).

Кожен дистрибутив — це:

  • ядро Linux
  • графічна оболонка (GNOME, KDE, Xfce)
  • бібліотеки
  • системні утиліти
  • менеджер пакунків
  • набір програм

Відомі дистрибутиви

НазваДля когоОсобливості
Ubuntuновачки, розробникипростота, велика спільнота
Debianсервери, стабільністьнадійність, мінімум змін
Fedoraрозробникиновітні технології
Arch Linuxпрофімаксимальна гнучкість
Kali Linuxкібербезпекапентестинг
Red Hat Enterprise Linuxкорпораціїкомерційна підтримка

Linux як модель розробки — Open Source

Linux працює за принципом відкритого коду (Open Source):

  • будь-хто може переглянути код
  • будь-хто може внести зміни
  • код доступний безкоштовно
  • безпека вища через прозорість

Це протилежність закритим системам (Windows, macOS), де вихідний код — власність компанії.

Переваги такого підходу:

  • швидкий розвиток
  • тисячі контриб’юторів
  • не залежить від однієї корпорації
  • безкоштовність

Де використовується Linux

Linux — це гігантський фундамент сучасних технологій.

  • Значна частина суперкомп’ютерів світу – усі машини у TOP500 працюють на Linux.
  • 90% хмарних серверів – AWS, Google Cloud, Azure — все на Linux.
  • Android — це Linux – більшість смартфонів світу.
  • Пристрої IoT – роутери, смарт-телевізори, автомобільні системи.
  • Інтернет-інфраструктура – DNS-сервери, веб-сервери, VPN — здебільшого Linux.
  • Робочі станції розробників – особливо DevOps, програмісти back-end, data-engineers.

Linux vs Windows

  • Безкоштовний – більшість дистрибутивів повністю безкоштовні.
  • Стабільний – може працювати роками без перезавантаження (сервера).
  • Безпечніший – чітка модель прав, open source, менше вірусів.
  • Гнучкий – можна налаштувати від мінімальної консолі до красивого робочого столу.
  • Швидкий – працює навіть на старих машинах.
  • Ідеальний для серверів і програмування – підтримує Docker, контейнеризацію, SSH, системну автоматизацію.

Філософія Linux

Linux працює за кількома важливими принципами:

  • «Усе є файл» – пристрої, сокети, навіть процеси — представлені як файли.
  • «Роби одну річ, але добре» – утиліти маленькі, прості, але комбінуються в потужні команди.
  • Модульність – можна змінити будь-який компонент: ядро, оболонку, файлову систему.

Слабкі сторони Linux

Об’єктивний погляд:

  • ігри працюють гірше
  • деякі програми доступні лише для Windows/macOS
  • іноді потрібні технічні знання
  • драйвери для специфічного обладнання можуть бути проблемою

Підсумки

Загалом Linux – це чудовий вибір для роботи та навчання. Наявність альтернативи – це добре.

Щира подяка Лінусу Торвальдсу та спільноті Linux за цю чудову ОС!

Для додаткової візуалізації є відео.

Test Plan

Test Plan (тест-план) — це документ, який описує конкретний план дій з тестування програмного забезпечення: що саме буде протестовано, коли, ким і яким чином.

Іншими словами, якщо Test Strategy визначає загальний підхід до тестування, то Test Plan — це його практична реалізація для конкретного проєкту, релізу або функціоналу.

Мета Test Plan

Забезпечити чітке розуміння:

  • які об’єкти тестування (системи, модулі, фічі) будуть перевірятися;
  • як, коли і ким буде виконано тестування;
  • які ресурси та інструменти необхідні;
  • які ризики, залежності й обмеження існують.

Основні елементи Test Plan

  1. Ідентифікація документа
    • Назва, версія, автор, дата створення, затвердження.
  2. Мета тестування
    • Чому проводиться тестування, які цілі необхідно досягти.
  3. Об’єкти тестування (Test Items)
    • Що саме тестується: модулі, API, мобільний застосунок, вебсайт тощо.
  4. Функціонал, що підлягає тестуванню / не тестується
    • Scope (що входить) і Out of scope (що виключено).
  5. Підхід (Approach)
    • Які типи тестування будуть виконуватися: функціональне, регресійне, автоматизоване, тощо.
  6. Критерії входу та виходу (Entry/Exit Criteria)
    • Умови, коли можна починати тестування, і коли вважати його завершеним.
  7. План виконання (Schedule / Timeline)
    • Етапи тестування, спринти, релізи, дедлайни.
  8. Ролі та відповідальність
    • Хто відповідає за різні аспекти тестування (QA Lead, QA Engineer, DevOps, PM тощо).
  9. Ресурси та середовище
    • Яке тестове середовище, обладнання, інструменти та дані будуть використані.
  10. Ризики та пом’якшення
    • Можливі проблеми, які можуть вплинути на тестування, і способи їх уникнення.
  11. Критерії успіху
    • Як визначається, що тестування пройшло успішно.
  12. Додаткові розділи
    • Метрики, звітність, управління дефектами, залежності від інших команд.

Відмінність між Test Plan і Test Strategy

ПараметрTest StrategyTest Plan
РівеньВисокий (організаційний / загальний)Конкретний (для продукту, релізу чи функції)
МетаВизначає принципи і підхідОписує конкретні дії
ЗміниРідко оновлюєтьсяОновлюється часто
Орієнтація“Як ми тестуємо?”“Що, коли і хто тестує?”

Спрощено:

Test Plan — це “дорожня карта” тестування для певного релізу чи продукту.

День ЗСУ!

Live free or die

Вітаю всіх причетних зі святом!

Щиро дякую за щоденну відвагу й захист.

Нехай рідна земля береже вас. З Божею волею і вірою в серці – переможемо.

Тримаймося!

Слава Україні!