Представьте, что вы создаете приложение вроде WhatsApp и выпускаете его на рынок. Однако, когда пользователи загружают и начинают использовать программное обеспечение, они не могут отправлять или получать сообщения. Это сразу сделает софт непопулярным, и он потеряет пользователей. Этого сценария можно было бы избежать, если бы было проведено тестирование программного обеспечения.
Каждое программное обеспечение, известное вам сегодня, прошло процесс тестирования. Прежде чем приложение будет отправлено конечным пользователям, заинтересованные стороны должны убедиться, что оно готово к рынку и не содержит большого количества ошибок. Существует два основных способа тестирования программного обеспечения: вручную или автоматически. Как правило, ручное тестирование должно быть выполнено до того, как будет выполнена какая-либо автоматизация. В этой статье мы поговорим о ручном тестировании и различных типах этого критически необходимого вида тестирования.
Что такое ручное тестирование?
Как следует из названия, ручное тестирование — это тестирование программного обеспечения, которое выполняется человеком вручную. Никакие инструменты для автоматизации не используются, и эксперты должны сами найти ошибки. Это отличается от автоматизированного тестирования, которое выполняется с помощью скриптов и программ.
Теперь давайте обсудим процесс, который проходят эксперты при тестировании программного обеспечения и приложений.
Процесс тестирования программного обеспечения
Несмотря на то, что существуют различные типы ручного тестирования, есть и общий процесс, которому необходимо следовать, чтобы провести хороший тест.
Анализ требований. Первым этапом процесса ручного тестирования является анализ требований клиентов к приложению. Здесь тестировщик пытается найти пробелы в требованиях. Ему необходимо убедиться, что все требования клиентов включены в приложение. Например, клиент просит компанию создать веб-сайт, на котором пользователи могут добавлять и удалять товары из корзины. QA-специалист читает требования и сообщает разработчикам, реализована эта функциональность или нет.
Планирование тестирования. Как только вы поймете требования, следующим шагом будет планирование того, как должны выполняться тесты. На этом этапе тестер пишет план, используя информацию, полученную на предыдущем этапе. Он пишет план, основанный на типе ручного тестирования, которое он хочет выполнить. Основная цель состоит в том, чтобы определить набор требований и организовать структуру тестирования.
Создание тестового набора. На этом этапе тестировщик должен придумать сценарии и создать тестовые наборы для требований.
Выполнение теста. Когда у тестировщика есть требования, он может начать выполнять тесты, чтобы проверить наличие ошибок в функциях. Например, вам нужно вручную открыть веб-сайт и попытаться добавить и удалить товары из корзины. Если вы обнаружите ошибку, о сценарии сообщается команде разработчиков, которая исправит ее и отправит на повторное тестирование. Этот процесс выполняется для всех функций, пока все они не пройдут тестирование.
Различные типы ручного тестирования
Существует множество различных методов и приемов, с помощью которых можно проводить ручное тестирование. Ниже приведены некоторые из наиболее распространенных.
Тестирование белого ящика (White box)
При тестировании «белого ящика» тестировщик обеспокоен тем, что происходит в коде, написанном для этой конкретной функциональности. Здесь важно понимать, как пишется код и что он делает. Основная цель этого метода тестирования — проверить все ответвления решений, операторы и циклы в коде.
Тестирование черного ящика (Black box)
Обычно термин «черный ящик» используется, когда нет сведений о внутренней работе системы, и вы просто проверяете вывод на основе ввода. Как тестер, вы вводите данные и проверяете результат. Если результат соответствует ожидаемому, то тест пройден. При тестировании методом «черного ящика» QA ничего не знает о конкретной тестируемой реализации или функции.
Например, предположим, что вы тестируете функцию «Создать учетную запись» для веб-сайта. Ваша цель — убедиться, что при нажатии кнопки «Создать учетную запись» пользователи перенаправляются на страницу, где они могут создать учетную запись. Если вы не знаете реализаций на стороне сервера или кода, который был написан для выполнения этого действия, то это называется тестированием методом черного ящика.
Тестирование серого ящика
Тестирование «серого ящика» — комбинация тестирования «белого ящика» и «черного ящика». Это стратегия отладки программного обеспечения, при которой тестировщик имеет ограниченные знания о внутренних деталях или реализациях программы. Основная цель этой методики тестирования — найти ошибки из-за неправильной структуры кода. В процессе серого тестирования обнаруживаются контекстно-зависимые ошибки, связанные с приложением. Здесь тестируются все слои системы. Это очень полезно при тестировании на проникновение и интеграцию.
Например, если тестировщики проверяют веб-сайты на наличие ссылок и обнаруживают плохие ссылки, они могут немедленно внести изменения в HTML-код и проверить результаты в режиме реального времени.
При тестировании серого ящика эксперту не обязательно иметь доступ к исходному коду. Вместо этого тест создается с использованием знаний об архитектуре, алгоритмах, внутренних состояниях и другом поведении программы. Основные методы, используемые в тестировании серого ящика, включают матричное, регрессионное, ортогональное тестирование и тестирование шаблонов.
Тестирование дыма
Дымовое тестирование, smoke testing, также известное как приемочное тестирование сборки или проверочное тестирование, представляет собой тип метода анализа программного обеспечения, который обеспечивает работу всех жизненно важных функций приложения, не вдаваясь в подробности. Термин «тестирование дыма» происходит от тестирования оборудования, когда устройство проходит тест, если оно не дымит и не загорается при первом включении.
Смоук-тестирование — это предварительная проверка приложения после сборки и перед его выпуском на рынок. Эксперт находит наиболее важные компоненты, необходимые для работы программного обеспечения, и проверяет их на наличие ошибок. Этот тест выполняется каждый раз, когда поставляется новая сборка программного обеспечения. Если программное обеспечение проходит, оно переходит к более строгим тестам. Если нет, то обнаружена серьезная ошибка, и никакие другие тесты не выполняются. Вместо этого тестировщики просят разработчиков прислать еще одну сборку.
Кроссбраузерное тестирование
Многие люди сталкивались с проблемами, когда приложение не работает в одном браузере, но нормально работает в другом. Такая ситуация часто возникает, если программное обеспечение не тестировалось на совместимость с браузером. Как следует из названия, кроссбраузерное тестирование означает тестирование веб-сайтов или приложений в нескольких браузерах.
Приложение, которое будет выпущено на рынок, должно быть протестировано в нескольких браузерах, как это определено клиентом в его требованиях. Эти тесты также выполняются для поиска конкретных проблем, связанных с браузером, и их устранения.
Кроссбраузерное тестирование концентрируется на базовой функциональности, гарантируя бесперебойную работу диалоговых окон, форм и файлов cookie во всех браузерах. Этот тип тестирования также проверяет, что внешний вид веб-сайта одинаков для всех браузеров.
Приемочное тестирование
Приемочное тестирование проводится для того, чтобы убедиться, что функциональность программного обеспечения соответствует потребностям и требованиям заказчика. Часто это последний этап тестирования перед отправкой приложения конечному пользователю.
Бета-тестирование
Это тип пользовательского приемочного тестирования, при котором приложение отправляется группе конечных пользователей, которые используют его в реальных условиях и оставляют отзывы. Бета-тестирование не имеет стандартов, поэтому тестировщики просто используют программное обеспечение, как и любой другой пользователь.
Перед бета-тестированием разработчикам необходимо убедиться, что программное обеспечение стабильно и обладает всеми функциями. Также тестировщики должны быть частью аудитории, которая будет пользоваться приложением. Этот тип тестирования также является подтипом тестирования методом черного ящика, поскольку тестировщики не имеют ни малейшего представления о реализации и исходном коде. Они просто проверяют, даст ли ввод желаемый результат.
Исследовательское тестирование
Это тип тестирования, при котором тесты не документируются заранее; тестировщики проверяют приложение в режиме реального времени. Они могут написать некоторые идеи о том, что нужно проверить заранее. Исследовательское тестирование обычно используется в моделях разработки Agile и в основном связано с открытием, исследованием и обучением. Тестирование этого вида случайное и неструктурированное и выявляет некоторые ошибки, которые структурированные тесты могут пропустить.
Отрицательное (негативное) тестирование
Отрицательное тестирование — это тип тестирования, которое выполняется в системе путем ввода неверных данных. Основная цель отрицательного тестирования — предотвратить сбой приложения или выполнение непредвиденных действий при вставке неправильного значения. Эти тесты значительно повышают стабильность программного обеспечения.
Выполнение только положительного тестирования гарантирует, что система работает должным образом в нормальных условиях. Но вы узнаете, как система ведет себя в непредвиденных ситуациях, когда вы выполняете отрицательные тесты.
Например, в форме веб-сайта, в которой есть поле для номера телефона, положительные тесты будут проверять, принимает ли поле числа. Однако при отрицательном тестировании эксперт должен проверить, будет ли поле принимать только числа. Таким образом, они будут вводить другие символы, чтобы увидеть, вернет ли форма сообщение об ошибке. Если да, то тест пройден.
Юзабилити-тестирование
Пользовательский опыт (UX) и дизайн пользовательского интерфейса (UI) являются одними из наиболее важных факторов, которые следует учитывать при создании программного обеспечения. Они имеют решающее значение для успеха и принятия конечными пользователями. Юзабилити-тестирование гарантирует, что приложения удобны и просты в использовании. Здесь тестировщики должны наблюдать за другими пользователями, когда они пытаются перемещаться по программному обеспечению. Тесты могут быть проведены с различными дизайнами, чтобы увидеть, какие из них лучше и нравятся пользователям. Юзабилити-тестирование проводится неоднократно с начала разработки до выпуска приложения.
Ручное тестирование требует большого терпения, творческого мышления и концентрации. Оно обеспечивает «человеческий подход» к тестированию программного обеспечения, которое, по мнению многих людей, должно быть автоматизировано. Однако ручное тестирование по-прежнему в значительной степени необходимо, и его необходимо выполнить перед любым автоматическим тестированием. Это связано с тем, что автоматизированное тестирование не обладает способностью предсказывать или мыслить. Он также не может представить все различные сценарии, которые могут возникнуть при использовании программного обеспечения. Вот почему ручное тестирование по-прежнему необходимо — и останется таковым в обозримом будущем.