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

С новым годом! Прощай, 2016

Ура, новый год!

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

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

Давайте, я начну, а вы подтягивайтесь =)

Итоги года

Наша газета. Все выпуски 2016 года

Лицо года!

В этом году у нас появилась собственная газета! По пятницам у нас проходят «новости компании и мира» — все собираются и рассказывают, что у кого произошло, на работе и не только Smile :)

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

Первая новость в чатике

Через неделю опять. И опять:

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

Больно пилить автотесты? Проси улучшать!

Есть у нас в базе таблица, где хранится плоская запись. Точнее, хранилась, теперь там BLOB. Но не суть. В плоской записи 600 полей, которые называются field_1, field_2... field_600.

В коде зашит меппинг этих филдов на нормальные названия:

<entry key="cat" value="6"/>
<entry key="dog" value="13"/>
...
<entry key="human" value="15"/>

Файлик с меппингом назовем... Ну, допустим, р2о (plain to object). Он с хитринкой — так как в java отсчет начинается с нуля, а не с единицы, то к value надо было добавить 1, чтобы получить field в базе. Вот, например, key="cat" → в базе это был field_7.

Сами по себе поля field_* проблем не приносили, потому что обычно база заполнялась из файликов, а дальше уже темная магия все разруливала и сразу красота! А вот в автотестах всегда черт ногу сломит. Открываешь тест, тебе надо поправить фамилию. А у тебя на входе эти 600 полей. И в каждой сборке свой меппинг. Где-то фамилия — это номер 2, где-то номер 4, где-то 6, и так далее.

И вот ты такой открываешь тест, который надо поправить. Открываешь р2о. Находишь там нужное тебе поле. Сидишь, тупишь, вспоминая, надо от value отнять единичку или прибавить... Правишь тест. Профит! Но затупы на «отнять или прибавить» особенно раздражали.

А уж если кто-то внес изменения в р2о! Изменил одно поле? Все, гудбай все тесты → рассыпались как карточный домик, надо ходить и уныло актуализировать. Так как актуализацией занималась я, то и страдала тоже я Smile :)

Страдала я громко, плакалась на митингах и в чатике:
— Опять тесты развалились из-за р2о. Давайте сделаем так, чтобы они не падали??
— Оля, отстань! Зачем тратить на это ресурсы? Не так уж часто р2о меняется. Один раз в год подняла тесты, это проще, чем тратить пару дней разработчика.

В общем, в случае пожара — горите.

Тебе тяжело? Ты и страдай

Панбагон. Заставка Русалочки не масштабируется на весь экран

В моей любимой «Русалочке (3 в ряд)» снова обновление! Любимой потому, что бажная))) Как не поиграешься, вечно утыкаешься в косяк.

Открываю игрушку на днях, а там заставку обновили — новый год жеж! Повесили на Русалочку шарфик, добавили елки и игрушки:

Видишь проблему?

Видите проблему? Правильно, нет Smile :)
Потому что на этом скриншоте нет проблемы. Ну, допустим, картинка не во весь экран шириной, и что? По бокам уютные синие полосы, ты можешь даже не заметить:

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

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

Тестирую оракловые вьюшки (view). Фактически это просто табличка с нужными мне колонками. Как любой отчет в интерфейсе. Cтроится отчет по определенному диапазону времени. Если сущность менялась в этом диапазоне — она попадет во view. Если нет — то увы.

На входе у меня есть текущее состояние базы — когда объект был создан, а когда закрыт. И параметры диапазона:
  • from_date — начальная дата
  • to_date — конечная дата
Я набросала все интересные мне тесты в блокноте — это быстрее всего. Допустим, объект создали 5 числа, а удалили 10. Какие интервалы между ними мне надо посмотреть?

Тест-дизайн в блокнотике. Идеально для простого рисунка

Рисунки помогают мне быстро охватить картину покрытия тестами. Так, вот только создание попадает в диапазон — есть. А оба события сразу — есть. А между ними? Есть. А... И так далее. Накидаешь идей за пару минут мозгового штурма и можно с ними работать. Переносить в код и описывать на вики. 

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

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

Обычно я рисую в yEd. Но черточки и текст отдельно там сделать проблематично. Тут не подходит. Хм... Paint? Открыла его, нарисовала кривую "прямую" Smile :) Тоже неудобно, хочется, чтобы симпатичненько смотрелось, а мышкой я прямые линии буду полчаса рисовать. Visio покупать надо... О, PowerPoint! 

Открыла, попробовала. Поставила исходные засечки "создан 5, закрыт 10". Добавила прямоугольник на задний план — идеально! Просто перетаскиваешь прямоугольник, то сужая, то расширяя его, и делаешь скриншоты. А как наглядно получается:

Вот диапазон захватывает обе засечки. 
Два события внутри

А вот внутри диапазона только создание объекта


Добавим картинки в описание тестов на конфлюенсе (вики):

четверг, 15 декабря 2016 г.

Класс эквивалентности «Ноль-не ноль»

Всегда тестируй ноль!

Всегда тестируй «ноль». Всегда:

— Заказ пиццы? Купить ноль штук.
— Калькулятор? Разделить на ноль.
— Видеоплеер? Открыть файл размером ноль байт.

Именно в нуле любят собираться ошибки. На сайте вроде просто поле, а где-то внутри система делит на него при подсчете процента покупки. Подставил ноль — все сломалось. Профит! Баг! Или продуман только позитивный сценарий — всегда заказывают больше нуля книг / пицц / настолок. Ввел ноль, а код обработки значения не написан. Опять сломалось… Или оставил поле пустым, а система тебе БАЦ, и эксепшен...

Поэтому тестируй ноль! Где? Давайте посмотрим.


Поле ввода — цифры есть


Числовое поле

Тут все просто. Если видим числовое поле, пробуем ноль

Число книг: ноль / не ноль.
Кол-во пар обуви: ноль / не ноль.
Возраст пациента: ноль / не ноль.
Номер заказа: ноль / не ноль.
Выручка в рублях: ноль / не ноль.
Коэффициент похожести: ноль / не ноль.
...

Заказ книг на OZON. Количество товара — числовое поле

Это логично, такую проверку делают многие. Легко найти число в числовом поле! :-)
Но что, если поле не числовое? Сразу затык.

среда, 14 декабря 2016 г.

Поздравляем Туана с новой работой!

Туан уже тестировщик!

Вот буквально в понедельник закончился очередной недельный онлайн-интенсив, а у нас уже есть счастливые весточки от его выпускника Туана!

=======================================================
— Ольга, здравствуйте.
Ну, не могу же я не похвастаться тренеру)
Конечно, не супер-пупер, т.к. при лвл апе внутри компании порог вхождение вероятно ниже,  но все же)
Да, меня взяли тестировщиком! Среди всех кандидатов выбрали меня :)
Черт побери, Ольга, спасибо большое! Я бы не сказал, что сертификат чем-то помог, но знания, что вы мне дали - однозначно!

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

вторник, 13 декабря 2016 г.

Дизайн привычных вещей. Дональд Норман


Ссылка на OZON.

Я давно ждала эту книгу! Когда-то давно о ней благосклонно отозвался Дизайн-линчер, который делает рассылку про дизайн интерфейсов. Мнению Антона я верю, поэтому полезла на Озон, а там... Пусто :-( Книги нет. А читать электронные я не люблю, мне же пощупать книжку надо...

Шли недели, даже месяцы. Но у меня дома еще стопка непрочитанных книг, так что я не торопилась. А потом книга начала всплывать перед моим носом. Например, в коворкафе Горбунова аж две бумажные книги Нормана! Я спросила: могу ли взять почитать? Нельзя ((( Можно там сидеть и читать, ну как-то не клево. Ходила облизывалась. Мелькали даже крамольные мысли утащить одну по тихому, прочитать и вернуть. Собственно, коворкафе пробудило интерес к книге и я даже уже решила купить электронный вариант, как тут она появилась в продаже! Разумеется, я тут же ее купила! О чем не жалею Smile :)

Книга — must read для тестировщиков, которые интересуются тестированием usability. Она учит отстаивать интересы пользователей. Она учит тому, что очевидное для разработчика нифига не очевидно простому пользователю. И это — нормально! Это не значит, что пользователь тупой. Это значит, что систему можно сделать лучше.

Правда, варнинг! Читать надо, включая мозг Warning (!) И применять в реальной жизни тоже. А то у меня на курсе у студентов фантазия и так скачет в бескрайние просторы вселенной. «Это мне непонятно, тут неудобно, поэтому давайте срочно исправлять, да еще с большим приоритетом!». Представляю, как они радостно потирают ручки и показывают мне этот пост: «Но вы же сами писали, что, если пользователю неудобно — это проблема дизайна. Нормальный usability-баг, принимайте!». Нет, дорогие, увы и ах, но все космолеты мы закрывали и будем закрывать. Надо с младых ногтей учиться тому, что некоторые баги никто править не будет. И не все должно быть доступно простому смертному (например, документация по АПИ биг-боссу, ну зачем?)

пятница, 9 декабря 2016 г.

Russian Content Marketing 2016


Ссылка на конфу — http://rcm2016.ru/.

Как я вообще дошла до жизни такой попала на конференцию по маркетингу? Да чисто случайно Smile :) Твиттер прислал очередную рассылку «вам может быть интересно», где был твит Максима Ильяхова «приходите на мой мастер-класс!». Стало интересно, пошла по ссылке.

Цена билета меньше 7000, что вполне посильно даже «на свои». На первую свою конференцию SQA Days я ехала, когда она стоила 6000. Что тоже посильно самому =) А еще я убеждена, что надо обязательно вкладываться в себя и свое развитие:
  • покупать книги (и читать хотя бы несколько бизнес-книжек в год);
  • ходить на курсы или конференции — тоже хотя бы пару раз в год.
При этом полезно изучать не только свою, основную, тематику, но и рядом лежащие. Или даже не рядом, вон Бах в своей книге Secrets of a buccaneer-scholar рассказывает о том, как ему помогали решать задачи тестирования знания о моллюсках =)

Так что я полистала программу конференции. Вроде интересно! Вот Ильяхов рассказывает о тексте. А еще будет доклад про инфографику, круто же! Узнаю, что это и зачем. Или вон "проблемы и решения", кейсы из жизни всегда поучительны. В общем, доклады по названиям интригующие, можно узнать что-то новое. Возможно, даже применить: мы общаемся с Заказчиками, пишем им рассылки (release notes), а еще у меня есть свои курсы и работа с лендингом — это как раз маркетинг задача. Так что я прониклась докладами и записалась на конфу! А теперь впечатления Smile :)

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

Fuzzing, Исследование уязвимостей методом грубой силы. Саттон, Грин и Амини


Ссылка на OZON

Крутая техническая книга. Авторы написали ее в 2007 году, будучи первопроходцами в направлении фаззинга. И не просто сделали книгу, а еще и сайт по фаззингу запилили — http://www.fuzzing.org/. На сайте выложены фаззеры:
  • Созданные авторами в рамках написания книги (бери да юзай).
  • Остальные фаззеры.
Это как Testbase, только ссылки не на полезные статьи по тестированию, а на фаззеры. Все собрано в одном месте, есть исходный код, очень удобно!

Содержание выглядит так:
  • Фаззинг формата файла
  • Фаззинг формата файла: автоматизация под UNIX
  • Фаззинг формата файла: автоматизация под Windows
То есть сначала рассказывается принцип фаззинга, а потом идут главы с описанием процесса автоматизации под разные платформы. С конкретными примерами — возьмем этот фаззер, ссылку смотри на http://www.fuzzing.org/, вот в нем есть такой участок кода, он нам важен потому что... Вот есть другой участок кода, он важен потому, что... Вот тут вы можете сами что-то допилить и расширить возможности. И так далее. Это круто! Практическое руководство к действию ))