HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-21
1 <p><a>#статьи</a></p>
1 <p><a>#статьи</a></p>
2 <ul><li>22 дек 2020</li>
2 <ul><li>22 дек 2020</li>
3 <li>0</li>
3 <li>0</li>
4 </ul><p>Скучная работа, войны с программистами, приходится отвечать за каждую пропущенную ошибку. И вообще, тестировщиков скоро заменят роботами.</p>
4 </ul><p>Скучная работа, войны с программистами, приходится отвечать за каждую пропущенную ошибку. И вообще, тестировщиков скоро заменят роботами.</p>
5 <p> vlada_maestro / shutterstock</p>
5 <p> vlada_maestro / shutterstock</p>
6 <p>Программист, консультант, специалист по документированию. Легко и доступно рассказывает о сложных вещах в программировании и дизайне.</p>
6 <p>Программист, консультант, специалист по документированию. Легко и доступно рассказывает о сложных вещах в программировании и дизайне.</p>
7 <p>С тестированием программ связано много заблуждений. И не все представляют, чем вообще занимаются тестировщики. Постараемся развеять некоторые популярные мифы о тестировании.</p>
7 <p>С тестированием программ связано много заблуждений. И не все представляют, чем вообще занимаются тестировщики. Постараемся развеять некоторые популярные мифы о тестировании.</p>
8 <p>В процессе тестирования заняты люди, чью работу надо оплачивать. Действительно, на поиск и исправление дефектов тратится много средств. Но ошибки в программах обходятся ещё дороже. Бывает, что из-за мелких багов в коде компании получают огромные убытки и проблемы с имиджем:</p>
8 <p>В процессе тестирования заняты люди, чью работу надо оплачивать. Действительно, на поиск и исправление дефектов тратится много средств. Но ошибки в программах обходятся ещё дороже. Бывает, что из-за мелких багов в коде компании получают огромные убытки и проблемы с имиджем:</p>
9 <ul><li>В 1996 году при старте разбилась европейская ракета-носитель "<a>Ариан-5</a>". На ней было установлено ПО от предыдущей модели, а в новом окружении его не протестировали. Стоимость этой ошибки - примерно полмиллиарда долларов.</li>
9 <ul><li>В 1996 году при старте разбилась европейская ракета-носитель "<a>Ариан-5</a>". На ней было установлено ПО от предыдущей модели, а в новом окружении его не протестировали. Стоимость этой ошибки - примерно полмиллиарда долларов.</li>
10 <li>В 2012 году американская компания-брокер Knight Capital Group решила автоматизировать торговлю ценными бумагами. Она разработала программу, которая самостоятельно делала ставки и покупала акции. Но авторы кода торопились и не успели как следует протестировать своего робота. При первом же запуске он сошёл с ума. Программа делала сотни ставок в секунду и за 45 минут потратила 440 млн долларов - весь капитал компании. До этой истории Knight Capital Group была самым крупным брокером акций в США. А после её купили за бесценок конкуренты.</li>
10 <li>В 2012 году американская компания-брокер Knight Capital Group решила автоматизировать торговлю ценными бумагами. Она разработала программу, которая самостоятельно делала ставки и покупала акции. Но авторы кода торопились и не успели как следует протестировать своего робота. При первом же запуске он сошёл с ума. Программа делала сотни ставок в секунду и за 45 минут потратила 440 млн долларов - весь капитал компании. До этой истории Knight Capital Group была самым крупным брокером акций в США. А после её купили за бесценок конкуренты.</li>
11 <li>В 1994 году в новых процессорах Pentium обнаружили небольшую ошибку: при делении чисел с плавающей точкой получался неправильный результат в девятом знаке после запятой и дальше. Intel долго отнекивался и утверждал, что обычный пользователь столкнётся с этой ошибкой раз в 27 тысяч лет. Но пользователи возмущались и требовали назад деньги. В результате компания заменила процессоры всем желающим. Ошибка обошлась корпорации в 470 млн долларов.</li>
11 <li>В 1994 году в новых процессорах Pentium обнаружили небольшую ошибку: при делении чисел с плавающей точкой получался неправильный результат в девятом знаке после запятой и дальше. Intel долго отнекивался и утверждал, что обычный пользователь столкнётся с этой ошибкой раз в 27 тысяч лет. Но пользователи возмущались и требовали назад деньги. В результате компания заменила процессоры всем желающим. Ошибка обошлась корпорации в 470 млн долларов.</li>
12 </ul><p>Подобных примеров немало. Поэтому фирмы-разработчики боятся ошибок в программах. В крупных компаниях работают целые отделы инженеров-тестировщиков, которые контролируют качество продукта.</p>
12 </ul><p>Подобных примеров немало. Поэтому фирмы-разработчики боятся ошибок в программах. В крупных компаниях работают целые отделы инженеров-тестировщиков, которые контролируют качество продукта.</p>
13 <p>Это не так.<strong></strong>Тестирование идёт параллельно с разработкой. Чем раньше удаётся обнаружить ошибки, тем проще и дешевле будет их исправить.</p>
13 <p>Это не так.<strong></strong>Тестирование идёт параллельно с разработкой. Чем раньше удаётся обнаружить ошибки, тем проще и дешевле будет их исправить.</p>
14 <p>Так, при разработке технических требований можно сколько угодно править и дополнять проектную документацию. Но если выяснится, что в требованиях было что-то не то, а код уже написан, последствия будут серьёзные. Возможно, придётся переписывать программу, а это время и большие затраты. Поэтому аналитики тщательно тестируют требования - ещё до начала разработки кода.</p>
14 <p>Так, при разработке технических требований можно сколько угодно править и дополнять проектную документацию. Но если выяснится, что в требованиях было что-то не то, а код уже написан, последствия будут серьёзные. Возможно, придётся переписывать программу, а это время и большие затраты. Поэтому аналитики тщательно тестируют требования - ещё до начала разработки кода.</p>
15 <p>Когда разрабатывается код, тестирование проводят сами программисты и тестировщики. Они проверяют каждый готовый модуль. Программисты ищут ошибки в коде, а после подключения к программе тестируют модуль ещё раз.</p>
15 <p>Когда разрабатывается код, тестирование проводят сами программисты и тестировщики. Они проверяют каждый готовый модуль. Программисты ищут ошибки в коде, а после подключения к программе тестируют модуль ещё раз.</p>
16 <p>Затем за программу берутся тестировщики. Они проверяют программу снаружи, не заглядывая в код: работают с ней так, как это будет делать пользователь, ищут баги вручную или с помощью автоматических тестов. Потом они передают сведения о найденных ошибках разработчикам, чтобы те их исправили. И так с каждым модулем до конца разработки.</p>
16 <p>Затем за программу берутся тестировщики. Они проверяют программу снаружи, не заглядывая в код: работают с ней так, как это будет делать пользователь, ищут баги вручную или с помощью автоматических тестов. Потом они передают сведения о найденных ошибках разработчикам, чтобы те их исправили. И так с каждым модулем до конца разработки.</p>
17 <p>А ещё делают так: программист сначала пишет тест на языке разработки, чтобы проверить какие-то функции будущей программы. Затем он пишет код, который выполняет действия, необходимые для прохождения этого теста. Когда тест удачно пройден, разработчик переходит к следующим функциям. Это называется test-driven development (TDD), или разработка через тестирование.</p>
17 <p>А ещё делают так: программист сначала пишет тест на языке разработки, чтобы проверить какие-то функции будущей программы. Затем он пишет код, который выполняет действия, необходимые для прохождения этого теста. Когда тест удачно пройден, разработчик переходит к следующим функциям. Это называется test-driven development (TDD), или разработка через тестирование.</p>
18 <p>Бывает даже, что сначала тестировщик составляет пошаговый план поведения пользователя. Потом специалисты по автоматизации тестирования составляют автоматические тесты. А вот под них уже пишется код - такой, чтобы он прошёл эти тесты. Технология называется behavior-driven development (BDD), или разработка на основе поведения.</p>
18 <p>Бывает даже, что сначала тестировщик составляет пошаговый план поведения пользователя. Потом специалисты по автоматизации тестирования составляют автоматические тесты. А вот под них уже пишется код - такой, чтобы он прошёл эти тесты. Технология называется behavior-driven development (BDD), или разработка на основе поведения.</p>
19 <p>Когда программа полностью написана, её тестируют как единое целое. Только когда все баги будут исправлены, программу передают заказчику.</p>
19 <p>Когда программа полностью написана, её тестируют как единое целое. Только когда все баги будут исправлены, программу передают заказчику.</p>
20 <p>В это верят клиенты и даже некоторые руководители проектов. Но в жизни так не бывает:</p>
20 <p>В это верят клиенты и даже некоторые руководители проектов. Но в жизни так не бывает:</p>
21 <ul><li>Даже в небольшой программе есть огромное количество комбинаций входных данных. Проверить их полностью невозможно.</li>
21 <ul><li>Даже в небольшой программе есть огромное количество комбинаций входных данных. Проверить их полностью невозможно.</li>
22 <li>Количество возможных действий пользователя и перемещений по программе также слишком велико для полной проверки.</li>
22 <li>Количество возможных действий пользователя и перемещений по программе также слишком велико для полной проверки.</li>
23 </ul><p>И миллион тестов не даёт никаких гарантий: миллион первый тест может запросто оказаться ошибочным. Пример - так называемая ошибка гейзенбаг. В рабочих условиях она появляется, а при отладке пропадает.</p>
23 </ul><p>И миллион тестов не даёт никаких гарантий: миллион первый тест может запросто оказаться ошибочным. Пример - так называемая ошибка гейзенбаг. В рабочих условиях она появляется, а при отладке пропадает.</p>
24 <p>Из-за одной такой ошибки в США облучились люди. Аппарат<a>Therac-25</a>использовали для лучевой терапии больных раком. В программе управления возник гейзенбаг: оператор нажимал на кнопку, пациент получал дозу облучения, но иногда датчик не улавливал данные и выдавал сообщение "Нулевая доза". Оператор ещё несколько раз жал на кнопку, и пациент получал огромную дозу радиации. В итоге несколько человек погибло.</p>
24 <p>Из-за одной такой ошибки в США облучились люди. Аппарат<a>Therac-25</a>использовали для лучевой терапии больных раком. В программе управления возник гейзенбаг: оператор нажимал на кнопку, пациент получал дозу облучения, но иногда датчик не улавливал данные и выдавал сообщение "Нулевая доза". Оператор ещё несколько раз жал на кнопку, и пациент получал огромную дозу радиации. В итоге несколько человек погибло.</p>
25 <p>Нет, программу делает вся команда и нельзя перекладывать ответственность на одного её члена. Тестировщики выявляют баги и сообщают о них разработчикам и проектировщикам. А те принимают решение: исправлять их или по каким-то причинам оставить.</p>
25 <p>Нет, программу делает вся команда и нельзя перекладывать ответственность на одного её члена. Тестировщики выявляют баги и сообщают о них разработчикам и проектировщикам. А те принимают решение: исправлять их или по каким-то причинам оставить.</p>
26 <p>Бывает, что тестировщикам просто не хватает времени на глубокую проверку: например, программу дорабатывали на ходу, меняли требования и добавляли функции. В таких условиях тестировщики иногда не справляются и продукт получается так себе.</p>
26 <p>Бывает, что тестировщикам просто не хватает времени на глубокую проверку: например, программу дорабатывали на ходу, меняли требования и добавляли функции. В таких условиях тестировщики иногда не справляются и продукт получается так себе.</p>
27 <p>Нет. Тестирование похоже на дизайн, это очень творческая работа. Тестировщик должен понимать, как работает система в целом и отдельные её части, найти слабые места и проверить их на сбои в первую очередь. Он разрабатывает тестовые подходы и пишет сами тесты. Тут не обойтись без воображения и фантазии.</p>
27 <p>Нет. Тестирование похоже на дизайн, это очень творческая работа. Тестировщик должен понимать, как работает система в целом и отдельные её части, найти слабые места и проверить их на сбои в первую очередь. Он разрабатывает тестовые подходы и пишет сами тесты. Тут не обойтись без воображения и фантазии.</p>
28 <p>Чтобы выпустить хороший программный продукт, нужно найти в нём все (или почти все) ошибки. Так что ничего личного - это просто работа.</p>
28 <p>Чтобы выпустить хороший программный продукт, нужно найти в нём все (или почти все) ошибки. Так что ничего личного - это просто работа.</p>
29 <p>Не стоит обижаться на тестировщика, даже если он тычет пальцем в спецификацию и говорит, что в каком-то месте должен быть шрифт Arial Narrow, а у вас стоит обычный Arial. Не думайте, что он придирается, лучше сделайте как написано в спецификации. По каким-то причинам там действительно нужен этот шрифт.</p>
29 <p>Не стоит обижаться на тестировщика, даже если он тычет пальцем в спецификацию и говорит, что в каком-то месте должен быть шрифт Arial Narrow, а у вас стоит обычный Arial. Не думайте, что он придирается, лучше сделайте как написано в спецификации. По каким-то причинам там действительно нужен этот шрифт.</p>
30 <p>Ну да, нейросети проникли и сюда. Они спасают тестировщиков от нудных рутинных операций. Но человек всё равно нужен:</p>
30 <p>Ну да, нейросети проникли и сюда. Они спасают тестировщиков от нудных рутинных операций. Но человек всё равно нужен:</p>
31 <ul><li>Тестировщик вручную проверяет все новые фичи и программы перед запуском автоматических тестов. Он выясняет, работает ли программа вообще, как она устроена, что нужно протестировать в первую очередь. Бесполезно писать тесты, если программа не работает.</li>
31 <ul><li>Тестировщик вручную проверяет все новые фичи и программы перед запуском автоматических тестов. Он выясняет, работает ли программа вообще, как она устроена, что нужно протестировать в первую очередь. Бесполезно писать тесты, если программа не работает.</li>
32 <li>Программы не всесильны. Без человека в тестировании не обойтись. Кто-то должен исследовать результаты и делать выводы. А некоторые тесты нельзя автоматизировать, и что-то обязательно придётся перепроверять вручную.</li>
32 <li>Программы не всесильны. Без человека в тестировании не обойтись. Кто-то должен исследовать результаты и делать выводы. А некоторые тесты нельзя автоматизировать, и что-то обязательно придётся перепроверять вручную.</li>
33 <li>Некоторые виды тестирования автоматизировать невозможно. Например, удобство и доступность пользовательского интерфейса может проверить только человек.</li>
33 <li>Некоторые виды тестирования автоматизировать невозможно. Например, удобство и доступность пользовательского интерфейса может проверить только человек.</li>
34 </ul><p>Тестировать программы учат<a>на курсах в Skillbox</a>. Мы даём серьёзные теоретические знания и хороший практический опыт. С первых уроков студенты участвуют в реальных проектах. Успешные выпускники становятся тестировщиками middle-уровня, а мы помогаем им найти работу.</p>
34 </ul><p>Тестировать программы учат<a>на курсах в Skillbox</a>. Мы даём серьёзные теоретические знания и хороший практический опыт. С первых уроков студенты участвуют в реальных проектах. Успешные выпускники становятся тестировщиками middle-уровня, а мы помогаем им найти работу.</p>
35 <a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>
35 <a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>