Код
Код
#статьи
  • 1614

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

Оказывается, 75% времени при создании программ уходит вовсе не на программирование. Разбираемся, чем же занимаются тестировщики.

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

Почему тестирование — это так важно

Вот типичные программные баги:

  • Вы вводите в поле ответ на вопрос и нажимаете Enter. После этого программа неожиданно завершает работу, не сохранив информацию. И та же ошибка повторяется в следующий раз.
  • Другой случай: вы играете, например, в какую-нибудь стрелялку. Неожиданно персонажи начинают хаотично двигаться, конвульсивно дёргаться, терять или отращивать конечности. И вообще ведут себя не так, как им положено. Некоторое время программа не реагирует на нажатие клавиш, после чего выдаёт «Game over».
  • Ещё один пример: вы заходите в личный кабинет интернет-магазина. Нажимаете «оплатить», а вас выкидывает на главную страницу, да ещё и разлогинивает.

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

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

Марина Демидова

Программист, консультант, специалист по документированию. Легко и доступно рассказывает о сложных вещах в программировании и дизайне.


Курс

Профессия Тестировщик


Вы научитесь тестировать сайты, мобильные приложения и другое ПО. Узнаете, как устроена работа IT-компаний, и сможете понять, как вы хотите развиваться в профессии. Гарантированно получите работу. Уже джуниоры очень востребованы рынком, а наш курс позволит достичь middle-уровня.

Какие виды тестирования существуют

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

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

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

Есть несколько видов тестирования:

  • Статическое, без запуска программы, и динамическое — с запуском. Статическое обычно делают в самом начале работы: инженеры проверяют проектную документацию и спецификации, вычитывают уже написанный код. Затем проводят динамическое тестирование: программу запускают и проверяют, как она ведёт себя во время работы, определяют время отклика и то, насколько она загружает процессор и память.
  • С помощью функционального тестирования проверяют, как программа решает задачи, нужные клиенту. При нефункциональном исследуют производительность системы, её надёжность и защищённость, работу с окружением — операционной системой и оборудованием.
  • Ещё один способ — тестирование по принципу «чёрного» и «белого» ящика. В первом случае тестировщик не смотрит на код и работает только с программным интерфейсом. Он проверяет производительность программы, все ли нужные функции реализованы, ищет ошибки в её интерфейсе и поведении. Во втором — инженер имеет доступ к коду. Он проверяет структуру и логику всей программы или отдельных её компонент. Часто этим занимается сам программист.
  • Ручное и автоматическое тестирование. В первом случае работу кода проверяют вручную, без использования программных средств. Во втором — применяют специально написанные автоматические тесты, которые постоянно обновляют.

Что тестируют на разных этапах разработки

Есть несколько уровней тестирования. Их проводят в разное время:

  1. Модульное тестирование делается в самом начале, когда готовы те куски кода, которые можно проверить по отдельности: объекты, классы, функции, программные модули. Тесты пишутся отдельно для каждой функции или метода. На этом этапе проверяют работоспособность части кода, нет ли регрессии — не появились ли после изменения кода ошибки там, где раньше всё работало нормально. Это самый нижний уровень тестирования, часто это делают те, кто пишет код.
  2. К интеграционному тестированию переходят после модульной проверки. Здесь тестируют связи между проверенными элементами и то, как программа взаимодействует с операционной системой, оборудованием.
  3. Системное тестирование показывает, соответствует ли готовая система функциональным и нефункциональным требованиям.
  4. Приёмочное тестирование проходит, когда заказчик принимает приложения от разработчиков. Его цель — убедиться, что продукт удовлетворяет требованиям клиента. На основании этого покупатель решает, готова ли программа или её нужно дорабатывать.

В зависимости от этапа разработки перед тестировщиками стоят разные цели:

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

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

Как обычно проходит тестирование

Как правило, тестировщики начинают работать с программой сразу после начала проекта:

  • Составляют тест-план, где описан весь объём работ по тестированию и определено, когда их можно закончить. Это примерный документ — в процессе разработки в него не раз внесут изменения: уточнят стратегию и виды тестирования, расписание работ и так далее.
  • Разрабатывают тест-кейсы — перечень конкретных действий и сценарии для проверки каких-то определённых функций программы.
  • Решают, нужна ли автоматизация: стоит ли разрабатывать и запускать автоматические тесты или можно обойтись тестированием вручную.

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

Следующий этап — регрессионное тестирование. Тестировщики ищут баги в новых участках кода и в тех местах, где исправляли ранее найденные ошибки.

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

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

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

Кто всё это делает: немного о профессии

Тестированием программы занимаются специалисты по контролю качества программного обеспечения — QA-инженеры. У них есть разные специализации: тестировщики баз данных, специалисты автоматизированного тестирования, аналитики, разработчики тестов, специалисты по безопасности приложений и другие.

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

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

Как показывает статистика работных сайтов, на рынке не хватает разработчиков автотестов, а специалистов ручного тестирования достаточно. Средняя зарплата тестировщика в Москве больше 120 тысяч рублей, а по регионам —
примерно 55–60.

На скриншотах ниже — данные с HeadHunter. В сентябре 2020 года там было 3000 открытых вакансий тестировщика.

В описаниях вакансий работодатели предлагают зарплаты от 45 до 250–300 тысяч рублей.

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

Что в итоге

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

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

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

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

Понравилась статья?
Да