суббота, 4 сентября 2010 г.

Ищем жаждущих работы :)


Добрый день, коллеги!


В нашей компании (Москва) Отдел тестирования растет, становление процессов в процессе :), работы много и много возможностей! Мы ищем людей с "горящими" глазами, с опытом и без, готовых учиться и развиваться!


Нам очень нужны:

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

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

3. Тестировщики. Специалисты с опытом и без, работы хватит всем :)


Мы предлагаем:

1. Много работы.

2. Тучу возможностей для развития.

3. Дружный коллектив.

4. Офис на Менделеевской в 3 мин от метро.

5. Работа по КЗОТ с белой ЗП.


Если Вам интересно, присылайте мне свои резюме на galagalkina@gmail.com c темой письма "РЕЗЮМЕ на <вакансия>".


Спасибо!

среда, 28 июля 2010 г.

Черная риторика


Слово – это такой инструмент полезный и могучий! Хорошо уметь «говорить» и направлять собеседника в нужное Вам русло. Уметь понять подоплеку сказанного Вам – не менее важно. Вот об этом есть занимательная книга Карстена Бредемайера «Черная риторика. Власть и магия слова».


Сразу хочу отметить прекрасный перевод, текст читается легко, плавно и затягивает. Книга состоит из 5ти глав:

  • Черная риторика. Своего рода введение в предмет.
  • Основные правила риторики. Глава раскрывает как, что и когда нужно говорить, как отвечать на вопросы.
  • Самые яркие манипулятивные, аргументативные и вербальные уловки черной риторики – и как от них защищаться. Глава учит распознавать приемы черной риторики, направленные против Вас и вовремя парировать.
  • Магическая сила правильной постановки вопросов. Да, да, и с помощью вопросов можно манипулировать.
  • Магическая сила призыва. Без призывов «ни туды и ни сюды».

Я подобную литературу отношу к «мозгопостановочной», которую читать нужно по возможности всем. Умелое ведение переговоров необходимо в любой сфере деятельности. И IT не исключение, а Тестирование и подавно. Все приемы, описанные в книге, в жизнь не воплотила, надеюсь пока. Часть прижилась сама собой, без усилий. Кстати, в книге после каждой главы представлено краткое содержание и задания для тренировки. Так что, дерзайте.


P.S. Все-таки в перемещении с использованием метро есть определенные плюсы: читать можно гораздо больше.

понедельник, 31 мая 2010 г.

Selenium + JAVA: полезности 2

В продолжение предыдущего поста, делаем логику «поинтереснее».

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

«не буду вдаваться в подробности обработки исключений в джава, лишь скажу, что может плохого сделать Ваш код:
В случае, если исключение (Exception) случиться в одной из следующих строк кода:
stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("[запрос к БД]");
stmt.close();

строка con.close(); не выполнится, а следовательно соединение с базой не будет закрыто. Таким образом вы можете случайно открыть слишком много соединений и тем самым повалить, скажем базу :). Поэтому, рекомендуется закрывать коннект в блоке finally, который вызывается всегда.

Вот.»

Провела работу над ошибками, и код для запросов к БД чуть-чуть изменился.

import java.sql.*;

public class Query{

public static void main(String[] args){

Connection con = null;

Statement stmt = null;

ResultSet rs = null;

try{

//загружаем класс драйвера

Class.forName("com.mysql.jdbc.Driver");

//создаем соединение с БД

con = DriverManager.getConnection("[урл БД]", "[пароль]","[логин]");

stmt = con.createStatement();

//выполняем запрос

rs = stmt.executeQuery("[sql запрос]");

while (rs.next()){

[пользуемся активно результатами запроса]

}

rs.close();

stmt.close();

con.close();

}

//Ловись рыбка

catch(java.lang.ClassNotFoundException e){

System.err.print("ClassNotFoundException: ");

System.err.println(e.getMessage());

}

catch(SQLException ex){

System.err.println("SqlException: " + ex.getMessage());

}

finally {

//Что-то пошло не так? Все проверим!

try {

if (rs != null){

rs.close();

}

if (stmt != null) {

stmt.close();

}

if (con != null) {

con.close();

}

}

catch (SQLException ex) {

ex.printStackTrace();

System.err.println("SqlException: " + ex.getMessage());

}

}

}

}

А теперь представьте: вы сотворили что-то грандиозное, используя связку Selenium IDE + JAVA, а если еще и результаты работы этого «чуда» на почту отправлять, а? Это же полезность еще та! Опять же не без помощи коллективного разума (форум + опытный разработчик) «оно ожило»:

import java.util.Properties;

import javax.mail.*;

import javax.mail.internet.*;

public class Mail {

public static void main( String[] args )

{

// пример для отправителя с gmail.com!!!

final String username = "[почта отправителя]";

final String password = "[пароль]";

Properties props = new Properties();

props.put("mail.smtp.host", "smtp.gmail.com");

props.put("mail.smtp.socketFactory.port", "465");

props.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");

props.put("mail.smtp.auth", "true");

props.put("mail.smtp.port", "465");

Session session = Session.getDefaultInstance(props,

new javax.mail.Authenticator()

{

protected PasswordAuthentication getPasswordAuthentication()

{ return new PasswordAuthentication(username,password); }

});

try {

Message message = new MimeMessage(session);

message.setFrom(new InternetAddress("[почта отправителя"));

message.setRecipients(Message.RecipientType.TO,

InternetAddress.parse("[почта получателя]"));

message.setSubject("Test Subject!");

message.setText("Test message!");

Transport.send(message);

System.out.println("Done");

} catch (MessagingException e) {

throw new RuntimeException(e);

}

}

}

Надеюсь кому-нибудь, да пригодится. Да и мне как «мемори стик» будет!

Удач и новых свершений!

среда, 7 апреля 2010 г.

Selenium + JAVA: Полезные JAVA-методы


Selenium это конечно хорошо, и запишет, и сравнит, и воспроизведет. А хочется ведь логику «поинтереснее» в тесты добавить, и вот тут весьма слабое знание JAVA мешает (ведь «держала» я её в руках последний раз в университете), но есть поисковики, да и просто хорошие, добрые и профессиональные люди :). Ниже представлены «джава-полезности», которые мне понадобились и пригодились во время доведения до ума скрипта, записанного с помощью Selenium IDE. Конечно же, это только начало «пути» и много нового, непознанного впереди. Возможно, и вам пригодиться, а может что-нибудь еще полезного мне посоветуете.


1. Кодировка.

В идеальном случае все элементы страницы живут с уникальными ID. Но тогда бы все было проще и не так интересно. Случилось у меня следующее: записала скрипт, экспорт сделала, а там… А там вместо русскоязычного словосочетания, «кракозябистость», которая компилируется, но не выполняется как надо. Эх, кодировка при компиляции определяется неправильно. Но мир не без добрых людей и вот компилятор начинает понимать, что мне от него надо:

javac -encoding utf-8

2. Запросы к БД.

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

import java.sql.*;

public class Query{

public static void main(String[] args){

Connection con = null;

Statement stmt;

try{

//загружаем класс драйвера

Class.forName("com.mysql.jdbc.Driver");

//создаем соединение с БД

con = DriverManager.getConnection("[url Базы данных]", "[логин]","[пароль]");

stmt = con.createStatement();

//запрос к БД

ResultSet rs = stmt.executeQuery("[запрос к БД]");

// а уже из rs данные и получаем

stmt.close();

con.close();

}

//Отлавливаем исключения

catch(java.lang.ClassNotFoundException e){

System.err.print("ClassNotFoundException: ");

System.err.println(e.getMessage());

}

catch(SQLException ex){

System.err.println("SqlException: " + ex.getMessage());

}

}

}

Подробнее описание пакета, классов и методов смотрим тут: http://java.sun.com/javase/6/docs/api/java/sql/package-summary.html.


3. Работа с датами.

Даты разные нужны, даты всякие важны, а текущая - самая дорогущая. Был в JAVA класс Date, а стал Calendar. Ниже то, что пригодилось мне:

import java.util.Calendar;

// Получаем текущую дату

Calendar rightNow = Calendar.getInstance();

// Записываем в переменную типа String

StartDate = String.valueOf(rightNow.get(Calendar.DATE)) + "." + String.valueOf(rightNow.get(Calendar.MONTH)+1) + "." + String.valueOf(rightNow.get(Calendar.YEAR));

// Добавляем к дате 10 дней

rightNow.add(Calendar.DATE,10);

Остальные «календарные» возможности и способности смотрим тут: http://java.sun.com/j2se/1.4.2/docs/api/java/util/Calendar.html


Продолжение следует...

понедельник, 29 марта 2010 г.

Бах: Становясь экспертом в области тестирования

Оригинал статьи тут.

Обзор: Стать экспертом в области тестирования – это путь постоянного развития. Наличие концепции развития очень помогает направлять свои усилия. Джеймс Бах, весьма известная личность в области тестирования, делится своим взглядом на «экспертность» и предлагает стремящимся к статусу эксперта решить задачу.


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


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


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


Личная концепция.

Я могу тестировать все, при любых условиях, за любое время…


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


Давайте добавим:

… в степени относительно…

  • Моего положения в процессе
  • Моих познаний о соответствующей технологии
  • Моего желания преуспеть


Это позволяет сделать концепцию более реалистичной, но все еще выходящей за пределы. Где же тут стандарт качества? Конечно же, я могу сделать все что угодно, если дозволено делать это плохо. Можно ли следовать данной установке и тестировать хорошо, если кто-то спросит вас протестировать атомный реактор за 5 минут? Чтобы решить эту проблему, добавим еще несколько утверждений:


…Такие как..

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


Теперь концепция в сфере реальности, хотя и является вызовом.


В данном видении экспертизы, «Я могу протестировать» означает «Я могу хорошо выполнять работу тестировщика». Это измеряется человеческим стандартом: поведение лучших экспертов, которых можно найти. С этим стандартом в голове, как эксперты отреагируют на задачу тестирования ядерного реактора за 5 минут? Ответ: люди, которых я уважаю, начнут с использования самого великого инструмента в арсенале тестировщика – «задавания вопросов об ограничениях задачи». Самым лучшим в течение пяти минут будет спросить «Что тут происходит?» или что-то в этом роде. Ну а в данном конкретном случае, «Вы сбрендили?», что хорошо отражает абсурдность ограничения.


В принципе, основной смысл использования концепций в создании привычки при взгляде на каждый продукт задавать вопросы: «Как я буду это тестировать? А что если надо будет тестировать без требований? А что если выделенное время будет вдвое меньше?».


Учитывая выше написанное, вот вам задачка. Шесть лет назад, я написал небольшую виндовую программу как пример для упражнений на занятиях по тестированию. Я использую эту программу и по сей день. Я даю студентам 15 минут на ее тестирование. А если я дам вам всего 3 минуты на ее оценку, что вы будете делать? Мне в голову приходит 4 ответа, которые могут дать эксперты в тестировании…


Подумайте об этом. А тут мой ответ: http://www.satisfice.com/answer1.htm.


Об авторе: Джеймс Бах – основатель компании Satisfice, Inc., занимающейся консалтингом и обучением в области тестирования. Пионер развивающихся дисциплин: Достаточное качество и исследовательское тестирование, Джеймс специализируется на тестировании в хаотических условиях. Джеймс является соавтором (с Кемом Канером и Бретом Петтихордом) книги: Lessons Learned in Software Testing.


Отсебятина: В принципе, по жизни очень полезно знать «Что я хочу? Как выглядит это? Как я буду этого добиваться?». Сложные вопросы, кто-то их задает себе и не знает ответа, кто-то знает ответ, а кто-то и не мучает себя такими вопросами. Желаю Вам задавать вопросы, знать ответы или хотеть их найти :)

вторник, 2 февраля 2010 г.

Lessons Learned in Software Testing


Эту книгу можно смело считать очень ценным приобретением для любого специалиста, занимающегося тестированием. В настоящее время книга доступна только на оригинальном языке (вы еще не знаете английский в достаточной мере для чтения книг? Ай-яй-яй, это серьезное упущение). Хоть «уроки» и были изданы в 2001 году, это нисколько не умаляет ценность её содержания.

Книга написана в виде пронумерованных уроков (да-да, тех самых выученных авторами). Авторы предлагают нашему вниманию 11 глав (всего 293 урока):

  1. Роль тестировщика.
  2. Думать как тестировщик.
  3. Техники тестирования.
  4. «Защита» ошибок.
  5. Автоматизация тестирования.
  6. Документирование тестирования.
  7. Взаимодействие с программистами.
  8. Руководство проектом тестирования.
  9. Руководство группой тестирования.
  10. Карьера в тестировании.
  11. Планирование стратегии тестирования.

Кем Канер, Джеймс Бах и Брет Петтихорд являются представителями школы контекстно-ориентированного тестирования, подходы и принципы которой применяются в «уроках».

Книга эта у меня уже давно. Я воспользовалась советом авторов и читала ее НЕ «запоем» (хотя было такое желание), а по одному – двум урокам за раз. Написано легко читабельным языком. Я не нашла в книге чего-либо принципиально нового, на тех или иных этапах профессиональной деятельности все это либо приходило на ум, либо кем-то рассказывалось. Но читать все равно было интересно, т.к. форма уроков лаконична и чтение позволило упорядочить знания. Жаль не было ее у меня, когда я только начинала заниматься тестированием :)

Сами авторы считают, что книга будет полезна тем:
· Кто тестирует программное обеспечение;
· Кто руководит тестированием;
· Кто хоть как-то соприкасается с тестировщиками в своих проектах.

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

Хочется немного перефразировать фразу из «физики нереального»: «Умным быть – модно!» в «Читать умные книги – полезно!».

P.S.:
книга на амазоне.

P.P.S.: а во тут наши коллеги перевели несколько уроков!