Эффективность автоматизации тестирования

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

Исторически сложилось, что автоматизацию часто рассматривают в сравнении с ручным тестированием, и потому, если у вас нет специфических задач, которые могут быть решены только с помощью автоматизации – сравнение имеет смысл.

Итак, автоматизацию в общей случае имеет смысл реализовывать если соблюдается условие:

TAcr/N + TAerrval + TAupd < TMval* N,
где
N – количество выполнений в течении одной итерации;
TAcr – время на создание автоматического теста;
TAerrval – среднее время на понимание причины “падения” авто-теста;
TAupd – среднее время на апдейт авто-теста;
TMval – среднее время ручной проверки.

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

Теперь становиться гораздо наглядней следующие моменты:

  • почему не выгодно автоматизировать функционал, который нужно проверить всего несколько раз;
  • почему выгодно автоматизировать регрессию;
  • почему тестирование API всегда более выгодно автоматизировать;
  • почему очень важно иметь высокий уровень абстракции в инструменте автоматизации;
  • почему так важно иметь иметь качественное логгирование результатов выполнения авто-тестов

Уменьшить время проверки можно эффективной схемой анализа результатов и дизайна авто-скриптов.
Ответы на следующие вопрос должны быть получены как можно ранее:

  • К какому функционалу каждая из ошибок принадлежит?
  • Какие действия выполнял скрипт в момент появления ошибки?
  • В каком состоянии было приложение и какими были динамические данные в момент выполнения авто-теста?

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

Как не нужно делать блоговые клиенты

Под блоговым клиентом я рассматриваю программу/скрипт, позволяющий делать постинг в определенный блог.
Так получилось, что стандартные интерфейс Вордпрес-а мне не подходит в основном из-за скорости работы и большого количества движений мышью. Хотелось нечто, что оперирует в основном с конфигами и клавиатурой в связи с чем и был заказан постер со следующим функционалом: в папку ложатся изображения и текстовой файл в определенной разметке, скрипт заливает изображения в папку сайта, делает операции с ними, формирует код поста а из текстового файла берется информация для тайтла, категория и т.д.

Все бы хорошо, но я одобрил добавление записей напрямую в базу и это, как оказалось, не самая удачная идея. Все дело в том, что Вордпресс имеет много функционала, завязанного на событие “Опубликовать пост” – это и пинги и генерация sitemap и работа плагинов и т.д. А когда новые записи ложатся напрямую в базу – триггеры просто не срабатывают.

По этой же причине невозможно работать с плагинами кросспостинга в другие сервисы – движок просто не знает, что новые записи появляются. Как выход – необходимо переписать скрипт для публикации через электронную почту, либо через XML-RPC..

Настройки IpTv через Wi-Fi. Odessa.tv

Рассказываю себе на будущее настройки для просмотра IpTv через WiFi для Asus WL-500P.
Как известно, Iptv передается по протоколу UDP, который валит вай-фай намертво. У меня прошивка “от Олега” – в нем встроен прокси UDP->TCP. Ip в локальную сеть маршрутизатора – 192.168.1.1

1. Зайти в админку рутера и настроить порт UDP 2 TCP (IP Config – Miscellaneous). Я поставил 7781.
2. В файле IpTvPlayer.m3u (плейлист со списком каналов, которые скачал у провайдера) поменял ссылки так:
было – udp://@225.1.2.16:1234
стало – http://192.168.1.1:7781/udp/225.1.2.16:1234
3. Заново загрузил список каналов в плеер – наслаждаюсь.

К сожалению, в HD качестве каналы до сих не отображаются :( не помогает ни увеличение кеширования ни прочие ухищрения. Буду думать дальше чо делать

Создание и восстановление бекапа mysql бд

Взял отсюда

Итак, работаем с командной строкой.

Экспорт базы данных в файл:
mysqldump -uUSER -pPASSWORD DATABASE_NAME > FILE_TO_SAVE_INTO,

где USER – имя пользователя базы данных, PASSWORD – пароль, DATABASE_NAME – имя базы данных, FILE_TO_SAVE_INTO – файл на диске, в который сливается дамп.

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

Импорт базы данных – обратная операция.
mysql -uUSER -pPASSWORD DATABASE_NAME < FILE_TO_RESTORE_FROM

параметры аналогичны предыдущему примеру с экспортом.

Теперь что касается архивов.
Нам понадобятся две операции – создание ZIP архива и его распаковка. Зачем нужны архивы? Представим, что сайт состоит из 5000 файлов. По фтп загружать его крайне неудобно и долго, один файл копируется в Х раз быстрее.

Создание ZIP архива:
zip -r ARCHIVE_NAME *

-r означает рекурсивно добавить все, что есть в данной папке в архив с названием ARCHIVE_NAME, где * – все что есть в текущей папке и ее подпапках.

Распаковка ZIP архива:
unzip ARCHIVE_NAME

все вообще крайне тривиально и просто.
Мне эти четыре операции сильно упрощают работу с созданием архивных копий и восстановлением данных.