Функциональный тестировщик. Функциональное тестирование программного обеспечения. Тестирование мобильных приложений

Функциональное тестирование

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

Функциональные требования включают в себя:

  • Функциональная пригодность (англ. suitability ).
  • Точность (англ. accuracy ).
  • Способность к взаимодействию (англ. interoperability ).
  • Соответствие стандартам и правилам (англ. compliance ).
  • Защищённость (англ. security ).

Литература

  • Лайза Криспин, Джанет Грегори Гибкое тестирование: практическое руководство для тестировщиков ПО и гибких команд = Agile Testing: A Practical Guide for Testers and Agile Teams. - М .: «Вильямс», 2010. - 464 с. - (Addison-Wesley Signature Series). - 1000 экз. - ISBN 978-5-8459-1625-9 ,

Wikimedia Foundation . 2010 .

Смотреть что такое "Функциональное тестирование" в других словарях:

    функциональное тестирование - — [Л.Г.Суменко. Англо русский словарь по информационным технологиям. М.: ГП ЦНИИС, 2003.] Тематики информационные технологии в целом EN functional testing …

    тестирование - Тестовые мероприятия и функциональное тестирование (последнее не связано с проведением спортивных соревнований) являются ключевыми компонентами для обеспечения готовности Игр и единственной реальной возможностью для проверки разработанных ОКОИ… … Справочник технического переводчика

    Программного обеспечения это тестирование программного обеспечения (ПО), выполняемое на полной, интегрированной системе, с целью проверки соответствия системы исходным требованиям. Системное тестирование относится к методам тестирования чёрного… … Википедия

    Аналитик - (Analyst) Специалист, работник фирмы, банка Информация о сфере деятельности аналитиков, финансовая и бизнес аналитика, аналитика валютного и фондового рынка Содержание >>>>>>>> Аналитик это, оределение История Аналитика появилась тогда, когда… … Энциклопедия инвестора

    В этой статье не хватает ссылок на источники информации. Информация должна быть проверяема, иначе она может быть поставлена под сомнение и удалена. Вы можете отредактировать эту статью … Википедия

    Год основания 1941 Основатели Мартин и Ойген Хилти Ключевые фигуры Пиюс Баскера (Pius Baschera) (Председатель Совета директоров), Бо Рисберг (Bo Risberg) (Председатель Исполнительного совета) … Википедия

    Разработка программного обеспечения Процесс разработки ПО Шаги процесса Анализ Проектирование Программирование Докумен … Википедия

    - (англ. Performance Engineering) часть системотехники, включающая в себя набор ролей, знаний, практик, инструментов и результатов и применяющаяся на каждом этапе Цикла разработки программного обеспечения с целью убедиться в том, что создаваемое,… … Википедия

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

Книги

  • Основы тестирования и верификации программного обеспечения , Старолетов Сергей Михайлович. Настоящее пособие предназначено для будущих программистов, которым необходимо знать основы тестирования программных продуктов, принципы работы в команде с тестировщиками, необходимость и…
  • Функциональное программирование на JavaScript. Как улучшить код JavaScript-программ , Атенсио Луис. В сложных веб-приложениях низкоуровневые детали JavaScript-кода могут затруднить анализ программы и повлиять на работоспособность системы в целом. Функциональное программирование (ФП) как…
  • непреднамеренное отклонение разработчиков от рабочих стандартов или планов реализации;
  • спецификации функциональных и интерфейсных требований выполнены без соблюдения стандартов разработки, что приводит к нарушению функционирования программ;
  • организации процесса разработки - несовершенная или недостаточное управление руководителем проекта ресурсами (человеческими, техническими, программными и т.д.) и вопросами тестирования и интеграции элементов проекта.

Рассмотрим процесс тестирования, исходя из рекомендаций стандарта ISO/IEC 12207, и приведем типы ошибок, которые обнаруживаются на каждом процессе ЖЦ.

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

Характерными ошибками этого процесса являются:

  • неадекватность спецификации требований конечным пользователям;- некорректность спецификации взаимодействия ПО со средой функционирования или с пользователями;
  • несоответствие требований заказчика к отдельным и общим свойствам ПО;
  • некорректность описания функциональных характеристик;
  • необеспеченность инструментальными средствами всех аспектов реализации требований заказчика и др.

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

  • с определением интерфейса пользователя со средой;
  • с описанием функций (неадекватность целей и задач компонентов, которые обнаруживаются при проверке комплекса компонентов);
  • с определением процесса обработки информации и взаимодействия между процессами (результат некорректного определения взаимосвязей компонентов и процессов);
  • с некорректным заданием данных и их структур при описании отдельных компонентов и ПС в целом;
  • с некорректным описанием алгоритмов модулей;
  • с определением условий возникновения возможных ошибок в программе;
  • с нарушением принятых для проекта стандартов и технологий.

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

  • бесконтрольность значений входных параметров, индексов массивов, параметров циклов, выходных результатов, деления на 0 и др.;
  • неправильная обработка нерегулярных ситуаций при анализе кодов возврата от вызываемых подпрограмм, функций и др.;
  • нарушение стандартов кодирования (плохие комментарии, нерациональное выделение модулей и компонент и др.);
  • использование одного имени для обозначения разных объектов или разных имен одного объекта, плохая мнемоника имен;- несогласованное внесение изменений в программу разными разработчиками и др.

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

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

Все ошибки, которые возникают в программах, принято подразделять на следующие классы [7.12 ]:

  • логические и функциональные ошибки;
  • ошибки вычислений и времени выполнения;
  • ошибки вводавывода и манипулирования данными;
  • ошибки интерфейсов;
  • ошибки объема данных и др.

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

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

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

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

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

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

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

На современном этапе развития средств поддержки разработки ПО ( CASE-технологии , объектно-ориентированные методы и средства проектирования моделей и программ) проводится такое проектирование, при котором ПО защищается от наиболее типичных ошибок и тем самым предотвращается появление программных дефектов.

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

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

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

Приведем следующую классификацию типов отказов:

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

Некоторые ошибки могут быть следствием недоработок при определении требований, проекта, генерации выходного кода или документации. С другой стороны, они порождаются в процессе разработки программы или при разработке интерфейсов отдельных элементов программы (нарушение порядка параметров, меньше или больше параметров и т.п.).

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

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

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

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

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

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

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

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

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

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

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

Итак, давайте рассмотрим основные этапы, которые вы должны пройти, чтобы протестировать свой сайт. Они представлены на картинке внизу.

Тестирование документации

Мы должны начать с подготовительного этапа, анализируя документацию. Тестер изучает полученную документацию (анализирует определенную функциональность сайта, готовит план дальнейшего тестирования).

На этом этапе анализируются основные артефакты, связанные с тестированием веб-сайта:

  • Требования
  • План тестирования
  • Тест кейсы
  • Матрица соответствий

Функциональное тестирование сайта

Функциональное тестирование направлено на то, чтобы каждая функция веб-сайта работала в соответствии с требованиями спецификации. Тестирование функциональности веб-сайта показывает «Что делает система».

Попробуем создать чек-лист для тестирования функциональности веб-сайта.

Тестирование ссылок

Вы должны проверить:

  • Исходящие ссылки
  • Корректность внутренних ссылок
  • Отстутствие ссылок, ведущих к одной странице
  • Ссылки, которые используются для отправки электронной почты админам сайта
  • Есть ли страницы, на которые не указаны ссылки
  • Отсутствие неработающих ссылок

Тестирование форм для всех страниц

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

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

Тестирование cookies

Cookies представляют собой небольшие файлы, которые хранятся на компьютере пользователя после посещения веб-страницы.

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

HTML / CSS валидация

  • Синтаксические ошибки HTML
  • Убедитесь, что сайт доступен для поисковых машин.
  • Убедитесь, что ваша веб-страница имеет точную карту сайта в формате XML и HTML

Полезные инструменты для проведения функционального тестирования: Selenium , Linux Test Project , JUnit, Sprinter by Hewlett Packard Entreprise (ручное тестирование), Browserstack (ручное и автоматизированное тестирование), Usersnap (ручное тестирование).

Usability тестирование сайта (тестирование удобства использования)

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

Навигационное тестирование сайта содержит следующие проверки:

  • Все страницы сайта понятны и просты в использовании.
  • Кнопки, формы и поля удобны для использования.
  • Доступ к главному меню осуществляется со всех страниц.

Чек-лист тестирования контента :

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

Наконец, чтобы оценить удобство использования вашего веб-портала, просто ответьте на эти вопросы:

  • Является ли ваш сайт понятным и удобным?
  • Удобна ли навигация?
  • Какое впечатление он производит на пользователя?
  • Есть лишние или ненужные вещи?

Полезные инструменты для usability тестирования: User Zoom , Reflector, Loop 11 .

Тестирование UI (интерфейса пользователя)

Тестирование интерфейса пользователя (UI) выполняется для проверки соответствия графического пользовательского интерфейса вашего сайта спецификациям.

Вот некоторые проверки для тестирования интерфейса веб-сайта:

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

Полезные инструменты для UI тестирования: FitNesse , iMacros, Coded UI, Jubula, LoadUI .

Тестирование совместимости (конфигурационное тестирование)

Тестирование совместимости выполняется для проверки работы сайта при различных программных и аппаратных конфигурациях:

  • Конфигурация операционной системы
  • Конфигурация браузера
  • Конфигурация базы данных

Кросс-платформенное тестирование сайта позволяет оценивать работу вашего сайта при разных ОС (как десктопных, так и мобильных): Windows, iOS / Mac OS, Linux, Android, BlackBerry и т. д.

Кросс-браузерное тестирование сайта помогает проверить правильность работы сайта в разных конфигурациях браузера: Mozilla Firefox, Google Chrome, Internet Explorer, Opera и т. п.

Тестирование баз данных выполняется для обеспечения правильной работы вашего сайта при разных конфигурациях базы данных: Oracle, DB2, MySql, MSSQL Server, Sybase и т.д.

Совместимость опций печати также следует упомянуть в плане тестирования вашего веб-сайта:

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

Вы можете использовать такие инструменты как BrowserStack, CrossBrowserTesting by Smart Bear , Litmus , Browsera , Rational Clearcase by IBM , Ghostlab для тестирования совместимости сайта.

По этому адресу Вы найдёте больше информации о конфигурационном тестировании –

Тестирование производительности

Тестирование производительности предназначено для определения того, как система работает с точки зрения оперативности и стабильности при определенной нагрузке. Сайт должен выдерживать высокие нагрузки. Методы тестирования производительности веб-сайта содержат:

  • Тестирование поведения сайта на уровне или за пределами его ожидаемой рабочей нагрузки (стресс-тестирование)
  • Тестирование поведения сайта при увеличении рабочей нагрузки (нагрузочное тестирование)
  • Тестирование способности работать в течение или чуть дольше приемлемого периода (тестирование стабильности)
  • Тестирование производительности веб-сайта за счет увеличения объема данных в базе данных (объёмное тестирование)
  • Тестирование производительности веб-сайта, при одновременной логинизации большого количества пользователей (тестирование параллелизма)
  • Тестирование поведения сайта при непрерывной дополнительной нагрузке (тестирование на выносливость)
  • Тестирование скорости загрузки страницы

Полезные инструменты для тестирования производительности: Apache JMeter , HP LoadRunner , Silk Performer from Micro Focus , WebLOAD , Gatling .

Хотите знать больше о тестировании производительности и инструментах, которые используются для этого? Перейдите по этой ссылке

Тестирование безопасности

Тестирование безопасности выполняется для проверки системы защиты данных и поддержки функционала.

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

Другой тип тестирования безопасности, тестирование уязвимости , позволяет оценить общий объем вовлеченных рисков.

Некоторые проверки для тестирования безопасности:

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

Полезные инструменты для тестирования безопасности сайта: Retina CS Community , OWASP Zed Attack Proxy , Veracode, Google Nogotofail, SQL Map .

Тестирование, связанное с изменениями

Тестирование, связанное с изменениями, имеет две основные цели:

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

Тестирование мобильной версии сайта

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

Вот несколько советов для того, чтобы сделать ээфективным тестирование сайта на мобильных устройствах:

  • Проверьте совместимость со смартфонами и планшетами
  • Убедитесь, что навигация по сайту максимально проста
  • Оптимизируйте время загрузки вашего сайта
  • Убедитесь, что кнопки имеют достаточный размер для людей с большим пальцем
  • Оптимизируйте размер всех изображений
  • Не используйте Flash и всплывающие окна
  • Используйте маркеры и короткие предложения
  • Убедитесь, что ваш номер телефона может быть набран с помощью одного клика
  • Убедитесь, что веб-сайт может получить доступ к вашему местоположению через GPS

Полезные инструменты для тестирования мобильной версии сайта – BrowserStack , Perfecto Mobile Continuous Quality Lab , Windows Phone Emulator , Android Studio emulator , Google’s Mobile-Friendly Test, Google’s Page Speed Online .

Узнайте больше о мобильном тестировании и его инструментах-

Бета-тестирование

Бета-тестирование – заключительная предварительная стадия тестирования. Как правило, это делают конечные пользователи, которые не являются сотрудниками компании.

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

Такие инструменты, как HockeyApp , Ubertesters , и TestFlight , являются всемирно используемыми платформами для бета-тестирования.

Теперь, когда мы рассмотрели основные этапы процесса тестирования веб-сайта, давайте попробуем найти баг и сообщить об этом с помощью одного из реальных инструментов веб-тестирования, расширения для браузера EasyQA Chrome Extension.

Как проводить тестирование сайта с помощью EasyQA Chrome Extension

EasyQA Chrome Extension позволяет создать баг репорт с вашего веб-сайта или веб-приложения, не тратя время на отправку информации,помогает в кратчайший срок начать работу по исправлению бага.

Использовать EasyQA Chrome Extension для работы с багами очень просто. Всё, что вам нужно сделать, это:

  • Создайте токен для Вашего Проекта
  • Установите EasyQA Chrome Extension в свой браузер
  • Залогиньтесь (по желанию).

Основные возможности EasyQA Chrome Extension:

  • Возможность репортить баг непосредственно с вашего веб-сайта или веб-приложения
  • Возможность создания баг репорта как для зарегистрированных, так и для незарегистрированных пользователей
  • Создание скриншотов
  • Видеозапись обнаруженных багов
  • Подготовка и отправка баг репорта в иллюстрированной форме

Даже, если Вы настолько терпимы, что можете в течение получаса 18 раз перезапустить программу после сбоя и только после этого метнуть монитор точно в окно, Вы согласитесь с тем, что работа с данной программой была бы более комфортной, если бы она не «падала».

Как же сделать так, что бы случаи падения, зависания, невыполнения нужных действий разработанной Вами программы стали весьма редкими?

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

И это средство называется ТЕСТИРОВАНИЕ программного продукта .

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

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

Когда и кто?

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

Тем не менее, все разработчики сходятся во мнении, что тестирование программного продукта с точки зрения классификации по целям должно делиться на два класса:

  • Функциональное тестирование
  • Нефункциональное тестирование

Функциональное тестирование

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

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

Для проведения функционального тестирования персоналом отдела технического контроля разрабатывается документ программа и методика испытаний функционала приложения (ПМИ). Документ ПМИ содержит перечень сценариев тестирования программного продукта (test cases) с подробным описанием шагов. Каждый шаг сценария тестирования характеризуется действиями пользователя (специалиста по тестированию) и ожидаемыми результатами – ответной реакции программы на эти действия. Программа и методика испытаний обязана имитировать эксплуатацию программного продукта в реальном режиме. Это означает, что сценарий тестирования должен быть построен на основе анализа операций, которые будут выполнять будущие пользователи системы, а не быть искусственно составленной последовательностью понятных только разработчику манипуляций.

Обычно, функциональное тестирование проводится на двух уровнях:

  • Компонентное (модульное) тестирование. Тестирование отдельных компонентов программного продукта, сфокусированное на их специфике, назначении и функциональных особенностях.
  • Интеграционное тестирование. Данный вид тестирования проводится после компонентного тестирования и направлен на выявление дефектов взаимодействия различных подсистем на уровне потоков управления и обмена данными.

Нефункциональное тестирование

Нефункциональное тестирование оценивает такие качества программного продукта, как, например, эргономику или производительность.

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

Как следует из названия, при нефункциональном тестировании проверяется соответствие программного продукта нефункциональным требованиям из технического задания на его создание. И, как в случае с функциональным тестированием, для нефункционально разрабатывается программа и методика испытаний.

Тестирование встроенного ПО и соблюдение стандартов в эру Agile

Соблюдение отраслевых стандартов – это не то, чем вы можете пренебречь или заняться позже; это неотъемлемая часть процесса разработки встроенного программного обеспечения (ПО). Для некоторых индустрий, - таких как авионика, автомобилестроение и здравоохранение, - строгое следование стандартам качества при разработке сложных и безотказных встроенных систем становится жизненно необходимым условием выпуска продукта на рынок. Традиционно, тестирование играет важную роль в разработке встраиваемых систем для регулируемых стандартами отраслей. Однако за последние годы устоявшиеся практики и процессы тестирования, их место и роль в подобных проектах значительно преобразились. Это резко изменило все правила игры, а когда правила игры меняются, необходимо меняться вместе с ними, чтобы выиграть.

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

Тестирование производительности

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

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

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

Документация для тестирования

Как уже было указано выше, тестирование проводится в соответствии с программой и методикой испытаний, которая разрабатывается в соответствии с ГОСТ 34.603-92.

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

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

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

Если результат тестирования отрицательный, проводится устранение недостатков и повторное тестирование.

Исследовательское тестирование

Исследовательское тестирование (ad hoc тестирование - подвид функционального тестирования. Оно применяется в быстрорастущих проектах с гибкими методиками разработки, где нет четкой документации и требований. Исследовательское тестирование - высший пилотаж в тестирование программного обеспечения. Качественное тестирование доступно специалистам с высшей квалификацией и практически полностью зависит от исполнителя, его опыта, знаний (как в предметной области, так и в методоиках тестирования), способности быстро проникать в суть.

Нагрузочное тестирование

Нагрузочное тестирование - процесс анализа производительности тестируемой системы под воздействием нагрузок. Цель нагрузочного тестирования- определить способность приложения к внешним нагрузкам. Обычно испытания проводятся в несколько этапов.

1. Генерация тестовых сценариев

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

2. Разработка тестовой конфигурации

Имея сценарии тестирования, важно распределить порядок возрастания нагрузки. Для успешного анализа необходимо выделить критерии оценки производительности (скорость отклика, время обработки запроса и т.д.).

3. Проведение тестового испытания

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

Автоматизация тестирования

Основная особенность автоматизированного тестирования - возможность быстрого проведения регрессионных тестов. Главными плюсами автоматизации (по даннымотчета компании Worksoft) является увеличение эффективности персонала, более раннее обнаружение дефектов и более высокое качество бизнес-процессов. Эти преимущества компенсируются существенным недостатком: дороговизна, - из-за высокой цены на внедрение и поддержку автоматизации тестирования, около 50% компаний до сих пор применяют в основном ручное тестирование.

Тестирование юзабилити

Любое приложение создается для того, чтобы им воспользовались. Удобство использования - важный качественный показатель программы. IT индустрия знает множество примеров, когда проекты взлетали после удачного исправления удобства использования. Чем шире аудитория, тем важнее фактор юзабилити. Тестирование юзабилити включает в себя детальный анализ поведения пользователей. Для оценки эргономики важно иметь данные не только о скорости выполнения бизнес-задачи, но и об эмоциях пользователя, мимике лица, тембра голоса.

Конфигурационное тестирование

Конфигурационное тестирование дает уверенность, что приложение заработает на разных платформах, а значит у максимального числа пользователей. Для ВЕБ-приложений обычно выбирают тестирование на кросс-браузерность. Для Windows приложений - тестирование на различных операционных системах и битностях (x86, x64). Важной составляющей конфигурационного тестирования является тестовая инфраструктура: для проведения испытаний нужно постоянно поддерживать парк тестовых машин. Их число варьируется от 5 до нескольких десятков.

Интеграционное тестирование

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

Стресс тестирование

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

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

Функциональное тестирование: куда направить основные усилия?

На модульное и системное тестирование;

На проверку «белого» или «черного» ящика;

На ручное тестирование и автоматизацию;

На проверку нового функционала или ;

На «негативные» или «позитивные» тесты.

Между всеми этими направлениями деятельности важно найти правильный путь, который будет являться «средним», чтобы сбалансировать усилия, используя преимущества каждого из направлений по максимуму.

Проверка программного обеспечения осуществляется различными способами, одним из которых является тестирование по принципу «черного ящика» или с управлением по данным.

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

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

Функциональное тестирование предполагает правильный выбор теста. При этом принято различать такие методы формирования наборов для них:

Анализ граничных значений;

Эквивалентное разбиение;

Предположение об ошибках;

Анализ связей между причинами и следствием.

Можно рассмотреть каждый из них отдельно.

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

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

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