Тестване на PHP скриптове с cURL

тази статия

В тази статия ще говоря за доста сложни неща, така че ако не знаете PHP на правилното ниво, след това първо прочетете статиите за основите на PHP. Всъщност материалът в тази статия не е толкова сложен по отношение на кода, колкото е трудно да се разбере защо е необходим. Да разбере значението на писането тестове за PHP скриптове, трябва да сте много добри в програмирането като цяло и да имате приличен опит. Ако е така, тогава от тази статия ще научите, как да тествате PHP кода чрез cURL.

Преди да продължите с тестване на PHP скрипт, трябва да го напишете, което ще направим с вас сега (файл "script.php"):

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

Какво става тук? Първо създадохме функцията "тест"което отнема Идентификатор на curl, реда с искането и очаквания резултат. В тази функция ние изпращаме POST заявка към нашия тестван скрипт, вземете отговора от него и сравнете този отговор с очаквания резултат. Ако стойностите съвпадат, тестът е преминал, ако не, тогава тестът е неуспешен. В горния пример можете да видите, че бягаме пет различни тестове, които тестват нашия скрипт от всички страни. И вашата задача е да излезете с възможно най-много различни варианти на входните данни и да проверите скрипта за правилна работа.

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

И накрая, нека поговорим за усещане за тестване на код. Най-общо казано, това се отнася за всеки език, не само PHP. Всъщност, когато правите някакви промени в кода, не е необходимо да го стартирате ръчно за различни случаи (а понякога има стотици или дори хиляди). Просто изпълнявате теста си и виждате дали нищо не се счупи след промените ви? По този начин писането на тестове е много удобно, много бързо и много качествено! И когато проектирате сложни системи, не можете да правите без писане на тестове, в противен случай можете да забравите за качеството, производителността и стабилността.

Добави към моите приятели Във връзка с: http://vk.com/myrusakov.
Ако искате да оцените мен и работата ми, напишете го в моята група: http://vk.com/rusakovmy.

Препоръчайте тази статия на приятелите си:

Ако сайтът ви е харесал, публикувайте връзка към него (на вашия сайт, във форума, в контакт):

Изглежда така:

  • BB-код на връзката за форуми (например можете да го поставите в подписа):
  • Коментари (8):

    Във вашия пример по някаква причина само тези тестове, при които резултатът е 0. Останалите са неуспешни. Къде е грешката? Опитах се да хвърля типове - не помогна.

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

    Работи ли за вас? Вече си счупих главата. За да проверя функцията, преди if показвам $ out и $ result - и те са равни. Но по някаква причина условието е изпълнено само ако и двете променливи са равни на 0. Току-що копирах кода в 2 файла, първоначално не добавях гегове. Просто се чудя, на пръв поглед прост код - и къде е проблемът?

    Ако работи само равно на нула, то изглежда като несъответствие на типа. Опитайте се да сравните типовете също с ===

    Типовете не съвпадат. $ out е низ, а $ result е число. Но на теория низът трябва да се преобразува в число? Дори да напиша intval ($ out) - тогава ($ out) - става нула

    Ако не го преобразувате сами, той ще отчете всеки низ като 0.

    Този пример не работи дори при кастинга. Опитали ли сте да го стартирате сами?

    Да, имам същото нещо. Точният резултат е само там, където са нулите. Целият смисъл на урока се губи, ако резултатът не е същият. Мина една година и грешката е същата.