Тестування PHP-скриптів через cURL

curl

У цій статті я збираюся розповідати про досить складні речі, тому якщо Ви не знаєтеPHPна належному рівні, то спочатку почитайте статті з основ PHP. Насправді матеріал цієї статті не так складний у плані коду, скільки він важкий для розуміння того, навіщо це потрібно. Щоб зрозуміти всю важливість написання тестів для PHP-скриптів, потрібно дуже добре розбиратися в програмуванні в цілому і мати пристойний досвід. Якщо це так, то з цієї статті Ви дізнаєтесь, як проводити тестування PHP-коду через cURL .

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

Ось цей скрипт ми тепер маємо протестувати на коректну роботу. Зараз наше завдання придумати якнайбільше тестів, які перевірятимуть наш скрипт не лише на загальні випадки, а й на приватні. Ось зразковий варіант скрипта, який запускатиме тестування і виводитиме його результати:

Що тут відбувається? По-перше, ми створили функцію "test", яка приймаєідентифікатор cURL, рядок із запитом та очікуваний результат. У цій функції ми відправляємоPOST-запитна наш тестований скрипт, отримуємо від нього відповідь і порівнюємо цю відповідь з очікуваним результатом. Якщо значення збігаються, значить тест пройдено, якщо ні, то тест провалився. У прикладі вище видно, що ми запустили5різних тестів, які перевіряють наш скрипт з усіх боків. І Ваше завдання полягає в тому, щоб вигадувати, якнайбільше різних варіантів вхідних даних, і перевіряти скрипт на коректність роботи.

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

І насамкінець поговоримо просмисл тестування коду. Взагалі кажучи, це стосується будь-якої мови, а не тількиPHP. Фактично, при внесенні будь-яких змін до коду, Вам не треба вручну проганяти його на різні випадки (а їх буває іноді сотні, а то й тисячі). Ви просто запускаєте Ваш тест і дивіться: чи не зламалося нічого після Ваших змін? Таким чином, написання тестів – це дуже зручно, дуже швидко та дуже якісно! І при проектуванні складних систем без написання тестів не обійтися, інакше можна забути про якість, продуктивність та стабільність.

Додайте до мене в друзіВКонтакте: http://vk.com/myrusakov. Якщо Ви хочете дати оцінку мені та моїй роботі, то напишіть її в моїй групі: http://vk.com /rusakovmy.

Запропонуйте цю статтю друзям:

Якщо Вам сподобався сайт, розмістіть посилання на нього (у себе на сайті, на форумі, в контакті):

Вона виглядає ось так:

  • BB-код посилання для форумів (наприклад, можете поставити його у підписі):
  • Коментарі ( 8 ):

    У Вашому прикладі чомусь відпрацювали тільки ті тести, в яких результат дорівнює 0. Інші провалилися. У чому помилка? Намагалася навести типи – не допомогло.

    Виведіть результати та перевірте самі, може дійсно помилилися десь.

    А у вас працює? Вже зламала голову. Для перевірки функції перед if виводжу на екран $out і $result - і вони рівні. Але умова чомусьвідпрацьовує тільки якщо обидві змінні дорівнюють 0. Код просто скопіювала в 2 файли, спочатку відсеб'ятини не додавала. Просто цікаво, такий на вигляд простий код – і де проблема?

    Якщо лише рівні нулю спрацьовують, це схоже на розбіжність типів. Спробуйте порівняти і типи теж через ===

    Типи не збігаються. $out - рядок, а $result - число. Але ж за ідеєю рядок повинен перетворюватися на число? Навіть якщо я пишу intval($out) - тоді ($out) - стає нулем

    Якщо самі не перетворите, то будь-який рядок він рахуватиме як 0.

    Цей приклад не працює навіть із урахуванням наведення типів. Ви самі намагалися його запускати?

    Так, у мене те саме. Правильний результат лише там, де нулі. Втрачається весь зміст уроку, якщо результат не той. Минув рік, а помилка та сама.