LeadStartup
Получите бесплатно — все материалы с наших курсов
Тренинги, Курсы, Обучение — Agile, Scrum, OKR
Тренинги, Курсы, Обучение — Agile, Scrum, OKR
Тренинги, Курсы, Обучение — Agile, Scrum, OKR
Виктория Щепина
Виктория Щепина
Продакт–менеджер

Сравните преимущества и недостатки ручного и автоматизированного тестирования программного обеспечения.

Ручное и автоматизированное тестирование позволяют обнаруживать и исправлять ошибки в программном обеспечении

Что такое ручное тестирование?

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

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

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

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

Основные этапы ручного тестирования.

Ознакомление с документацией и требованиями.

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

Планирование тестирования.

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

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

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

Разработка тестовых сценариев.

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

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

Проведение тестирования.

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

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

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

Плюсы и минусы ручного тестирования

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

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

Преимущества.

Обратная связь от тестировщиков и пользователей.

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

Отзыв по UI.

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

Ручное тестирование позволяет проверить эти аспекты. Причем, как мы говорили ранее, проверку может осуществлять не только тестировщик, но и обычный пользователь на стадии alpha и beta–тестирования. Обычные люди не владеют инструментами автоматизации, поэтому могут использовать продукт только естественным образом, по наитию. Они могут дать субъективную оценку того, нравится ли им дизайн интерфейса, как они его воспринимают, все ли им понятно и удобно и т.д.

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

Стоимость.

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

Гибкость.

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

Исследовательское тестирование.

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

Недостатки.

Человеческий фактор.

Тут играет роль большое количество различных аспектов. Тестировщик может быть недостаточно опытный, поэтому не учел каких–то важных моментов, что привело к пропуску ошибки. Из–за большого объема работы «замылился» глаз. Эмоциональное напряжение тоже может сказаться на внимательности тестировщика. Банально человек не выспался и допустил ошибку и многое другое.

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

Трудозатраты.

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

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

Невозможно провести нагрузочное тестирование.

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