31 декабря 2012

Link: О целях

Коллеги из ItBoost написали пару очень годных статей на тему целей и отношения к ним. Рекомендую к прочтению.

Раз
Два

28 декабря 2012

Полезняшка: 10 досок

Бывают такие вот кратенький конспекты на которые глянь и в голове проясняется. 

Вот Матрас Скарин написал такой подарок кабана доскам.
Очень годный конспекты.
http://tim.com.ua/2012/01/10-kanban-boards-russian/

05 декабря 2012

Видео: Agile Product ownership ina nutshell

Порой меня просто гипнотизируют виде отт Хенрика Книберга. Пожалуй лучший докладчик на тему бытового agile.
Боюсь представить сколько работы за таким видео стоит.
Смотрите
https://www.youtube.com/watch?v=502ILHjX9EE

02 декабря 2012

Link: Стратегии формирования Continuous deployment


С недавнего времени я стал придерживаться следующего принципа в отношении того какая статья/пост/заметка появится в этом блоге.

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

Итак, мысль:

Remember: If you have no users, regressions are free!

Getting Started with Continuous Deployment

21 ноября 2012

Статья: Масштабирование организационных структур на примере Spotify

Henrik Kniberg в очередной раз радует годной статьёй.
Хотел было как-то изложить краткую суть со своими ремарками, но авторы статьи и так это делают сами ближе к концу.

Грамотное применение матричной системы управления организацией на примере.
Часть практик связана с факторами территориального распределения, но вполне разумно на мой взгляд.

Читайте

19 ноября 2012

Книги: Маленькие книжки по MongoDB и Redis

Давненько на хабре проскакивали посты про переводы маленьких книжек по NoSQL базам - MongoDB и Redis.
Никак не доходили руки их почитать.
С появлением планшета  - дошли, итого прочитал обе, сегодня вторую.
Книжки дают общее представление о том что такое MongoDB и Redis, для чего использовать а для чего нет.
Настоятельно рекомендую.
Книжки весьма просто гуглятся, книжку по mongodb, а вот на redis.
Большое спасибо Karl Seguin за книжки и всем переводчикам за их труд.

Полезняшка: Скрипт для запуска Selenium тестов в Headless mode на Linux

Собственно на указанную тему можно найти множество статей и постов из разряда "Как я провел Х часов трахаясь с запуском браузера под фреймбуфером".
Но да ладно, пусть еще одна будет.

http://pypi.python.org/pypi/xvfbwrapper

16 ноября 2012

Мысли вслух

Вот задумайтесь.
Сотовой связи (от первого патента в 1971 году) 40 лет. Активного развития - ну хорошо, 25.
Персональным компьютерам - тоже около того, с 1977 года.
iPhone  - 2007 год.
Планшетные ПК - 2002 год.
Первые релизы электронных книг - 1998.
И вот сейчас появляется то, о чем лет 5 назад я читал в "Распознавании образов" Уильяма Гибсона становится реальностью.
Вот вам игрушки в дополненной реальности.
Это я к тому что скорость превращения фантазий в реальность начинает зашкаливать.

Полезняшко: Бесплатные ВМ Windows для тестирования на IE 6

http://habrahabr.ru/post/158847/

07 ноября 2012

Видео: David Allen

Я просто оставлю это здесь, кто в теме  - тот оценит.

Пара мыслей вырванных из контекста

С ростом отдела тестирования разработчики чувствуют что ответственность за качество перекладывается на плечи отдела тестирования.

Корень проблемы: плохое поведение /отношение возникает тогда, когда люди абстрагируются/отделяются от последствий своих действий и решений.

Вырваны они были из занимательного чтива от Jez Humble про то почему не может быть такой вещи как DevOps Team.





06 ноября 2012

Новости: WebDriver как стандарт

Движение которое началось этим летом не угасло.
Не далее как на прошлой неделе в коридорах W3C было обсуждение того чем ему быть.
Детали по ссылке.

Автобиографическое

Когда-то давно, когда деревья были большими, а маленьким junior java developer-ом я думал, что работа менеджера - достаточно тупая и примитивная. Кидай себе задачки, тяни колбаски по диаграммам Ганта, да давай раздолбон нерадивым говнокодерам. Более того я серьезно считал, что никогда самостоятельно не пойду в менеджеры.

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

Картина становилась четче. Отношение к профессии менеджера не поменялось. Просто мне стало их жалко - общаться с заказчиком, договариваться по срокам, удовлетворять фантазии своего собственного начальства. И при этом всем - работать - составлять планы,отслеживать ситуацию на проекте, тянуть колбаски на диаграмме Ганта, писать отчеты.

Ситуация стала менятся как только у меня в подчинении появился первый человек. Органическое понимание ответственности "за себя и за того парня". Это даже при всем при том, что формально я не был его начальником - зарплату я ему не назначал, уволить его не мог. Но мне дали ресурс, право им распоряжаться хоть и в ограниченном объеме. Только после того как у тебя в подчинении появляется пара ребят и большая задача начинаешь понимать что такое работа менеджера. Вот тут слова управление, планирование, контроль результатов начинают играть новыми красками, и пахнуть нифига не гуманитарно, а очень-таки практически и керосином.

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

Хочу ли я быть менеджером? Не знаю. Точно знаю, что не хочу быть администратором. Но есть в этой работе что-то такое чего нет нив одной другой.

Однако вместе с тем есть в работе менеджера и та сторона которую не все любят. Тебе приходится иметь дело с "внутренностями" людей, и даже копаться в них. Более того приходится "играть" еще и с другими менеджерами. И зачастую игры бывают подковерными. Но ничего... пройдет еще пару лет/проектов/мест работы и может быть я чему-то научусь или чтото пойму на новом уровне

01 ноября 2012

Link: что значат метрики кода

Видео:Selenium Grid в eBay

Команда автоматизации тестирования eBay выступала на каком-то мероприятии в Лондоне, где рассказывала про то как у них организован грид.

Суть в кратце:виртуальные машины грида разворачиваются со снепшота (судя по всему со снепшота в запущенном состоянии), каждые N тестов машина "сбрасывается" на снепшот.

Более детально смотреть тут.

Grid 2 - Integration with a virtual environment from Mozilla QA on Vimeo.

Слайды презентации вот тут.

22 октября 2012

Software Stories: Про Сигизмунда


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

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

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

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

И начал Сигизмунд головы суппостатам помельче рубить, и стало спокойно воеводе да и войску всему.
А тут такая лютая сечь  у всего войска пошла, что всем стало не до Сигизмунда, и стал он предоставлен сам себе.
Тем временем Сигизмунд совсем мелких суппостатов на голову разбил и стал думать как бы ему так забороть еще какого суппостата, да так чтоб войску всему да воеводе удаль свою показать.

И решил Сигизмунд написать фреймворков своих, да утилит чтобы суппостата бить можно было удобно. Написал Сигизмунд фреймворков  да утилит и внедрил их в проект - стало дружина жить легче, да еще сильнее врага бить. Да никто из дружины за той радостью и не заметил, что написал Сигизмунд не конька-горбунка, а велосипед с колесами не круглыми, и вместо седла у него дилда большая.

А Сигизмунд тем временем получил предложение от другого воеводы и ушел в другую дружину.

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

И решил воевода взять Сигизмунда как наемника на время.
В тот день Сиизмунд узнал такие слова как "job security",а воевода так ничего и не понял.

17 октября 2012

Link: Автоматизация тестирования мобильных приложений на примере eBay

Вкратце: Автоматизаторы в eBay настолько суровы что смогли заинтегрировать Selenuim Grid как с Android, так и с Apple UI Automation. Называется это все Calabash и iOS Driver, оба выложены на GitHub

Полезняшка: Сброс кэша Opera с помощью Selenium

Как я уже писал вот тут мне потребовалось иметь возможность сброса кэша всех браузеров.
Вот расковырял как это делать с Opera.

OperaProfile operaProfile = new OperaProfile();
operaProfile.preferences().set("Cache", "Cache Docs", false);
operaProfile.preferences().set("Cache", "Cache Figs", false);
operaProfile.preferences().set("Cache", "Cache HTTPS After Sessions", false);
operaProfile.preferences().set("Cache", "SVG Cache Size", 0);
 
operaProfile.preferences().set("Disk Cache", "Cache Docs", false);
operaProfile.preferences().set("Disk Cache", "Cache Figs", false);
operaProfile.preferences().set("Disk Cache", "Cache HTTPS", false);
operaProfile.preferences().set("Disk Cache", "Cache Other", false);
operaProfile.preferences().set("Disk Cache", "Media Cache Size", 0);
 
operaProfile.preferences().set("OEM", "Operator Cache Size", 0);
 
 
operaProfile.preferences().set("User Prefs", "Automatic RAM Cache", false);
operaProfile.preferences().set("User Prefs", "Cache Directory4", "");
operaProfile.preferences().set("User Prefs", "Cache Style File", "");
operaProfile.preferences().set("User Prefs", "Max Number Cached Bitmaps", 0);
operaProfile.preferences().set("User Prefs", "Operator Cache Directory4", "");
operaProfile.preferences().set("User Prefs", "Strategy On Application Cache", 0);
operaProfile.preferences().set("User Prefs", "Maximize New Windows", 1);

Link: О результатах код внедрения Code Review

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


P.S. Code Collaborator описанный в статье - очень мощный инструмент.


02 октября 2012

События: Yet Another Conference 2012


Итак побывал.
Место проведения  - 75 павильон ВВЦ

Публика - очень разношерстная,но вся заинтересованная.
Поразило полное отсутствие (ну или крайне тихое поведение) школоты - уж не знаю почему, но явно плюс конференции.

Программа - неоднозначная.
Я конечно ходил по секциям посвященным тестированию, но был и ряд интересных докладов не по теме.
Очень смутило что на такую тему как Cocaine было выделено всего час, я бы выделил отдельный трек.
Почему-то доклад Алексея Емелина по тестированию безDOMных компонентов съехал в трек Фронтенда, а не тестирования.

В остальном - секция тестирования выстрелила - Артем Ерошенко, Иван Кацев, Николай Алименков.
Доклад Артема Ерошенко, на мой взгляд, был лучшим докладом конференции - тема функционального мониторинга среды с помощью автотестов прет по всей отрасли и они словили волну первыми.
Ну и конечно главное событие  - презентация браузера от Яндекса, в который интегрирована куча облачных сервисов, Turbo mode от Opera и много-много-много всего.

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


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

P.S. Фотографии и видео не буду вешать принципиально - этого и без меня понакидают выше головы.

18 сентября 2012

Полезняшка: Сброс кэша в IE для Selenium тестов

Даже не спрашивайте меня зачем мне это понадобилось.
Понадобилось и все.

Достаточно аккуратная возможность сбросить кэши есть в Firefox.

public WebDriver createFf() {
    final DesiredCapabilities firefox = DesiredCapabilities.firefox();
    final FirefoxProfile firefoxProfile = new FirefoxProfile();
    disableCacheFF(firefoxProfile);
 
    final WebDriver firefoxDriver = new FirefoxDriver(firefoxProfile);
    return firefoxDriver;
}
 
public void disableCacheFF(final FirefoxProfile firefoxProfile) {
    firefoxProfile.setPreference("browser.cache.disk.enable", false);
    firefoxProfile.setPreference("browser.cache.memory.enable", false);
    firefoxProfile.setPreference("browser.cache.offline.enable", false);
    firefoxProfile.setPreference("network.http.use-cache", false);
}

В случае с Google Chrome я нашел такое решение

    final DesiredCapabilities chrome = DesiredCapabilities.chrome();
    chrome.setCapability("chrome.switches",
        Arrays.asList("--start-maximized","--disk-cache-size=1","--media-cache-size=1"));

Способ сброса кэша в Opera  я пока исследую.
В остатке - Internet Explorer.
С ним как обычно беда, и беде этой не первый год.
Но windows/.NET/MS - разработчики  - тоже люди тоже упирались в эту проблему.
В итоге было решено сделать "крайне элегантный в своей простоте" (с) workaround - вызов нативной DLL-ки.
Делается это так

RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8

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

  1. Создать прокси класс для работы с RemoteWebDriver -почти готовое решение есть вот здесь.
  2. Написать маленький Jetty-based сервис и положить на ноду. Это решение я сделал в качестве примера и выложил на GitHub





05 сентября 2012

Selenium: Определение IP адреса ноды на которой выполняется тест


Терминология 


  1. грид - Selenium Grid - состоит из хаба и нод.
  2. хаб (Selenium Grid Hub) - экземпляр selenium-server-standalone запущенный с ключом "-role hub"
  3. нода (Selenium Grid node) - экземпляр selenium-server-standalone запущенный с ключом "-role node -hub http://<адрес хаба>:4444/grid\register"


Не буду вдаваться в предысторию вопроса, но суть проблемы была сведена к следющему - при запуске Selenium-тестов на гриде нужно знать на какой конкретно ноде был запущен тест.
Стандартное API Selenium не предоставляет такой возможности,хотя к чести разработчиков Selenium-а надо сказать что они в последнее время начали смотреть в эту сторону.

Дальнейшее рассмотрение проблемы привело меня к следующbv вариантам решения:

  1. дописать свой собственный сервлет к кодобазe Selenium
  2. написать нечто внешнее что позволило бы определять IP адерса нод и отдаавать их.


Первый варинат решения является наиболее элегантным и рассово-правильным, если не принимать в вонимание то, что за 1(!) год работы над Selenium 2 было выпущено только 25(!!!) релизов.
Если вам нужно постоянно зхапускать тесты на последней версии браузера, то с выходом каждой новой версии вам придется сливать код из mainline Selenium-а, мерджить его со своей версией проекта, пересобирать, и раскатывать по своему гриду.
Ну и как бесплатный бонус  - шанс что-то сломать и потом долго это искать.

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

Ну и пример приложения.
Точка входа

import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
 
public class Runner {
 
 public static void main(String[] args) throws Exception {
  Server server = new Server(9090);
  final ServletContextHandler servletContextHandler = new ServletContextHandler();
  servletContextHandler.addServlet(new ServletHolder(new IpDetectorServlet()), "/getIp");
  server.setHandler(servletContextHandler);
  server.start();
  server.join();
 }
}
 

Ну и начинка которая непосредственно занимается определением и возвратом IP

import java.io.IOException;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
 
public class IpDetectorServlet extends HttpServlet {
 
 /**
  * 
  */
 private static final long serialVersionUID = 5661514303101772232L;
 
 @Override
 protected void service(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  final String remoteAddr = request.getRemoteAddr();
  response.setContentType("text/plain");
  response.setContentLength(remoteAddr.length());
  response.getWriter().write(remoteAddr);
 }
 
 
}


Дальше упаковываем все это в стандартный jar и можем запускать на любоей платформе.
Чтобы получить адрес ноды на которой выполняется тест теперь нужно в коде теста просто иметь вот такую строчку

driver.get("http:10.10.10.12:9090/getIp");
String ip = driver.findElement(By.tagName("body")).getText(); // так конечно делать не хорошо :)
System.out.println(ip);


Исходники на GitHub 

PS очень надеюсь, что в ближайшее время разработчики Selenium сделают HUB API и потребность в подобного рода "велосипедах" отпадет.

Книга: Сет Годин "Прекратите воровать мечты !"


Слава Панкратов и Саша Орлов перевели книгу Сета Година "Stop Stealing Dreams!" о чем и сообщили мне в почту в расслыке Стратоплана.

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

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

(Я немного переставлю фрагменты местами чтобы был понятен ход моей мылсли)

1.
Во время поездки в Пруссию Манн ознакомился с тамошней полувоенной системой образования и внедрил ее здесь: сначала расписал ее, а затем ввел ее на Северо-востоке США, откуда она распространилась со временем по всей стране.

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

Так описывает Сет Годин истоки американской общеобразовательной школы.
Чем она отличается от нашей ? В сущности ничем.
Только тем что наша школа не заимствована опосредовано у американцев, а напрямую у пруссаков (это исключительно мое мнение).
Эта мысль мне кажется ключевой - отсюда все пошло, в том числе все то, что мы расхлебываем сейчас.

Теперь тезисно остальныые мысли из книги.


  1. Школьная система образования была сформирована под воздействием промышленности и обслуживает ее нужды - поставка "хороших" рабочих - покладитсые, покорные, несамостоятельные.
  2. Текущая экономическая ситуация с этим плохо клеится - растущая автоматизация производства и аутсорсинг, как следствие растущая безработица.
  3. Школа и общество не воспитывают увлеченность и лидерство в детях. 
  4. Детей не учат работать совместно - все обучение направлено на промышленнй контроль качества каждого выпускаемого школьника, а не "партии в целом", уж тем более не конкурентноспособности.
  5. Людей в массе стало больше, но стало существенно меньше тех, кто двигал бы прогресс - школа воспитывает на предпринимателей и ученых, а клерков и секретарш.
  6. Стоимость получения информации  - низка как никогда до текущего момента, но даже в этой ситуации ее никто не потребляет, потому что нет силы воли.

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



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


Теперь от себя:

1. Коллективная работа
Вы когда-нибудь пробовали организовать групу студентов 3-4 курса ВУЗа хотя бы даже для того чтобы выполнить работу которую им дали на всю группу ?
Я пробовал, дважды, даже SCRUM на них практиковал :).
Нет, они не были тупыми или кончеными упырями - все нормальные люди, с головой как минимум на среднем уровне, работами и стремлениями в жизни.
Но работать коллективно их никто не учил.
В школе не учили, в институте попробовали.
Получилось далеко не у всех.
А потом эти люди приходят к вам в коллектив, и Вам придется объяснять им что в существующую, налаженную экосистему нужно вписываться, а не переписывать ее под себя.
И что от результата их работы иногда (или даже часто) зависит работа других людей.

2. Лидерство.
Даже не спрашивайте меня что такое лидерство - я и сам не знаю точно.
Но знаю, что без увлеченности делом и принятия отвественности за себя(других/общее дело - нужное подчеркнуть) к этому понятию даже не приблизиться.
Этому в наших школах тоже не учат - в основном учат "сидеть на жопе ровно", круговой поруке, а увлеченность поощеряют тогда и только тогда, когда сама школа (как институт) имеет с этого выхлоп.

3. Нетворкинг
Я очень не люблю это слово, но тем не менее.
Вы знаете чем занимаются ваши одноклассники-однокурсники?
А чем они могут вам помочь в вашей текущей деятельности ? ( вопросы фалометрии "кто кем стал после школы?", "у кого джЫп круче?" оставим для дискуссии о человеческой природе en masse).
А сколько человек из класса открыли бизнес вместе или хотя бы работают на одном и том же предприятии? Из моего - никто.
Мы очень мало знаем даже о возможностях/способностях/навыках друг-друга, которые нам же могут пригодится.
Школа этому тоже не учит.
Даже в минимальной степени.


Я читал эту книжку очень долго, несмотря на то что в ней всего 80(!) страниц.
Временами мысль автора уходит очень глубоко, временами - прямо на поверхности.
Заставляет задуматься чему ты будешь учить своего ребенка.
И чему его должна научить школа.
В этой книжке нет ни одного ответа на поставленные автором вопросы, но даже несмотря на это у меня не поднимается рука поставить ей меньше чем 7 баллок по 10 балльной шкале.

Ребятам из команды Стратоплана еще раз большое спасибо за их труд и качественный перевод.

31 августа 2012

Жизненное, про ресерч


Этот пост описывает реальные события.
Имена людей, названия вендоров, торговые марки специально изменены по соображениям профессиональной этики.


Все началось с того, что ко мне подошел менеджер Самого Главного Проекта и врубил в ситуацию.
А за две недели до этого я видел тестировщика приписанного к этому менеджеру пишущим код (!!!) в одной Очень Дорогой Среде Разработки от Корпорации Зла.
История была печальной - при каждом релизе Самого Главного Проекта тестировщику нужно было тестировать проекта на совместимость с программно-аппаратными продуктами других вендоров - это фича такая.
Нюанс заключался в том что тестировать приходилось каждую версию программно-аппаратного продукта, а таковых только у одного вендора было 9, а вендоров с полдюжины.
И все это на каждой операционной системе из списка поддерживаемых.
То есть простая комбинаторика говорит нам о том что деятельность такая успеет надоесть быстрее чем закончится хотя бы один раз.
И для каждого нужно подготовить тестовое окружение, накатить драйвера, накатить софт, развернуть минимальную схему функционирования - дадад, тут вам не здесь, это вам не селениумом на ajax-овым формочкам тыкать!!!!
Если упростить ситуацию до цифр - тестировщик на тестирование этих 9 версий тратил 2 недели в режиме полной загрузки.
Дадад,я не гоню - можно подумать что он по идее больше ничем и заниматься не будет кроме тестирования этих программно-аппаратных продуктов, но НЕТ!!! -  просто тестировали не каждый релиз. Отчего и выхватывали иногда мотивационных пряниокв от Кастомеров.
Еще очень повезло что тестировали на виртуалках, а не на "физике".
Менеджер просил слезно - подумай, очень нада!
Ну оно и так видно что очень надо - на Самом Главном Проекте работает Самый Главный Тестировщик, который регулярно занимается не пойми чем по 2 недели.
Так начался этот проект по R&D.

На полной мощности я приступил к проекту только спустя полтора месяца после разговора.
Написал прототип который просто имитировал логику работы, провалидировал прототип, понял что можно начинать писать внутренности.
И вот там и начались проблемы, но опять же не сразу.
Все шло хорошо, пока тестирование проходило на Самой Древней Операционной Системе - там все работало.
Но как мы помним - операционных систем целый спектр.
И вот тут из кустов показался первый рояль - не все операционные системы хотели работать с подключенными программно-аппаратными продуктами с первого раза - нужно было несколько раз отключить-подключить его к системе.
В этом месте я бился головой очень долго.
А потом вспомнил, что есть еще и другие продукты для виртуализации.
Откат в исследовании на несколько шагов назад, повторяем все тоже самое на другом гипервизоре и .... все работает. Но опять же на Самой Древней Операционной Системе.
Как говорят в одном из моих любимых подкастов "А потом попробуйте со всем этим взлететь...".
В общем не взлетело.
Это был очень поучительный момент для меня лично.
Я понял на органическом уровне почему не каждый R&D проект заканчивается успехом.
Это был урок для меня. 
Очень сильный урок. 
3 месяца работы с двумя гипервзиорами закончились ничем  - тестировать нужно было продолжать руками.

Я написал отчет по исследованию на пару страниц, отправил всем Заинтересованным Лицам.
Все, проект можно было считать закрытым - причина провала была описана, локализована и заключалась она во взаимодействии гипервизоров и Операционных Систем.
Признаваться самому себе в том что ты не справился  - нелегко.
Но в тот раз было как-то спокойно - я знал, что я постарался сделать все.
И все знали.
И никто не сказал, что это время было потрачено в пустую.
Жизнь пошла дальше,а через полтора месяца я ушел работать в другую фирму.
Прошло три месяца после моего ухода, и ко мне в чат постучался Самый Главный Тестировщик из Самого Главного Проекта с предыдущего места работы.
Он сказал что вышла новая версия гипервизора, в которой вроде бы  не наблюдается тех глюков которые были ранее.
Я сказал нужно достать код с полки, попробовать.
Но этом все и кончилось.
Я не верил, что оно взлетит - слишком уж минорная была бага с точки зрения вендора гипервизора.
А вчера мне написал мой падаван из той фирмы и сказал, что оно взлетело.
Я сначала даже не понял про какой проект он говорил.
И что-то внутри меня щелкнуло.Переключилось даже.

К чему я это все.
1. Не все проекты R&D будут успешными. Это нужно понимать до того как вы их начинаете.
2. Из неудач выносится больше уроков чем из побед. И я это пишу потому что оно не взлетело тогда.
3. Пока есть человек которому ЭТО нужно вам есть на кого оперется. Имменно он - Самый Главный Тестировщик - сдвинул эту тему. Напомнил всем что надо попробовать на новом гипервизоре.
4. Ведите журнал исследования. Ведите, блеать!!! И перечитывайте его регулярно на трезвую голову. Вы можете замкнуться в своих исследованиях на одном пути, чего делать нельзя.
5. Выкладывайтесь!На 250 %! Если вам это исследование не интересно - оно не ваше.

PS. Viva la Tokenizer!!!

26 августа 2012

Link: Maven Tiles

maven-tiles/README.md at master · maoo/maven-tiles · GitHub

Для тех кому совсем не хватает фантазии разделить один проект на несколько теперь придумали Maven Tiles - сборшик одного pom.xml из кучи.
Страшно, непонятно, но факт

24 августа 2012

VMWare отменяет лицензирование vRAM

Как  я уже неоднократно писал противостояние на рынке виртуализации между Microsoft и VMWare в последнее время нарастало.
Все пронозы говорили о том, что VMWare просядет, но вот последние новости - введенный год назад новый способ лицензирования ESX который заставляет вас платить не только за ядра но и за RAM теперь отменяется.

Видимо дела становятся все хуже и хуже.

23 июля 2012

Link: НАЙМ: ВЫ ВСЁ ДЕЛАЕТЕ НЕ ТАК

Отличная статья про то как проводятся собеседования.
От себя могу добавить что определенное время назад все было не так плохо на собеседованиях, теперь (как мне кажется) стало гораздо хуже.

10 июля 2012

Link : Птица Феникс в виде сервера

PhoenixServer

Хорошая идея.
Говорят NetFlix исполтзует утилиту для тестирования своей инфраструктуры которая рандомно отключает сервера на разных слоях архитектуры и мониторит что и как происходит дальше.

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

09 июля 2012

Лео Бабаута "Концентрируйся свободно" (перевод Synderesys team)


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

"На троечку", с натяжкой.
Команде Synderesis еще раз спасибо за перевод (скачать можно тут).

03 июля 2012

Tools: RoboHydra

Opera выпустила  интересный проект - RoboHydra - HTTP сервер для эмуляции различных аномальных ситуаций, которые могут возникать. Судя по всему написано на NodeJS, ну или очень похоже.

26 июня 2012

Просматривая видео

с летнего аналитического фестиваля 2010 года услышал коллегу с одного места работы, увидел еще одного с другого. Как же тесен российский ИТ-мир.
Сергей Мартыненко. Написание тестов, как вид тестирования требований from Grigoriy Pechenkin on Vimeo.

Link: Кроссфункциональность в команде

На SoftwarePeople#12 Максим Дорофеев рассказывал о вреде и пользе кроссфункциональных команд.

Делать команду кроссфункциональной или не делать - вопрос каждого конкретного случая.
А вот пару полезных советов как ее делать кроссфункциональной можно прочитать тут.
Несколько идей показавшихся мне полезными:

  1. дебриф после каждого законченного действия 
  2. скилл матрицы
  3. учет автобусного фактора


18 июня 2012

Еще один извращенный способ запуска Selenium

Вот тут господин Баранцев опубликовал статью по запуску Internet Explorer Driver Server для работы Selenium-а.

Вкратце:

  1. Укладываем exe-щник в папочку, путь к папочке прописываем в PATH
  2. запускаем Selemiun Server с  -Dwebdriver.ie.driver=<путь к файлу>
Глядя  на все это на ум приходят следующие мысли.

Как только разработчики браузеров не извернуться для того чтобы повысить свою привлекательность и не похерить свою приватность.
С точки зрения автоматизации браузерного тестирования Firefox пока остается впереди планеты всей - уж очень хорошо и глубоко проинтегрирован в него WebDriver (кстати вышедший из Google!!!), однако Chrome Driver как был, так и существует в виде отдельного проекта и КПП внутрь хрома, который кстати не до конца реализует спецификацию JSON Wire Protocol (мой твит и бага в трекере).
Вот и еще один пациент пошел по пути наименьшего сопротивления  - выстроить реализацию JSON Wire Protocol в виде отдельно стоящего чуда, которое нужно отдельно деплоить и обновлять в случае фиксов (опять же вспоминаем Google Chrome, который уже 20 версии!!!).
Это понятно с той точки зрения, что не нужно тащить чей-то чужой протокол внутрь своей кодобазы, но внещне выглядит так что людям тупо лень.

Как-то так, извиняюсь за сумбур.

 

Читая утреннюю прессу...

наткнулся на душеспасительное


И второй душеспасительынй линк в продолжение темы сисек, найма и удержания персонала в ИТ

14 июня 2012

Книга: Успеватель Василия Кислого


Прочитал вот по этой вот наводке от Максима Дорофеева.
Ничего нового я там не узнал, однако книжка хороша тем, что пытается вложить в голову систему над которой не нужно будет думать, которую нужно просто выполнять.
Это именно то, что я впитал из книжки Аллена, то что очень трудно заложить людям в голову на первичном этапе внедрения GTD.
Плевать на стиль изложения, структуру книги, плоский юмор.
Она полезна, остальное меркнет.
70 страниц чистой пользы для неокрепших голов.
Еще раз - всего 70. Дэвид Аллен уложился в 350. Здесь в 5 (!) раз меньше.
Если это не повод прочитать ее  - то что тогда?
Макс - спасибо за книжку.

P.S. ссылка на книжку

Запоздалый отчет о SQA Days в Киеве


Первый раз был на SQA Days.
В качестве площадки для проведения выбрали КИМО (киевский аналог МГИМО - публика соответствующая).
КИМО как площадка для проведения конференции - совсем неплоха, но столовую нужно было либо не включать, либо заменить еду для участников конференции на более приличную.
КИМО находиться далековато от метро, но с киевскими ценами на такси это не страшно - мы добирались от отеля каждый раз на такси.

По докладам:
 - как обычно - 20% докладов и докладчиком засулживают 80% внимания.
 - наблюдение которое сделал - аудиторию тестировщиков трудно заинтересовать только тем что ты что-то рассказываешь, гораздо проще если ты еще что-то показываешь (в записи), или делаешь он-лайн.
 Именно по этой причине доклады Михаила Поляруша и Олеся Сегеды были на 5+ (субъективная оценка реакции зала), а Алексей Баранцев ушел с почетной 4.
 - Больше всего понравились выступления Николая Алименкова, Олеся Сегеды, Михаила Поляруша. По делу, с толком, заинтересовали.
 - Удивило спокойствие присутствоваших на конфереции HR - точнее о том что они присутствуют мне сказали люди которые вообще были в курсе их присутствия.
 - Большой минус - полностью пропущен момент неформального общения после конференции. В Киеве столько заведений с которыми можно договорится и отправить туда всех участников конференции на пообщаться в неформальной обстановке, что даже становится как-то некошерно.
 Меня правда данный момент не коснулся так как меня взял в свои добрые руки Алексей Лупан и мы отправились потреблять темный Leffe c колбасами, капустами, и мегавенским шницелем (место я вам не сдам, сам туда хочу еще ходить).
 После этого была прогулка по городу, общение, шаржы и полный вечер позитива. Леша, спасибо - это очень приятно приезжать в незнакомый город и получать такой прием!
 - как сказал мне Алексей много народу задает вопрос "Какого хрена так дорого?" и я думаю задавать такой вопрос вполне обосновано.
 Не всем посещение таких мероприятий по карману, не всем всё оплачивает фирма, так что есть серьезный риск потерять часть аудитории с ростом цены. (по моим прикидкам для жителя России это выходит около 1000$ на 2-дневную поездку).
Общее впечатление от конференци  - на 4.
Хотя вполне возможно оно изменится после посещения какой-нибудь другой конференции для тестировщиков.

Запоздалый отчет о Software People 12


Это первая моя большая конферения целевой аудиторией которой являются ИТ-менеджеры.
Поэтому сравнить уровень материала мне не с чем.
Место проведения - Digital October.
Площадка хорошая, но схему проезда нужно все-таки опубликовать, желательно с фото подворотни куда нужно повернуть чтобы не блуждать долго.
Я ожидал, что народу будет раза в 3 больше.
Что весьма приятно удивило - постоянно был кофе, везде работал wi-fi обеды перекусы, курилка - все отлично.
Организаторы очень хорошо продумали момент неформального общения - в первый вечер было шампанское прямо в помещении основного зала, на второй  -договорились о 20% скидке с ближайшим заведением.

Доклады и докладчики.
Опять же - на уровне.
Джефф ДеЛюка, Асхат Уразбаев, Панкратов и Орлов, Максим Дорофеев, Влад Балин, Станислав Калканов (честно думал что он будет выступать скучнее, однако приятно удивил).
Понравилось выступление Николая Чекунова и Светланы Гончар о граблях с аутсорсерами - все по делу, молодцы.
Доклад-нежданчик,исключительно приятный  - Андрей Сикорский из РИА Новости и его коллега по цеху Дмитрий Сатин- душеспасительно и с толком про User Expirience (UX).

Еще было много неформального общения с коллегами из разных фирм и стран.
Что хочется отметить:
 - отрасль повзрослела. Теперь менеджер в ИТ в 40% случаев похож на менеджера в любой другой отрасли. Не знаю  - хорошо это или плохо.
 - очень много женщин в ИТ. Опять же - это не хорошо и не плохо. Это просто факт.
 - ИТ фирмы перестали ужимать деньги своим сотрдуникам на конференции. Видимо выхлоп с этого начал реально чувствоваться.

Конференция получилась отличной. Даже по субъективным ощущениям переплюнула Google Developer Days.
Это пожалуй первая конференция где количество интересных докладов превысило пул времени на них.
Потраченных фирмой денег - совершенно не жалко. Потратил бы и свои!


13 июня 2012

Гиперпотимизация


Вот что говорят классики

We follow two rules in the matter of optimization:
    Rule 1. Don’t do it.
    Rule 2 (for experts only). Don’t do it yet—that is, not until you have a
       perfectly clear and unoptimized solution.
—M. A. Jackson
Joshua Bloch, Effective Java

А вот что делают не слушая их

08 июня 2012

Re: Озарения

В продолжение вот этой вот темы озарений спустя годы.
Моя порция (я в IT c 2007 года):



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

2. "Незаменимых людей нет". 
Зато есть временно незаменнимые и те проблемы которые эти люди закрывают в купе с экспертизой в их голове.
Это обычно выясняется после двух недель работы того человека, которого ты нащел на замену "незаменимого".

3. Кадровый фашизм. 
Если ты на собеседовании не уверен в том, что этот человек тебе подходит - не бери.
Любой неправильный человека в команде или даже просто коллективе - влияет на нее гораздо хуже, чем не вовремя выплаченная зарплата.
Лучше 5 раз отфутболить правильных людей, чем 1 раз взять неправильного.

4. Прозрачность. 
Быть прозрачным - выгодно. Будь прозрачным!!!

5. Делай сервис. 
Люди не хотят думать о том, что ты делаешь и уж совсем мало народу хочет разбираться в технической части.
Люди хотят решения своих проблем. Просто стань человеком, который хотя бы даст надежду на то, что он их решит.
Если ты действительно будешь решать проблему предоставляя сервис - ты станешь "незамениым" (см. пункт 2) и скорее всего менеджером.

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

7. Если ты QA, то свыкнись с тем, что в глазах остальных ты будешь выглядеть "мудаком, которому еще и зарплату платят". 
Особенно если ты действительно QA, а не monkey tester которого назвали QA.

8. У тебя есть только те люди, которые есть. 
Ситуации "выгоняй кого хочешь, нанимай кого зочешь"  - бывают, но крайне редко. Учись работать с теми которые уже есть.

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

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

05 июня 2012

Российский Интернет-банкинг как символ непрофессионализма

Коллеги, дальше будут одни эмоции.
Кому неинтересно - могут не читать сразу.

За последние 3 года я был клиентом трех (!) различных систем ДБО российских банков, в простанародье интернет-банков.
И все мои впечатления коротко и емко могут уложится в емкое слово ПИЗДЕЦ.
И что самое смешное - Сбербанк, который все постоянно хаят, обладает лучшей ДБО из трех использованных.
Хотя и она от человеческого облика  - ой-как далека, но тем не менее.

Люди!!! Человеки!!! Объясните мне, сиволапому, ну неужели это такой лютый и инфернальный трэш - написать нормальную удобную систему ДБО которая бы работала ????

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

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

Мне абсолютно похеру на возможности заплатить из интернет-банка за электричество в Тюмени, я не в Тюмени, и вы знаете это - я заключал с вами договор, где есть место жительства!!!

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

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

Меня приводят  в дикое изумление Java апплеты, которые проверяют сгенерированные ими же ЭЦП, хранящиеся у меня на диске, с процедурой ввода пароля каждый раз.
И не из-за ввода пародя, а потому что если его ввести то этот Java апплет показывает мои паспортные данные... мне же. Спасибо, я их не знал, решил узнать с помощью оплаты телефона.

Все что нужно в 99% процетах случаев 95% пользователей укладывается в 20-30 самых распространенных сценариев использования которые должны работать как часы - быстро, точно, постоянно и быть удобными.

Ну а про возможность перевести деньги на карту другого банка имея только ее номер (те самые 16 циферок) - я промолчу - все до единого тупо боятся выкатить такую фичу. Только внутри одного банка, больше никак.
Для того чтобы перевести деньги на карту другого банка нужно использовать просто перевод, вбивать 5-6 непонятных и зачастую неизвестных реквизитов, которые обычно даже неоткуда взять.


Разработчики систем ДБО!!!
Выньте голову из жопы!!!
И посмотрите, наконец, чем из всей вашей феерической поебы на самом деле пользуются люди!!!

Искренне ваш,
заебанный пользователь систем ДБО, по совместительству QA.


GTD: Границы применимости

Стал перечитывать Getting Things Done Дэвида Аллена и столкнулся с интересным моментом.
Каждый проект по Аллену должен иметь конечную цель, которая должна быть определена в начале проекта (тут из-за кулис выпрыгивает Стивен Кови, размахивая вторым навыком высокоэффективного человека).
А проектом считается все, для реализации чего необходимо более 2 шагов.
Далее имеем проблему - нужно поддерживать конфигурацию тестовой среды в таком состоянии чтобы тесты проходили за время Х.

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








31 мая 2012

Нечего на зеркало пенять...

По мере того как растет количество народа с которым я пообщался на собеседованиях растет и моя уверенность в правильности следующей мысли:

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

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

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

Сумбурно конечно вышло, но как-то так.



15 мая 2012

VirtualBox - настройка сети

Не у всех есть возможность продуктами VmWare, типа Workstation на законных основаниях.
В этом случае на помощь приходит VirtualBox от Oracle.
Недавно столкнулся с проблемой настройки ВМ на VirtualBox - нужно было сделать так чтобы ВМ могла видеть хост по IP и ходить в интернет через хост.

Теоретически это можно сделать используя один сетевой интерфейс в режиме Виртуальный адаптер хоста  - нужно только поуродоваться с маршрутизацией :).

Но я выбрал другой путь  - добавить два интерфейса на ВМ.
Вот как нужно настроить первый
А вот так второй

Если мне не изменяет память то по умолчанию форвардинг IPv4 трафика на Linux выключен, но у меня все заработало без его включения.
На Debian-подобных Linux его можно включить раскомментарив строчку

net.ipv4.ip_forward=1
в файле /etc/sysctl.conf

Ну и скриншот доказательства работоспособности решения :



Виртуализируйтесь!!!!