Начална » Toolkit » 9 Най-добри рамки за автоматизирано тестване за PHP

    9 Най-добри рамки за автоматизирано тестване за PHP

    Прекарали ли сте дълги часове в отстраняване на грешки във вашия PHP код? Е, за повечето програмисти това не е най-очарователното предизвикателство, но има решение, което може да ни помогне да съкратим тази досадна задача. Автоматизирано тестване може значително да подобри работния поток на PHP развитието от позволявайки предварително писмени тестове за управление на процеса на развитие.

    В този пост ще се опитаме да разберем защо автоматизираното тестване е толкова готино, как работи и какво най-добрите рамки за тестване можете да започнете с.

    Защо тестването е важно

    Новите разработчици на PHP не са склонни да пишат тестове за техния код. Повечето от нас започнаха кариерата си чрез тестване на нови функции и функции, които току-що написахме в прозореца на браузъра, и когато нещо се обърка, не знаехме какво да правим.

    Писане на тестове за нашия код може да спести ценно време за отстраняване на грешки и часове на главоболие. Когато непроверен код влезе в производство, прегледите, които ще получим, вероятно няма да са толкова хубави. И така, какво можем да направим?

    Вероятно най-добрата идея е да създаване на работен поток за продуктивно тестване в който трябва да напишем собствен тестов код, който проверява дали кодът на нашата програма работи правилно.

    Номерът е в това кодът за тестване трябва да бъде написан преди кода на приложението. По този начин можем да гарантираме от самото начало, че кодът, който пишем, работи правилно. Тестовият код ще се прехвърли в отделни файлове. Ако по-късно се натъкнем на някакви грешки в нашето PHP приложение, не е нужно да правим нищо друго, просто изпълнете нашите тестове, които се надяваме, че ще дайте ни правилни съвети за проблемите.

    Освен спестяване на време и правилно подготвяне на нашето приложение за производство, тестването има и много други предимства, като:

    • по-надежден код
    • улеснено рефакторинг
    • по-малко проблеми със сигурността
    • по-малка кодова база (адаптирането на кода на приложението към предварително написания тестов код ще ни накара да пропуснем излишните части)
    • по-добра производителност

    Какво е автоматизирано тестване?

    Разбира се, можем да напишем тестовете си ръчно, но след известно време може да бъде досадно и отнема много време с много повтарящи се задачи. Ръчното тестване може да бъде заменено с автоматизирано тестване, в което ние използваме специфични софтуери, които ще направят досадна работа за нас, и можем да прекараме повече време със създаването на логиката на кода за тестване..

    PHP за щастие е доста популярен език за програмиране, така че има много автоматизирани тестови рамки, от които можем да избираме.

    Развитие (TDD) в сравнение с развитието на поведението (BDD)

    Двата основни подхода, които автоматизираните тестови рамки използват, са Test-Driven Development (TDD) и Development-Driven Development (BDD). И в двата случая процесът на разработване се управлява от тестване, което означава, че тестовете се пишат преди кода на приложението.

    Основната разлика между тестваното тестване и провежданото от поведението изпитване е в синтаксиса на кода за тестване: TDD използва правилния PHP код в тестовите файлове, докато BDD използва четими от човека изречения които описват поведението на всяка характеристика и могат да бъдат разбрани и от нетехнически участници.

    TDD Test изглежда така в редактора на кодове, това е просто редовен обектно-ориентиран PHP код:

    ИЗОБРАЖЕНИЕ: Codeception.com

    Тестът на BDD е подобен на този, непрограмистите също могат да имат смисъл:

    ИЗОБРАЖЕНИЕ: Behat.org

    10 Автоматизирани рамки за тестване на PHP

    Имайки това предвид, нека да разгледаме 10 мощни автоматизирани тестови рамки за PHP, които можете да използвате.

    1. PHPUnit

    PHPUnit е най-известната тестова рамка за писане на модулни тестове за PHP приложения. Единичните тестове изискват малки части от кода, наречени единици, и тестването им един по един. С помощта на PHPUnit можем да провеждаме разработено от теста развитие.

    Може да се използва чрез командна линия, и ни дава а удобен клас TestCase които можем да разширим според нашите нужди. PHPUnit също така позволява на разработчиците да използват предварително написани методи за твърдение, за да се твърди, че приложението се държи по определен начин.

    2. Кодиране

    Кодирането не ни позволява само да пишем тестове на единици, но също така и функционални и приети тестове. Тези две последни тестове на PHP приложението като цяло с всички функции, свързани заедно, а не като единици. Кодирането ни позволява да активираме и конфигурираме различни модули според нуждите ни за развитие.

    Той е интегриран с много PHP рамки за разработка като например Symfony2, Laravel4, Yii, Phalcon и Zend Framework. Това означава, че можем да използваме PHP тестова рамка за автоматизация и PHP рамката за разработка заедно, за да създадем супер-ефективен работен поток за разработка.

    3. Behat

    Behat е популярна PHP-тестова рамка, ориентирана към поведението. Тестовете, които можем да напишем с Behat поглед като истории, отколкото код. 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

    Kahlan е пълнофункционална BDD тестова рамка, която позволява да се пишат тестове на блокове с помощта на Опиши го синтаксис. Тя включва принципа на KISS (Keep It Simple, Stupid). Калан изисква поне PHP 5.5.

    Тя има малка кодова база, тя се казва, че е около 10 пъти по-малка от PHPUnit, и има много функции, които ни осигуряват разширяем и персонализиран работен поток за тестване..

    9. Селен

    Селенът е сложна рамка за тестване, която автоматизира браузърите. Това означава, че е възможно да се пишат тестове за приемане на потребители разгледаме цялото приложение като цяло.

    Selenium е стабилен инструмент, който има свой собствен WebDriver API, който може да управлява браузъра си като въпреки че истинският потребител би го използвал локално или на отдалечена машина. Селенът е отличен инструмент за тестване на по-зрели уеб приложения.

    Заключителни мисли

    Автоматизираните тестови рамки ни дават възможност да пишем по-висококачествен PHP код и поради популярността на езика имаме много възможности за избор, така че можем да изберем този, който отговаря на нуждите ни за развитие.

    Има едно важно нещо, което винаги трябва да имаме предвид. Автоматичното тестване може да е мощно, но може никога не замествайте бета тестване - тестове, направени от истински хора, които ще бъдат бъдещите потребители на приложението.