Мифы и факты о тестировании программного обеспечения
Перевод: Екатерина Воеводина
Важность тестирования программного обеспечения давно известна. После множества обсуждений и оценок стало ясно, что ошибки происходят в целом из-за того, что люди склонны игнорировать возможности оптимизации и вероятные ошибки.
Функционирование программного обеспечения, которое не было достаточно строго протестировано, может спровоцировать серьезные ошибки, которые приводят пользователей к различным затруднительным ситуациям. В таком случае единственный разумный выход – производить анализ и прогнозировать ошибки, а также своевременно их исправлять во избежание любых неудобных ситуаций в будущем и для обеспечения стабильности и надежности системы.
Как и в любой другой области, тестирование программного обеспечения окружает множество мифов, но все же факты остаются фактами.
Тестирование увеличивает стоимость разработки
Как говорится: «Если вы не хотите платить за тестирование на стадии разработки, вам придется заплатить за техническую поддержку и исправление ошибок, когда продукт будет выпущен на рынок». Тестирование на раннем этапе помогает сократить расходы на обслуживание программного обеспечения.
Тестирование – это пустая трата времени
Само по себе тестирование осуществляется параллельно с разработкой, поэтому нет причин считать, что именно тестирование занимает много времени. Правда состоит в том, что исправление ошибок, выявленных на стадии тестирования, требует времени и усилий.
Тестирование осуществляется только после завершения стадии разработки
Конечно, тестирование зависит от написанного кода. Но все же необходимо выполнить проверку требований к программному обеспечению и создать тестовые артефакты, а обе эти процедуры могут быть выполнены до полной готовности программного продукта.
Некоторые особенно распространенные мифы, окружающие сферу программного обеспечения, поражают и шокируют нас!
Провести исчерпывающее тестирование возможно
В действительности невозможно сказать, что тестирование стопроцентное и что все багги легко предсказать и исправить. Факт заключается в том, что большинство проблем действительно можно предсказать на этапе тестирования, но исчерпывающее тестирование вряд ли возможно. В системе могут существовать такие условия и сценарии, которые невозможны при тестировании, просто потому что система никогда по ним не работает.
Цель тестирования – на 100% защитить ПО от багов
Цель тестирования – найти и выявить максимально возможное количество багов. Невозможно даже найти их все, не говоря уже о том, чтобы исправить. Большое заблуждение верить, что даже современные автоматизированные инструменты тестирования могут гарантировать 100-процентную защиту ПО от багов.
Упущенная ошибка – вина тестировщика
Оценка всех возможных недоработок со стороны качества продукта – это совместная ответственность дизайнеров, которые должны дать исчерпывающее описание сценариев системы; разработчиков, которые должны придерживаться установленных правил и стандартов; тестировщиков, которые должны проанализировать все эти данные в перспективе и проверить всевозможные варианты работы системы и указать, что необходимо исправить.
Вся ответственность за качество ПО лежит только на тестировщике
И снова, это одно из самых распространенных заблуждений, связанных с тестированием. Попытка найти виноватого, когда ситуация выходит из-под контроля, является крайне непрофессиональной и не поможет исправить ситуацию. Вся команда несет ответственность за качество продукта. Команды тестирования программного обеспечения обеспечивают соблюдение стандартов качества во время разработки продукта. Команды контроля также указывают на проблемные области командам разработчиков, и их совместная ответственность заключается в устранении проблемы и выпуске программного обеспечения, работающего без ошибок.
Автоматизированное тестирование устраняет необходимость ручного тестирования
Полная автоматизация процесса тестирования невозможна. В той или иной степени ручное тестирование всегда необходимо, особенно когда дело касается человеческой смекалки. Обязанность команд тестировании и обеспечения качества – оценить, насколько система нуждается в ручном и автоматизированном тестировании.
В общем инструменты для автоматизированного тестирования работают лучше всего, когда дело доходит до несложной, точной, циклической проверки, требующей обработки больших объемов информации; а вот тестирование, требующее смекалки и принятия решений, лучше проводить вручную.
Работа тестировщика лишена творчества
Тестировщик должен обладать глубокими знаниями, помогающими ему предвидеть и находить проблемы в конкретном ПО. Эта работа требует творческого похода и развитого воображения, так как необходимо видеть связь всех элементов системы и уметь предугадывать возможные сбои в ее работе.
От тестировщика ожидается понимание всего цикла функционирования программного обеспечения, взаимозависимости и взаимного влияния его отдельных модулей. Формулирование тестовых подходов, разработка тестов и проведение тестирования – более чем творческие процессы.
И напоследок
Несмотря на все мифы и факты, бремя ответственности за качество создаваемого программного обеспечения лежит на всех командах, вовлеченных в работу. Самое главное, чтобы конечный продукт не содержал ошибок и функционировал так, как необходимо.