Что такое тестирование и кто такие тестировщики
Тестировать программное обеспечение (ПО) — значит проверять, работает ли программа корректно и выполняет ли она нужные функции.
Главным образом проверяется, что:
- Программа работает без сбоев, ошибок, вылетов.
- Программа выполняет все функции, которые заявлены в ее описании — обычно это техническое задание и спецификации.
За конкретное тестирование отвечают тестировщики. За весь процесс разработки продукта и его тестирования отвечают специалисты по контролю качества, QA-инженеры. QA означает Quality Assurance — обеспечение качества.
Тестировщик подключается на финальном этапе разработки, когда продукт уже готов. Он ищет и фиксирует ошибки в готовом продукте. Его обязанности ограничены непосредственным тестированием.
QA-инженер участвует во всех этапах разработки. Он начинает с создания документации и требований к продукту. Его круг обязанностей шире и включает разработку стратегий тестирования. QA-инженер старается предотвратить появление ошибок на всех этапах разработки.
Что нужно знать и уметь, чтобы стать тестировщиком
Есть теоретические знания и практические навыки, которые нужны специалисту по контролю качества.
Категория | Знания и навыки |
Технические навыки | Знание SQL — языка для работы с базами данных |
Знание основ тестирования и методологии разработки ПО | |
Умение работать с инструментами тест-менеджмента и баг-трекинга | |
Базовые знания языков программирования, например Python, Java | |
Аналитические способности | Способность к тест-дизайну и проектированию тестов |
Внимание к деталям и критическое мышление | |
Личностные качества | Командная работа и умение взаимодействовать с другими участниками проекта |
Дисциплинированность и планирование | |
Творческое мышление для поиска нестандартных решений | |
Практические навыки | Опыт локализации и документирования дефектов |
Умение задавать уточняющие вопросы разработчикам и проактивность в работе |
Это развернутый перечень навыков. Не всем тестировщикам нужно знание SQL или тем более Python. Зато всем нужны навыки планирования и работы с баг-трекинговыми системами.
Многие тестировщики занимаются разными формами ручного тестирования. Те, кто хочет повысить квалификацию, изучают Python или другие языки программирования и становятся специалистами по автоматизации тестирования.
Всему нужному научат эксперты Skypro на курсе «Инженер по тестированию». Вы узнаете, как проводить ручное тестирование, познакомитесь с несколькими баг-трекинговыми системами, попробуете себя в разных задачах, узнаете принципы работы с Git и научитесь основам программирования для автоматизации тестирования.
Ручное тестирование vs автоматизированное тестирование
Ручное тестирование проводят люди без помощи программ. Для такого вида тестирования нужно много времени, и специалисты могут сделать ошибки. Тем не менее оно полезно, когда нужно:
- Проверить удобство приложения. Только человек может сделать это.
- Быстро оценить отдельные новые функции или функции, которые были изменены. Автоматизация требует больше времени на подготовку и экономит время, только когда речь идет о большом проекте, где надо проверить множество однотипных вещей.
- Проверить небольшой проект. Автоматизация не окупается на маленьких проектах.
Автоматизированное тестирование использует программы для выполнения тестов по заранее написанным сценариям. Такие тесты проходят быстро, но готовить их нужно долго. Чем больше проект и чем больше ошибок в нём нужно проверить, тем выгоднее использовать автоматизированное тестирование.
- Программы выполняют тесты быстрее, чем люди.
- Запускать автотесты можно в любое время, даже ночью.
- Программы могут перебрать больше значений для подстановки и имитировать большое количество пользователей.
Чтобы писать автотесты, используют инструменты тестирования — фреймворки, которые работают на разных языках программирования. Многими из них пользуются сами разработчики.
Из инструментов, с которыми работают инженеры по тестированию, один из самых известных — Selenium. Это фреймворк, который поддерживает разные языки программирования: Java, C# и Python. Такой инструмент может писать тесты, которые имитируют действия пользователя в браузере.
Что такое ручное тестирование
При ручном тестировании QA-специалисты имитируют действия пользователей, чтобы проверить, как ведет себя программа.
Например, разработчик написал для клиента одностраничный сайт с формой заявки, в которой нужно оставить email-адрес. В этом случае тестировщик должен:
- Открыть сайт по ссылке.
- Убедиться, что работает прокрутка страницы до формы заявки.
- Ввести в поле значение. Например, настоящий работающий email-адрес.
- Убедиться, что заявка принята, а пользователь получил страницу, которая уведомляет его, что заявка была принята.
Тестировщик может найти ошибки. Например:
- не открывается сайт;
- не работает прокрутка страницы;
- не получается ввести значение в поле;
- не отправляется введенное значение;
- значение отправляется, но пользователю не показывается уведомление.
Кроме того, тестировщик ищет значимое отсутствие ошибок. Например, он пробует ввести в поле для email-адреса значение, которое даже не напоминает почтовый адрес: имя, номер телефона, просто набор символов. Если в этом случае не выводится предупреждение, то тестировщик записывает это в результаты теста.
Шаги, которые описали выше, и результаты их выполнения — это тест-кейс.
Как писать тест-кейсы
Тест-кейс — это документ с пошаговыми инструкциями для проверки работы программы.
Такой документ организовывает сам процесс тестирования: вместо того чтобы наугад выполнять какие-то действия, которые может совершить пользователь программы, у тестировщика перед глазами список действий для проверки и вся необходимая информация.
Обычно тест-кейс содержит:
- предварительные условия — например, заходить из российского сегмента интернета;
- входные данные — в данном случае это была ссылка;
- действия, которые нужно выполнить;
- ожидаемый результат;
- фактический результат.
Тест-кейсы можно разделить на несколько типов:
- позитивные тест-кейсы — проверяют, как система работает при правильных данных;
- негативные тест-кейсы — проверяют, как система реагирует на неправильные или неожиданные данные;
- деструктивные тест-кейсы — ищут ошибки при неправильном использовании системы.
Цель тест-кейса — убедиться, что программа работает правильно и соответствует требованиям. Их нужно отличать от юзкейсов.
Что такое юзкейс
Юзкейс (Use Case) — это описание того, как пользователь взаимодействует с системой для достижения цели. Юзкейс показывает, как пользователь будет использовать систему, и включает сценарии с последовательностью действий и реакцией системы.
Основные элементы юзкейса:
- пользователь, или актор;
- цель;
- сценарий действий;
- реакция системы.
Тест-кейсы и юзкейсы похожи. Тест-кейсы даже могут составлять на основе юзкейсов. Но юзкейсы пишут еще до этапа разработки приложения — на этапе его проектирования. Они описывают систему с позиции взаимодействия с ней пользователя, а не то, что нужно сделать в уже существующей системе, чтобы проверить ее работу.
Виды ручного тестирования
Есть разные виды ручного тестирования, у каждого из которых свои методы работы.
Тестирование черного ящика (Black box)
Тестировщик проверяет функциональность программы так, как если бы он сам был пользователем. При этом он не знает внутреннего устройства приложения и может ориентироваться только на описание того, что приложение должно делать. Иными словами, приложение для него — черный ящик, о содержимом которого он ничего не знает.
Это простой способ найти несоответствия между тем, что приложение должно делать, и тем, что оно делает на самом деле.
Например, специалист тестирует форму заявки, вводит разные email-адреса в поле и проверяет, правильно ли система принимает или отклоняет их. Он не знает, как код работает внутри, и только проверяет, соответствует ли результат ожиданиям.
Тестирование белого ящика (White box)
Тестировщики анализируют внутреннюю структуру и логику программы. При этом у них есть доступ к исходному коду, и они могут искать скрытые ошибки и уязвимости.
Этот метод требует знаний языков программирования и может занимать много времени.
Например, тестировщик проверяет, как работает код, который обрабатывает введенный в форму заявки email-адрес. Он может искать ошибки в валидации адреса и смотреть, правильно ли сохраняются данные.
Тестирование серого ящика (Gray box)
Этот метод объединяет принципы тестирования белого и черного ящика. Какие-то элементы внутренней системы тестировщику известны, какие-то — нет. Какие-то проверяются с позиции пользователя, а в каких-то сразу ищется внутренняя причина.
Тестирование дыма
Это предварительное тестирование, которое проверяет базовую функциональность приложения. Оно помогает определить, готово ли приложение к более глубокому тестированию.
Для формы заявки специалист проводит самую простую проверку: отправляется ли заявка, если в поле ввести корректный email-адрес. Это базовый сценарий, потому что корректно введенные email-адреса тестировщики больше всего не хотят потерять при сборе данных.
Кросс-браузерное тестирование
Тестировщик проверяет, как форма заявки работает в разных браузерах и на разных устройствах. Например, вводит email-адрес в поле заявки в Chrome, Firefox, Safari и на мобильных устройствах.
Приемочное тестирование
Этот тест проверяет, соответствует ли система требованиям заказчика. Его могут выполнять пользователи и заказчики, чтобы убедиться, что продукт готов к запуску.
Бета-тестирование
В этом виде тестирования приложение открывают ограниченной группе пользователей. Пользователи получают ранний доступ, а взамен дают обратную связь: рассказывают об ошибках и делятся, что в приложении не очень удобно и что следует исправить.
Можно взять ссылку на одностраничный лендинг с формой заявки и отправить его тридцати людям, а потом собрать статистику — сколько пользователей удачно отправили email-адрес, а кто не смог этого сделать и почему.
Отрицательное, или негативное, тестирование
Здесь тестировщик проверяет ПО на ошибки при неправильных или неожиданных входных данных. Например, вводит неправильные email-адреса — test@ или test.com.
Система в идеале должна не давать отправить заявку с неправильным email-адресом, ведь она будет только засорять базу данных. Да и сам пользователь может не понять, что это он неправильно ввел адрес, и будет напрасно ожидать, пока с ним свяжутся.
Исследовательское тестирование
Это единственный вид тестирования, который проводят без предварительной подготовки тест-кейсов. Тестировщики просто используют приложение по прямому назначению, самостоятельно применяют распространенные приемы тестирования в процессе и записывают результаты.
Юзабилити-тестирование
Это тестирование, которое оценивает удобство приложения. Тестировщик сам или с фокус-группой пользователей изучает интерфейс приложения и смотрит, насколько удобно оно сделано.
Например, смотрит, насколько легко пользователям найти форму, ввести данные и отправить заявку, подсвечиваются ли ошибки, уведомляют ли пользователя об успешной отправке или о неуспешной попытке, всё ли понятно в интерфейсе.
Эти виды ручного тестирования подробно рассматривают на курсе «Инженер по тестированию» в Skypro. Если хотите стать тестировщиком, поступайте в онлайн-университет Skypro.
Проблемы ручного тестирования и их решения
Ручное тестирование имеет целый ряд потенциальных проблем, но у всех есть решение.
Проблема | Решение |
Тестировщики пропускают ошибки из-за нехватки опыта, усталости, невнимательности | Развивать навыки тест-дизайна и повышать квалификацию |
Ручное тестирование требует много времени при увеличении объема проекта | Комбинировать ручное и автоматизированное тестирование |
Сложно проводить регрессионное тестирование при расширении проекта | Автоматизировать регрессионные тесты и вести подробную документацию |
Разработчики простаивают в ожидании результатов тестирования | Проводить раннее и частое тестирование на всех этапах разработки |
Трудно полностью протестировать все аспекты приложения | Фокусироваться на тестировании пользовательского интерфейса и опыта |
Возникают проблемы в общении между тестировщиками и разработчиками | Улучшать коммуникацию между командами разработки и тестирования |
Сложно принять решение о завершении тестирования | Использовать инструменты для управления и отслеживания тестирования |
Трудно оценить удобство использования и интуитивность интерфейса | Привлекать реальных пользователей для бета-тестирования |
Не хватает ресурсов для полноценного тестирования | Правильно распределять ресурсы и приоритизировать задачи тестирования |
Главное о ручном тестировании
- Тестирование ПО — это проверка того, как работает программа, нет ли ошибок, вылетов, удобна ли она в использовании.
- Поиском ошибок и проверкой функциональности программы занимаются тестировщики. QA-инженеры отвечают за качество продукта на всех стадиях его создания.
- Для ручного тестирования нужно немного навыков — умение работать с баг-трекинговыми системами, навык создания тест-кейсов, аналитические способности. Тестировщикам и QA-инженерам еще может понадобиться знание SQL и Python.
- Ручное тестирование имитирует действия пользователей. Тестировщики проверяют программу и выполняют реальные сценарии, чтобы найти ошибки и проблемы. Сценарии описаны в тест-кейсах.
- Тест-кейс — это пошаговый план проверки работы программы. В него входят условия выполнения, список действий, которые нужно выполнить, и ожидаемый результат. В те же тест-кейсы тестировщики записывают фактический результат — итоги проверки.
- Юзкейс описывает, как пользователь взаимодействует с программой для достижения цели. Его пишут еще на этапе проектирования приложения. Он не описывает ту программу, которую написали де-факто, он описывает то, что планировалось получить.
- Ручное тестирование бывает разным: тестирование черного, белого и серого ящика, тестирование дыма и кросс-браузерное тестирование, бета-тестирование, приемочное и исследовательское тестирование, юзабилити-тестирование. Разные виды тестирования раскрывают разные потенциальные проблемы и уязвимости приложения.
- Ручное тестирование имеет плюсы и минусы. Основной минус — тестировщики подвержены человеческому фактору: они устают, ошибаются, им может не хватать квалификации. Некоторые проблемы решаются повышением квалификации специалиста, другие — автоматизацией тестирования.
Добавить комментарий