• Услуги
  • Новости
  • Тренинги
  • Расписание
  • Материалы
  • Проекты
  • О нас

2013 March

11 апреля в Харькове пройдет 26-ая встреча IT talk

На 11 апреля анонсирована очередная встреча сообщества IT talk. IT talk – это открытое IT-сообщество, участником которого может стать каждый желающий и интересующийся развитием IT-отрасли. Темой встречи выбрана «Мотивация через понимание». Вот краткое описание:

Если вы делаете профессиональную или менеджерскую карьеру, неизбежно сталкиваетесь с ситуацией, когда коллеги не делают то, что нужно, или вы не хотите делать то, что требуют от вас. Вместо вопросов «как сделать это?» и «как сделать хорошо?», в голове роятся вопросы «а зачем?», «а кому это нужно?» и «почему я?». Найти выход из таких ситуаций – непростая задача, и выручавший нас мощный интеллект все чаще мечется, не находя решения. Не хватает то ли данных, то ли мудрости, то ли просто способности увидеть всю картинку. Помочь нам может множество теорий и концепций, от диалектики до agile manifest. Хочется поговорить про некоторые универсальные принципы и одну интересную теорию, и попробовать сделать несколько упражнений.

В качестве докладчика выступит Михаил Завилейский – генеральный директор DataArt. Он часто выступает на конференциях, в том числе, на IT People в Минске и IT Conf в С.-Петербурге. В сентябре 2012 на IT Jam в Киеве вызвал овации докладом «Три лика будущего», недавно дал интервью DOU, подкаст в рубрике «Откровенно про IT-карьеризм». Подробнее о Михаиле Завилейском можно почитать тут.

Участие во встречах IT talk БЕСПЛАТНОЕ. Регистрация участников обязательна! Количество место ограничено!

Место проведения: Харьковский национальный экономический университет, пр. Ленина 9а, актовый зал. Начало в 19:00. Не опаздывайте!

event27/03/2013
personНиколай Алименков
mode_comment0
Далее
Библиотека HttpClient для оптимизации ваших Selenium тестов

Практически каждый тестовый сценарий состоит из трех частей:

  • pre-conditions
  • scenario
  • post-conditions

В мире программирования такие методы принято называть setUp, test, tearDown:

  • метод setUp отвечает за подготовку данных или системы в определенное состояние;
  • метод test отвечает непосредственно за выполнение тестовой логики;
  • метод tearDown отвечает за очистку от тестовых данных или возвращение системы в изначальное состояние.

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

@Before
public void setup() {
    //Login to the system
    steps.login();
}

@Test
public void addNewMember() {
    // Test Logic
    steps.openAddNewMember();
    steps.addMember(newMember);
    asserts.thatEditUserPageOpened();
    asserts.thatUserPresentInViewMembers(newMember.getName());
}

@AfterMethod
public void tearDown() {
    //Removing created member
    steps.removeMember(newMember.getName());
}

Все функции реализованы с использованием WebDriver API, то есть взаимодействуют с браузером напрямую.

Пример функции removeMember:

public void removeMember(String name) {
    viewMembersPage.open();
    viewMembersPage.clickDeleteMemberBy(name);
    viewMembersPage.acceptConfirmation();
}

public void clickDeleteMemberBy(String name) {
    driver.findElement(By.xpath(String.format(CELL_MEMBER_NAME +
                                                LINK_DELETE_MEMBER, name))).click();
}

Это простой пример. Но представьте каким количеством действий может обладать функция tearDown() для более комплексной системы. Или когда эта функция встречается в каждом тесте. Все это значительно отразится на скорости выполнения тестов.

Самый простой выход из ситуации, который я применяю на своих проектах – это использование библиотеки HttpClient (библиотека доступна в дистрибутиве selenium). Это бесплатная Java библиотека, позволяющая формировать HTTP запросы, отправлять их на сервер и принимать ответы в виде Java объектов.

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

Как это выглядит:

private static int deleteUser(String name) throws IOException {
    HttpGet deleteUserRequest = new HttpGet("http://cells.org.ua/scrum-selenium/admin/pageDeleteMember.php?memberID=" + name);
    HttpResponse response = getHttpClient().execute(deleteUserRequest);
    return response.getStatusLine().getStatusCode();
}

private static DefaultHttpClient getHttpClient() {
    if (httpClient == null) {
    PoolingClientConnectionManager cm = new PoolingClientConnectionManager();
    cm.setMaxTotal(100);
    httpClient = new DefaultHttpClient(cm);
    }
    return httpClient;
}

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

Пример POST запроса, функция login:

private static int login() throws IOException {

    HttpPost loginRequest = new HttpPost("http://cells.org.ua/scrum-selenium/admin/pageHome.php");
    List<NameValuePair> credentials = new ArrayList<NameValuePair>();
    credentials.add(new BasicNameValuePair("username", "admin"));
    credentials.add(new BasicNameValuePair("password", "admin"));
    loginRequest.setEntity(new UrlEncodedFormEntity(credentials, Consts.UTF_8));
    HttpResponse response = getHttpClient().execute(loginRequest);
    return response.getStatusLine().getStatusCode();
}

Пример класса на GitHub.

Небольшие замеры

long start = System.nanoTime();
       steps.removeMember(newMember.getName());
//    HttpActions.removeMember(newMember.getName());
long elapsedTime = System.nanoTime() - start;

Среднее время выполнение с использованием WebDriver API ~ 1055 milliseconds.
Среднее время выполнение с использование HTTPClient ~ 360 milliseconds.

Заменить WebDriver на использование HttpClient рискованно, так как мы принимаем все риски, связанные с работой приложения в браузере. Потому все, что вызывается внутри функции test, лучше делать при помощи WebDriver API, так как мы эмулируем действия конечного пользователя. Подготовительную же или завершающую части можно отнести на HttpClient.

Как альтернативу можно использовать HtmlUnit,  этот инструмент работает по похожему принципу, но обернут в WebDriver API. При этом стоит учитывать риски, которые ограничивают работу HtmlUnit, а именно работа с тяжелыми JavaScript приложениями. При помощи HttpClient мы сами формируем запросы на сервер, что дает нам больше гибкости и снижает вероятность головной боли.

Все примеры кода доступны на GitHub.

Не хочешь пропускать ничего интересного? Подпишись на ленту RSS или следи за нами в Twitter!

event26/03/2013
personАндрей Дзыня
mode_comment5
Далее
Рубрика «Полезное чтиво». Выпуск 55

полезное чтиво

Нехватка времени становится все глобальнее. Я случайно заметил, что уже ооочень давно не выпускал рубрику “полезного чтива”. Накопилось за это время:

На заметку разработчикам

  • Release Notes for MongoDB 2.4 – большой релиз MongoDB 2.4
  • Sonar 3.5 in Screenshots – информация о тестах, которыми покрыт участок кода – новая классная фишка Sonar 3.5
  • Refactor to remove duplication – дубликаты бывают разные и не все так очевидны!
  • I’m Pascal, I’m a bug writer – дефект – это возможность сильно улучшить продукт, если конечно с ним правильно работать…
  • Try-Catch-Resource and the Exception.getSuppressed() Method – да уж, Try-Catch-Resource сделали коряво
  • It’s Not Simple to Keep It Simple – интересные размышления на тему простоты дизайна и кода
  • Short Commit Cycles – давно хочу перейти на циклы коммита через 15-30 минут, сейчас пока час-два
  • TeamCity Feature Branches – отличная работа с ветками в TeamCity
  • Проектирование высокопроизводительных систем: о чем не расскажут в книгах – отличные сарказмы на тему проектирования высокопроизводительных систем
  • Bureaucracy-Free Software Development – интересные идеи на тему упрощения процесса разработки и релизов
  • Code and Code Reviews: What’s in a Name? – проблемы с именованием в коде говорят о том, что вы не до конца понимаете его смысл
  • Apache Lucene and Solr 4.2 – вышел Apache Lucene и Solr 4.2
  • AWS: Теперь образы AMI можно копировать между регионами – теперь образы AMI можно копировать между регионами!
  • Refactoring, Redesign, Time, and Transparency – бытовой пример отличий между рефакторингом и редизайном
  • First Step on Legacy Code: Classifying – хорошая классификация легаси кода
  • ExtJS4: практические впечатления – схватка на тему ExtJS
  • Bulk fetching with Hibernate – за что я еще не люблю Hibernate, так это за желание его фанатов использовать даже там, где он работает ужасающе…
  • On Testing “Trivial Code” – я тоже придерживаюсь мнения, что модульные тесты на геттеры/сеттеры не нужны в пользу функциональных тестов
  • Test Better – разработчики должны лучше тестировать свою работу
  • Outside In TDD versus DDD – TDD и DDD не противоречат друг другу, хотя что такое DDD мало кто представляет
  • JUnit Tests as Inner Classes – слабо представляю себе модульные тесты как внутренние классы, хотя преимущества все же есть
  • Testing Departments are for Losers – все правильно – разработчики должны отвечать за качество кода и заботиться о нем, а в комментах напали тестеры
  • The Start-Up Trap – не использовать TDD – это глупо
  • TeamCity 8.0 EAP (build 26984) – TeamCity 8.0 на подходе

Тестировщикам о тестировании

  • Simple Cloud-based Load Testing – новый бесплатный облачный сервис для нагрузочного тестирования loader.io
  • It ain’t just reds and greens: Automated Acceptance Testing and quaternary test outcomes – в действительности у автотестов есть 4 состояния: не готов, проходит, непредвиденная ошибка, не сработала проверка
  • Testing Antipattern: Release Testing – тестирование надо интегрировать в разработку, а не иметь отдельной фазой
  • How to Accept Self-Signed SSL Certificates in Selenium 2 – как работать с SSL в WebDriver

Процессы, подходы и менеджмент для менеджеров

  • How Shipping Software Teaches You to Make Tough Choices – учиться принимать решения можно только видя последствия своих решений и неся за них ответственность
  • Elaborating on “it depends” – Value для заказчика важнее правил, догм и практик

Общие темы

  • Working Remotely: The Best Thing I’ve Ever Done – удаленная работа замечательно подходит, если команда собрана из ответственных замотивированных профессионалов
  • Удалённая работа – отстой. Да здравствует удалённая работа! – еще о сложностях и приятностях удаленной работы
  • У Вас много денег? Тогда мы идем к Вам! – славься украинский аутсорсинг! веселый и беззаботный, все дороже и дороже…
  • У вас много денег? Мы все равно к вам не пойдем! – продолжение веселой темы про зарплаты и качество умений разработчиков на отечественном IT рынке
  • 7 Reasons Why You Should Tackle Hard Problems Last – интересные причины откладывать сложные задачи на потом, но на себе заметил, что работают

А вот список интересного видео для просмотра:

  • Functional Reactive Programming & ClojureScript – лучший доклад про UI и JavaScript, я не видел еще чтобы кто-то так жег!
  • Материалы конференции XP Days Ukraine 2012 – большая часть видео докладов уже доступна
  • Session Based Exploratory Test Management for Agile Teams – очень полезный доклад про исследовательское тестирование в Agile командах
  • An Overview of Guava: Google Core Libraries for Java – очень крутой доклад по Guava

Читайте и набирайтесь новых знаний!

Не хочешь пропускать ничего интересного? Подпишись на ленту RSS или следи за нами в Twitter!

event20/03/2013
personНиколай Алименков
mode_comment1
Далее
Возобновляем встречи “Клуба анонимных разработчиков”

Мы уже очень давно не проводили встречи клуба, прошло почти 3 месяца с последней встречи. 🙁 Причины банальны – нехватка времени и низкая активность потенциальных докладчиков. Тем не менее, мы решили возобновить встречи и провести очередную 2 апреля. Темой встречи станет использование фреймворков для интеграции (Apache Camel, String Integration и прочих).

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

В качестве докладчика выступит Виталий Тимчишин с докладом на тему применения Apache Camel. У Виталика большой опыт построения масштабируемых распределенных систем на Java. Он поделится своими знаниями и опытом с участниками встречи:

Что важнее, код или данные и где проходит граница? Apache Camel предлагает отталкиваться от потоков данных и “нанизывать” бусины обработчиков, сплетая ваше приложение в единое целое. Давайте помотрим, какие жемчужины предлагаются “из ларца”, как можно просто добавить свои и что мы сможем из них сплести.

Вторым докладчиком будет Роман Сорока. Он представит и покажет в действии Spring Integration.

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

Официальное начало встречи по-прежнему в 19:00, завершение в 23:00. Стоимость участия 80 гривен при оплате заранее, 120 гривен при оплате на месте. Пива, пиццы и кофе с печеньками хватит на всех. Регистрация обязательна. Все детали по оплате будут высланы вам после успешного прохождения регистрации. Количество мест ограничено!

Не хочешь пропускать ничего интересного? Подпишись на ленту RSS или следи за нами в Twitter!

event18/03/2013
personНиколай Алименков
mode_comment0
Далее
Новые тренинги по облачной разработке

Мы стартуем новое направление тренингов по тематике облачной разработки! Идея родилась достаточно давно, потому что интерес к облачной разработке достаточно большой и различные IaaS/PaaS решения становятся все более популярными. Наши тренеры имеют достаточно большой опыт работы “в облаках” и им есть чем поделиться.

PHP на Azure

Начнем мы как ни странно с PHP и платформы Microsoft Azure. В сотрудничестве с Microsoft мы проведем целых 5 тренингов в конце марта и начале апреля на тему «Масштабируемые РНР приложения на Azure». Каждый тренинг рассчитан на один день и предполагает следующую программу:

1. Первые шаги – разворачивание веб сайта на Azure

Вы зарегистрируете себе аккаунт в Azure и увидите, как просто можно начать работать с облаком. После этого с нуля разработаете простое PHP/MySQL приложение и настроите его доставку в облако с использованием Git в Azure Web Sites.

2. Использование компонентов Azure.

Вы узнаете, как использовать основные компоненты Azure в своих приложениях. Будут рассмотрены сервисы хранения данных: SQL Azure, Storage Table, Storage Blob, Storage Queue; кеширования Windows Azure Caching.

3. Что такое «Облачный сервис» и как его создать на РНР?

В данной части вы узнаете, что такое облачный сервис (Cloud Service) и его отличие от веб сайтов (Web Sites). Мы расскажем, когда нужно использовать облачные сервисы. Вы перенесете созданный ранее сайт на облачный сервис, научитесь создавать приложения с несколькими ролями и настраивать взаимодействие между ними.

4. Диагностика и управление сервисами в Azure.

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

Тренинг будет проводить наш опытный тренер Иван Мосев. Иван – архитектор и разработчик, имеющий более 9 лет опыта разработки на PHP и Python. Последние 7 лет занимается разработкой web-приложений на PHP. За это время прошел путь от простого разработчика до технического директора. Успешно применяет различные практики XP и Scrum в своих проектах. С 2006 года применяет разработку через тестирование. Является приверженцем инженерных практик и стремится донести свою точку зрения до заказчиков и других разработчиков. Автор тренинга “TDD в PHP”. С 2011 года активно использует облачные решения в своих проектах.

Самая приятная новость – все тренинги будут проводиться бесплатно. От вас требуется лишь знание PHP и основ SQL на базовом уровне, а также желание узнать больше об облачной разработке на PHP. Количество мест ограничено, поэтому действует предварительная регистрация. Даты проведения тренинга: 25, 26, 29, 30 марта и 6 апреля. Адрес места проведения: Киев, ул. Дегтяревская 48, оф. 411, Учебный Центр “Сетевые Технологии”.

Не хочешь пропускать ничего интересного? Подпишись на ленту RSS или следи за нами в Twitter!

event13/03/2013
personНиколай Алименков
mode_comment0
Далее
JEEConf 2013 пройдет 24-25 мая в Киеве

Приближается весна и мы хотим анонсировать нашу очередную ежегодную конференцию, которая вот уже третий год соберет многих Java разработчиков из разных стран в Киеве – JEEConf 2013. Она как обычно назначена на самые теплые весенние деньки 24-25 мая.

ЧТО ТАКОЕ JEECONF?

JEEConf – это ежегодная конференция, целью которой является собрать вместе всех, кто использует Java технологии для разработки. Конференция уже проходит 2 года и в прошлом году собрала более 650 участников из 9 стран.

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

ЧЕГО ЖДАТЬ ОТ КОНФЕРЕНЦИИ В ЭТОМ ГОДУ?

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

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

Финальная версия программы будет опубликована 10 апреля. У вас еще есть время присоединиться к составу докладчиков!

КАК МОЖНО ПОПАСТЬ НА JEECONF?

Количество участников конференции будет ограничено. Мы планируем собрать 800-1000 человек. Этап ранней регистрации открылся 4 марта и за 24 часа все билеты были выкуплены. Поэтому мы сделали дополнительный этап, на котором будут доступны 200 билетов по цене 1450 гривен, чтобы дать возможность участникам прошлых лет присоединиться к нам по минимальной цене. Как только эти билеты будут распроданы, начнутся основные этапы регистрации. На данный момент осталось чуть больше 50 билетов.

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

event12/03/2013
personНиколай Алименков
mode_comment0
Далее
Важное
XP Days Ukraine 2018: вспоминаем как это было
folder
label
event
star
forum
Категории
  • Club (50)
  • Material (173)
  • Project (6)
  • Review (3)
  • Schedule event (444)
  • Trainer (7)
  • Общие (256)
  • Полезное чтиво (57)
  • Статьи (242)
  • Тренинги (62)
Tags
.NET agile Agile Base Camp AgileDays Agileee 2010 build automation code review continuous delivery continuous integration DevOps exploratory testing Hibernate IT Brunch IT talk Java JavaScript JEE JEEConf kanban QA refactoring scrum selenium Selenium Camp spring tdd test automation testing unit testing webdriver XP XP Days Ukraine автоматизация тестирования архитектура видео инженерные практики клуб анонимных разработчиков команда конференция полезное чтиво презентация проектирование тестирование тренинги управление рисками
Archives
  • November 2019
  • October 2019
  • September 2019
  • June 2019
  • April 2019
  • March 2019
  • January 2019
  • December 2018
  • September 2018
  • July 2018
  • June 2018
  • May 2018
  • April 2018
  • March 2018
  • February 2018
  • January 2018
  • December 2017
  • November 2017
  • October 2017
  • September 2017
  • August 2017
  • July 2017
  • June 2017
  • May 2017
  • April 2017
  • March 2017
  • February 2017
  • January 2017
  • December 2016
  • November 2016
  • October 2016
  • September 2016
  • August 2016
  • July 2016
  • June 2016
  • May 2016
  • April 2016
  • March 2016
  • February 2016
  • December 2015
  • November 2015
  • October 2015
  • September 2015
  • August 2015
  • July 2015
  • June 2015
  • May 2015
  • April 2015
  • March 2015
  • February 2015
  • January 2015
  • December 2014
  • November 2014
  • October 2014
  • September 2014
  • August 2014
  • July 2014
  • June 2014
  • May 2014
  • April 2014
  • March 2014
  • February 2014
  • January 2014
  • December 2013
  • November 2013
  • October 2013
  • September 2013
  • August 2013
  • July 2013
  • June 2013
  • May 2013
  • April 2013
  • March 2013
  • February 2013
  • January 2013
  • December 2012
  • November 2012
  • October 2012
  • September 2012
  • August 2012
  • July 2012
  • June 2012
  • May 2012
  • April 2012
  • March 2012
  • February 2012
  • January 2012
  • December 2011
  • November 2011
  • October 2011
  • September 2011
  • August 2011
  • July 2011
  • June 2011
  • May 2011
  • April 2011
  • March 2011
  • February 2011
  • January 2011
  • December 2010
  • November 2010
  • October 2010
  • September 2010
  • August 2010
  • July 2010
  • June 2010
  • May 2010
  • April 2010
  • March 2010
  • February 2010
  • January 2010
  • December 2009
  • September 2009
Recent Posts
  • Ride the database in JUnit tests with Database Rider
  • XP Days Ukraine 2018: вспоминаем как это было
  • Конференция Devoxx Ukraine 2019
  • Конференция Kyiv Project Management Day 2019
  • Конференция Highload fwdays’19
  • Конференция XP Days Ukraine 2019
  • Конференция Simplicity Day: QA 360
  • Конференция Voxxed Days Minsk 2019
  • Почему Java разработчикам стоит посетить JEEConf 2019?
  • Hexagonal architecture with Spring Boot and how to test it
Recent Comments
  • Микола on Справедливо ли зарабатывают представители IT Украины?
  • Николай Алименков on Страсти по Crossover
  • Pavel on Страсти по Crossover
  • Василий on Опубликована программа JEEConf 2018
  • Николай Алименков on Опубликована программа JEEConf 2018
НАШ twitter
Tweets by @xpinjection
© XP Injection, 2019
  • Услуги
  • Новости
  • Тренинги
  • Материалы
  • Расписание
  • Проекты
  • О нас
© XP Injection, 2019