Эмулирование задержек и потерь пакетов с помощью dummynet

При тестировании программного обеспечения иногда нужно понять, как оно поведет себя в сетях 3G/4G. Нас интересует влияние полосы пропускания, задержек, потери пакетов. При этом использоваться будет обычная локальная сеть.

Рассмотрим использование dummynet для этой задачи.
Read more »

PHP скрипт, генерирующий страницу с заданным размером

При тестировании биллинга бывает нужно списать определенный размер трафика. Из зарубежных ресурсов может быть полезным http://www.thinkbroadband.com/download.html, из российских — http://upyachka.ru/ (осторожно, трафик!). Но в первом случае появляется зависимость от полосы пропускания внешней линии, а во втором — нельзя указать размер страницы.

И здесь нам на помощь придет PHP.
Read more »

Использование кода httpd (апача) в своей программе

Представим ситуацию, когда вам надо использовать в своей программе кусок кода из опенсорсного проекта. В отдельных случаях удастся этот кусок локализовать и просто скопировать не заботясь о зависимости от других библиотек того самого опенсорсного проекта. Я рассмотрю более общий случай, когда зависимости (типы данных или функции) приходится тащить с собой.

В качестве примера будет функционал httpd, который создает хешированную строку фиксированной длины по исходной строке. В httpd так в частности создается путь для кеширования страницы исходя из ее URL. В результате вы сможете с помощью своего достаточно легковесного бинарника проверять есть ли в кеше определенная страница.
Read more »

Компактный веб сервер для тестирования

Иногда для тестирования нужен легковесный веб сервер, функционал httpd или даже lighthttpd будет избыточен. Для таких целей подойдет самодельный веб сервер: сразу после отправки ответа на запрос происходит выход.

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

Read more »

Пример использования Navigation Timing API

Данный API позволяет веб приложению собрать данные о работе на стороне клиента — редирект, наступление какого-то события, активность DOM. Более подробные сведения ищите тут Navigation Timing API Overview

Я приведу скрипт, который собирает и отсылает данные (если используете CMS, просто вставьте в конец футера, чтоб <script>…</script> оказалось в самом конце):
Read more »

Запуск тестового веб сервера с помощью netcat

Представьте, что вам нужно при тестировании стабильно получать от сервера ответ 501 Not Implemented или 503 Service Unavailable или какой-то заголовок. Для этого можно использовать утилиту nc.

Запускаем команду:
Read more »

Статический анализ java кода с помощью maven плагина Findbug

Статический анализ не претендует на звание панацеи от всех возможных ошибок, он позволяет выявить логические и стилистические ошибки в тех ветках кода, которые не покрыты юнит тестами.
Как показал опыт, некоторые ошибки жили в коде годами. Не исключены ложные срабатывания, так что надо все отчеты внимательно сверять с исходниками. Я проверял пока только проприетарный исходный код заказчика, поэтому примеров привести не смогу, ибо неразглашение 🙂 Но могу сказать, что попадались ошибки, когда строки сравнивались не по значению, а по адресу памяти ( == вместо equals()). Еще удалось обнаружить неиспользуемые переменные/функции (private метод может быть использован только внутри класса) и даже класс.
Read more »

Уже почти прошедшей осени посвящается

Привет, мир!

День рождения сайта.