четверг, 5 января 2012 г.

Ключевые переговоры - что и как говорить, когда ставки высоки?


Ссылка на OZON.

Тоже хочу похвалить книжку издательства "Манн, Иванов и Фербер".

Она, конечно, напрямую к тестированию отношения не имеет, но зато имеет отношение ко всему остальному :)

Под переговорами, в которых "ставки высоки" понимаются любые сложные переговоры. Как донести информацию и не переругаться с родными, соседями, коллегами?

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

Яркие представления ухода от диалога - молчание или агрессия. Вы или молчите, косо посматривая на "обидчика", но не озвучивая своих мыслей (ничего, потом в курилке изольете душу... Но не тому человеку...). Или отводите душу в саркатических замечаниях. А бедные коллеги иногда даже не догадываются, что вы просто злитесь в глубине души или в чем-то несогласны.

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

Надеюсь, у меня получится стать немного лучше :)

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


PS - Добавила книгу в общий список прочитанных мною книг.

понедельник, 2 января 2012 г.

Зачем нам тренинги?

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

Далеко не всех тянет изучать что-то новое. Хотя просто стимула нет. Мотивации. Глаз горящих. Ну а правда - зачем? Тем более, если начальство не поддерживает (читай, нашел, сделал - оказалось никому не нужно, так, отмахнулись). И так бывает... По всякому бывает.

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

Однако человек, привыкший к своему рабочему месту, на котором не надо напрягаться, врядли найдет себе коллектив "по душе". Там ведь работать надо, а уже лень. Или даже не лень, но не возьмут. Кому он нужен. твой скудный опыт?

Но даже если в команде все хорошо. Надо ли оно? На тренинги ходить, на конференции ездить? Все же хорошо! Для своих проблем знаний хватает!

Как однажды заметил Абрахам Маслоу: "Тому, у кого из инструментов в наличии только молоток, любая проблема кажется гвоздем" (с)

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

И ничего. Раньше думать надо было.

Всегда полезно взглянуть на точку зрения под разными углами. Понимать, что не все вокруг - гвозди. Нет, конечно, Eclipse и Java меня все равно не устраивают, мне C# подавай, но это уже так - молотки все, просто с разными рукоятками. Кому какая удобнее.

А вот  изучить проверку безопасности, JMeter, JBroFuzz и тд - это да. Это нужно, важно и полезно. Для себя, любимых :)

четверг, 29 декабря 2011 г.

Тестирование игр на мобильных телефонах - Курс молодого бойца

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

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


Задумываетесь ли вы о том, какие "опасности" подстерегают вас на пути к достижении цели - стать тестировщиком? Что вы вообще знаете о профессии, к которой хотите стать причастным? Уверены ли вы, что быть тестировщиком - так легко и просто, как казалось?

В первой части выступления мы рассмотрим самый главный миф о тестировании игр.

среда, 28 декабря 2011 г.

Самописный робот на Watin

Что мы делаем, когда нам позарез необходимо заполнить форму с кучей полей для того, чтобы перейти непосрественно к тестируемому модулю?

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

Если мы хотим видеть на выхлопе нормальные данные, а не свои пьяные танцы, то можем использовать копипасту. Однако радости мало каждое поле копировать - вставлять.

Еще варианты? Правильно! Роботы!
Один из самых известных - imacros для мозиллы. Простой, удобный и тд.

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

Тогда на помощь нам приходят... самописные роботы!

Об одном мы с вами и поговорим. Microsoft Visual Studio + Watin преставляют...

Итак. что мы хотим? Хотим заполнить форму. Или две формы. Одинаковые по сути, но разные по смыслу. Ну, например, представим, что у нас везде, на всех сайтах, окно регистрации одно и тоже. И вот мы хотим регистрироваться в Гугле и Яндексе. А формы - одни и те же, поля теже самые. Ну вот захотелось им так.

Что делаем мы? Открываем Microsoft Visual Studio и создаем "Windows Forms Application"
Получаем нашу формочку:



Далее выбираем View - Toolbox
В открывшемся окошке раздриливаем All Windows Forms  и выбираем кнопку:




Перетаскиваем кнопку на нашу формочку.
Справа внизу видим ее свойства, Properties - вбиваем там в поле Text значение "Регистрируемся в Google". Потом добавляем вторую, которая будет - "Регистрируемся в Yandex".

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

Теперь вступает в силу Watin.

Создаем отдельный проект - Class Library, в нем создаем класс "Model"
В модели мы показываем, с кем и как мы имеем дело:
        private WatiN.Core.Browser browser;

        public Model(Browser browser)
        {
            this.browser = browser;
        }

        public void РегистрируемсяВGoogle()
        {
            browser.GoTo(@"http://adress");
        }

        public void ЗадатьФамилию (string lastName)
        {
            browser.TextField(Find.ById("txtLastName")).TypeText(lastName);
        }

        public void ЗадатьИмя (string firstName)
        {
            browser.TextField(Find.ById("txtFirstName")).TypeText(firstName);
        }


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

Находим их через FireBug, получаем id, class и тд. По ним и ищем. Просто и быстро)

Вбивать параметры мы можем как? Можем уже в тестах. Можем добавить файл в проект (уже в наш "Windows Forms Application", а не "Class Library").

Если делаем файлом: обавляем в проект файл типа XML File.
Заполняем его своими разными значениями.

<ФормыВвода>
 <Форма lastName="Киселева" firstName="Ольга"
         />
<Форма lastName="Абаев" firstName="Николай"
         />
</ФормыВвода>


Что мы ему сказали? Что у нас есть два вариант заполнения формы - Киселева Ольга и Абаев Николай. Все параметры записываем через пробел, пихаем сколько влезет, как параметров, так и вариантов.

Теперь вернемся к коду робота. Который открывается аблкликом по кнопке на нашей форме.

Что мы пишем в нем?

    public partial class Робот : Form
    {
        public Робот()
        {
            InitializeComponent();
        }

        private void btnHellow_Click(object sender, EventArgs e)
        {
            //открыли браузер
            var rnd = new Random();
            var browser = new IE();
            browser.BringToFront();

            //перешли на нужную форму, прочитав по пути  XML
            var моделька = new Model(browser);
            моделька. РегистрируемсяВGoogle ();
            моделька.ОткрытьФормуРегистрации();
            XmlDocument doc = new XmlDocument();
            doc.Load(Path.GetFullPath("Data.Xml"));

            //Получаем рандомные значения из XML
            var forms = doc.DocumentElement.ChildNodes;
            var randomIndex = rnd.Next(forms.Count);
            var form = forms[randomIndex];

            //Присваиваем переменным значения из XML
            string lastName = form.Attributes["lastName"].Value;
            string firstName = form.Attributes["firstName"].Value;
            bool alert = bool.Parse(form.Attributes["alert"].Value);

            //Заполняем формочку
            моделька.ЗадатьФамилию (lastName);
            моделька.ЗадатьИмя (firstName);          

            моделька.ПодтвердитьРегистрацию();
        }

Я туда помимо Фамилии и Имени добавила значение чек-бокс, в котором стоит галка, или не стоит. В XML мы этому параметру присваиваем значение true\false.

Таким образом, что мы имеем? Мы имеем по нажатию на кнопочку заполнение формы любым из приведенных вариантов.

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

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



Компилируем наш проект.
(Если хотим исходный код отправить - полезно сделать так: Build - Clean Solution. Так он меньше места занимать будет)

Потом открываем папку с нашим приложением\bin\Release
Удаляем все лишние файлы - с расширениями pdb и xml (кроме того, который используем в проекте).

Потому всю папку Release упаковываем и отсылаем по почте :)

суббота, 24 декабря 2011 г.

Сны больного тестировщика...

Что такое наши сны? Зачастую это некое отражение реальности. О чем мы думаем днем, то приходит к нам ночью. Правда, иногда в неожианном виде :)

Не так давно отгремела 10-я юбилейная конференция SQA Days.
Которая оставила свои впечатления в наших душах...

А еще на прошлой недели я рассматривала раздел тренингов на небезызвестном сайте. Нашла много "вкусненького", но при этом все онлайн, да с ДЗ... А очные тренинги... Ну как-то не то, читаешь описание и вроде все знаешь...

А с другой строны, где-то внутри точит мыслишка о том, что иногда ты только думаешь, что все знаешь :) И иногда полезно сходить на что-то "очевидное", и вынести оттуда новую мысль.

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

Так что чай и спать... А там... С воспаленным то воображением...

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

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

А в коридорах стояли стулья у стен, на них люди, видимо, ожидали интересного для них доклада (а, сюда, видимо, еще и получение прав приплелось, в сон то. Это в ГАИ лавочки вдоль стен...). На одом из стульев сидел Алексей Баранцев.

Посмотрел он меня, покачал головой и сказал укоризненно... За точность фразы уже не ручаюсь, но что-то типа "Оля, Оля, что же ты на тренинги то не записалась...".

И мне даже стыдно стало! Ну вот как раз на тему того, что "а так ли ты уверена, что все знаешь." Хороший исследователь? И так уж прям уверена, что Алексей ничего нового для тебя не расскажет?

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

А мне же стыдно, я так поприкидывала, поприкидывала, да и уточняю с сомнением - "и сколько же он стоит?". Ответа на этот вопрос Алексей не знал, так что мы так и не договорились :) А там уже и время пришло, побежала я на какой-то доклад. Но не добежала, то ли заблудилась, то ли опоздала, то ли вобще проснулась...

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

четверг, 22 декабря 2011 г.

Программирование - для тестировщиков, часть 2

Вернемся к нашим баранам. Как я уже писала ранее, отзывы желательно оставлять сразу, на "свежую", ну или не очень, голову. А то потом забудешь детали и вынесешь свой очень "весомый" и "полезный" вердикт - "Хорошие\плохие курсы". А почему? Да не помню, просто впечатление осталось... Полезно оно будет такой отзыв почитать, когда человек только размышляет, надо ли оно ему?

Сегодня у меня плохое настроение. Вчера был корпоратив и подъем на работу в 6.30 особой радости мне не принес... Может, поэтому все в мрачном свете?

Прошла уже большая часть занятий, мы даже более-менее разобрались в тестированием веб-сайтов. И все меньше и меньше мне нравится java :) Но тут уж на вкус и цвет, как говорится...

Хотя я все больше склоняюсь к C#, курсы на яве не прошли даром. Во-первых, при изучении языка приятно, услышав что-то ранее в принципе незнакомое, например, "итератор", покивать головой "А! Да, да! Мы это делали в ДЗ". Хотя вспомнить, как именно "делали", уже проблематичнее :))))

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

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

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

А когда мы сидим, разбираемся, мы нарабатываем ту самую практику, ради которой сюда и пришли! Я сама выбрала курс благодаря отзывам и благодаря наличию домашнего задания в нем. Потому что теория без практики - ничто.

Прошли веб-часть, пошли дальше. В понедельник посмотрела на ява-приложение.
Сделала ровно столько, сколько было в записи. В четверг, мол, доделаю последнее ДЗ. Ага.

Посмотрела на приложение опять, уже сегодня. Пошла к программистам, они на него покосились и сказали "не, не сталкивались с таким". Посмотрела еще раз... И закрыла нафиг :)

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

Вот так вот шла домой и искала себе оправдания - "нет, все понятно, это сделано, чтобы осознать, что структура от того, веб или вин, не изменится. Те же тесты, та же UI-моделька... Но нафига мне это ява-приложения? Да таких вообще почти нет! Зачем мне уметь с ним работать... Все равно ведь ДЗ сдам и забуду через неделю-месяц. Без практики никуда. Практики не будет. Скорее всего, вообще никогда. А если и придется работать с ними опять, научат."

Хотя, конечно, если вдруг придется с таким работать  (тьфу-тьфу-тьфу), будет приятно смотреть не как баран на новые ворота, а припоминая "тот давний курс". Не спорю :)

Да и что уж там. Затем ли мы записываемся на курсы, чтобы потом кричать "у меня времени нет на ДЗ"? В большинстве случаев люди примерно представляют свой график - не будет времени? Так иди на курсы через полгода, когда оно будет. Хотя, если вечно нет времени, то это тоже отличный вариант - прослушивать записи и мелкими шажочками двигаться вперед.

Но это не мой вариант. Время то есть. Было бы желание. Так что придется завтра доделывать ДЗ... А иначе у меня никогда на него времени не найдется. Работа, отдых, другая работа... Да мало ли причин можно придумать, лишь бы не делать? :)

среда, 7 декабря 2011 г.

Программирование - для тестировщиков?

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

Так что же, "есть ли жизнь на Марсе?" (с)
Стоит ли тестировщикам изучать автоматизацию?
Осваивать программирование?

Или "не лезь, куда не просят"? Упал - уходи? (вспоминается доклад Татьяны на SQA Days и слайд со Спартой)

Нет, конечно же, нет. Никогда не ошибается только тот, кто ничего не делает! А мы будем делать, и будем изучать :)

Другой вопрос - как? Объектно - ориентированный язык выбирать или процедурный?
Учиться строить архитекруту или работать с консолькой?

Продолжим диалог :)
Прямо на моих глазах два тестировщика осваивают Джаву. Я бы не сказал, что все у них хорошо. То проблемы с доступом к полям, то еще что-нибудь.

Не знаю, как вас, а меня бы больше удивило, если бы у них все было хорошо. Виданное ли дело, чтобы все с первого раза идеально получалось? Разумеется, у них будут проблемы с доступом к полям, с поиском кнопок и вводом строки с символами типа кавычек.

Но если бы все, у кого с первого раза что-то не получилось, бросали бы это дело, люди вообще ничем бы не занимались! Так и жили бы, охотясь на мамонтов, да разводя костер. Кому оно надо, колесо мастерить, против людского мнения переть с девизом "Земля круглая" и тд? Не получилось? Бросаем! Найдем что полегче, попримитивнее!
А без ide приходится постоянно следить за простотой и логичностью конструкций, за лаконичностью кода. Результат: проект растет, но дебаг простой, расширение простое, навигация в ворохе исходников проста, как никогда. Без IDE, без "перейти к".
А что, с IDE мозги автоматом отключаются? Ну напишет новичек код, непростой, потом через месяц попробует прочитать, не поймет и перепишет (хотя врядли, скорее пойдет к программистам и вместе каждую строчку разберут). Раз, другой, третий, на пятый запомнит, что значит этот код :) И перепишет более простым языком.
А если выбор экосистемы вообще так жестко не стоит, тогда какие проблемы-то?
Самый главный вопрос :)
В котором и ответ кроется. Какие проблемы-то? Изучить то, что ты выбрал сам?
Не ссылаясь на то, что для новичка будет "сложно", а что - "легко"...

Welcome to discuss!