Як і чому змінюється тестування і що з цим робити

Як і чому змінюється тестування і що з цим робити

  • 15 лютого, 2023
  • читати 10 хв
Сергій Зліщев
Сергій Зліщев Senior Software Testing Engineer у EPAM, Викладач Комп'ютерної школи Hillel.

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

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

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

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

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

Перехід до low-code або no-code інструментів для створення та тестування додатків створив нові виклики. Традиційні фреймворки для тестування, такі як Selenium або Cypress, стикаються з конкуренцією з боку менш кодоємних альтернатив, які можуть використовуватись нетехнічними бізнес-користувачами.

Це також підняло планку для інструментів тестування, що використовуються для платформ планування ресурсів підприємства (Enterprise Resource Planning — ERP) і управління взаємовідносинами з клієнтами (Customer Relationship management — CRM), таких як Salesforce, Dynamics, Oracle і SAP, які тепер вимагають більш глибоких знань і розуміння додатків, що тестуються.

Вплив машинного навчання на тестування програмного забезпечення

Одним із застосувань машинного навчання на тестування програмного забезпечення є підвищення надійності автоматизованих тестів.

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

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

Щоб усунути ці обмеження, передові інструменти low-code тестування використовують машинне навчання для безперервного моніторингу та оцінки додатків, що тестуються, для виявлення «правильних» і «неправильних» результатів. Це дозволяє інструментам автоматично визначати, чи зміни, внесені в систему, знаходяться в межах прийнятних параметрів (тест пройдено) або відхиляються від того, що було зафіксовано спочатку (тест не пройдено). Хоча ці інструменти все ще перебувають у зародковому стані, реальні приклади застосування машинного навчання у тестуванні ПЗ починають з'являтися, особливо для складних бізнес-додатків і хмарних додатків, що швидко змінюються.

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

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

Вплив штучного інтелекту на тестування кібербезпеки

Ще один спосіб використання штучного інтелекту є сфера кібербезпеки. І як приклад — активний пошук вразливостей за допомогою систем зондування та таргетингу.

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

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

Рекомендуємо публікацію по темі

Забезпечення якості штучного інтелекту та машинного навчання

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

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

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

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

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

Майбутнє роботи: як штучний інтелект створює нові робочі місця

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

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

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

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

Це може призвести до створення нової галузі — оптимізації чат-ботів (Chat Bot Optimization), яка замінить нинішню галузь пошукової оптимізації (Search Engine Optimization — SEO). Веб-сайти та інші джерела інформації будуть прагнути зробити свій контент більш зрозумілим для чат-ботів, подібно до того, як сьогодні веб-розробники роблять веб-сайти більш зручними для пошукових систем.

Висновок

Індустрія тестування програмного забезпечення зазнає значних змін у 2023 році та в подальшому. Щоб бути на крок попереду, розглянь можливість використання штучного інтелекту та машинного навчання для вдосконалення процедур тестування, застосування інструментів безпеки на основі штучного інтелекту та впровадження методів тестування, заснованих на ризиках, які використовують аналітику великих даних.

Якщо не знаєш, з чого почати, почни з вивчення мови програмування Python.

Рекомендуємо курс по темі