Friday, July 13, 2012

Ukrainian Testing Days

Ukrainian Testing Days - 17-19 августа в Одессе!
 
Исключительно практические доклады от ведущих спикеров с акцентом на направлениях:
-      Использование лучших практик и подходов в тестировании
-      Тестирование в Agile
-      Исследовательское тестирование
-      Автоматизация тестирования
-      Нагрузочное тестирование
и многое другое в основной день конференции 18 августа...
 
За день до конференции 17 августа пройдет серия тренингов от лучших специалистов по тестированию в Украине, а затем в одном из уютных одесских кафе будет организована icebreaker pre-PARTY с серией коротких докладов Ligthning Talks на различную тематику по тестированию - начало для общения с коллегами.
Третий день конференции - 19 августа - будет посвящен обучающему соревнованию Testing Dojo. Это встреча тестировщиков, которая направлена на практическое применение индивидуальных навыков в группе.
 
Лето – самое приятное время для отдыха, почему бы не провести его с пользой?
 
Узнать больше о конференции можно на сайте http://ukrainiantestingdays.com/

Коллеги, не пропустите! :)  Постараюсь приехать.

Sunday, July 8, 2012

Self Development Informal 360° | Manager Tools

Self Development Informal 360° | Manager Tools


Очень полезный подкаст в плане того, как просить фидбек у начальства.
:) Жаль, что раньше его послушать было никак нельзя, много граблей бы обошла.

Wednesday, July 4, 2012

Кстати, о регулярках


Регулярные выражения - наше фсьо!

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

Например, для заполнителя места можно использовать .*?. Это так называемый lazy evaluation (т.е. взять как можно меньше символов до следующего match).

Самое приятное, что такая нотация учитывает и символы, и пробелы, и переходы строк (главное, не забыть в начале регулярного выражения поставить ключ (?s) - single line mode.

Полезные инструменты под Мак


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


Но ищущий да обрящет: вот чего я накопала.

1. Текстовый редактор кода JEdit. Очень помогает при отладке кода в Джиметре и Питоне.
Тут ещё коллеги подсказали вот такую вот штукенцию -  Sublime Text выглядит весьма внушительно, надо попробовать!

2. Тестирование регулярных выражений - RegExhibit (пока нашла, откуда его нормально загрузить, прокляла всё на свете - огрызочникам надо, чтобы я везде зарегистрировалась, и качала даже бесплатный софт под строгим присмотром духа покойного дядюшки Стива - РРР!).

3. Жалкое подобие левой руки, тьху, Тотал Коммандера - muCommander.

4. Приятственный менеджер буфера обмена (это чтобы копипастить можно было удобно) - ClipMenu.

Хорошо хоть Громоптица, она же Thunderbird, TrueCrypt, мой любимый Джиметр и GIMP (да-да лучше ГИМПа я пока ничего не нарыла) кроссплатформенные.

Thursday, December 22, 2011

Для чего нам нужен Foreach

Постановка задачи.
Ответ (response, он же респонс - мильпардон за слэнг) одного из запросов (request, он же реквест) возвращает несколько числовых значений одновременно, из которых потом нужно сформировать строку определённого вида ("[1,2,3,4,5]") и засунуть её в переменную для дальнейшего использования в качестве параметра в другом запросе.

Для описанного ниже регулярного выражения, запрос возвращал респонс, состоящий из нескольких элементов (с разными значениями, естественно).

"335817" : {
"name" : "Price",
"id" : 335817,
"type" : "price",
"source" : "UTP",
"mId" : 335816
}
На выходе мне нужно было получить строку, которая бы содержала все id в виде ['<'id1'>','<'id2'>',...,'<'idn'>']

Шаг первый - дёргаем группы.
Делается это элементарно. К первому респонсу (что возвращает, в том числе, и искомые числовые значения), добавляем как child (дочерний элемент) Regular Expression Extractor c такими параметрами:


Где
Name ставите произвольное.
Apply to - где будете искать. Мне нужно искать в основном семпле (не в дочерних запросах).
Response field to check - в каком месте запроса искать нужное. Мне нужно искать в самом теле запроса.
Reference Name - имя "переменной", по которой мы будем обращаться к наденному фрагменту(ам).
Regular Expression - само регулярное выражение. Я проверяю его с помощью очень удобного фришного инструмента - Rad Software Regular Expression Designer.
Template - какую порядковую группу из найденных мы используем (если ищем несколько, можем и искать несколько). У меня единственная, она же первая группа.
Match No - тут поступаем так:
Если нужно использовать любое из найденных, ставим 0.
Если нужно использовать какое-то n-ное вхождение, ставим целое положительное n. (Например, 1 будет нам находить первое вхождение из группы).
Чтобы выгрести все - используем отрицательное значение (именно поэтому у меня стоит -1).
Default Value - исходное значение, которое будет подставляться, если искомый фрагмент(ы) не найден.


Шаг второй. Используем ForEach контроллер.

После запроса, из которого мы дёрнули группу, добавляем ForEach контроллер с такими параметрами:

Где
Name ставите произвольное.
Input variable prefix - то самое Reference Name из предыдушего запроса, по которому мы будем обращаться к выделенной группе.
Output variable name - куда мы будем складывать полученное значение.


Шаг третий. Слепляем элементы группы в одну строчку.
К нашему Foreach контроллеру как дочерний элемент добавляем BeanShell Sampler, в коде которого мы пишем, как именно мы хотим видеть строчку.

Я написала так:
String y=vars.get("mIds");

if (y.length() != 0)
{
     y=y.substring(0,y.length()-2);
     y+=",";
}
else
{
     y+="[";
}

y+=String.valueOf("${
meterval}");
y+="]";
vars.put("
mIds",y);


Где переменная mIds была описана в User Defined Variables с пустым значением.

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


ПыСы. При отладке запроса, использующего нашу переменную (mIds), не забываем enabl'ить шаги, с помощью которых мы эту переменную получаем :))))
ПыПыСы. Программист из меня тот ещё... Только что дошло, как убрать 4й шаг :)
Потому апдейтим скрипт.

Friday, December 16, 2011

Как запомнить HTTP статусы :)

Не могла удержаться и не свистнуть вот отсюда.

Огромное спасибо автору GirlieMac, aka Tomomi Imura за позитив!