9 Кращі автоматизовані системи тестування для PHP
Ви коли-небудь довго проводили налагодження коду PHP? Ну, для більшості програмістів це, мабуть, не найпривабливіший виклик, але є рішення, яке може допомогти нам скоротити цю складну задачу. Автоматизоване тестування може значно поліпшити робочий процес розробки PHP на дозволяючи попередньо скласти тести для керування процесом розробки.
У цьому пості ми спробуємо розібратися чому автоматичне тестування настільки прохолодне, як це працює і що кращі рамки тестування Ви можете почати з.
Чому важливе тестування
Розробники PHP-новачків прагнуть не писати тести для свого коду. Більшість з нас почали свою кар'єру, перевіряючи нові функції та функції, які ми тільки що написали у вікні браузера, і коли щось пішло не так, ми не розуміли, що робити.
Написання тестів для нашого коду може заощадити час і годинник головного болю. Коли неперевірений код переходить у виробництво, відгуки, які ми отримаємо, напевно, не будуть настільки приємними. Так що ми можемо зробити?
Напевно, найкраща ідея встановити продуктивний робочий процес тестування в якому нам потрібно написати власний код тестування, який перевіряє, чи працює код нашої програми.
Хитрість полягає в тому, що код тестування повинен бути записаний перед кодом програми. Таким чином ми з самого початку можемо забезпечити правильний код, який ми пишемо. Код тестування перейде в окремі файли. Якщо ми пізніше зіштовхнемося з помилками в нашій програмі PHP, нам не потрібно робити нічого іншого, просто запустіть наші тести, які, сподіваємося, будуть дайте нам правильні натяки на проблеми.
Крім економії часу та правильної підготовки нашого додатка для виробництва, тестування також має багато інших переваг, таких як:
- більше підтримуваний код
- полегшений рефакторинг
- менше питань безпеки
- менш роздутий код бази (адаптація коду програми до попередньо написаного тестового коду змусить нас опустити зайві частини)
- кращу продуктивність
Що таке автоматичне тестування?
Звичайно, ми можемо писати наші тести вручну, але через деякий час це може бути нудним і трудомістким з багатьма повторюваними завданнями. Ручне тестування може бути замінено на автоматичне тестування, в якому ми використовуємо спеціальні програмні засоби, які допоможуть нам працювати, і ми можемо витрачати більше часу на створення логіки тестового коду.
PHP, на щастя, досить популярна мова програмування, тому існує безліч автоматизованих систем тестування, з яких ми можемо вибирати.
Розробка, що керується тестом (TDD) та розвиток поведінки (BDD)
Два основні підходи, якими користуються автоматизовані рамки тестування, - це розробка (TDD) і розвиток, керований поведінкою (BDD). В обох, процес розробки керується тестуванням, тобто тести записуються до коду програми.
Основна відмінність між тестуванням і тестуванням, керованим поведінкою, полягає в синтаксисі тестового коду: TDD використовує правильний код PHP у файлах тестування, час BDD використовує людиночитані речення які описують поведінку кожної функції і можуть бути зрозумілі нетехнічним учасникам.
Тест TDD виглядає так у редакторі коду, це просто звичайний об'єктно-орієнтований PHP код:
Тест BDD подібний до цього, не-програмісти також можуть мати сенс:
10 Автоматизовані тестові фреймворки PHP
Маючи це на увазі, давайте розглянемо 10 потужних автоматизованих систем тестування для PHP, які можна використовувати.
1. PHPUnit
PHPUnit - найвідоміша система тестування для написання одиничних тестів для PHP-додатків. Блокові тести беруть невеликі частини коду, що називаються, і перевіряють їх по одному. За допомогою PHPUnit ми можемо проводити тестування.
Його можна використовувати через командний рядок, і це дає нам зручний клас TestCase що ми можемо розширити відповідно до наших потреб. PHPUnit також дозволяє розробникам використовувати попередньо написані методи твердження стверджують, що додаток веде себе певним чином.
2. Кодування
Кодування не тільки дозволяє нам писати одиничні випробування, але й функціональні та прийомні тести. Ці два останні тести PHP додаток в цілому з усіма функціями пов'язані разом, а не як одиниці. Codeception дозволяє включити і налаштувати різні модулі відповідно до наших потреб розвитку.
Вона інтегрована з багатьма фреймворками розробки PHP, такими як Symfony2, Laravel4, Yii, Phalcon і Zend Framework. Це означає, що ми можемо використовувати рамки тестування автоматизації PHP і рамки розвитку PHP разом для створення надвисокого робочого процесу розробки.
3. Бехат
Behat є популярним PHP-тестуванням, керованим поведінкою. Тести, які ми можемо писати, виглядають скоріше як історії, ніж код. Behat використовує підтип StoryBDD для розвитку поведінки (інший підтип - SpecBDD).
Структура була натхнена проектом Cucumber, що є тестовою базою для мови програмування Ruby.
4. PHPSpec
PHPSpec також дотримується підходу до тестування з поведінкою, але його інший підтип називається SpecBDD. З PHPSpec нам потрібно спочатку напишіть специфікації, які описують, як буде діяти код програми. Він також був натхненний тестом Ruby, який називається RSpec.
5. Storyplayer
Storyplayer - це повнофункціональний тестовий фреймворк, який дозволяє писати наскрізні тести для всієї платформи. Storyplayer має підтримку створення та знищення тестових середовищ за запитом. Вона слідує підходу тестування TDD і дозволяє нам писати функціональні тести, які можуть перевіряти програму в цілому.
6. Перідот
Peridot - легка, розширювана тестова база для PHP. Він має функцію Архітектура, керована подіями що дозволяє легко тестерам налаштувати рамки через плагіни та репортери.
Перідот використовує Опишіть це синтаксис для встановлення чіткої та зрозумілої мови тестування, яка чітко описує, як повинен діяти наш код програми.
7. Атум
Atoum - це інтуїтивно зрозумілий і сучасний PHP тестовий фреймворк, що дозволяє нам запускати модульні тести. Це спрощує розробку тестів, і, оскільки це молодий фреймворк, він використовує деякі нові можливості, які були введені в PHP 5.3.Не використовуватиметься зі старими версіями PHP) щоб надати нам швидкий і легкий для розуміння процес тестування.
Atoum забезпечує a високий рівень безпеки під час виконання тесту, оскільки він виділяє кожен метод тестування у власному PHP-процесі.
8. Кален
Kahlan - це повнофункціональна система тестування BDD, яка дозволяє писати одиничні тести за допомогою Опишіть це синтаксис. Вона охоплює принцип проектування KISS (Keep It Simple, Stupid). Кален вимагає принаймні PHP 5.5.
Вона має невелику базу кодів, вона, як кажуть, приблизно в 10 разів менше, ніж PHPUnit, і вона має безліч функцій, які надають нам розширюваний і настроюваний робочий процес тестування..
9. Селен
Selenium - це складне тестування, що автоматизує браузери. Це означає, що можна записати тести на прийняття користувача вивчити всю програму в цілому.
Selenium - надійний інструмент, який має свій власний WebDriver API, який може керувати браузером, як хоча реальний користувач буде використовувати його або локально, або на віддаленому комп'ютері. Селен - відмінний інструмент для тестування більш зрілих веб-додатків.
Заключні думки
Автоматизовані тестові фреймворки дозволяють нам писати більш якісний PHP-код, і завдяки популярності мови у нас є багато варіантів, тому ми можемо обрати той, який відповідає нашим потребам розвитку найкращим чином.
Існує важлива річ, яку ми завжди повинні мати на увазі. Автоматичне тестування може бути потужним, але може ніколи не замінюйте бета-тестування - тести, зроблені реальними людьми, які будуть майбутніми користувачами програми.