[PHP] Скрипт проверки доступности сайта

Скрипт, который проверяет доступность указанных сайтов по коду ответа от сервера (код 200 означает, что все ОК), и отсылает уведомление на электронную почту, если с сайтами что-то не так.

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

$url = array(
		'http://site1.com/',
		'http://site2.com/',
		'http://site3.com/',
		'http://site4.com/'
);
 
foreach ($url as $val)
{
	$answer = check_http_status($val);
	if ($answer == 200)
		echo 'Site '.$val.' is avaliable.', PHP_EOL;
	else
	{
		if ($answer == 28) // See code status - http://curl.haxx.se/libcurl/c/libcurl-errors.html
		{
			echo 'Resource '.$val.' is not responding. Time out operation (more than 10 sec)'. PHP_EOL;
			// Sending notification
			$from = "test@test.com";
			$to = "admin@test.com";
			$subject = "Resource is not available";
			$message = "Resource $val is not available.\r\nHTTP status: $answer";
			mail($to, $subject, $message,"Content-type:text/plain; charset = UTF-8\r\nFrom:$from");
 
		}
		else
		{
			echo 'Resource '.$val.' is not avaliable. Reason: '.$answer.'. ', PHP_EOL;
			// Sending notification
			$from = "test@test.com";
			$to = "admin@test.com";
			$subject = "Resourceis not available";
			$message = "Resource $val is not available.\r\nHTTP status: $answer";
			mail($to, $subject, $message,"Content-type:text/plain; charset = UTF-8\r\nFrom:$from");
		}
	}
}
 
function check_http_status($url)
{
	$user_agent = 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)';
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_URL, $url);
	curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($ch, CURLOPT_VERBOSE, false);
	curl_setopt($ch, CURLOPT_TIMEOUT, 10);
	$page = curl_exec($ch);
 
	$error = curl_errno($ch);
	if (!empty($error))
		return $error;
 
	return ($httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE));
	curl_close($ch);
}

[Twitter] Баг с датой отправки сообщения в ЛС

Сегодня, открыв список переписки (личные сообщения) в Twitter, обнаружил баг, связанный с показом даты отправки сообщения.

Так, в переписке с одним человеком датой всех отправленных сообщений являлось 9 декабря. После того, как сегодня я отправил ему новое сообщение, даты предыдущих отправленных сообщений изменились на 16 мая (у текущего — время, прошедшее после отправления).

Про конференцию Fun ConfeT&QA

На прошлой недели в качестве докладчика выступал на онлайн конференции для тестировщиков ConfeT&QA, которая организуется довольно часто и делится на три вида: конференция для тест-менеджеров и тест-лидов, для автоматизаторов и для мануальщиков (в последней как раз я и принимал непосредственное участие).

Три дня на проведение конференции, всего 10 докладчиков (сколько было слушателей — без понятия), Я выступал в последний день вторым по счету. С непосредственной темой доклада (тестирование приложений для Smart TV), как выяснилось позднее, я немного промахнулся. Акцент при выборе темы нужно было сделать на тестировщиков, которые только начинают свое становление (т.е. на новичков), к тому же, не так много людей занимается тестированием программ под Smart TV. Как мне потом сказали, тема — интересная, но мало применима для слушателей.

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

Текст-кейсы для интеграции Facebook-авторизации

Список основных тестовых случаев (рассмотрено 20 кейсов) для проверки интеграции внешней авторизации через Facebook на свой ресурс.

[Skype] Пример дефекта локализации

Надпись «Установить новую версию» не влезает в область кнопки. Это происходит, скорее всего, из-за значка «Контроль учетных записей», который, в зависимости от системных настроек, появляется слева от надписи.

Данная проблема должна была быть выявлена в ходе тестирования локализации, но почему-то этого не произошло.

[Android] Про баг с отсутствием месяца «декабрь»

Отсутствие месяца «декабрь» в календаре приложения «Peolple» в OC Andoid 4.2 взбудоражило интернет-общественность, ибо наконец-то нашелся весомый косяк, позволяющий от всей души потроллить разработчиков.

Факт того, что данный баг был пропущен в релизе, свидетельствует о том, что и в Google тоже работают обычные люди, которым свойственно ошибаться. Однако, остается непонятным, как такой очевидный дефект мог быть пропущен службой тестирования. Возможно, виной тому является слишком большое доверие автотестам и TDD, ведь, если не ошибаюсь, так таковых ручных тестировщиков в Google нет, и в большинстве своем продукты проходят бета-тестирование.

[Redmine] Плагин для создания шаблонов

Плагин для Redmine, который позволяет создавать шаблон для оформления задач/ошибок, и применить его непосредственно перед их созданием. Полезная штука для автоматизации однотипного написания «Steps for reproduce, Actual result, Expected result и т.п.»

А вот, собственно, и возможный шаблон описания ошибки для Redmine:

h1. Percondition:

h1. Environment:

h1. Steps for reproduce:

#
#
#

h1. Actual result:

h1. Expected result:

Про серьезность и приоритет ошибки

Приоритет ошибки (Priority), выставляется менеджером (руководителем отдела тестирования):

  • Resolve Immediately
  • Give High Attention
  • Normal Queue
  • Low Priority
  • Defer

Серьезность ошибки (Severety), выставляется тестировщиком:

  • Blocker
  • Critical / Show Stopper
  • High / Major
  • Medium / Average
  • Low / Minor

Баг верстки во «ВКонтакте»

Наткнулся вот на такой красивый баг в верстке социальной сети «ВКонтакте»:

Ну и в продолжение:

Запуск PHPUnit в Eclipse IDE

Чтобы иметь возможность запускать PHPUnit из Eclipse IDE, можно воспользоваться средствам запуска внешних инструментов: вкладка «Run» -> «External Tools» -> «External Tools Configurations». В открывшемся окне «External Tools Configurations» в дереве слева необходимо выделить пункт «Program», вызвать контекстное меню и в нем выбрать «New». В окне слева вписываем:

  • Name: PHPUnit
  • Location: указываем путь до PHPUnit (пример: C:\xampp\php\phpunit.bat)
  • Working Directory: можно оставить пустым
  • Arguments: ${resource_loc}

Затем «Apply», после чего в меню Run -> External Tools появится созданная конфигурация.