З прийдешніми святами!

Безумовно це був важкий рік. Можливо в чомусь важчий ніж попередній. Є відчуття якогось емоційного спустошення, яке чомусь не проходить. Але незважаючи на негаразди та перешкоди, незважаючи на загрози та виклики нам потрібно робити все, що можливо для перемоги. Наш ворог дуже жорстокий і підступний. Недарма з тюрського слово кацап перекладається як м’ясник, різник, гицель і загалом означає дуже жорстоку людину. Ми повинні пам’ятати про це. Ми повинні пам’ятати про Бучу, Ірпінь, Бородянку, Чернігів, Тростянець, Охтирку, Маріуполь, Херсон та інші міста, містечка і селища які постраждали від нелюдської жорстокості рашистів.

В Новому Році хочеться побажати здоров’я і невичерпної енергії Вам і Вашим родинам, світла і тепла Вашим оселям, надії та віри Вашим серцям! І мабуть, найголовніше хочеться побажати перемоги для України!

І як писав Тарас Григорович Шевченко:

“Борітеся – поборете,

Вам Бог помагає!

За вас правда, за вас слава

І воля святая!”

Тримаймося! Слава Україні!

Тестування зручності супроводу, тестування супроводу та тестування портативності

Тестування зручності супроводу перевіряє здатність програмного забезпечення підтримувати себе під час внесення змін. Зручність супроводу означає здатність програмного забезпечення підтримувати себе в різних ситуаціях. Це важливо, оскільки додатки зазнають змін протягом SDLC, що, очевидно, вимагає належного обслуговування. Завдяки тестуванню зручності супроводу стає легше перевірити потенціал системи для продовження роботи через часті оновлення функцій, виправлення помилок, внесення змін тощо.

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

Зручність супроводу

Зручність супроводу (Maintainability)  включає модульність, можливість багаторазового використання, можливість аналізу, можливість модифікацій, можливість тестування.

Модульність (Modularity) — ступінь представлення системи або програми у вигляді окремих блоків таким чином, щоб зміна одного компонента здійснювала мінімальний вплив на інші компоненти.

Можливість багаторазового використання (Reusability) — ступінь, в якій актив може бути використаний в декількох системах чи при створенні інших активів.

Можливість аналізу (Analysability) — ступінь простоти оцінки впливу змін однієї або більше частин на продукт або систему або простоти діагностики продукта для виявлення недоліків та причин відмов, або простоти ідетифікації частин, які порібно змінювати.

Можливість модифікацій (Modifiability) — ступінь простоти ефективної та раціональної зміни продукту або системи без додавання дефектів та зниження якості продукта.

Напрямки тестування:

  • заплановані вдосконалення
  • коригування та екстрені зміни
  • зміни робочого середовища (наприклад, заплановані оновлення операційної системи або бази даних)
  • оновлення програмного забезпечення COTS.

Maintainability (Зручність супроводу) and Maintenance (супровід/підтримка)

Не слід плутати maintainability testing (тестування зручності супроводу) та maintenance testing (тестування супроводу). У тестуванні супроводу причиною тестування є зміна системи. У тестуванні зручності супроводу причиною тестування є визначення того, наскільки добре систему можна оновлювати, змінювати та підтримувати.

Maintenance testing (Тестування супроводу)

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

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

Коли вносяться будь-які зміни в рамках технічного обслуговування, необхідно провести тестування супроводу, щоб оцінити успішність внесених змін і перевірити можливі побічні ефекти (наприклад, регресії) у частинах системи, які залишаються незмінними.

Технічне обслуговування може включати заплановані та незаплановані випуски. Реліз обслуговування може вимагати тестування обслуговування на кількох рівнях тестування з використанням різних типів тестування залежно від його обсягу.

Обсяг технічного обслуговування залежить від:

  • Ступінь ризику зміни, наприклад, ступінь зв’язку зміненої області програмного забезпечення з іншими компонентами чи системами
  • Розмір існуючої системи
  • Розмір зміни

Тригери супроводу:

  • Модифікації, такі як заплановані вдосконалення, зміни робочого середовища, оновлення суміжного програмного забезпечення та виправлення дефектів і вразливостей.
  • Міграція, наприклад, з однієї платформи на іншу, яка може вимагати операційних тестів нового середовища, а також зміненого програмного забезпечення, або тестів перетворення даних, коли дані з іншої програми будуть перенесені в систему, що обслуговується.
  • Вихід з експлуатації, наприклад, коли програма досягає кінця свого життя. Якщо програму або систему виведено з експлуатації, це може вимагати тестування міграції даних або архівування, якщо потрібні тривалі періоди зберігання даних.

Impact analysis (Аналіз впливу)

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

Аналіз впливу також може допомогти визначити вплив зміни на існуючі тести. Побічні ефекти та уражені області в системі потрібно перевірити на регресії.

Аналіз впливу може бути проведений до внесення змін, щоб допомогти вирішити, чи слід вносити зміни, виходячи з потенційних наслідків в інших областях системи.

Аналіз впливу може бути складним, якщо:

  • Специфікації (наприклад, бізнес-вимоги, історії користувачів, епіки) застаріли або відсутні
  • Тестові кейси не задокументовані або застаріли
  • Двонаправлена відстежуваність між тестами та тестовою основою відсутня
  • Залучені люди не володіють предметними знаннями
  • Під час розробки недостатньо уваги приділено зручності супроводу програмного забезпечення

Портативність

Портативність (Portability) включає можливість адаптації, можливість встановлення, можливість заміни.

Можливість адаптації (Adаptability) — ступінь простоти ефективної та раціональної адаптації для удосконалених апаратних засобів, програмного забезпечення, інших операційних середовищ або умов використання.

Можливість встановлення (Installability) — ступінь простоти ефективного, раціонального, успішного встановлення або видалення продукта або системи в заданому середовищі.

Можливість заміни (Replaceability) — здатність продукта замінити інший конкретний програмний продукт для досягнення тих самих цілей в тих же умовах.

Тестування портативності

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

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

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

Тестування зручності супроводу, тестування супроводу та тестування портативності

В цьому відео поговоримо про:
02:10 Тестування зручності супроводу (Maintainability testing)
09:16 Тестування супроводу (Maintenance testing)
15:05 Аналіз впливу (Impact analysis)
17:35 Тестування портативності (Portability testing)

Тестування безпеки

Тестування безпеки – це тип тестування програмного забезпечення, який виявляє вразливі місця, загрози, ризики в програмному додатку та запобігає атакам зловмисників. Метою тестування безпеки є виявлення можливих лазівок і слабких місць системи, які можуть призвести до втрати інформації, доходу, репутації організації.

Основна мета тестування безпеки — виявити загрози в системі та виміряти її потенційні вразливості, щоб можна було ефективно захиститися від загроз і керувати ризиками безпеки.

Типи тестування безпеки

Існує сім основних типів тестування безпеки (OSSTMM – Open Source Security Testing methodology manual):

  • Сканування вразливостей (Vulnerability Scanning): виконується за допомогою автоматизованого програмного забезпечення для сканування системи на відомі сигнатури вразливостей.
  • Сканування безпеки (Security scanning): передбачає виявлення слабких місць мережі та системи, а потім пропонує рішення для зменшення цих ризиків. Це сканування можна виконувати як вручну так і за допомогою інструментів.
  • Тестування проникнення (Penetration testing): цей вид тестування імітує атаку хакера, передбачає аналіз конкретної системи для виявлення потенційної вразливості.
  • Оцінка ризиків (Risk Assessment): тестування передбачає аналіз ризиків безпеки, які є в організації. Ризики класифікуються як низькі, середні та високі. Це тестування рекомендує засоби контролю та заходи для зменшення ризику.
  • Аудит безпеки (Security Auditing): це внутрішня перевірка додатків і операційних систем на наявність недоліків у безпеці.
  • Етичне хакерство (Ethical hacking): злам систем програмного забезпечення організації. На відміну від хакерів (black hat), які крадуть заради власної вигоди, метою є виявлення недоліків безпеки в системі за згодою з власником цієї системи.
  • Оцінка стану (Posture Assessment): поєднує сканування безпеки, етичне хакерство та оцінку ризиків, щоб показати загальний стан безпеки організації.

Тестування безпеки в контексті SDLC

Керуємося принципом раннього тестування.

Фази SDLCПроцеси безпеки
ВимогиАналіз безпеки для вимог і перевірка випадків зловживань/зловживання
ДизайнАналіз ризиків безпеки для проєктування. Розробка плану тестування, включаючи тести безпеки
Кодування та модульне тестуванняСтатичне та динамічне тестування та тетсування білої скриньки безпеки
Інтеграційне тестуванняТестування чорної скриньки безпеки
Тестування системиСканування вразливостей та тестування чорного скриньки безпеки
РеалізаціяТестування проникнення, сканування вразливостей
ПідтримкаАналіз впливу патчів

Ролі тестування безпеки

Хакери  (Hackers) – доступ до комп’ютерної системи або мережі без авторизації.

Зломщики (Crackers) – проникають у системи, щоб викрасти або знищити дані.

Етичний хакер (Ethical hacker) – виконує більшість дій зі злому, але з дозволу власника.

Script Kiddies або packet monkeys – недосвідчені хакери зі знанням мови програмування.

Інструменти тестування безпеки

OWASP – Open Web Application Security Project

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

Популярні інструменти:

  • OWASP Web Testing Environment Project – проєкт середовища веб-тестування OWASP (колекція засобів безпеки та документації).
  • OWASP Dependency Check – перевірка залежностей OWASP (вона шукає залежності проєкту та перевіряє на відомі вразливості)
  • Zed Attack Proxy – інтегрований інструмент тестування на проникнення.

Wireshark

Wireshark — це інструмент аналізу мережі. Він перехоплює пакети в режимі реального часу та відображає їх у форматі, зрозумілому людині. По суті, це аналізатор мережевих пакетів, який надає детальні відомості про ваші мережеві протоколи, розшифровку, інформацію про пакети тощо. Це open source інструмент і може використовуватися в Linux, Windows, OS X, Solaris, NetBSD, FreeBSD і багатьох інших інші системи.

w3af

w3af — це фреймворк для симуляції атак та аудиту веб-додатків. Це фреймворк має три типи плагінів; виявлення, аудит і атака, які взаємодіють між собою для виявлення різних вразливостей на сайті. Наприклад, плагін виявлення в w3af шукає різні URL-адреси, щоб перевірити наявність вразливостей, і пересилає їх плагіну аудиту, який потім використовує ці URL-адреси для пошуку вразливостей.

Intruder

Intruder — це потужний автоматизований інструмент тестування на проникнення, який виявляє слабкі місця безпеки у вашому ІТ-середовищі. Пропонує постійний моніторинг і просту у використанні платформу:

  • Перевіряє слабкі місця конфігурації, відсутні патчі, слабкі сторони додатків
  • Автоматичний аналіз і пріоритезація результатів сканування
  • Інтуїтивно зрозумілий інтерфейс, швидке налаштування та виконання перших сканувань
  • Проактивний моніторинг безпеки на наявність останніх вразливостей
  • Може використовуватися як великим, так і малим бізнесом.

Є платним, для малого бізнесу з одним додатком для тестування і десятком цілей в середньому коштує 200 доларів на місяць, а для великого бізнесу ціна може бути – 5-6 тисяч доларів на місяць.

Acunetix

Acunetix — інтуїтивно зрозумілий і простий у використанні інструмент. Пропонує: розширений сканер для найскладніших веб-додатків, у.т.ч. багатоформатні та захищені паролем області; комбіноване інтерактивне та динамічне тестування безпеки додатків для виявлення вразливостей, які пропускають інші інструменти; звіт про відповідність нормативним стандартам (наприклад ISO 27001) та інші функціональні можливості. Це також платний, комерційни інструмент, доволі дорогий. Базова підписка коштує 4.5 тисячі доларів.

Тестування безпеки

В цьому відео поговоримо про тестування безпеки:
00:10 Тестування безпеки
02:34 Типи тестування безпеки
05:49 Тестування безпеки в контексті SDLC
09:41 Ролі тестування безпеки
12:40 Інструменти тестування безпеки