Автотестування великих веб-проектів: для чого і як ми пишемо автотести – Web-systems
Технології

Автотестування великих веб-проектів: для чого і як ми пишемо автотести

16 бер 2018
Автор:Web Systems

Код завжди повинен працювати коректно. Це головне правило розробника. Коли працюєш у великій команді, де кожен робить свою частину спільного проекту, важливо забезпечити узгодженість дій. Для цього ми й пишемо автотести. Мета автотестування: забезпечити якість продукту, а також впевнитися в тому, що твій код не зламають. У цій статті Front-end розробник Віталій розповідає про автотестування на одному з його проектів.

Віталій, Front-end розробник Web-Systems Solutions

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

Для того, щоб говорити про автотестування більш предметно, я розповім про один з наших веб-проектів, де ми пишемо такі тести. Спочатку поговоримо про саме автотестування на проекті, з легальних причин далі будемо називати його проект A, а потім поясню, як автотести впровадити в continuous integration (CI).

Як реалізовано автотестування на проекті

Автотестування у нас реалізовано за допомогою такого фреймворка, як Behat. Ця бібліотека заточена спеціально під Behaviour driving development, або BDD. Суть “ідеології” BDD у тому, що сценарії, описані зрозумілою людині мовою, не обов’язково англійською – називається вона Gherkin – переводяться в тести, з якими працює фреймворк, в даному випадку Behat. Мета синтаксису мови Gherkin в тому, щоб дати можливість нетехнічним фахівцям описати вимоги до роботи продукту.

На кожен окремий тест кейс пишеться свій сценарій за принципом “given-when-and-then” (що маємо-якщо-і-тоді). Це робиться для того, щоб потім ми могли прочитати ці тести й краще зрозуміти, як працює система. Ми можемо дати клієнту, замовнику або його менеджеру, цей так званий план “given-when-and-then”, щоб він описав своє бачення завдання. Припустимо ми робимо авторизацію на сайті і будемо писати автотест на валідацію форми. Сценарій для автотестування буде таким:

Feature: Sign up (Назва: авторизація)
Scenario: Check validation (Сценарій: перевірка валідації)
Given I am on the sign up page (Що маємо: я перебуваю на сторінці реєстрації)
When I fill in the “E-mail” field (Коли я заповнюю поле “E-mail”)
And I do not fill in the “Password” field (І не заповнюю поле “Пароль”)
Then I see an indicator of validation error (Я бачу індикатор помилки валідації)

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

Як інтегрувати автотестування в Continuous Integration

Автотестування великих веб-проектів: для чого і як ми пишемо автотести: image-1Що таке continuous integration tools і для чого вони потрібні? Існує багато інструментів безперервної інтеграції. Безпосередньо на проекті A ми використовуємо Circleci. У нашому випадку, ми використовуємо цю програму, щоб стежити за вихідним кодом. Всі зміни ми заливаємо на git-репозиторій. Коли в проекті з’являються зміни, програма автоматично білдить їх і проганяє через тести. У разі виявлення помилки, вона сповіщає нас про це. В першу чергу програма попереджає розробника, який останнім вносив зміни в код. На пошту йому прилітає сповіщення про те, де сталася помилка, що стало її причиною, і він швидко її виправляє. На продакшн сервер такі зміни не потраплять. Якщо автотестування пройшло успішно, вона відправляє зміни на продакшн.

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

Хочете замовити проект?
Дзвоніть +38 067 98 00 900
або заповніть форму

Почати проект
ТОП-7 страхів клієнта перед вибором виконавця для розробки сайту
Блог

ТОП-7 страхів клієнта перед вибором виконавця для розробки сайту

Коли людина все-таки погоджується, що з новими каналами можна продавати більше, у нього трапляється паніка: з чого почати, де замовити розробку сайту, а раптом мене кинуть на гроші і т.д. Як перестати бояться і замовити хороший сайт? У цій статті ми наведемо ТОП-7 ПИТАНЬ клієнтів при виборі виконавця для розробки сайту і дамо на них відповіді.

Який тип сайту підійде для Вашого бізнесу?
Блог

Який тип сайту підійде для Вашого бізнесу?

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

Корпоративний відпочинок.Чому це важливо?
Компания

Корпоративний відпочинок.Чому це важливо?

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