Моя причина для автоматизации тестирования заключается в том, что это означает, что я могу получить последовательную, повторяемую и своевременную обратную связь, что то, что я только что сделал, является правильным.
Ручное тестирование также имеет свое место, но трудно быть уверенным, что оно полностью покрывает все и, конечно же, не так быстро, как автоматическое тестирование.
Например, часть одного из моих проектов - это алгоритм оптимизации, который использует некоторые эвристики для поиска пространства поиска в поисках хороших решений. В настоящее время существует приблизительно 40 различных эвристик, которые могут использоваться индивидуально или в различных комбинациях, и каждая встреча с клиентом, по-видимому, предполагает добавление новой эвристики или расширение существующей. Я должен быть абсолютно уверен, что ни одна из этих работ для одного клиента не приведет к регрессу для другого клиента, который включает в себя запуск алгоритма в нескольких сотнях различных случаев и проверку того, что результат (не хуже) был раньше.
Было бы нецелесообразно просить ручной тестер для запуска всех этих тестовых примеров путем загрузки графического интерфейса пользователя, открытия входного файла и нажатия кнопки «запустить», по крайней мере, недостаточно часто, чтобы быть полезным механизмом обратной связи. Тесты, как правило, проводятся десятки раз в день для коротких тестов и каждую ночь для более тяжелых испытаний. С ручным процессом полная обратная связь, вероятно, займет пару дней, и исправление ошибки, появившейся пару дней назад, намного сложнее, чем исправление ошибки, появившейся за последние полчаса.
Также было бы очень сложно обеспечить, чтобы любые проверки «на глаз» были такими же хорошими, как и раньше, поэтому проверки результатов должны быть автоматизированы. Но если вы собираетесь автоматизировать это, вы можете автоматизировать все это. Это не сложно.
Еще одно преимущество автоматизированного тестирования, связанного с опытом работы с проектом, у которого его нет, заключается в том, что если у вас есть ручные тесты, которые не задокументированы, то когда проект находится в состоянии покоя (по-видимому, в режиме обслуживания) в течение года, а затем перезапускает активное развитие, никто не может вспомнить, как провести тестирование или какие ожидаемые результаты были, и вы в конечном итоге представляете целую кучу глупых регрессий, которые требуют времени, чтобы приколоться. С другой стороны, если вы собираетесь достаточно подробно документировать свои тесты, чтобы их можно было подобрать за год подряд, вы, по сути, уже автоматизировали их: вам просто нужно сделать исполняемую документацию.
В моем опыте, вы должны начать тестирование примерно 2 часа до точки, в которой вы вдруг понимаете, что вы должны были начать тестирование 2 часа назад :)
Звучит так, будто вы пытаетесь создать платформу тестирования, которая автоматизирует то, что делают ваши тестеры QA (тестирование GUI). У вас уже есть тестирование более низкого уровня (единица/интеграция)? Очень важно иметь их перед автоматизацией графического интерфейса. –
Спасибо всем за ваши ответы. Они были очень полезны. Прямо сейчас я смотрю на Селен и Руби. Уверен, вы увидите, как скоро я напишу больше вопросов. – onesith
Посмотрев на мой последний вопрос, я прищурился. Это должно быть «Когда», а не почему. еще раз спасибо. – onesith