Код
#статьи

7 популярных мифов о тестировании

Скучная работа, войны с программистами, приходится отвечать за каждую пропущенную ошибку. И вообще, тестировщиков скоро заменят роботами.

 vlada_maestro / shutterstock

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

Миф 1

Тестирование — очень дорогое удовольствие, затраты на него не окупаются

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

  • В 1996 году при старте разбилась европейская ракета-носитель «Ариан-5». На ней было установлено ПО от предыдущей модели, а в новом окружении его не протестировали. Стоимость этой ошибки — примерно полмиллиарда долларов.
  • В 2012 году американская компания-брокер Knight Capital Group решила автоматизировать торговлю ценными бумагами. Она разработала программу, которая самостоятельно делала ставки и покупала акции. Но авторы кода торопились и не успели как следует протестировать своего робота. При первом же запуске он сошёл с ума. Программа делала сотни ставок в секунду и за 45 минут потратила 440 млн долларов — весь капитал компании. До этой истории Knight Capital Group была самым крупным брокером акций в США. А после её купили за бесценок конкуренты.
  • В 1994 году в новых процессорах Pentium обнаружили небольшую ошибку: при делении чисел с плавающей точкой получался неправильный результат в девятом знаке после запятой и дальше. Intel долго отнекивался и утверждал, что обычный пользователь столкнётся с этой ошибкой раз в 27 тысяч лет. Но пользователи возмущались и требовали назад деньги. В результате компания заменила процессоры всем желающим. Ошибка обошлась корпорации в 470 млн долларов.

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

Миф 2

Тестируют только полностью написанную программу

Это не так. Тестирование идёт параллельно с разработкой. Чем раньше удаётся обнаружить ошибки, тем проще и дешевле будет их исправить.

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

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

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

А ещё делают так: программист сначала пишет тест на языке разработки, чтобы проверить какие-то функции будущей программы. Затем он пишет код, который выполняет действия, необходимые для прохождения этого теста. Когда тест удачно пройден, разработчик переходит к следующим функциям. Это называется test-driven development (TDD), или разработка через тестирование.

Бывает даже, что сначала тестировщик составляет пошаговый план поведения пользователя. Потом специалисты по автоматизации тестирования составляют автоматические тесты. А вот под них уже пишется код — такой, чтобы он прошёл эти тесты. Технология называется behavior-driven development (BDD), или разработка на основе поведения.

Когда программа полностью написана, её тестируют как единое целое. Только когда все баги будут исправлены, программу передают заказчику.

Миф 3

Любую программу можно протестировать так, что в ней совсем не останется ошибок

В это верят клиенты и даже некоторые руководители проектов. Но в жизни так не бывает:

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

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

Из-за одной такой ошибки в США облучились люди. Аппарат Therac-25 использовали для лучевой терапии больных раком. В программе управления возник гейзенбаг: оператор нажимал на кнопку, пациент получал дозу облучения, но иногда датчик не улавливал данные и выдавал сообщение «Нулевая доза». Оператор ещё несколько раз жал на кнопку, и пациент получал огромную дозу радиации. В итоге несколько человек погибло.

Миф 4

Только тестировщики несут ответственность за программу, и если что-то не так — во всём виноваты они

Нет, программу делает вся команда и нельзя перекладывать ответственность на одного её члена. Тестировщики выявляют баги и сообщают о них разработчикам и проектировщикам. А те принимают решение: исправлять их или по каким-то причинам оставить.

Бывает, что тестировщикам просто не хватает времени на глубокую проверку: например, программу дорабатывали на ходу, меняли требования и добавляли функции. В таких условиях тестировщики иногда не справляются и продукт получается так себе.

Миф 5

Тестирование — скучная и монотонная работа

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

Миф 6

Тестировщики не любят программистов и нарочно придираются к мелочам

Чтобы выпустить хороший программный продукт, нужно найти в нём все (или почти все) ошибки. Так что ничего личного — это просто работа.

Не стоит обижаться на тестировщика, даже если он тычет пальцем в спецификацию и говорит, что в каком-то месте должен быть шрифт Arial Narrow, а у вас стоит обычный Arial. Не думайте, что он придирается, лучше сделайте как написано в спецификации. По каким-то причинам там действительно нужен этот шрифт.

Миф 7

Скоро весь код будут тестировать автоматически и тестировщики станут не нужны

Ну да, нейросети проникли и сюда. Они спасают тестировщиков от нудных рутинных операций. Но человек всё равно нужен:

  • Тестировщик вручную проверяет все новые фичи и программы перед запуском автоматических тестов. Он выясняет, работает ли программа вообще, как она устроена, что нужно протестировать в первую очередь. Бесполезно писать тесты, если программа не работает.
  • Программы не всесильны. Без человека в тестировании не обойтись. Кто-то должен исследовать результаты и делать выводы. А некоторые тесты нельзя автоматизировать, и что-то обязательно придётся перепроверять вручную.
  • Некоторые виды тестирования автоматизировать невозможно. Например, удобство и доступность пользовательского интерфейса может проверить только человек.

Тестировать программы учат на курсах в Skillbox. Мы даём серьёзные теоретические знания и хороший практический опыт. С первых уроков студенты участвуют в реальных проектах. Успешные выпускники становятся тестировщиками middle-уровня, а мы помогаем им найти работу.

Изучайте IT на практике — бесплатно

Курсы за 2990 0 р.

Я не знаю, с чего начать
Научитесь: Профессия Python-разработчик Узнать больше
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована