# Тестування стійкості (Resilience testing)

Тестування стійкості спрямоване забезпечення хорошої роботи додатків у реальних чи хаотичних умовах. Іншими словами, воно перевіряє відмовостійкість додатка або здатність протистояти стресовим або складним факторам, а також включає тестування на відповідність (compliance), витривалість (endurance), навантажувальне тестування і тестування відновлення (recovery testing). Цю форму тестування іноді називають chaos engineering. Оскільки відмов неможливо уникнути, тестування стійкості гарантує, що програмне забезпечення може продовжувати виконувати основні функції та уникнути втрати даних навіть у критичних умовах, наприклад, при збій мережі, відмові бази даних, за необхідності надаючи відповідні повідомлення про помилки. При тестуванні на стабільність запланованим результатом є надійність (Reliability). Стійкість також відома як відновлюваність (recoverability). Тестування стійкості можна як частина плану забезпечення безперервності бізнесу (BCP - business continuity plan) організації.

**Кроки** :

* Визначення метрик: Розробники повинні вибрати, які показники слід вимірювати, щоб відобразити продуктивність програмного забезпечення. Це може включати швидкість введення та виведення, пропускну здатність, час відновлення, затримку та взаємозв'язок між метриками;
* визначення базового рівня продуктивності;
* Ввести та виміряти збої: крок, на якому вводяться проблеми, щоб спробувати зламати систему. Злам системи може бути здійснений різними способами, наприклад, порушенням зв'язку із зовнішніми залежностями, введенням зловмисного введення, маніпулювання управлінням трафіком, обмеженням смуги пропускання, відключенням систем сполучення, видаленням джерел даних та споживанням системних ресурсів. Після завершення цих сценаріїв слід виміряти показники та побудувати графік відповідно до того, як кожен з них впливає на продуктивність;
* Робіть висновки та реагуйте на результати: результати слід використовувати для початку обговорення, виправлення програмного забезпечення та оцінки практики команди розробників. Команди також повинні використовувати ці результати для покращення наступних сценаріїв тестування;

Джерела:

* [software resilience testing](https://translate.google.com/website?sl=auto\&tl=uk\&hl=uk\&u=https://searchsoftwarequality.techtarget.com/definition/software-resilience-testing)

Додатковий матеріал:

* [Хаос практично: навіщо ламати production?](https://translate.google.com/website?sl=auto\&tl=uk\&hl=uk\&u=https://habr.com/ru/company/domclick/blog/542264/)
* [Resilience testing: Which tool to choose?](https://translate.google.com/website?sl=auto\&tl=uk\&hl=uk\&u=https://www.nagarro.com/en/blog/chaos-engineering-resilience-testing-tools)
* [The Importance of Resilience Testing](https://translate.google.com/website?sl=auto\&tl=uk\&hl=uk\&u=https://www.softwaretestingnews.co.uk/the-importance-of-resilience-testing/)
