Category: Тестирование

12
Янв
2021

Организация функциональных и модульных тестов в Laravel

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

15
Дек
2020

👨‍🔧️ Немного про API: от тестового покрытия до QAAPI

Инженерам QA приходится постоянно учиться профессии. Начинающему тестировщику необходимо разобраться, что такое покрытие, автотесты, API и специальные приложения-помощники.

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

По понятиям

Тестовое покрытие – показатель, который отображает полноту охвата теста, все ли нюансы и важные моменты были проверены в ходе тестирования.

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

API (Application Programming Interface) – программный интерфейс приложения, с помощью которого одна программа может взаимодействовать с другой. API позволяет передавать информацию между приложениями напрямую, без использования пользовательского интерфейса, т. е. он принимает запрос, направляет данные в систему, обрабатывает и возвращает ответ.

Фича – полезная или необычная функция, некая особенность программы.

API для QA: что тестируем и как?

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

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

Выделим две важных задачи:

  1. Как эффективно измерить тестовое покрытие?
  2. Какое покрытие эффективно для API?

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

API для QA: тест фичи без доступа к коду

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

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

В каждом проекте свое API и, соответственно, у QAAPI должны быть свои умения, которые и дату назад отмотают, и тестового пользователя зарегистрируют с определенными параметрами, и данные подгрузят, и сервис активируют, и весь нужный пул методов содержат.

Любое QAAPI стоит на трех китах:

  1. Описание.
  2. Входные параметры.
  3. Тело метода со своей логикой.

Концепция QAAPI проста и в то же время максимально эффективна. Она дает массу преимуществ, подготавливая данные для автоматического тестирования и обеспечивая получение информации о состоянии фичи.

Например, нам нужно проверить, чтобы через 45 секунд после регистрации у нового пользователя появлялось окно с партнерским предложением. Есть метод SetHelloBalTime и URL, принимающий в качестве параметра количество секунд с момента регистрации, когда нужно будет показать пользователю (по его ID) нужное окно.

Выглядело бы это примерно так:

        /GetHelloBallTime?second=45&userId=78568
    

Такой запрос возвращает ответ {true}, т.е. через 45 секунд пользователь с ID = 78568 увидит нужное нам окно.

Сам класс метода будет таким:

        class GetHelloBallTime extends \QAAPI\Methods\AbstractMethod
{
public function getDescription() : string
{
return << \QAAPI\Params\UserId::create(),
'seconds' => \QAAPI\Params\PositiveInteger::create()->setDescription('Offset in seconds'),
];
}
public function run() : \QAAPI\Models\Output
{
// logic here
return \QAAPI\Models\Output::success();
}
}

    

API-помощники в тестировании

Для автоматизации труда инженера QA существует множество различных решений. Рассмотрим два популярных программных продукта, упрощающих работу с QAAPI:

  • Swagger – разработка с открытым исходным кодом. Платформа проектирования и документации для команд и отдельных лиц, работающих со спецификацией OpenAPI.

По сути, Swagger представляет из себя документацию, которая генерируется по вашему сервису. Она содержит:

  1. Список запросов.
  2. Параметры каждого запроса.
  3. Коды ответов.

Swagger работает по принципу генерации и при этом неважно, какой фреймворк вы используете.

Есть коды ответов и они также все задокументированы.

  • Postman – ПО для создания автоматизированных тестов API.

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

Плюс Postman – графический интерфейс и встроенный компонент Collection Runner, с помощью которого можно запустить наполненную запросами и тестами коллекцию.

***

Автоматизация тестирования – один из лучших способов проверки качества ПО в текущей версии. И чем чаще и качественнее по уровню проходит обучение инженер QA, тем более современные и мощные инструменты появляются в его арсенале. Образование тестировщика напрямую влияет на его заработок, поэтому важно выбирать максимально качественные обучающие ресурсы. Если вы не новичок в профессии, стоит прокачать английский, а потом перейти к какому-нибудь новому языку программирования. Наиболее эффективным для создания автоматизированных тестов считается Java.

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

10
Дек
2020

👨‍🔧️ API для QA: учимся тестированию ПО без доступа к коду

При обучении тестировщику стоит освоить API для QA, ведь на реальных проектах часто приходится работать с продуктом без доступа к исходному коду. На примере базовых запросов рассмотрим популярный инструмент Postman, позволяющий делать это даже новичкам.

Инженерам QA (Quality Assurance – обеспечение качества) и QC (Quality Control – контроль качества) нередко приходится проверять работу программного обеспечения и веб-сайтов, не имея доступа к программному коду. Для организации работы и безопасности продукта такой подход проще, ведь не нужно настраивать дополнительные доступы для пользователей или отслеживать отсутствие изменений после каждого тестирования. Для упрощения работы тестировщики используют дополнительные инструменты.

Для проверки коммуникации между установленными на разных устройствах системами используют специальный API (Application Programming Interface). При этом обмен информацией между программами осуществляется в обход пользовательского интерфейса, т. е. идёт функциональное тестирование. При помощи API проверяют функции регистрации нового пользователя, точность передачи и удаления данных, а также другие возможности продукта.

Использование Postman

Postman использует протокол HTTP для взаимодействия между серверами. Он доступен как в веб-версии, так и в виде настольного приложения с графическим интерфейсом.

Возможности продукта:

· Создание и отправка запросов

· Изменение параметров запросов.

· Сохранение созданных запросы в коллекции и папках.

· Запуск автоматических тестов на основе коллекций при помощи Collection Runner.

· Изменение окружения для одинаковых запросов.

· Добавление контрольных точек к вызову API.

Создание метода Postman

Стоит отметить, что тестирование при помощи API возможно только при наличии самого API и документации от разработчика. Это позволит точно понимать функции продукта без противостояния инженера QA и программиста на вечную тему: «Это баг!» & «Нет, это фича!».

В статье для начинающих мы рассмотрим ручное тестирование по 4 основным запросам:

· POST – создание ресурса на сервисе, т. е. отправку данных на сервер.

· GET – получение ресурса с сайта.

· PUT – обновление данных на сервере.

· DELETE – удаление ресурса с сайта.

Речь пойдёт об архитектуре REST, часто использующейся для взаимодействия сайтов и приложений. При этом активно применяется JSON (JavaScript Object Notation – текстовый формат обмена данными на языке JavaScript). Практиковать составление запросов можно, используя ресурс reqres.in. Здесь представлены разные Request и ожидаемые результаты (Response). Это и будет тренировочным API с документацией.

При работе с Postman стоит знать о статусах и классах состояний сервера:

Классы состояний сервера
Классы состояний сервера

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

Примеры запросов в Postman для быстрого обучения тестировщика

После запуска в Postman стоит создать папку с коллекцией запросов. Для этого нужно во вкладке Collections нажать на New Collection.


Указываем название коллекции.


Создаем запрос нажатием на Add requests.


POST

Рассмотрим регистрацию пользователя, поэтому указываем соответствующее название и нажимаем на Save to [Collections name].


Выбираем POST.


Указываем url тестируемого сайта.


Прописываем название соответствующего API, в данном случае api/register.


Во вкладке Body выбираем raw.


Далее выбираем формат текста JSON.


Нажатием на Send отправляем данные.


В соответствующем поле видим ожидаемый результат, указанный в документации и статус 200 ОК.


GET

Выполним запрос на получение данных о созданном пользователе, выбираем GET.


Указываем ссылку на API и после отправления смотрим на полученный результат, соответствующий ожидаемому.


PUT

Попробуем обновить данные пользователя, для этого создаём update_user.


Выбраем PUT.


Указываем ссылку с url и API, открываем окно для кода.


Отправляем новые данные.


В результате указана обновленная информация и время, когда были внесены изменения. Дополнительно успешность операции подтверждает ответ 200 от сервера.


DELETE

Создаём запрос на удаление пользователя.


Выбираем DELETE.


Указываем полную ссылку на страницу пользователя и отправляем.


Получаем от сервера в ответ статус 204 No Content, информирующий об успешности запроса, но без содержимого, т. е. данные были успешно удалены.


Документация, необходимая тестировщику для обучения

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

***

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

09
Дек
2020

Вебинар «Unit-тестирование в Android»

Участники вебинара изучат Unit-тесты, научатся тестировать компоненты, классы и методы в Java, а также рассмотрят технологию TDD.
— Читать дальше «Вебинар «Unit-тестирование в Android»»

01
Дек
2020

Курс «Тестирование веб-приложений на проникновение» (WAPT) от победителей The Standoff

В онлайн-формате изучите пентестинг от основ и до продвинутых тем, вроде социальной инженерии и постэксплуатации.
— Читать дальше «Курс «Тестирование веб-приложений на проникновение» (WAPT) от победителей The Standoff»

30
Ноя
2020

🐛 Типовые ошибки в разработке UI: найти и обезвредить

Умение найти баг – не всегда точная наука, но некоторые приемы будущему инженеру по QA стоит освоить в процессе обучения. Рассматриваем типовые ошибки разработчиков интерфейса.

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

UX (user experience) – пользовательский опыт, и это про удобство работы с ПО. Про то, какой путь пройдет пользователь для решения своего вопроса.

UI (user interface) – пользовательский интерфейс – про взаимодействие с продуктом. UI сфокусирован на том, как продукт выглядит на внешнем уровне.

Очень и очень многое можно предотвратить на этапе программирования, если разработчик достаточно опытный, или если ему повезло с тестировщиком, и QA-инженер сразу “подсветил” нуждающиеся в проработке моменты.


Навигация должна быть логичной

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

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

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

Картинку придумали, а вариативность забыли

Баги могут появиться из-за плохой коммуникация в команде. Дизайнер создает красивую картинку, отправляет ее разработчику, но тот картинку не видит, а видит варианты реализации. Если кто-то не додумал, здравствуй баг.

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

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

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


Разработка – это не только логичный код, но еще и дружелюбный

Реализовали какой-то код – протестируйте. Все ли удобно нажимать, все ли реагирует так, как заложено в ТЗ, соответствует ли результат ожиданиям? Вот чек-лист для разработчика, по которому сразу можно провести проверку:

  1. Есть реакция на нажатие у кликабельных элементов, приложение адекватно реагирует на действия пользователя и все идет по плану.
  2. Нет реакции у тех элементов, где нажатие не предусмотрено.
  3. Скролл работает.
  4. Экранная клавиатура появляется и исчезает в соответствии с заложенной логикой.
  5. Ввод текста начинается с заглавной буквы.
  6. Есть фокус на следующем поле ввода при нажатии Enter, т.е. когда вы ввели текст в одном поле и нажали “Готово”, приложение автоматически переходит на другое.
  7. Программная отправка формы работает, никаких дополнительных действией не требуется.
  8. Если нужно показать какой-то прогресс, есть специальный индикатор .

Чтобы сделать что-то нужное для пользователя, нужно думать как пользователь.

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

Определите свою аудиторию, узнайте её, выделите потребности и на этой основе сформулируйте задачи, которые будет решать ваш продукт.

Для этого существует подход Jobs To Be Done (Работа, которая должна быть выполнена): ваше приложение помогает выполнить работу? Если нет, нужно поработать ещё. Понимая задачу пользователя, гораздо проще сделать эффективное решение.


Правильно выстроенные приоритеты – залог успеха

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

Правила успешных “не”:

  1. Не добавлять иллюстрации ради иллюстраций.
  2. Не разрабатывать ненужную функциональность.
  3. Не встраивать регистрационные формы на каждый клик, не предложив что-то существенное взамен.
  4. Не прятать строку поиска.
  5. Не игнорировать оптимизацию.
  6. Не терять связи с пользователями.

Когда ошибки в UI/UX допустимы?

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

Как избежать ошибок?

  • Создавайте чек-листы.
  • Используйте элементы визуального тестирования.
  • Соберите свой тестовый стенд.
  • Тестируйте свои разработки внутри компании.
  • Развивайтесь и создавайте собственную базу знаний.

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

***

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

25
Ноя
2020

👨‍🔧️💸10 онлайн-платформ для заработка на тестировании

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

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

Главное – пройти квалификационное тестирование или выполнить пробное задание.


Иностранные платформы

Для работы с ними нужно хорошо знать иностранный язык, притом необязательно английский – иногда подходит испанский, немецкий или французский.

UserTesting – платформа позволяет оперативно получать обратную связь от клиентов. Можно создавать собственные тесты с нуля и делать обзоры продуктов. Данные защищены, работает круглосуточная поддержка. Необходимо зарегистрироваться, заполнить заявку и пройти тест для получения заданий. После этого пользователю будут доступны оплачиваемые предложения.

Userbrain – заработок на тестировании в течение 15 минут. Регистрируетесь, ставите расширение для Chrome или приложение iOS. Необходимо пройти квалификационную проверку, получить одобрение на участие в и можно зарабатывать по 3$ за каждый тест.

TryMyUI – получать деньги за честные отзывы – кредо этой платформы. Тестируете сайты, даете экспертное заключение и после принятия оценщиками каждую пятницу приходит оплата на PayPal. До начала работы придется пройти квалификационный тест.

Userlytics – платформа, где заказчики один известнее другого. Пользовательское тестирование, по итогу которого можно заработать от 5$ до 90$ в зависимости от масштабов. Главное – быть внимательным и хорошо знать английский.

IntelliZoom – платформа с максимально простым и дружелюбным интерфейсом. Компания проводит тесты UX на компьютерах и мобильных устройствах. Оплата за видео-обзоры составляет от 2$ до 10$.

test IO – платформа создана для QA-тестировщиков и выдает задачи по разным приложениям. Если получится найти баг, сбой и проблема окажется критической – заработаете больше. Выплаты ежемесячные.

Checkealos – онлайн-платформа для отзывов пользователей, которая помогает компаниям создавать лучшие сайты и приложения. Каждый отзыв стоит около 8 евро, сессия длится 15 минут. Если не знаете английский, можно работать на испанском.

PingPong – самые крупные варианты заработка здесь. По описанию сервиса вознаграждение может быть до 200 евро. Главное: стабильные интернет и желание работать.


Отечественные платформы

Российских платформ значительно меньше, а заработки на них скромнее. Если ваш иностранный язык недостаточно хорош, лучше начинать там, где ТЗ будет гарантированно понятным.

UXCrowd – “начать легко”. Российская платформа для заработка на тестировании. Стандартный путь: регистрация, тестовое задание, одобрение и начало работы. Тестирование оформляется по договору ГПХ, но только для граждан РФ. Официально, честно, прозрачно и для любого опыта.

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

***

Платформы для тестирования – отличный способ получить дополнительный доход, нарастить опыт, попробовать себя на международном рынке, понять свои слабые места и определить зоны роста.

Плюсом всех платформ являются именитые заказчики, которые ими пользуются. Хотите строчку в резюме про Coca-Cola, Facebook или Loreal? Присмотритесь.

***

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


23
Ноя
2020

👨‍🎓️🛠Образование влияет на зарплату QA-инженера: обзор ресурсов для обучения

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

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

Если вы решили подойти к карьере инженера QA серьезно, на ваших полках обязательно появятся следующие книги:

  1. Роман Савин, «Тестирование Дот Ком, или Пособие по жестокому обращению с багами в интернет-стартапах» – книга о тестировании ПО для начинающих. В ней доступно описана суть процесса выявления багов. Какие-то части книги могли устареть, но фундаментальные вещи и американский опыт поданы легко и понятно.
  2. Канер Сэм, Фолк Джек, Нгуен Енг Кек, «Тестирование программного обеспечения». QA-инженеры называют эту книгу библией тестировщика. Язык сложноват для новичка, но это объемный и охватывающий все концепции тестирования труд. Читать сложно, зато основы разложены по полочкам с примерами кейсов от реальных компаний.
  3. Стив Круг, «Не заставляйте меня думать» – понятно и обоснованно о принципах работы с интерфейсом, о вариантах создания «чистого» дизайна.
  4. Борис Бейзер, «Тестирование черного ящика. Технологии функционального тестирования программного обеспечения» – общепризнанный труд по поведенческому тестированию. В нем занудно, научно и методично расписаны все базовые техники тестирования.
  5. Ajay Balamurugadas, Sundaresan Krishnaswami, “Mobile Testing: Ready Reckoner” – все о тестировании мобильных приложений от практиков. Сборник полон скриншотов и инструкций, он погружает читателя в мир мобильного ПО. Перевода на русский нет, но мы помним, как важен для тестировщика английский язык.

Другие рекомендованные книги по тестированию ПО можно найти на нашем сайте.


Для тех, кто не очень любит читать и предпочитает слушать, есть отличная альтернатива сериалам:

  1. Курсы на youtube от Сергея Гливинского и его “QA Start UP – IT Training Center” – отличный вариант для прокачки скиллов в формате видео. Каждый урок – отдельная серия.
  2. Видеокурс по основам тестирования на https://itvdn.com/ru. 15 лекций расскажут основы профессии. Качество курса не на высоте, но именно поэтому его предоставляют бесплатно, а отделить зерна от плевел слушателю предстоит самостоятельно.
  3. Andy Key – «Курсы Тестировщиков Онлайн» – начинающий блогер делится мнением о тонкостях работы инженера QA.

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

  1. Курс «Тестирование ПО для начинающих» от Udemy.com. За 6,5 часов вы получите знания о жизненном цикле проекта, методологиях разработки и типах тестирования. Узнаете, как создать баг-репорт или чек-лист. В конце вас ждет несколько упражнений для тренировки навыков тестировщика.
  2. Курс «Основы тестирования» от IMBA – это 7 тематических модулей, 48 уроков и 34 задания, в том числе занятие по поиску клиентов. Уже во время обучения можно попробовать свои силы на фрилансе.
  3. Онлайн-университет Нетология предлагает освоить профессию и даже защитить диплом, а лучших выпускников ждут на собеседовании в «Альфа Банке»!
  4. Факультет тестирования ПО GeekBrains предлагает обучение профессии с нуля. Вас ожидает общение с экспертами, практика с наставниками, стажировка в GeekBrains и компаниях-партнерах, которые приглашают выпускников на работу. На факультете есть два направления: тестировщик ПО и тестирование мобильных приложений, при этом совсем не обязательно выбирать что-то одно.

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

17
Ноя
2020

Конференция HighLoad++ 2020

Темы выступлений — все аспекты разработки и поддержки высоконагруженных систем. Спикеры расскажут про архитектуры и разные методологии.
— Читать дальше «Конференция HighLoad++ 2020»

13
Ноя
2020

🐛 🛠 Изучаем инструменты тестировщика

Работа инженера QA требует внимательности при решении множества рутинных задач. Специальные инструменты позволяют автоматизировать управление тестированием и уменьшить объем ручного труда.

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

Управление тестированием

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

  • Jira (https://www.atlassian.com/ru/software/jira/guides) – решение для комфортной работы над проектами, отслеживания задач, совместной корректировки документов, планирования и наглядного проектирования.
  • Redmine (https://www.easyredmine.com/redmine-org/) позволяет контролировать проекты, отслеживать задачи, составлять контрольные списки дел, строить диаграммы и графики. Есть бесплатная пробная версия.
  • TestRail (https://www.gurock.com/testrail/) – решение, созданное специально для команд QA. Оно позволяет управлять тестовыми примерами, планами и запусками, а также получать информацию о ходе тестирования в режиме реального времени. С помощью TestRail можно настроить интеграцию с трекерами проблем.

Скриншоты и работа с ними

Для тестировщика важна наглядность. Очень легко пропустить важную информацию в потоке однотипных данных. Создание и анализ скриншотов с помощью специальных инструментов – важная часть работы инженера QA:

  • Snagit (https://www.techsmith.com/screen-capture.html) содержит все лучшее из возможного. Приложение вырезает скриншоты, записывает видео и аудио, работает с веб-камерой, создает gif, рисует, пересылает. Есть бесплатная пробная версия.
  • Recordit API (http://help.recordit.co/api/) создает видео и отправляет сразу в приложение, а еще одним кликом превращает его в gif.
  • Monosnap (https://monosnap.com/welcome) редактирует скриншоты, выделает детали, скрывает конфиденциальную информацию.
  • GreenShot (https://getgreenshot.org/) – свободное ПО для создания скриншотов на Windows. Легкий, гибкий и надежный инструмент.

Генераторы данных

Для тестирования часто используют текстовые файлы с одними и теми же наборами данных. Со временем баги “привыкают” к тестам и перестают находиться. Для решения проблемы тестировщики применяют специальные инструменты:

  • Mockaroo.com (https://www.mockaroo.com/) может не только заполнить тестовые данные человека (имя, номер карты и прочее), но и генерирует SQL-запрос.
  • Bugmagnet (https://bugmagnet.org/) – плагин для Chrome и Firefox. После установки достаточно кликнуть правой кнопкой мыши и нажать название плагина: после этого можно выбирать из предложенных вариантов данных и добавлять свои.

Визуальное отображение и интеллект-карты

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

  • Coogle (https://coggle.it/) – бесплатное онлайн-приложение с простым интерфейсом и большим набором функций.
  • Xmind (https://www.xmind.net/) – кросс-платформенное приложение, доступное в бесплатной и в расширенной платной версиях. Большой его плюс – возможность работать с диаграммами Ганта.
  • Freemind (https://sourceforge.net/projects/freemind/) – бесплатное приложение для создания диаграмм связей с почти полным набором функций для работы. Отлично подойдет начинающим тестировщикам. Единственный минус – устаревший дизайн.

Чек-листы

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

  • Testpad (https://ontestpad.com/) – инструмент для составления плана тестирования и контроля с помощью списков. Комфортный и гибкий в работе.
  • Sitechсo (https://sitechco.ru/) – онлайн-сервис для ведения чек-листов, позволяющий хранить результаты, просматривать отчеты и статистику. Большое достоинство Sitechсo – возможность интеграции с Jira Cloud.
  • Teamsuccess (https://teamsuccess.io) – сервис, в котором перечислены некоторые проверки, которые пригодятся при тестировании и помогут структурировать идею. По аналогии существуют целые базы базы чек-листов, их иногда удобно использовать в работе.

Валидаторы HTML/CSS

Валидатор анализирует данные по URL приложения. Он проверяет правильность разметки веб-документов в HTML, совместимость с мобильными устройствами, работоспособность ссылок и многое другое:

  • World Wide Web (http://validator.w3.org/) создали валидатор, в котором тремя способами можно проверить приложение, найти неработающие alt- параметры и линки.
  • Плагины для браузеров, которые можно скачать в большом количестве по запросу “плагин валидации” и выбрать любой подходящий.
***

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

09
Ноя
2020

Java-конференция Joker 2020

Более 20 специалистов расскажут обо всём, что касается Java: JVM, фреймворки, хранилища данных, высоконагруженные системы и др.
— Читать дальше «Java-конференция Joker 2020»

06
Ноя
2020

🦉 Использование фреймворка Nightwatch.js для автоматизации тестирования

Selenium совместим с разными инструментариями и языками программирования – он широко используется для автоматизированного браузерного тестирования. Если говорить о Selenium и JavaScript, есть особенный фреймворк – Nightwatch.js, о котором и пойдет речь в статье.

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

Что такое Nightwatch.js?

Nightwatch.js – написанный на Node.js открытый инструментарий, направленный на предоставление полноценного сквозного (end-to-end) тестирования веб-приложений, браузерных приложений и веб-сайтов с помощью Selenium и JavaScript. Он предоставляет несколько команд и утверждений для выполнения операций с элементами DOM.

Nightwatch.js использует API W3C WebDriver или Selenium WebDriver, и упрощает написание сквозных автоматических тестов в Node.js, а также легко настраивается для непрерывной интеграции.

Почему Nightwatch.js так популярен?

Основная цель Nightwatch.js – создание единого интегрированного решения для тестирования приложений. Поскольку фреймворк написан на Node.js, у него есть некоторые весомые преимущества перед любым другим инструментом Selenium.

Автоматизированное браузерное тестирование на базе Nightwatch.js устраняет фактор зависимости от стороннего программного обеспечения, что повышает целостность данных между различными системными компонентами.

Nightwatch.js предоставляет следующие возможности из коробки:

  • Встроенный Test Runner: набор средств запуска тестирования из командной строки с поддержкой Grunt для выполнения автоматизированных тестов;
  • Стратегия тестирования: поддерживаются различные способы запуска тестов (параллельно, последовательно или по группам и тегам).
  • Облачные сервисы: поддержка интеграции с провайдерами облачного тестирования на Selenium, такими, как LambdaTest.
  • Selenium Server: возможность автоматического управления автономным сервером Selenium с помощью встроенной отчетности JUnit XML.
  • Утверждения, CSS и XPath: некоторые команды и утверждения для операций DOM, а также селекторы CSS и XPath, используемые для идентификации элементов на странице.
  • Непрерывная интеграция: фреймворк может использоваться для интеграции тестов с системами автоматизации сборки (Jenkins, TeamCity и т.п.).

Помимо перечисленных выше функций, Nightwatch.js популярен благодаря чистому и простому синтаксису, упрощающему быстрое и эффективное написание тестов с использованием только CSS-селекторов Node.js и XPath локатора в Selenium.

Принцип работы Nightwatch.js

Nightwatch обменивается данными посредством RESTful API, который определяется W3C WebDriver API. Ему нужен RESTful HTTP API и сервер Selenium JavaScript WebDriver.

Для выполнения операции, будь то команда или утверждение, Nightwatch обычно требуется отправить минимум два запроса:

  • Первый запрос находит требуемый элемент с заданным выражением XPath или CSS селектором.
  • Второй принимает элемент и выполняет текущую операцию команды или утверждения.

Установка Nightwatch.js

Есть некоторые базовые условия, необходимые для начала работы с Nightwatch.js:

  • Node.js: модуль Nightwatch написан на Node.js, значит потребуется серверная платформа.
  • Пакетный менеджер Node (npm): как только Node.js установлен, Node package manager может использоваться для установки пакетов.

Чтобы инсталлировать последнюю версию инструментария, выполните следующую команду (здесь ‘g’ используется для глобальной установки):

        $ npm install -g nightwatch
    

Представленная ниже команда поместит исполняемый файл (‘--save-dev’) в папку ./node_modules/.bin

        $ npm install --save-dev nightwatch
    
  • Java SDK: поскольку Nightwatch работает на Selenium WebDriver API и требует Selenium WebDriver Server, необходимо также установить Java Development Kit (JDK 7+) и настроить среду JAVA.
  • Selenium Server: требуется автономный серверный пакет Selenium JAR, который можно скачать на странице загрузок Selenium. Затем его нужно поместить в папку bin проекта. Selenium Server запускается следующей командой:
        selenium-server-standalone-{version}.jar
    

  • ChromeDriver: является автономным сервером, реализующим проводной протокол W3C Web Driver для Chromium. Этот исполняемый файл надо поместить в ту же папку bin.
        $ npm install --save-dev chromedriver</pre>
    

Настройка Nightwatch.js

Фреймворк предлагает встроенный Test Runner, который ожидает передачи файла конфигурации JSON. По умолчанию используется nightwatch.json, который должен находиться в корневом каталоге проекта.

В качестве альтернативы можно взять файл конфигурации nightwatch.conf.js, который будет загружен из корневого каталога проекта для тестирования на Nightwatch.

Примечание
Если в каталоге присутствуют оба файла конфигурации, в приоритете будет nightwatch.conf.js, поскольку он более гибок и может содержать комментарии.

В конфигурационном файле объявить конкретные детали: среды тестирования, специфические настройки Selenium и т.д. Примерно выглядит файл nightwatch.json для тестирования с помощью Selenium и JavaScript.

        { "src_folders" : ["tests"], "output_folder" : "reports", "custom_commands_path" : "", "custom_assertions_path" : "", "page_objects_path" : "", "globals_path" : "", "test_workers": { "enabled": true, "workers": "auto" }, "selenium" : { "start_process" : true, "server_path" : "node_modules/selenium-standalone/.selenium/selenium-server/", "log_path" : "./reports", "host": "127.0.0.1", "port" : 4444, "cli_args" : { "webdriver.chrome.driver" : "", "webdriver.gecko.driver" : "", "webdriver.edge.driver" : "" } }, "test_settings" : { "default" : { "launch_url" : "http://localhost", "selenium_port" : 4444, "selenium_host" : "localhost", "silent": true, "screenshots" : { "enabled" : false, "path" : "" }, "desiredCapabilities": { "browserName": "firefox", "marionette": true, "javascriptEnabled": true, "acceptSslCerts": true } }, "chrome" : { "desiredCapabilities": { "browserName": "chrome" } }, "edge" : { "desiredCapabilities": { "browserName": "MicrosoftEdge" } } } }
    

Давайте подробнее рассмотрим его структуру:

  • src_folders: указывающая на местоположение тестовых наборов директория.
  • output_folder: здесь хранятся отчеты тестирования, например, файлы JUnit с результатами, отчеты в XML, логи, логи selenium, скриншоты, видео, сетевые логи и т.д.
  • globals_path: указывает путь к файлу, в котором инициализируются все глобальные параметры тестового набора. Они загружаются и представляются в тестах, как глобальное значение, а также могут быть изменены в среде test_settings.
  • test_workers: это свойство определяет, запускать тесты параллельно или нет. Если для параметра enabled установлено значение true, распараллеливание разрешено.
  • page_objects_path: указывает место, откуда должен быть загружен объектный файл страницы.
  • selenium: содержит всю информацию и настройки, относящиеся к конфигурации Selenium Server. Он также содержит server_path и webdriver.chrome.driver, которые указывают путь к Selenium Server и ChromeDriver. Если параметру start_process задано значение true, Selenium Server запускается автоматически.
  • test_settings: содержит всю важную информацию о тестах и их параметрах. Это позволяет нам определять и настраивать тестовые среды.

Запуск первого скрипта на локальном Selenium WebDriver

Наш тестовый сценарий будет искать Nightwatch в Google, а затем проверит документацию nightwatch.js на веб-сайте.

        module.exports = { 'NW test on Google' : function (client) { client .url('http://www.google.com') .waitForElementVisible('body', 1000) .assert.title('Google') .assert.visible('input[type=text]') .setValue('input[type=text]', 'Nightwatch JS') .waitForElementVisible('button[name=btnG]', 1000) .click('button[name=btnG]') .pause(1000) .assert.containsText('ol#rso li:first-child', 'Nightwatch.js | Node.js powered End-to-End testing framework') .end() } }

    

Файл nightwatch.json (и глобальный файл модуля nightwatch.globals.js) можно редактировать, но он должен выглядеть примерно так:

        { "src_folders" : ["./tests"], "output_folder" : "./reports", "globals_path" : "nightwatch.globals.js", "test_workers": { "enabled": true, "workers": "auto" }, "selenium" : { "start_process" : true, "server_path" : "./node_modules/selenium-server-standalone-jar/jar/selenium-server-standalone-3.141.59.jar", "log_path" : "nw/logs", "host" : "127.0.0.1", "port" : 4444, "cli_args" : { "webdriver.chrome.driver" : "./node_modules/chromedriver/bin/chromedriver", "webdriver.ie.driver" : "" } }, "test_settings" : { "default" : { "launch_url" : "http://google.com", "selenium_port" : 4444, "selenium_host" : "localhost", "silent": true, "screenshots" : { "enabled" : true, "path" : "" }, "desiredCapabilities": { "browserName": "chrome", "javascriptEnabled": true, "acceptSslCerts": true } }, "french" : { "launch_url" : "http://google.fr", "desiredCapabilities": { "browserName": "firefox", "javascriptEnabled": true, "acceptSslCerts": true } } } }
    

Далее нужно выполнить тестирование Nightwatch из базовой директории проекта с помощью команды:

`npm test`

Эта команда проверяет тесты и зависимости, а затем выполняет тестовый набор, который открывает в Chrome заданную строку поиска.


Параллельное тестирование на локальном Selenium WebDriver

Настроим конфигурацию для параллельного выполнения тестирования, установив для test_workers значение true. В папку тестов потребуется добавить еще один, и фреймворк Nightwatch.js выполнит их параллельно.

Второй тест будет искать Node.js в Google и проверит документацию Node.js.

        module.exports = { 'NJS test on Google' : function (client) { client .url('http://www.google.com') .waitForElementVisible('body', 1000) .assert.title('Google') .assert.visible('input[type=text]') .setValue('input[type=text]', 'node.js') .waitForElementVisible('button[name=btnG]', 1000) .click('button[name=btnG]') .pause(1000) .assert.containsText('ol#rso li:first-child', 'Node.js') .end() } }
    

Оба теста выполнятся одновременно в двух разных браузерах Chrome.


Тестовое покрытие

Проводя тестирование веб-приложения на локальном хосте, мы стремимся устранить любые проблемы с пользовательским интерфейсом и можем внести определенные изменения, а затем перенести код на live-сервер для получения живого трафика. Тут возникает одна проблема – тестовое покрытие.

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

Затраты на локальную инфраструктуру

Выполнение определенных автоматических тестов и локальная настройка Selenium всегда сопровождается затратами на инфраструктуру.

  • Для выполнения всех тестовых задач необходимо настроить отдельную среду;
  • Требуются различные типы устройств: десктопы, ноутбуки, смартфоны и планшеты;
  • Инвестиции в установку фермы устройств – не лучший выбор для стартапов и небольших организаций;
  • Поскольку количество автоматизированных тестов может возрасти, нужна масштабируемая система.

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

Почему облачный Selenium Grid – хороший выбор?

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

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

Какой Selenium Grid выбрать?

200 000 компаний по всему миру доверяют LambdaTest как надежному онлайн-провайдеру Selenium Grid. Сервис позволяет выполнить автоматизированное тестирование более чем 2000 реальных браузеров для мобильных и настольных компьютеров.

Облачный Selenium Grid позволяет выполнять скрипты автоматизации тестирования в Selenium на различных платформах программирования: Java, JavaScript, PHP, Python, Ruby, C # и других языках, которые обеспечивают привязку к Selenium.

Вы также можете выбрать интеграцию с различными инструментами CI/CD (Jenkins, Travis CI и другими) для непрерывного тестирования в DevOps.

Благодаря открытому Selenium API нетрудно извлечь отчеты о выполнении скрипта Selenium через LambdaTest. Давайте попробуем реализовать приведенный выше пример, используя удаленный WebDriver для LambdaTest Selenium Grid.

Выполнение скрипта на удаленном Selenium Grid

Мы можем использовать существующий локальный тестовый скрипт и файлы конфигурации, изменив всего несколько строк кода. Для начала нужно будет вызвать удаленный Selenium Webdriver вместо локального.

Затем определим среду браузера для выполнения тестов, передав данные в LambdaTest Selenium Grid через требуемый класс возможностей. Он предоставляет генератор возможностей (Desired Capabilities Generator) для выбора и передачи сведений о браузере и спецификаций среды с различными комбинациями.


Класс desiredCapabilities в конфигурационном файле nightwatch.json для тестирования Nightwatch будет выглядеть примерно так:

        "desiredCapabilities": { "build" : "Nightwatch-Selenium-Test", "name" : "Nightwatch-Selenium-Test", "platform" : "Windows 10", "browserName" : "Firefox", "version" : "71.0", "selenium_version" : "3.4.0", "geoLocation" : "IN" }

    

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


Мы также можем получить ключ доступа, имя пользователя и сведения о хабе в разделе Automation.


Ниже приведен файл nightwatch.conf.js, в котором нужно объявить конфигурацию пользователя для ключа доступа, имени пользователя, хоста и порта для теста.

        module.exports = (function(settings) { console.log(settings["test_settings"]["default"]["username"]) if (process.env.LT_USERNAME) { settings["test_settings"]["default"]["username"] = process.env.LT_USERNAME; } if (process.env.LT_ACCESS_KEY) { settings["test_settings"]["default"]["access_key"] = process.env.LT_ACCESS_KEY; } if (process.env.SELENIUM_HOST) { settings.selenium.host = process.env.SELENIUM_HOST; } if (process.env.SELENIUM_PORT) { settings.selenium.host = process.env.SELENIUM_PORT; } return settings; })(require('./nightwatch.json'));

    

Стоит выполнить тесты в различных браузерах и операционных системах: мы использовали Microsoft Edge, Mozilla Firefox и Apple Safari на Windows 10 и OS X 10.13.

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

        { "src_folders" : ["./tests"], "output_folder" : "./reports", "globals_path" : "nightwatch.globals.js", "test_workers": { "enabled": true, "workers": "auto" }, "selenium" : { "start_process" : false, "server_path" : "", "log_path" : "", "host" : "hub.lambdatest.com", "port" : 80, "cli_args" : { "webdriver.chrome.driver" : "", "webdriver.ie.driver" : "", "webdriver.firefox.profile" : "" } }, "test_settings" : { "default" : { "launch_url" : "http://google.com", "selenium_port" : 80, "selenium_host" : "https://lambdatest.com", "silent": false, "screenshots" : { "enabled" : true, "path" : "" }, "username" : "irohitgoyal", "access_key" : "123456789", "skip_testcases_on_fail": false, "desiredCapabilities": { "build":"Nightwatch-Selenium--Test", "platform" : "Windows 10", "browserName" : "Chrome", "version" : "78.0", "selenium_version" : "3.13.0", "visual":true, "video":true, "console":true, "geoLocation" : "IN", "chrome.driver" : "78.0", "network":true } }, "chrome": { "desiredCapabilities": { "platform": "Windows 10", "browserName": "chrome", "version": "78.0" } }, "safari" : { "desiredCapabilities": { "platform": "macos 10.13", "browserName": "safari", "version": "11.0" } }, "firefox" : { "desiredCapabilities": { "platform": "win10", "browserName": "firefox", "version": "60" } }, "edge" : { "desiredCapabilities": { "platform": "Windows 10", "browserName": "MicrosoftEdge", "version": "17.0" } }, "french" : { "launch_url" : "http://google.fr", "desiredCapabilities": { "browserName": "firefox", "javascriptEnabled": true, "acceptSslCerts": true } } } }

    

Теперь важно добавить приведенный ниже раздел для тестирования Nightwatch в класс scripts в качестве аргументов в файле package.json, чтобы уточнить среды выполнения desired compabilities.

        scripts": { "test": "./node_modules/.bin/nightwatch -e firefox,edge,safari test" },
    

Осталось выполнить тесты из базовой директории проекта с помощью следующей команды:

npm test

Она выполняет проверку тестов и зависимостей, а затем запускает тесты и открывает браузеры Edge, Firefox и Safari в указанных средах и вводит строку поиска. На скриншоте показан код Nightwatch, работающий в LambdaTest Selenium Grid.


Скрипт запускается параллельно в Mozilla Firefox, Safari, Google Chrome и Edge, а результаты отображаются в командной строке и подробно фиксируются на интерактивной панели автоматизации LambdaTest. Панель инструментов LambdaTest позволяет просматривать логи, скриншоты и видеозаписи всех выполненных на Selenium тестов.

Заключение

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

***

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

04
Ноя
2020

✅ 10 советов начинающему инженеру QA

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

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

Инженер QA обучается постоянно: попробуем сформулировать 10 базовых принципов, следуя которым можно если не достичь совершенства, то максимально к нему приблизиться.

Совет № 1. Составьте план

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

Совет № 2. Выбирайте язык

Речь не только о языках программирования. Если у вас слабый английский, это первый пункт плана. Вам нужно читать мануалы в оригинале, быть в курсе мировых
новостей и понимать, почему
оператор или функциональный модуль называются именно так, а не иначе. Только освоив английский можно выбирать, скажем, между
Java или Python.

Иллюстрация с pixabay.com
Иллюстрация с pixabay.com

Совет №3. Изучите кухню

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

Совет №4. Используйте интеллект-карты

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

Совет №5. Делите тестирование на части

Любой сложный процесс можно
разделить на составные части и проверить каждую из них отдельно. Составьте для каждой части ситуации от обычной до невероятной, и пройдите эту
шкалу полностью. Результат получится более объемным, а понимание процесса углубится. Начните с ориентации ПО на девайсах, визуала, ведения данных и
постепенно идите к коду. Создавайте чек-листы. Они пригодятся, чтобы разгрузить мозг и ничего не
забыть. Разделите тестирование на разные позиции:
пользователя, специалиста тех. поддержки и т.д.

Иллюстрация с pixabay.com
Иллюстрация с pixabay.com

Совет № 6. Собирайте базу кейсов

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

К примеру, два инженера QA тестируют расчет алиментов. Один проверил, как они заводятся в системе, как
начисляются, каковы варианты ведения данных в полях. Проверил и смоделировал выплату.

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

Какой результат будет более
объемным?

Совет № 7. Пишите понятно, подтверждайте красиво

Все записанное имеет силу. Нет
ничего надежнее задокументированных результатов тестирования. Недостаточно
сказать «работает не так»: приложите скриншот, лог программы, видео или
трассировку. Чем больше наглядных подтверждений, тем выше шансы, что вас поймут
правильно и не попросят переформулировать.

Совет №8. Освойте отладочные меню и системы баг-трекинга

Обучение инженера QA включает работу с отладочными меню для облегчения тестирования. Системы баг-трекинга Jira, Redmine и Bugzilla помогают управлять процессом и координировать работу.

Совет № 9. Проводите стресс-тестирования

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

Иллюстрация с pixabay.com
Иллюстрация с pixabay.com

Совет № 10. Пройдите стажировку

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

Что стоит почитать для расширения кругозора:

· Гленфорд Майерс, Том Баджетт, Кори Сандлер «Искусство
тестирования программ»

· Тобиас Клейн «Дневник охотника за ошибками.
Путешествие через джунгли проблем безопасности программного обеспечения»

· Ron
Patton
«Software Testing»

· Джеймс Уиттакер, Джейсон Арбон, Джефф Каролло «Как
тестируют в
Google»

· Кэти Сьерра и Берт Бейст «Изучаем Java»

· Линн Бейли «Изучаем SQL»

· Роман Савин.
«Тестирование Дот Ком, или Пособие по жестокому обращению с багами в
интернет-стартапах»

· Святослав Куликов «Тестирование программного
обеспечения. Базовый курс»

· Алан Купер «Психбольница в руках пациентов»

· Борис Бейзер «Тестирование черного ящика.
Технологии функционального тестирования программного обеспечения и систем»

· Константин Азарский «Тестирование. Легкий старт»

Где поучиться:

· Можно пройти стажировку в крупной ИТ-компании. Варианты нетрудно найти на hh.ru с
пометкой «без опыта». Чтобы получить должность, достаточно иметь базовые знания. Денег стажировка скорее всего не принесет, но
вы попадете в
профессиональную среду и при достаточной мотивации обеспечите себе карьерный рост.

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

***

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

30
Окт
2020

🦋 7 мифов о профессии тестировщика

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

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

Иллюстрация с pixabay.com
Иллюстрация с pixabay.com

Миф 1. Тестировщик – как программист, только похуже.

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

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

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

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

Миф 2. Тестировщики – самые бесполезные участники процесса. Они только ищут ошибки, а значит можно работать без них.

Инженер по QA – не стартовая площадка в ИТ с ростом до более важной позиции. Это сложная и самодостаточная профессия, требующая таланта и особого склада ума.

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

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

Иллюстрация с pixabay.com
Иллюстрация с pixabay.com

Миф 3. Программист vs тестировщик.

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

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

Миф 4 . Работа тестировщика лишена творчества.

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

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

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

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

Миф 5. Тестировщики зарабатывают меньше всех в ИТ.

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

Иллюстрация с pixabay.com
Иллюстрация с pixabay.com

Миф 6. Тестировщику некуда расти. Тупиковая ветвь карьеры.

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

Для целеустремленных и активных специалистов существует два основных направления роста: перспективная карьера в QA или управление проектами. Тут каждый выбирает для себя: развиваться как профессионал, либо уйти на административную работу.

Везде, где требуется аналитика, управление проектами и обеспечение качества, тестировщик может найти применение своим талантам.

Миф 7. Если программа работает плохо, виноват тестировщик.

В QA у каждого своя роль, от которой зависит результат. Невозможно ответственность за проект отдать только этапу тестирования.

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

***

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

22
Окт
2020

Разница между @Before и @BeforeClass в JUnit 4?

Разбираюсь с JUnit 4, а в частности с аннотациями @Before и @BeforeClass. Не могу понять: @BeforeClass выполняется перед инстанциированием класса теста, а @Before перед каждым тестом.
Но! Насколько я знаю, JUnit создаёт класс теста заново …

19
Окт
2020

Курс для QA-инженеров

Курс подойдёт специалистам, которые хотят понимать, в какую сторону развиваться, и показывать теоретическую экспертность на собеседованиях.
— Читать дальше «Курс для QA-инженеров»

08
Окт
2020

Старт 9 ноября, Москва и СПб: интенсив «Fullstack-разработчик. JavaScript»

За 3 месяца овладеете необходимыми знаниями по JavaScript и основным инструментам, которые позволят трудоустроиться на позицию разработчика.
— Читать дальше «Очный интенсив «Fullstack-разработчик. JavaScript»»

29
Сен
2020

14 октября – 17 октября, онлайн: конференция Golang Live 2020

Профессиональная конференция для Go-разработчиков. Специалисты расскажут о применении языка программирования Golang в энтерпрайз-проектах.
— Читать дальше «Конференция Golang Live 2020»

28
Сен
2020

Считается, будто в IT легче всего прийти через тестирование, но о переквалификации тестировщиков никто не рассказывает. Мы рассмотрим карьерные перспективы специалистов по QA.

После 7-10 лет работы в профессии каждый день становится копией предыдущего: опять приходятся писать тест-кейсы или автотесты. Проекты не отличаются друг от друга, и даже все баги, кажется, известны заранее. Во время кризиса жанра душа просит чего-то нового. В статье, подготовленной при поддержке Факультета Тестирования ПО онлайн-университета GeekBrains, мы рассмотрим возможные пути эволюции тестировщика.

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

Фото с сайта pixabay.com
Фото с сайта pixabay.com

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

Automation Test Architect

Должность в России довольно редкая и встречается преимущественно в филиалах иностранных корпораций, где счет идет на десятки тысяч автотестов.

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

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

SDET – Software Development Engineer in Test

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

Как правило SDET владеет несколькими языками программирования. Он хорошо знаком с продуктом не только как обычный тестировщик, но и как программист. Уровень SDET позволяет проводить ревью кода, тестировать программу методом «белого ящика» и вносить в нее изменения. SDET тоже пишет автотесты, но это совершенно другой уровень, существенно отличающийся от обычной автоматизации.

Test Architect

Если вы не любите писать код, но можете часами анализировать ТЗ на сотни страниц, стоит подумать о должности Test Architect. Как и архитектор автотестов, архитектор тестирования нужен в крупных проектах и больших компаниях, например, в банках.

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

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

Test manager

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

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

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

Фото с сайта pixabay.com
Фото с сайта pixabay.com

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

Разработка

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

DevOps

Помимо разработки существует еще направление DevOps. В эту профессию переходят тестировщики, которые самостоятельно встраивали автотесты в процессы CI/CD. Им доводилось поднимать всю инфраструктуру автоматизации с нуля, создавать собственные системы мониторинга, а также разворачивать и поддерживать тестовые стенды, работать с Docker и писать bash-скрипты. Устроиться в DevOps будет чуть сложнее, чем получить должность программиста. Обычно, на эту позицию ищут специалистов уровня Senior, но можно попробовать найти работу в стартапе, где требования к кандидату будут ниже.

Фото с сайта pixabay.com
Фото с сайта pixabay.com

В сфере IT существует не только код. Есть целый ряд профессий, которые не требуют наличия технических навыков и при этом востребованы на рынке ничуть не меньше программирования. Если вы считаете, что кодить – это не ваше, обратите внимание на следующие специальности.

Product manager

Кто, как не QA знает все о продукте, над которым работает команда? Тестировщик непосредственно участвует в его развитии, знаком с фидбеком от пользователей и видит, что нравится клиентам, а что вызывает у них раздражение. Он понимает, сколько времени требует доработка и может спрогнозировать сроки реализации новой функциональности, а также знает сильные и слабые стороны продукта по сравнению с конкурирующими. В работе тестировщики опираются в том числе на аналитику и формальные метрики: для начала им стоит попробовать себя в качестве помощника PM на текущем проекте. Если не получится, можно предложить услуги конкурентам.

Project manager

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

Заключение

Тестирование – хороший старт для карьеры в IT. Перед тестировщиками открывается множество путей дальнейшего развития, если текущая деятельность перестала приносить им удовлетворение. При желании QA всегда может найти работу по душе.

***

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

04
Сен
2020

14-18 сентября, онлайн: конференция Russian Python Week 2020

Специалисты ведущих IT–компаний расскажут обо всём, что касается Python: безопасность, оптимизация кода, истории успеха и провалов.
— Читать дальше «Конференция Russian Python Week 2020»

03
Сен
2020

15-17 сентября, Москва: конференция TestCon Moscow 2020

Специалисты поделятся инструментами и лучшими практиками для проведения тестов в целях улучшения качества программного обеспечения.
— Читать дальше «Конференция TestCon Moscow 2020»

01
Сен
2020

Не находит класс при использовании PHPUnit

Хотел бы научиться писать тесты на PHP. Нашёл библиотеку PHPUnit. Написал первый тест, максимально простой. При запуске, PHPUnit пишет, что не находит класс User. Я прописал namespace в src/Classes/Models/User.php и в composer.json, но PHP…

27
Авг
2020

Где искать помощи тестировщику, если ответа на вопрос нет ни в Google, ни на StackOverflow? Поговорим о сообществах, посвященных тестированию.

Зачем нужны комьюнити

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

Выполняя изо дня в день одни и те же действия, мы перестаем развиваться. Для IT-специалистов отсутствие развития – это риск остаться за бортом на рынке труда. Общение в комьюнити – один из способов снизить этот риск.

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

Когда стоит обратиться к комьюнити

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

Представим, что компания решила начать писать автотесты. Но на чем писать и какие библиотеки использовать? Запрос в Google «инструменты автоматизации тестирования» возвращает порядка 3 млн результатов. Треть этой выдачи – завуалированная или открытая реклама. В подобной ситуации лучше поинтересоваться у комьюнити, какой язык программирования и какие инструменты предпочли коллеги и почему.

Фото из архива Moscow Software Testing Club
Фото из архива Moscow Software Testing Club

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

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

Оффлайн-комьюнити

Фото из архива Общества анонимных тестировщиков
Фото из архива Общества анонимных тестировщиков

Оффлайн-комьюнити проводят встречи ежегодно или раз в квартал. Обычно встреча представляет собой митап из 3-4 докладов. Подать доклад может любой участник комьюнити вне зависимости от степени известности в сети или опыта работы. Лишь бы тема была интересная и актуальная.

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

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

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

Большинство сообществ предпочитает сообщать о предстоящих ивентах в социальных сетях. Например, Московский клуб тестировщиков объявляет о ближайшей встрече в группе на Facebook.

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

Фото из архива Moscow Software Testing Club
Фото из архива Moscow Software Testing Club

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

Онлайн-сообщества

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

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

  • At.info – этот портал можно назвать Stackowerflow для тестировщиков. Принцип тот же: описываем возникшую проблему и ждем помощи от коллег. Есть своей Telegram-канал @atinfo, где публикуются новости индустрии тестирования и чат для общения @atinfo_chat
  • @qajuniors – cообщество для начинающих тестировщиков. Здесь подскажут, с чего начать Junior-тестировщику, который только пришел на проект; какие техники тест-дизайна использовать; как оформить баг, если разработчик жалуется, что из описания ничего непонятно.
  • @qa_ru – сообщество, посвященное любым вопросам, касающимся тестирования, начиная с различий между позитивными и негативными тест-кейсами и заканчивая оценкой стоимости тестирования на проекте.
  • @qa_automation – комьюнити автоматизаторов. Язык программирования не принципиален: здесь присутствуют и Java, и C# и Ruby-специалисты. Можно выложить ссылку на неработающий кусок кода и попросить коллег подсказать, где была допущена ошибка.
  • @selenide – место, где собираются поклонники одной из самых удобных библиотек для автотестов – Selenide. Во многих вопросах помогают создатель Selenide Андрей Солнцев и контрибьютор Алексей Виноградов.
  • @allure_ru – отчеты в Аллюре становятся уже не трендом, а требованием в автоматизации. Если возникли проблемы с подключением библиотеки Аллюра или не прикрепляется скриншот к упавшему тест-кейсу, можно смело писать в этот канал с просьбой о помощи. Создатель Аллюра – Артем Ерошенко наблюдает за ходом обсуждения и помогает в сложных ситуациях.
  • @aerokube – группа об инструменте для параллельного запуска автотестов – Selenoid. Отдельно хотелось бы поблагодарить самых отзывчивых разработчиках инструмента: Александр Андряшин, Иван Крутов и Кирилл Меркушев в 2 часа ночи разбирались в причине, по которой на моем сервере никак не стартовал контейнер с Chrome.

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

Правила поведения в комьюнити

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

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

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

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

22
Авг
2020

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

Кто такой QA-инженер?

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

Представим ситуацию. Владельцу интернет-магазина нужна программа для отправки чеков на email. Он обращается в стартап, который готов написать такую программу. Через неделю гордые разработчики проводят демонстрацию: покупаем товар, вводим email, получаем чек. Заказчик счастлив, все расходятся, довольные друг другом. Спустя неделю в компанию звонит разъяренный бизнесмен: софт не работает, верните деньги. Что пошло не так?

  1. Разработчик не учел, что email может быть длиннее 30 символов, и пользователь [email protected] остался без чека.
  2. [email protected]всемпива.рф – патриот и пользуется русскоязычным доменом, который программа не умеет обрабатывать.
  3. Кнопка «Получить чек» всегда активна. Несколько человек решили поле email не заполнять, а сразу ткнуть по кнопке. Вместо чека они увидели сообщение «Хьюстон, у нас проблемы».

Это исключения, которые никто не предвидел. Но клиент не обязан разбираться в технических деталях, а разработчики написали программу, которая выполняет поставленную задачу. Думать об условиях, при которых софт не будет работать – не их задача. Чтобы избежать подобных накладок, надо нанять тестировщика.

Чем полезен QA-инженер?

Ищет баги

Источник: <a href="https://xkcd.ru/376/" target="_blank" rel="noopener noreferrer nofollow">xkcd</a>
Источник: xkcd

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

Пишет код на Python, Java или JavaScript

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

Анализирует требования

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

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

Участвует в обсуждении задач

Источник: <a href="https://xkcd.ru/1303/" target="_blank" rel="noopener noreferrer nofollow">xkcd</a>
Источник: xkcd

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

  • что будет, если я введу email в 1000 символов?
  • что будет, если вместо картинки я загружу pdf?
  • что будет, если я нажму на эту красную кнопку?

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

Пишет тестовую документацию

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

Внедряет новые технологии

Мы всегда находимся в поиске технологий, которые делают работу быстрее, эффективнее, качественнее. Например, запуская автотесты на своем компьютере, я получу результат работы через 4 часа, а благодаря использованию сервера для удаленного тестирования, те же результаты будут готовы через 20 минут.

Общается с заказчиком

Источник: <a href="https://xkcd.ru/1287/" target="_blank" rel="noopener noreferrer nofollow">xkcd</a>
Источник: xkcd

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

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

Составляет метрики

Метрики – это что-то вроде сигнальных маячков для IT-команды. Если количество багов растет, это повод проверить квалификацию разработчика и посмотреть на сам модуль. Может быть, его нужно полностью переписать.

Какими навыками должен обладать тестировщик

Судя по порталу HeadHunter, практически в каждой вакансии требуется:

  • знать теорию тестирования;
  • уметь использовать техники тест-дизайна;
  • работать с базами данных;
  • иметь навыки в программировании;
  • знать фреймворки для автотестов;
  • разбираться в видах архитектуры приложений;
  • уметь настраивать и поддерживать рабочую среду (развернуть базу данных, поднять сервер);
  • уметь работать по Scrum или Kanban;
  • настраивать системы непрерывной интеграции.

Желательно, чтобы у кандидата были на руках сертификаты о прохождении специализированных курсов или сдаче международных экзаменов (ISTQB).

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

Набор скилов для начинающего специалиста будет существенно отличаться от требований, предъявляемых к ведущему тестировщику, как и зарплатная вилка. Junior-специалисту могут предложить заработную плату в 50-80 тыс. руб., Middle претендует на 120-150 тыс., зарплата Senior начинается от 180 тыс.

С чего начать путь QA-инженера

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

Если интерес к тестированию не угас, пора идти на сайт software-testing.ru. Здесь можно почитать о модных технологиях, пообщаться с коллегами, узнать о предстоящих конференциях.

На YouTube есть множество каналов, посвященных тестированию. Большая часть из них – для специалистов с опытом работы от 1 года. Для начинающих подойдут:

  • Технострим Mail.Ru Group – лекции по тестированию для начинающих. Помогут узнать не только о теории тестирования, но и багтрекинговых системах. А также познакомиться с инструментами, которые помогают тестировщикам.
  • ITDVN – здесь можно изучить особенности тестирования клиент-серверной архитектуры. Узнать, как и чем тестировать API.

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

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

***

Если вы хотите вступить в ряды бойцов за качество, рекомендуем обратить внимание на Факультет тестирования ПО от GeekBrains. Преподаватели факультета расскажут, как работать с требованиями, помогут освоить техники тест-дизайна и научат писать автотесты на Java, тестировать мобильные и веб-приложения. В результате вы приобретете компетенции, необходимые для работы в крупной IT-компании.

22
Авг
2020

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

Кто такой QA-инженер?

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

Представим ситуацию. Владельцу интернет-магазина нужна программа для отправки чеков на email. Он обращается в стартап, который готов написать такую программу. Через неделю гордые разработчики проводят демонстрацию: покупаем товар, вводим email, получаем чек. Заказчик счастлив, все расходятся, довольные друг другом. Спустя неделю в компанию звонит разъяренный бизнесмен: софт не работает, верните деньги. Что пошло не так?

  1. Разработчик не учел, что email может быть длиннее 30 символов, и пользователь [email protected] остался без чека.
  2. [email protected]всемпива.рф – патриот и пользуется русскоязычным доменом, который программа не умеет обрабатывать.
  3. Кнопка «Получить чек» всегда активна. Несколько человек решили поле email не заполнять, а сразу ткнуть по кнопке. Вместо чека они увидели сообщение «Хьюстон, у нас проблемы».

Это исключения, которые никто не предвидел. Но клиент не обязан разбираться в технических деталях, а разработчики написали программу, которая выполняет поставленную задачу. Думать об условиях, при которых софт не будет работать – не их задача. Чтобы избежать подобных накладок, надо нанять тестировщика.

Чем полезен QA-инженер?

Ищет баги

Источник: <a href="https://xkcd.ru/376/" target="_blank" rel="noopener noreferrer nofollow">xkcd</a>
Источник: xkcd

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

Пишет код на Python, Java или JavaScript

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

Анализирует требования

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

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

Участвует в обсуждении задач

Источник: <a href="https://xkcd.ru/1303/" target="_blank" rel="noopener noreferrer nofollow">xkcd</a>
Источник: xkcd

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

  • что будет, если я введу email в 1000 символов?
  • что будет, если вместо картинки я загружу pdf?
  • что будет, если я нажму на эту красную кнопку?

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

Пишет тестовую документацию

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

Внедряет новые технологии

Мы всегда находимся в поиске технологий, которые делают работу быстрее, эффективнее, качественнее. Например, запуская автотесты на своем компьютере, я получу результат работы через 4 часа, а благодаря использованию сервера для удаленного тестирования, те же результаты будут готовы через 20 минут.

Общается с заказчиком

Источник: <a href="https://xkcd.ru/1287/" target="_blank" rel="noopener noreferrer nofollow">xkcd</a>
Источник: xkcd

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

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

Составляет метрики

Метрики – это что-то вроде сигнальных маячков для IT-команды. Если количество багов растет, это повод проверить квалификацию разработчика и посмотреть на сам модуль. Может быть, его нужно полностью переписать.

Какими навыками должен обладать тестировщик

Судя по порталу HeadHunter, практически в каждой вакансии требуется:

  • знать теорию тестирования;
  • уметь использовать техники тест-дизайна;
  • работать с базами данных;
  • иметь навыки в программировании;
  • знать фреймворки для автотестов;
  • разбираться в видах архитектуры приложений;
  • уметь настраивать и поддерживать рабочую среду (развернуть базу данных, поднять сервер);
  • уметь работать по Scrum или Kanban;
  • настраивать системы непрерывной интеграции.

Желательно, чтобы у кандидата были на руках сертификаты о прохождении специализированных курсов или сдаче международных экзаменов (ISTQB).

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

Набор скилов для начинающего специалиста будет существенно отличаться от требований, предъявляемых к ведущему тестировщику, как и зарплатная вилка. Junior-специалисту могут предложить заработную плату в 50-80 тыс. руб., Middle претендует на 120-150 тыс., зарплата Senior начинается от 180 тыс.

С чего начать путь QA-инженера

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

Если интерес к тестированию не угас, пора идти на сайт software-testing.ru. Здесь можно почитать о модных технологиях, пообщаться с коллегами, узнать о предстоящих конференциях.

На YouTube есть множество каналов, посвященных тестированию. Большая часть из них – для специалистов с опытом работы от 1 года. Для начинающих подойдут:

  • Технострим Mail.Ru Group – лекции по тестированию для начинающих. Помогут узнать не только о теории тестирования, но и багтрекинговых системах. А также познакомиться с инструментами, которые помогают тестировщикам.
  • ITDVN – здесь можно изучить особенности тестирования клиент-серверной архитектуры. Узнать, как и чем тестировать API.

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

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

***

Если вы хотите вступить в ряды бойцов за качество, рекомендуем обратить внимание на Факультет тестирования ПО от GeekBrains. Преподаватели факультета расскажут, как работать с требованиями, помогут освоить техники тест-дизайна и научат писать автотесты на Java, тестировать мобильные и веб-приложения. В результате вы приобретете компетенции, необходимые для работы в крупной IT-компании.

05
Авг
2020

Организация покрытия проекта тестами

В давнишем проекте еще на symfony 3 покрытие тестами нулевое. Сейчас это очевидно приводит к большому количеству ошибок и портит жизнь.
Как можно достаточно быстро покрыть большой проект тестами и что бы вы делали в такой ситуации?
Возможн…