понедельник, 2 сентября 2013 г.

Тестирование мобильных приложений


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

Александр Хозя без лишних сомнений согласился поработать вместе над этим проектом. Спасибо Саш!

Суммарное количество опыта в этом курсе удвоилось, а мы были вдохновлены поделиться им публично. Впереди предстояли дни подготовки, агрегирование материала, корректировка структуры, подготовка домашних заданий. Самое важное - нахождение консенсуса в тех вопросах, где наши взгляды начинали расходиться! Эти моменты - самые ценные в работе, ведь в итоге мы старались найти третью альтернативу, которая устраивала обоих и как нельзя лучше решала обсуждаемую проблему.
  
Сложно сказать, сколько часов продуктивного времени было инвестировано, а кофе выпито. В итоге, мы были готовы представить результат в виде online-курса из трех уроков:
  • общие рекомендации по тестированию мобильных приложений;
  • практические рекомендации по тестированию Android приложений;
  • практические рекомендации по тестированию iOS приложений.

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

Второй же и третий урок полностью сфокусированы на практических примерах, на что стоит обратить внимание во время тестирования мобильных Android и iOS приложений. Рассмотрели примеры того как пользоваться техническими возможностями SDK платформ, Proxy серверов для подмены запросов на сервер, загрузки путей GPS, поиск утечек памяти и многое другое.

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

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

пятница, 30 августа 2013 г.

Ожидания и невыполнение обещаний


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

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

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

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

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

Во время написание этой заметки вышел на книгу автора Kerry Patterson. Добавил в свой список на прочтение Crucial Accountability Resolving Expectations Commitments

суббота, 1 июня 2013 г.

Разработчики и тестирование



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

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

Большинство разработчиков думают в первую очередь о том, как быстрее закончить работу. Соответственно в их мире попусту нет времени на обдумывание всех негативных сценариев. Даже такие инженерные практики, как ATDD и TDD не всегда в этом помогают. Так как при подходе к разработке через первоначальное написание теста разработчик все равно будет думать о позитивном поведении системы в первую очередь и проверит лишь несколько негативных сценариев.

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

Тестировщик в этом примере выступает неким катализатором и в литературном смысле спускает разработчика с небес, предоставляя реальные факты о работоспособности и жизнедеятельности системы.

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

  • изначально стремитесь понять разработчика, а уже затем отстаивайте свою позицию;
  • если вам что-то не понятно честно скажите об этом и попросите объяснить;
  • не критикуйте работу разработчика, оперируйте фактами;
  • не позволяйте играть в ping-pong багами, требуйте четкого ответа.

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

среда, 29 мая 2013 г.

Auto ConfetQA Весна 2013 удалась на славу

Состоялась очередная Online конференция по автоматизации тестирования Auto ConfetQA. Особенностью этой конференции было наличие на ней трех разработчиков в качестве докладчиков, которые согласились поделиться своим опытом наряду с тестировщиками. Многие в своих докладах часто говорили о том, что стоит изучать все те технические моменты, которые используют программисты. Эти знания помогут сделать тесты легко поддерживаемыми и устойчивыми. Так же очень важным пунктом конференции был призыв уменьшать количество тестов на уровне UI и спускать их на более низкий уровень тестовой пирамиды. 

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

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

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

До встречи на следующих конференциях!

среда, 22 мая 2013 г.

Тренинги для тестировщиков


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

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

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

Чтобы познать тонкости работы с Web приложениями, посетите тренинг "Тестирование Web приложений".
Для тех тестировщиков, кто работает с Android и iOS приложениями будет очень полезным тренинг "Тестирование мобильных приложений".
       
Так же хочу порекомендовать работать над развитием  технических навыков:  Linux, SQL, XML, программирование, сети, протоколы и т.д.

Техническая база необходима, для того чтобы приступить к вводному тренингу "Основы автоматизации тестирования ПО", где Вы получите общее представление об автоматизации тестирования, подходах и практиках, которые применяются в этой области.

Если Ваша команда уже перешла или планирует перейти на работу по Гибким методологиям разработки, тогда двухдневный тренинг - "Тестирование в Agile" будет для Вас очень кстати и поможет правильно понять принципы, заложенные в эту концепцию разработки ПО.

Очень спорно оставлять тренинг по "Исследовательскому тестированию (Exploratory Testing)" внизу списка. Но мне кажется, что после освоения предыдущих тем - этот тренинг принесет намного больше результата и понимания того, что такое интеллектуальное тестирование!
         
И, конечно же, если хотите попрактиковаться в написании автоматизированных тестов под мои руководством, то эти практические занятия именно то, что Вам нужно!
         
Автоматизация тестирования Web приложений с Selenium/WebDriver
Автоматизация тестирования Android приложений
Автоматизация тестирования iOS приложений

Как Вы заметили, программа и детальное описание есть не каждый из тренингов. Некоторые из них сейчас находятся на стадии подготовки. Если Вы хотите предварительно записаться на тренинг, тем самым ускорив дату его проведения - напишите мне на email: me@adzynia.com