суббота, 22 сентября 2012 г.

Переезд в новый домен

Когда команда переезжает в новый домен, то сначала туда "посылают" тестовую группу людей. Чтобы выявить проблемные места и огрести меньше фидбека "Аааа, паника, у меня *** не работает!!!".

Разумеется, я, как тестировщик, попала в эту группу Smile :)

Хочу поделиться, с чем могут возникнуть проблемы. Итак, вроде бы скопировалось все и вся, но:
  1. Connections к БД - открываем SQL Developer или SQL WorckBench (и прочее, но я использую именно их) - пусто. Все свои сохраненные коннекшены к базе надо скопировать и перенести вручную.
  2. Settings.xml в папке ".m2" - для тех, кто работает с maven проектами, не удивляйтесь, что они перестали собираться - у вас просто настроек нет.
  3. Dropbox - снесите его нафик перед переездом! Вам все равно придется его переустанавливать, но еще и огребете...
  4. Cygwin - программа, позволяющая легко и быстро копировать "тяжелые" файлы с вашей Windows на удаленный Linux. После перееззда проверьте, что вы можете: удалять файлы из cygwin\home\user, добавлять туда новые. Ну и работать с самой программой, куда ж без этого.
PS: И после этого админ еще удивлялся, почему это "у тебя всегда что-то ломается"... А я что? Я ничего, оно само...

четверг, 20 сентября 2012 г.

IDEA - как остановиться в брек-поинте только при определенных условиях?

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

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

Потом вы опять не понимаете, "что тут происходит". Опять зовете разработчика... И так по кругу. Рано или поздно научитесь делать это сами Smile :)

Я расскажу про интересный момент работы в IDEA.

Как известно, для дебага программы необходимо поставить брек-поинты на тех строках, в которые мы хотим попасть, чтобы посмотреть на входные / выходные параметры.

Но, допустим, что в эту строку мы попадаем часто - в программе стоит цикл, которые бегает по всем полям формы. А нам нужно, например, проверить только поле "surname".

Какие варианты? Ставим брекпоинт на строку и сидим, жмем resume (программа бежит дальше до следующей точки останова, в нашем случае, возвращается в начало цикла), пока в поле fieldName попадется нужное нам значение. Тут главное - не прозевать момент и на автомате не нажать на кнопку продолжения. Иначе придется начинать сначала.

Есть и другой вариант:

1. Нажимаем на кнопку "View Breakpoints"



2. Открывается окно "Breakpoints", в котором перечислены все установленные в коде брек-поинты.

3. Находим нужную нам строку (в которую мы хотим попасть только при определенном условии) и устанавливаем галку "Condition"



4. Вводим условие. Нам нужно, чтобы поле fieldName =  "surname". IDEA подсказывает, что мы можем иметь в виду.



5. Но, так как fieldName - строка, условие будет выглядеть так:
fieldName.equals("surname")
Все! Закрываем окно (сохранение автоматическое) и дебажим. А в указанную строку мы попадем тогда и только тогда, когда поле fieldName =  "surname"

суббота, 15 сентября 2012 г.

Классы эквивалентности для стандартного грида

Что такое классы эквивалентности, я думаю, все знают. И даже успешно применяют...

Но сегодня мне бы хотелось напомнить вам, что техника разбиения на классы эквивалентности - всего лишь эвристика. Что такое эвристика? Это такая техника, которая не имеет обоснования, но, тем не менее, дает приелимое решение задачи.

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

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

Все почему? Потому что бывают в коде баги аля "от 10 до 100 все хорошо, но вот на 25 программа падает..."

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

Что же стоит протестировать?

Можно разбить на классы эквивалентности "фильтр/не фильтр". И протестировать все, что хочется, на одном фильтре:
  • Отсортировать по возрастанию
  • По убыванию
  • Повводить туда верную информацию
  • Повводить несуществующее значение
  • ...
И правда, зачем, например, выполнять одни и те же тесты для колонок "Название банка" и "Ближайшая станция метро"? И там и там текст, грид один и тот же. Зачем проверять?

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

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

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

Вывод - не верьте даже "проверенным средствам"!

 

Не забудьте про документацию пользователя!

Я продолжу раззадоривать любопытство тех, кто еще не читал Рона Патторна, приводя любопытные цитаты из его книжки.

Финальный продукт, который мы отдаем Заказчику, состоит не только сам из себя, как это могло бы показаться



It`s unfortunate, but these components are often overlooked in the testing process. You`ve surely attempted to use a product`s built-in help file and found it to be not so helpful or-worse-just plain wrong. Or, maybe you`ve checked the system requirements on a sticker on the side of software box only to find out after you bought it that the software didn`t work on your PC. These seem like simple things to test, but no one probably even gave them a second look before the product was okayed for release.

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

Посмотрите на свое приложение со стороны пользователя - все ли вам понятно? Сможете ли вы установить приложение самостоятельно, руководствуясь лишь инструкцией?

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

Поэтому, обратите внимание на те файлы, про существование которых зачастую просто забывают, увлекшись самим продуктом:
  • Help files
  • Samples and examples
  • Product support info
  • Error message
  • Setup and installation
  • User`s manual
  • Labels and stikers
  • Icons and art
  • Ads and marketing material
  • Readme file
Причем, казалось бы, ну зачем нужны примеры? Документация сойдет.
И снова вспомним о том, как сами устанавливали что-то. Например, купили телефон - а как его установить? А тут раз - открыли мануальчик, почитали пошаговую инструкцию и все быстренько сделали!

Ну и потом, даже если вам не нужны пошаговые инструкции, примеры нужны все равно. Во-первых, для наглядности. А во-вторых, чтобы проще было протестировать ваше ПО. Ведь на стороне Заказчика часто есть принимающая сторона, которая должна протестировать ваш продукт, прежде чем согласовать его для поставки в production. И если вы не хотите отвечать на поток писем с вопросами, почему бы заранее не создать примеры?

А уж самим то как удобно! Ушел в отпуск, отдал проект коллеге. Коллега ваш модуль видит впервые, вот что ему за файлы системе на "съедение" отдавать? Какие запросы отправлять через soap чтобы удостовериться хотя бы в том, что этот soap в принципе работает?

А тут раз - и все есть. И все счастливы Smile :)

И да, отдельное внимание хотелось бы обратить вот на что:

DON`T FORGET TO TEST ERROR MESSAGES!

Подробнее об этом вы можете услышать в Танином докладе "Тестирование юзабилити" на SQA Days 10".




У нас не СПАРТА! Берегите своих пользователей!!

четверг, 13 сентября 2012 г.

День тестировщика в компании UNDEV!



Итак, как же москвичи отметили этот приятный сердцу праздник? Точнее, конкретная москвичка :)

Время слета было выбрано весьма странно - с 16 до 20. Казалось бы, полдня впереди! Столько всего успеть можно!! Но увы, не все так радужно в реале :)

Один поход в спортзал - и все. Там мы делали примерно так, только с гантельками:


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

Так вот, вернувшись домой и переодевшись, пришлось уже "срочно" убегать. Ну, это я так думала, что срочно - раз мы договорились встретиться с Риной в 15.20, то в 14.20 уже надо торопиться, да.

В итоге на место встречи (м Третьяковская) я приехала в 14.45 о_О
Ну вот и что мне надо было делать 40 минут? Благо что на той же станции есть "Игровед", туда я и пошла. В конце концов, мы часто в Алиас играем, я все хочу себе "сумасшедшую версию" купить. Пришла в "Игровед", ушла оттуда с двумя пакетами ><. Еще плюс свой, с Алиасом и ноутбуком... Ну а что делать, все такое интересное :)

воскресенье, 9 сентября 2012 г.

С праздником, дорогие тестировщики!


Коллеги, с праздником!
А мы вот вам, тортик приготовили :)

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

А так как сегодня - выходной, то москвичи решили встретиться! Поэтому увидимся вечером, на докладах наших Гуру. Ведь это ли не счасье для тестировщиков - развиваться?

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

суббота, 1 сентября 2012 г.

ТМ - как помнить все?

Я вообще забывчивая, "память девичья". Поэтому мне надо что-то куда-то записывать.

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

Но все равно, надо, например, Заказчику ответить. Обычно сразу отвечаю, но бывает и так, что отвлекли, ушел куда-то, вернулся, отвлекся на другое дело... И вспоминаешь через пару часов. И думаешь, а что, если бы не вспомнил? В общем, во избежание завела я себе доску. Простую пробковую доску.

И туда радостно лепила стикеры - звездочками на моего любимого Заказчика ^_^
И простыми на все остальное. Например, надо короткий вопрос задать коллеге, который редко в офисе появляется, запишу в блокнот - забуду, ведь он останется на странице, которую я перелистну... Написал на стикер и наклеил! Доску периодически осматривала для того, чтобы освежить "лягушки" в памяти.

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

Зато теперь на доске красуются:
  • Мысли для ретроспективы
  • Задачи для регрессии
  • Задачи, по которым мне надо что-то сделать в ближайшее будущее
Так как я отвечаю за составление плана регрессии, то, увидев комментарий разработчика к задаче "в регрессии обязательно проверить то-то и то-то", выписываю себе номер задачи и краткое описание на стикер - и на доску! Сама тестирую какую-то сложную задачку. понимаю, что ее в и регрессии надо перепроверить - на доску! Пришла светлая насчет ретроспективы? На доску! Какая-то задача покоя не дает, но боишься забыть о ней за хлопотами дня? На доску!

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

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

Да, так вот. Есть отличная программа для андроида: "Помнить все":



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



Щелкаем на кнопку (не промахнешься :) ), говорим ей "завтра утром возьми новый блокнот!" и она конвертирует это в "возьми новый блокнот", устанавливая дату и время. Примерно так:



При этом остается возможность отредактировать сообщение, так как распознавалка голоса имеет свои недостатки и не все понимает :)

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


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

Вот например, попросил меня коллега дать ему Lee Copeland почитать. Дело в том, что у меня есть эта книжка в твердом переплете. Родитель ездил в Америку в гости к сестре и привез мне на Новый Год подарочек :) И когда он садился на самолет, пришла вторая книжка "How to break the website" :(((( Вот ну на пару часов доставка опоздала! А я уже 9 месяцев все жду и жду... Когда же она приедет, моя книжечка... Правда, за эти месяцы я успела устроиться на работу с неплохой библиотекой и мне есть что почитать :)

Так что это все лирика. Суть в том, что про книжку я, разумеется, вспомнила только на следующее утро в метро. Но зато в голове тут же созрел план - как исправить эту ситуацию. И, придя на работу, я сказала "Помнить все", что в понедельник мне надо взять книжку. А будь у меня привычка, записала бы сразу. И не забыла бы. Впредь буду умнее :)

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

И раз пошла такая пьянка. не могу не рассказать. Тут уж не совсем о работе, но я и "помнить все" нашла, пока искала себе... ColorNote!


Точнее, искала я не конкретно его, искала я удобное составление списка... В частности, для поездок в Ашан :) И вот нашла! В программе есть как простые заметки (в топку), так и... чек-листы!

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

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

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