Следите за нашими новостями на Facebook! Всегда что-нибудь интересное ;)
Будьте в курсе!
Подпишитесь на нашу рассылку, и мы будем присылать вам интересные статьи, анонсы и новости.
12 января 2021

Что такое тестирование программного обеспечения? Определение, основы и типы.
В этом руководстве вы узнаете:
  • Что такое тестирование программного обеспечения?
  • Почему тестирование ПО важно?
  • Преимущества тестирования ПО
  • Тестирование в программной инженерии
  • Типы тестирования ПО
  • Стратегии тестирования в программной инженерии

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

Некоторые предпочитают называть тестирование программного обеспечения:
«Белый ящик» - когда у нас есть доступ к коду, и мы его тестируем, читаем сам код (статическое тестирование), запускаем в дебаге, пишем автотесты;
«Черный ящик» - когда мы не знаем, как система устроена внутри, нет доступа к коду или мы не умеем его читать, и поэтому ориентируемся только на внешнее поведение или ТЗ;
«Серый ящик» - когда мы смотрим в код и понимаем, как он устроен, а потом открываем само приложение и проверяем, как этот код отображается уже в нем, но ориентируемся уже больше на ТЗ (это компиляция двух вышеприведенных определений).

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


Почему тестирование ПО важно?

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

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

  • В апреле 2015 года терминал Bloomberg в Лондоне вышел из строя из-за сбоя программного обеспечения, затронувшего более 300 000 трейдеров на финансовых рынках. Это вынудило правительство отложить продажу долга в 3 миллиарда фунтов стерлингов.
  • Автомобили Nissan отозвали с рынка более 1 миллиона автомобилей из-за сбоя программного обеспечения сенсорных датчиков подушек безопасности. Сообщается о двух несчастных случаях из-за этого программного сбоя.
  • Starbucks была вынуждена закрыть около 60% магазинов в США и Канаде из-за сбоя программного обеспечения в ее POS-системе. В какой-то момент магазин подал кофе бесплатно, так как они не смогли обработать транзакцию.
  • Некоторые сторонние розничные продавцы Amazon увидели, что их цена снизилась до 1 пенни из-за сбоя программного обеспечения. Они остались с большими потерями.
  • Уязвимость в Windows 10 позволила выйти из изолированной программной среды безопасности через брешь в системе win32k.
  • В 2015 году истребитель F-35 стал жертвой программного сбоя, из-за которого не смог правильно обнаруживать цели.
  • 26 апреля 1994 года самолет Airbus A300 авиакомпании China Airlines разбился из-за ошибки в программном обеспечении, в результате чего погибли 264 невинных человека!
  • В 1985 году канадский аппарат лучевой терапии Therac-25 вышел из строя из-за ошибки программного обеспечения и доставил пациентам смертельные дозы радиации, в результате чего 3 человека погибли и еще 3 получили тяжелые ранения.
  • В апреле 1999 года из-за ошибки в ПО не удалось запустить военный спутник стоимостью 1,2 миллиарда долларов, что стало самой дорогостоящей аварией в истории.
  • В мае 1996 года из-за ошибки в ПО на банковские счета 823 клиентов крупного банка США было зачислено 920 миллионов долларов США.

Преимущества тестирования программного обеспечения

Специалисты выделяют следующие преимущества использования тестирования программного обеспечения:

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

Безопасность
Люди ищут проверенные продукты. Тестирование избавиться вас от рисков утечки информации.

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

Удовлетворенность клиентов
Если пользователь не является ярым фанатом определенного бренда, при выборе из нескольких схожих продуктов, пользователь выбирает тот, который удобнее. UI / UX Testing обеспечивает лучший пользовательский опыт.


Тестирование в программной инженерии

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


Типы тестирования программного обеспечения

Обычно тестирование подразделяется на три категории:
  • Функциональное тестирование
    • Модульное (компонентное)
    • Интеграционное
    • Системное
    • Регрессионное
    • Приемочное
    • Смоук
  • Тестирование производительности
    • Тестирование отказоустойчивости
    • Нагрузочное
    • Объемное
    • Тестирование масштабируемости
  • Обслуживание (регресс и обслуживание)
    • Регрессионное
    • Тестирование технического обслуживания

Это далеко не полный список, так как существует более 150 типов тестирования (о них мы расскажем в следующих статьях), которые все еще добавляются. Также обратите внимание, что не все типы тестирования применимы ко всем проектам, но зависят от характера и объема проекта.

Стратегии тестирования в программной инженерии

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

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

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

Системное тестирование
В этом методе ваше программное обеспечение компилируется как единое целое, а затем как единое целое тестируется. Эта стратегия проверяет, среди прочего, функциональность, безопасность и переносимость.

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

Хорошо то тестирование, при котором высока вероятность обнаружения ошибок.


Краткое изложение основ тестирования программного обеспечения:

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

Использованные материалы: