Тестування надійності

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

Він спрямований на виявлення потенційних збоїв або проблем продукту чи системи та визначення імовірності їх виникнення.

В широкому сенсі до цього типу тестування відносять: тестування продуктивності, тестування безпеки, регресійне тестування, тестування відновлення і функціональне тестування, але це дискусійно.

У більш вузькому розумінні до цього типу тестування відносять: навантажувальне тестування, стрес тестування, регресійне тестування і тестування функцій.

Згадаємо складові надійності згідно з ISO 25010.

Надійність (Reliability) включає зрілість, готовність, відмовостійкісь, відновлюваність.

Зрілість (Maturity) — ступінь відповідності системи, продукта або компонента при нормальній роботі вимогам надійності.

Готовність (Availability) — ступінь працездатності і доступності системи, продукта або компонента.

Відмовостійкість (Fault tolerance) — здатність системи, продукта або компонента працювати як призначено, не дивлячись на наявність дефектів програмного забезпечення або апаратних засобів.

Відновлюваність (Revoverability) — здатність продукта або системи відновити дані та необхідний стан системи у випадку переривання або збою.

Основні параметри, які беруть участь у перевірці надійності: імовірність безвідмовної роботи, тривалість безвідмовної роботи, середовище, в якому воно виконується.

Щоб виконати тестування надійності, потрібно: встановити цілі щодо надійності, розробити робочий профіль, спланувати та виконати тести, використовувати результати тестів для прийняття рішень.

Три категорії тестування, які часто використовуються: моделювання, вимірювання, поліпшення.

Моделювання

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

Вимірювання

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

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

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

До показників продукту відносять:

  • Розмір програмного забезпечення : рядок коду (LOC) – це інтуїтивно зрозумілий початковий підхід до вимірювання розміру програмного забезпечення. У цьому показнику враховується лише вихідний код, а коментарі та інші невиконувані оператори не враховуватимуться.
  • Метрика функціональна точка (Function Point Metric) є методом вимірювання функціональності розробки програмного забезпечення. Вона враховуватиме кількість входів, виходів, головних файлів тощо. Вона вимірює функціональні можливості, надані користувачеві, і не залежить від мови програмування.
  • Показники тестового покриття: це спосіб оцінки несправності та надійності шляхом виконання тестів програмного продукту і розрахунку відповідних показників покриття.

Надійність програмного забезпечення вимірюється середнім часом між відмовами (MTBF – mean time between failures) .

MTBF = MTTF + MTTR

Середнє значення до збою (MTTF – mean time to failures): це різниця в часі між двома послідовними збоями.

Середній час ремонту (MTTR – mean time to repair): це час, необхідний для усунення несправності.

Поліпшення

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

Тестування відновлення

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

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

Життєвий цикл процесу відновлення можна розділити на такі п’ять етапів:

  • Нормальна робота. Система, що складається з апаратного, програмного та мікропрограмного забезпечення, інтегрованого для досягнення мети, є функціональною та працює відповідно до очікувань.
  • Виникнення критичної ситуації. Критична ситуація може виникнути з різних причин, як-от несправність, ініційована введенням, збій програмного забезпечення через збій обладнання, пошкодження через техногенну аварію, спробу скоїти злочин (пограбування) тощо.
  • Переривання та збій операції. Найболючіша фаза, яка призводить до втрат. Повинен бути план аварійного відновлення, щоб ця фаза збою була мінімальною.
  • Усунення наслідків критичної ситуації через процес відновлення. Якщо план резервного копіювання та процеси керування ризиками розроблені і впроваджені, перш ніж зіткнутися з критичною ситуацією та збоями, відновлення можна виконати без особливих втрат часу, зусиль і енергії. Повинна бути відповідальна особа чи команда з розподілом ролей, щоб визначити відповідальність і допомогти організації уникнути тривалого періоду збою.
  • Відновлення всіх процесів і інформації для переведення всієї системи в нормальний режим роботи. Може включати кілька сеансів операцій для відновлення всіх папок разом із файлами конфігурації. Для правильного відновлення має бути відповідна документація та чітко структурований процес.

Стратегія відновлення

Команда відновлення повинна мати свою унікальну стратегію для отримання важливого коду та даних, щоб повернути роботу системи до нормального стану.

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

Можливу стратегію для критичних систем можна візуалізувати відповідями на такі питання:

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

В цьому відео поговоримо про тестування надійності:
00:20 Тестування надійності
10:20 Моделювання як категорія тестування
11:18 Вимірювання та поліпшення
15:15 Тестування відновлення

Тестування зручності

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

Невелика група цільових кінцевих користувачів використовує програмне забезпечення для виявлення дефектів зручності використання.

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

Причини або для чого нам тестування зручності

  • Естетика та дизайн є важливими.
  • Програмні додатки чи веб-сайти можуть зазнати невдачі через відсутність зрозумілої відпоівіді на наступні проблеми: що потрібно натиснути чи на яку сторінку потрібно перейти, що означає певний елемент, іконка, значок тощо, повідомлення про помилки не відображаються, є непослідовними чи неповними тощо.
  • Тестування зручності використання виявляє помилки зручності використання в програмному забезпеченні. Це свою чергу підвищує шанси програмного продукту на успіх.

Цілі тестування зручності

Легкість ознайомлення та естетичністьЧи легко освоїти систему?
Чи є система корисною та додає цінність цільовій аудиторії?
Чи використані вміст, колір, значки, зображення є естетично привабливими?
ЕфективністьЩоб дістатися до потрібного екрана чи веб-сторінки, знадобиться невелика навігація, а прокручування сторінки слід використовувати нечасто.
Уніфікованість формату екрану /сторінок у вашому додатку/веб-сайті.
Можливість пошуку в програмному забезпеченні або веб-сайті.
ТочністьНе повинно бути застарілих або неправильних даних, таких як контактна інформація/адреса.
Не повинно бути пошкоджених, недійсних посилань.
Зручність для користувачаНеобхідно надати допомогу, підказки користувачам, щоб зрозуміти програму/веб-сайт
Використовувані засоби керування мають бути простими для розуміння

Процес тестування зручності

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

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

Тестування зручності використання: під час цієї фази фактично виконуються тести зручності використання.

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

Звітування: результати перевірки зручності використання надаються всім зацікавленим сторонам, зокрема дизайнерам, розробникам, клієнту та керівництву компанії чи проєкту.

Техніки тестування зручності

Лабораторне тестування зручності використання: Це тестування проводиться в окремій лабораторній кімнаті в присутності спостерігачів. Перед тестувальниками ставляться завдання для виконання. Роль спостерігача полягає в тому, щоб спостерігати за поведінкою тестувальників і повідомляти про результати тестування. Під час тестування спостерігач зберігає мовчання. Під час цього тестування і спостерігачі, і тестувальники присутні в одному фізичному місці.

Віддалене тестування зручності використання: під час цього тестування спостерігачі та тестувальники розташовані віддалено. Тестувальники дистанційно отримують доступ до системи, що тестується, і виконують поставлені завдання. Голос тестувальника, активність на екрані, вираз обличчя тестувальника записуються автоматизованим програмним забезпеченням. Спостерігачі аналізують ці дані та звітують про результати тесту.

Скільки потрібно тестувальників?

Магічне число 5. Дослідження (Вірзі, Ландауер) показують, що 5 тестувальників достатньо, щоб розкрити 80% проблем зручності використання . Деякі дослідники пропонують інші цифри.

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

Якщо бюджет обмежений, то 5 – це мінімальний показник, який бажано забезпечити.

Успішність тестування зручності

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

Переваги та недоліки

До переваг можна віднести:

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

Ключовим недоліком є вартість. Вона є головним фактором у тестуванні зручності використання. Щоб створити лабораторію тестування зручності використання, потрібно багато ресурсів. Наймання та керування usability-тестувальниками також може бути дорогим.

Тестування зручності

В цьому відео поговоримо про тестування зручності
00:20 Тестування зручності
00:55 Причини для тестування зручності
01:51 Цілі тестування зручності
04:52 Процес тестування зручності
06:50 Техніки тестування зручності
08:49 Скільки потрібно тестувальників?
10:09 Успішність тестування зручності
12:57 Переваги та недоліки

Тестування сумісності

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

Тестування на сумісність – це тип нефункціонального тестування.

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

Тестування апаратної сумісності. Цей тип тестування перевіряє здатність програмного забезпечення працювати на різних апаратних конфігураціях. Виконується перевірка апаратної сумісності, щоб переконатися, що конкретний апаратний пристрій сумісний із певною програмою, платформою та ОС. Щоб виконати цей тип тестування, тестове середовище має бути налаштовано з різними конфігураціями обладнання. Потрібно протестувати різні апаратні компоненти, такі як графічні карти, процесори, пристрої введення та виведення, а також пристрої зберігання. Це важливо, щоб переконатися, що вони функціонують належним чином і сумісні з програмою. Результати тестування можна використовувати для виявлення потенційних проблем і звісно їх подальшого вирішення.

Тестування мережевої сумісності. Цей тип тестування перевіряє роботу програмного забезпечення в різних мережевих підключеннях. Його основна мета — перевірити програмне забезпечення та його зв’язок із мережею та переконатися, що немає проблем із безпекою, підключенням і продуктивністю. Виконується тестування сумісності з мережею, щоб переконатися, що програмні додатки працюють без проблем у певному мережевому середовищі. Для цього необхідно підключити тестований додаток до кількох мереж. Наприклад, перевірити роботу програми в мережах Wi-Fi або мобільних мережах, таких як 4G і 5G. Виміряються важливі показники, такі як швидкість і пропускна здатність, які можуть вплинути на роботу програми. Якщо такі показники мають очікуваний результат, програма сумісна з різними мережевими підключеннями.

Тестування сумісності операційної системи. Цей тип тестування перевіряє функціонування програми в різних операційних системах і її версіях. Основна мета перевірки сумісності операційної системи полягає в тому, щоб переконатися, що немає проблем із сумісністю, коли програма або веб-сайт працює на іншій ОС та її версії. Наприклад, якщо тестується мобільна програма, можна перевірити її на iOS і Android. Чи якщо тестується десктопна версія програмного забезпечення, то треба перевірити сумісність з різними десктопними ОС (Windows, Linux, Mac OS).

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

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

Тестування сумісності браузера. Цей тип тестування перевіряє роботу веб-сайтів та веб-програм в різних браузерах, таких як Google Chrome, Mozilla Firefox, Safari, Opera, Brave, Microsoft Edge, Vivaldi та інших популярних браузерах. Його основна мета полягає в тому, щоб веб-програми або веб-сайти працювали узгоджено з однаковим відображенням і функціями незалежно від того, який браузер використовує користувач.

Тестування на сумісність з програмним забезпеченням. Цей тип тестування перевіряє функціонування програмного забезпечення на його сумісність з іншим програмним забезпеченням або інструментами сторонніх розробників.

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

Типи перевірки сумісності

Тестування зворотної сумісності (Backward Compatibility Testing) — це техніка перевірки поведінки та сумісності розробленого апаратного чи програмного забезпечення з їхніми попередніми версіями. Тестування зворотної сумісності є значною мірою передбачуваним, оскільки всі зміни в попередніх версіях відомі.

Тестування прямої сумісності (Forward Compatibility Testing) – це процес перевірки поведінки та сумісності розробленого апаратного чи програмного забезпечення з новими версіями. Тестування прямої сумісності трохи важко передбачити, оскільки зміни, які будуть внесені в новіші версії, невідомі.

Процес тестування сумісності

Визначення цільових платформ. Перш ніж виконувати тестування на сумісність, потрібно зрозуміти цільові платформи програми, включаючи операційну систему, конфігурацію апаратного забезпечення та версії програмного забезпечення сторонніх виробників. Для цього, напртиклад, потрібно підготувати список операційних систем, таких як Windows, Mac OS, Linux; і список браузерів, як Chrome, Firefox, Mozilla, Safari, Edge, Opera та ініші, необхідні для тестування. Разом із вищесказаним потрібно визначити конфігурацію апаратного забезпечення, яка найчастіше використовується кінцевим користувачем. Ви також повинні визначити інструменти сторонніх розробників, від яких залежить програмне забезпечення, яке тестується, як-от плагіни, фреймворки або бібліотеки. Це допоможе переконатися, що версії програмного забезпечення сторонніх розробників сумісні з програмним додатком. Процес перевірки сумісності може бути трудомістким і складним із залученням кількох платформ і пристроїв.

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

Налаштування середовища. Протягом цього етапу ви повинні налаштувати тестове середовище для виконання тестів на сумісність. Це передбачає вибір правильної конфігурації обладнання та програмного забезпечення, включаючи ОС, браузери та версії програмного забезпечення сторонніх розробників, щоб забезпечити сумісність веб-сайту чи програми. Потрібно налаштувати тестове середовище, яке імітує конфігурації програмного та апаратного забезпечення кінцевого користувача, щоб забезпечити точні результати. Для цього потрібно встановити браузери, ОС і програмне забезпечення сторонніх розробників на реальних або віртуальних пристроях.

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

Перевірка та повторне тестування. Останнім етапом тесту на сумісність є перевірка та повторне тестування для отримання підтвердження, що проблеми успішно вирішені.

Інструменти тестування сумісності

BrowserStack – цей інструмент допомагає перевіряти програму в різних браузерах. Ціна викорситання від $29/місяць.

LambdaTest – це cloud платформа для тестування , яка дозволяє запускати ручне та автоматизоване тестування браузера в 3000 версіях браузерів, пристроях і операційних системах. За допомогою LambdaTest ви також можете виконувати тестування в реальному часі та на реальному пристрої, щоб перевірити крос-браузерну сумісність веб-сайтів і мобільних програм. Доступна безкоштовна версія.

Autify — це онлайн-інструмент кросбраузерного тестування, який дозволяє користувачам тестувати свої веб-сайти та програми в кількох браузерах. Він надає розробникам, тестувальникам і дизайнерам платформу для швидкого створення автоматизованих тестів для своїх веб-сайтів або програм. Ці тести виконуються в режимі реального часу в кількох браузерах одночасно, щоб виявити проблеми сумісності. Autify коштує від 99 доларів США на місяць і має 14-денну безкоштовну пробну версію для ознайомлення.

Endtest – це комплексна платформа автоматизованого тестування, яка спрощує процес створення та виконання тестів у веб-додатках, мобільних і настільних додатках. Завдяки інтуїтивно зрозумілому інтерфейсу та потужним функціям Endtest забезпечує ефективне та надійне тестування програмного забезпечення, надаючи командам змогу створювати високоякісні програми. Але Endtest коштує від $175/місяць (1-5 паралельних тестів).

Virtual Desktops – сумісність операційної системи: використовується для запуску програм у кількох операційних системах як віртуальних машин. (Virtual Box, VM Ware).

Поширені проблеми

Під час виконання тестів на сумісність у локальному чи cloud середовищі можуть виникнути певні проблеми. Важливо звернути увагу на них під час тестування, щоб отримати надійні результати тестування. Наведемо кілька поширених проблем:

  • Доступність величезної кількості пристроїв, браузерів і операційних систем створює труднощі при тестуванні програм і веб-сайтів у кожній можливій конфігурації. Така фрагментація ускладнює забезпечення узгодженого функціонування програми на всіх платформах.
  • Налаштування тестових середовищ може бути дорогим і трудомістким.
  • Зміна або розвиток технології програмного забезпечення є ще одним викликом, який приносить нові пристрої, оновлені версії ОС і браузерів. Може статися, що програми, перевірені для певних платформ, можуть не працювати належним чином на новій програмній технології.
  • Програми та веб-сайти призначені для роботи в кількох країнах. З точки зору цього питання міжкультурної сумісності є критичним викликом. Це пов’язано з тим, що забезпечення підтримки програмою різних мов, часових поясів і форматів дати є проблематичним і може бути дорогим і трудомістким.
Тестування сумісності

В цьому відео поговоримо про тестування сумісності:
00:05 Нефункціональні характеристики
00:32 Тестування сумісності
01:02 Типи тестування сумісності
08:15 Типи перевірки сумісності
09:43 Процес тестування сумісності
14:18 Інструменти тестування сумісності
23:09 Поширені проблеми