<MyRusakov.ru />

Фреймворк Yii 2.0 с нуля. Пример создания сайта

Фреймворк Yii 2.0 с нуля. Пример создания сайта

Видеокурс "Фреймворк Yii 2.0 с нуля. Пример создания сайта" обучит Вас созданию профессиональных сайтов с использованием фреймворка Yii. В курсе есть 2 раздела: теоретический и практический. В теоретическом разделе будут разобраны возможности фреймворка Yii с примерами их использования, а в практической части будет создан сайт Blog.MyRusakov.ru с помощью полученных знаний из теоретического раздела.

Так же почти ко всем урокам идут упражнения для закрепления материала из урока на практике.

После прохождения курса Вы без труда сможете создавать любые сайты с использованием фреймворка Yii, причём делать это будете быстро и качественно.

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

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

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

В этой статье я собираюсь рассказывать о достаточно сложных вещах, поэтому если Вы не знаете PHP на должном уровне, то сначала почитайте статьи по основам PHP. На самом деле, материал этой статьи не столько сложен в плане кода, сколько он труден для понимания того, зачем это нужно. Чтобы понять всю важность написания тестов для PHP-скриптов, нужно очень хорошо разбираться в программировании в целом и иметь приличный опыт. Если это так, то из этой статье Вы узнаете, как проводить тестирование PHP-кода через cURL.

Прежде чем приступать к тестированию PHP-скрипта, необходимо его написать, что мы сейчас с Вами и сделаем (файл "script.php"):

<?php
  $a = $_POST['a'];
  $b = $_POST['b'];
  echo $a + $b;
?>

Вот этот скрипт мы теперь должны протестировать на корректную работу. Сейчас наша задача придумать как можно больше тестов, которые будут проверять наш скрипт не только на общие случаи, но и на частные. Вот примерный вариант скрипта, который будет запускать тестирование и выводить его результаты:

<?php
  function test($curl, $post, $result) {
    curl_setopt($curl, CURLOPT_POSTFIELDS, $post);
    $out = curl_exec($curl);
    if ($out == $result) echo "Тест ($post) пройден";
    else echo "Тест ($post) провалился!";
    echo "<br />";
  }
  $start_date = microtime(true);
  if( $curl = curl_init() ) {
    curl_setopt($curl, CURLOPT_URL, 'http://temp.local/script.php');
    curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
    curl_setopt($curl, CURLOPT_POST, true);

    test($curl, "a=5&b=8", 13);
    test($curl, "a=0&b=0", 0);
    test($curl, "a=-2&b=2", 0);
    test($curl, "a=-2.5&b=7.2", 4.7);
    test($curl, "a=5", 5);

    curl_close($curl);
  }
  echo "Время выполнения всех тестов: ".(microtime(true) - $start_date)." секунды";
?>

Что здесь происходит? Во-первых, мы создали функцию "test", которая принимает идентификатор cURL, строку с запросом и ожидаемый результат. В этой функции мы отправляем POST-запрос на наш тестируемый скрипт, получаем от него ответ и сравниваем этот ответ с ожидаемым результатом. Если значения совпадают, значит, тест пройден, если нет, то тест провалился. В примере выше видно, что мы запустили 5 различных тестов, которые проверяют наш скрипт со всех сторон. И Ваша задача состоит в том, чтобы придумывать, как можно больше самых различных вариантов входных данных, и проверять скрипт на корректность работы.

Помимо тестирование результатов PHP-скрипта, мы проверяем и его производительность. Поэтому после выполнения всех тестов мы узнаем, насколько быстро работает наш тестируемый код. Безусловно, это время приблизительно, но здесь главное не точное время. Здесь важно понимать, что код зачастую нуждается в рефакторинге. И после его проведения, надо смотреть, насколько изменилась производительность. И если недостаточно хорошо, то продолжить улучшение кода дальше.

И напоследок поговорим о смысле тестирования кода. Вообще говоря, это относится к любому языку, а не только к PHP. Фактически, при внесении любых изменений в код, Вам не надо вручную прогонять его на самые различные случаи (а их бывает иногда сотни, а то и тысячи). Вы просто запускаете Ваш тест и смотрите: ничего ли не сломалось после Ваших изменений? Таким образом, написание тестов - это очень удобно, очень быстро и очень качественно! И при проектировании сложных систем без написания тестов не обойтись, иначе можно забыть о качестве, производительности и стабильности.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (8):

Yuliyul Yuliyul 30.09.2012 00:35:58

В Вашем примере почему то отработали только те тесты, в которых результат равен 0. Остальные провалились. В чем ошибка? Пыталась привести типы - не помогло.

Ответить

Admin Admin 30.09.2012 09:26:57

Выведите результаты и проверьте сами, может действительно ошиблись где-то.

Ответить

Yuliyul Yuliyul 01.10.2012 22:38:25

А у Вас работает? Уже голову сломала. Для проверки в функции перед if вывожу на экран $out и $result - и они равны. Но условие почему-то отрабатывает только если обе переменные равны 0. Код просто скопировала в 2 файла, изначально отсебятины не добавляла. Просто интересно, такой на вид простой код - и где проблема?

Ответить

Admin Admin 02.10.2012 11:10:57

Если только равные нулю срабатывают, то это похоже на несовпадение типов. Попробуйте сравнить и типы тоже через ===

Ответить

Yuliyul Yuliyul 02.10.2012 16:09:37

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

Ответить

Admin Admin 02.10.2012 19:21:11

Если сами не преобразуете, то любую строку он будет считать как 0.

Ответить

irin irin 09.04.2014 21:42:40

Этот пример не работает даже с учетом приведения типов. Вы сами пробовали его запускать?

Ответить

Teria Teria 29.01.2016 16:10:32

Да, у меня то же самое. Правильный результат только там, где нули. Теряется весь смысл урока, если результат не тот. Прошел год, а ошибка та же.

Ответить

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.