Я просто хотів додати і дати ще трохи контексту про те, чому ми маємо ці рівні тестування, що вони насправді означають на прикладах
Майк Кон у своїй книзі «Успіх з Agile» придумав «Піраміду тестування» як спосіб підійти до автоматизованих тестів у проектах. Існують різні інтерпретації цієї моделі. Модель пояснює, який тип автоматизованих тестів потрібно створити, наскільки швидко вони можуть надати відгук про тестовану програму та хто пише ці тести. В основному є 3 рівні автоматизованого тестування, необхідні для будь-якого проекту, і вони наступні.
Тести одиниць -
це тест на найменший компонент вашої програми. Це буквально може бути однією функцією в коді, який обчислює значення на основі деяких вхідних даних. Ця функція є частиною декількох інших функцій апаратної / програмної кодової бази, яка складає додаток.
Наприклад - Візьмемо веб-додаток для калькулятора. Найменшими компонентами цієї програми, які потребують тестування одиниці, може бути функція, яка виконує додавання, інша, яка виконує віднімання тощо. Усі ці маленькі функції, складені разом, складають додаток для калькулятора.
Історично розробник пише ці тести, оскільки вони, як правило, написані тією ж мовою програмування, що і програмне забезпечення. Для цього використовуються одиничні рамки тестування, такі як JUnit і NUnit (для Java), MSTest (для C # і .NET) та Jasmine / Mocha (для JavaScript).
Найбільша перевага одиничних тестів полягає в тому, що вони працюють дуже швидко під користувальницьким інтерфейсом, і ми можемо отримати швидкий відгук про програму. Це має становити більше 50% ваших автоматизованих тестів.
Тести API / інтеграції - разом
перевіряють різні компоненти програмної системи. Компоненти можуть включати тестування баз даних, API (інтерфейс прикладного програмування), сторонні інструменти та послуги разом із додатком.
Наприклад - у наведеному вище прикладі калькулятора веб-додаток може використовувати базу даних для зберігання значень, використовуючи API для виконання деяких перевірок на стороні сервера, а також може використовувати сторонній інструмент / службу для публікації результатів у хмарі, щоб зробити їх доступними для різних платформи.
Історично розробник або технічний контроль якості писали б ці тести, використовуючи різні інструменти, такі як Postman, SoapUI, JMeter та інші інструменти, такі як Testim.
Вони запускаються набагато швидше, ніж тести користувальницького інтерфейсу, оскільки вони все ще працюють під кришкою, але це може зайняти трохи більше часу, ніж тести для одиниць, оскільки це повинно перевірити зв'язок між різними незалежними компонентами системи та забезпечити безперебійну інтеграцію. Це повинно становити більше 30% автоматизованих тестів.
Тести користувальницького інтерфейсу -
Нарешті, у нас є тести, які підтверджують користувальницький інтерфейс програми. Ці тести, як правило, пишуться для тестування потоків в кінці через додаток.
Наприклад - у програмі для калькулятора може бути потоковий перехід до кінця, відкриваючи браузер-> Введення URL-адреси програми калькулятора -> Вхід з ім'ям користувача / паролем -> Відкриття програми калькулятора -> Виконання деяких операцій на калькуляторі -> перевірка цих результатів через інтерфейс користувача -> вихід із програми. Це може бути потоком від кінця до кінця, який був би хорошим кандидатом для автоматизації інтерфейсу користувача.
Історично, технічні QA або ручні тестери пишуть користувальницькі тести. Вони використовують рамки з відкритим кодом, такі як платформи тестування Selenium або UI, такі як Testim, для авторів, виконання та підтримки тестів. Ці тести дають більше візуального зворотного зв’язку, оскільки ви можете бачити, як працюють тести, різницю між очікуваними та фактичними результатами через скріншоти, журнали, звіти про тести.
Найбільшим обмеженням тестів на інтерфейс є те, що вони відносно повільні порівняно з тестами рівня Unit та API. Отже, він повинен становити лише 10-20% загальних автоматизованих тестів.
Наступні два типи тестів можуть залежати від вашого проекту, але ідея полягає в тому,
Димові тести
Це може бути поєднання вищевказаних 3 рівнів тестування. Ідея полягає у тому, щоб запустити його під час кожного перевірки коду та переконатися, що критичні функції системи все ще працюють, як очікувалося; після того як нові зміни коду будуть об'єднані. Зазвичай їм потрібно запустити 5 - 10 хвилин, щоб отримати швидший зворотній зв'язок про збої
Регресійні тести
Зазвичай вони працюють щонайменше раз на день і охоплюють різні функціональні можливості системи. Вони гарантують, що програма все ще працює, як очікувалося. Вони детальніше, ніж димові тести, і охоплюють більше сценаріїв програми, включаючи некритичні.