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

Что такое тест и тестирование?

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

Тест – это выполнение определенных условий и действий, необходимых для проверки работы тестируемой функции или её части.

Сколько нужно тестов?

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

  • хранятся в Testlink – для ручного тестирования;
  • или программируются в специальных фреймворках (SeleniumWebDriver) – для автоматизированного.

Схема тестирования

В общих чертах, тестирование проходит так:

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

Тестирование в контексте общего процесса разработки

В контексте общего процесса разработки, процесс тестирования (зеленая ветка схемы) выглядит следующим образом:

  1. Юзабилити-тестирование(проверка эргономичности) помогает определить: удобен ли сайт или пользовательский интерфейс для его предполагаемого применения.
  2. Создание чек-листа – подготовка набора тестов, внесение необходимых предложений в разрабатываемые требования (с точки зрения качества).
  3. Тестирование. Получив готовую для проверки программу или её часть, специалист проверяет её соответствие требованиям на выбранном наборе тестов. В случае обнаружения дефектов – передаёт разработчикам набор задач, необходимых для улучшения продукта до состояния соответствия требованиям.
  4. Верификация – проверка, которая показывает: были ли исправлены ошибки, обнаруженные в результате тестов. Обычно тесно связана с регрессионным тестированием. Регрессионное тестирование(regression testing) направлено на обнаружение дефектов в участках кода, которые уже были протестированы. Позволяет отловить регрессионные ошибки (когда после внесения изменений в программу перестаёт работать то, что раньше работало). Хотя подобные тесты могут быть выполнены вручную, чаще для этого используются специализированные программы для автоматизированного тестирования.
  5. Тест производительности(performance testing) проводится на стендах, где в дальнейшем будет эксплуатироваться софт.

    Цель – выявление проблем стенда (не софта), имитация работы пользователей, проверка на стрессоустойчивость. Позволяет убедиться, что приложение/система справится с реальной нагрузкой в будущем.

Польза тестирования

Без проверки программы на соответствие требованиям не приходится говорить о её качестве, поэтому тестирование – неотъемлемая часть разработки. И чем раньше специалист по контролю качества включается в процесс разработки, тем более высококлассный продукт получается на выходе.

Компания "НПО "КОМПЬЮТЕР", дата регистрации – 23 октября 2002 года, регистратор — АДМИНИСТРАЦИЯ ИНДУСТРИАЛЬНОГО РАЙОНА-СТРУКТУРНОЕ ПОДРАЗДЕЛЕНИЕ МУНИЦИПАЛЬНОГО УЧРЕЖДЕНИЯ `АДМИНИСТРАЦИЯ г. ИЖЕВСКА`. Полное официальное наименование — ЗАКРЫТОЕ АКЦИОНЕРНОЕ ОБЩЕСТВО НПО "КОМПЬЮТЕР". Юридический адрес: 426033, г.

ИЖЕВСК, ул. ШКОЛЬНАЯ, д. 11. Телефоны/факсы: +7 (341) 272-77-77. Основным видом деятельности является: "Разработка программного обеспечения и консультирование в этой области". Генеральный директор — Гафур Талгатович Нигматулин. Организационно-правовая форма — закрытые акционерные общества.

Тип собственности — частная собственность.

Регион

Удмуртская республика, г. Ижевск

Регистрация

Компания "НПО "КОМПЬЮТЕР" зарегистрирована 23 октября 2002 года
АДМИНИСТРАЦИЯ ИНДУСТРИАЛЬНОГО РАЙОНА-СТРУКТУРНОЕ ПОДРАЗДЕЛЕНИЕ МУНИЦИПАЛЬНОГО УЧРЕЖДЕНИЯ `АДМИНИСТРАЦИЯ г. ИЖЕВСКА`

ОКВЭД 2001

Разработка программного обеспечения и консультирование в этой области

ОКВЭД 2017

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

Генеральный директор

Нигматулин Гафур Талгатович

ОПФ

Закрытые акционерные общества

Форма собственности

Частная собственность

Адрес

426033, г. ИЖЕВСК, ул. ШКОЛЬНАЯ, д. 11

Телефон

+7 (341) 272-77-77

ОГРН

1021801505120

ИНН

1833020356

КПП

183101001

ОКПО

13071645

ОКАТО

94401000000

Источник Дата Учредители
Статрегистр октябрь 2010
Статрегистр август 2009
Статрегистр октябрь 2012
ЕГРЮЛ февраль 2012
  • Истомин Константин Юрьевич (доля участия — 40%)
  • Нигматулин Гафур Талгатович (доля участия — 60%)

ЗАО НПО "КОМПЬЮТЕР" 2014 2015 2016 2017
Выручка
Чистая прибыль

На главную. К полному списку вопросов.

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

Оглавление

Введение.

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

2.Организация тестирования программ.

Заключение

Введение

Новые методологии программирования, таких как ускоренная разработка приложений (RAD), экстремальное программирование, привели к интенсивным разработкам средств автоматизированного тестирования. Главной особенностью этих методологий является возможность получения различных версий программного продукта всё возрастающего объёма с высокой частотой. Отсюда, современное тестирование приобрело итеративную природу — каждая новая версия сопровождается значительным количеством новых тестов, а так же переработкой существующих автоматизированных средств тестирования. Поскольку для каждой версии проекта необходимо разработать средство позволяющее наиболее полно протестировать все его особенности, актуальны методы и алгоритмы проектирования автоматизированных средств тестирования, с помощью которых можно быстро и с наименьшими затратами разработать подобное средство. Отличительные особенности проектирования автоматизированных средств тестирования вытекает из специфики задач , которые ставятся перед ними:

— Объективная трудность тестирования: это деструктивный ( т.е. обратный созидательному ) процесс. Поэтому, проектируемые средства должны вместо сбора и обработки информации выполнять её разбиение на части и проводить анализ этих частей.

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

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

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

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

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

2. Программе не должна тестироваться её автором;

3. Организация — разработчик программного обеспечения не должна «единолично » его тестировать;

4. Необходимо подбирать тесты не только для правильных (предусмотренных) входных данных, но и для неправильных (непредусмотренных);

5. При анализе результатов каждого теста необходимо проверять, не делает ли программа того, что она не должна делать;

6. «Принцип скопления ошибок» — вероятность наличия не обнаруженных ошибок в некоторой части программы прямо пропорциональна числу ошибок, уже обнаруженных в этой части;

Процесс тестирования состоит из трёх этапов:

1. Проектирование тестов.

2. Исполнение тестов.

3. Анализ полученных результатов.

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

— «Чёрный ящик» — тестирование функционального поведения программы с точки зрения внешнего мира (текст программы не используется).

— «Белый ящик» — тестирование кода на предмет логики работы программы и корректности её работы с точки зрения компилятора того языка на котором она писалась.

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

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

— Compuware Corporation ( DevPartner`s)

— Rational Software from IBM

— Gcov (open source program for TrueCoverage)

— Различные редакторы и средства облегчающие редактирование текста(EditPlus 2, WinEdit и т.д.)

Автоматизированные средства разрабатываются в основном для следующих этапов процесса тестирования:

— Тестирование функциональных требований

— Тестирование пользовательского интерфейса

— Тестирование отдельных модулей

— Комплексное тестирование

— Анализ сложности программных модулей

— Тестирование покрытия программного кода

— Тестирование скорости загрузки системы

— Тестирование граничных условий

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

Существует два основных вида тестирования: функциональное и структурное.

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

1) программа может не соответствовать своей внешней спецификации, что в частности, может привести к тому, что в ее управляющем графе окажутся пропущенными некоторые необходимые пути ;

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

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

2.Организация тестирования программ.

Тестирование программного продукта одновременно проводится в 3-ёх направлениях:

1. Проверка кода (review): Тестер просматривает исходный код визуально и пытается найти нём ошибки, а так же различные несоответствия кода и требований к нему. Под требованием понимается стандарт, которого придерживается разработчики данного проекта, реакция на те или иные действия со стороны среды воздействия на ПО, поведение программного продукта в различных ситуациях.

2.Тестирование высокого уровня: Здесь главная цель тестирования — выяснить, удовлетворяет ли разработка всем требованиям заказчика.

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

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

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

Стандарт ISO 9001
ISO 9001 — стандарт, основанный на принципах контроля качества. В нём, по существу, задаются ключевые функциональные требования, для каждого из которых нужно сказать, что делается, как сделать то, что сказано, и иметь возможность показать, что было сделано. Реализация данного стандарта в среде ПО — ISO 9000-3.

Стандарт ISO/IEC 12207 и IEEE/EIA 12207
ISO/IEC 12207 — это международный стандарт, описывающий структуру процессов жизненного цикла ПО от концепции до изъятия из обращения. Стандарт IEEE/EIA 12207 — адаптация ISO/IEC 12207 для США.

В соответсвии с этими стандартами в той или иной отрасли производства выдвигаются требования к тестрованию ПО. Например в авиации США на основе ISO/IEC 12207 был выработан стандарт RTCA( Requirements and Technical Concepts for Aviation). В нём перечисленны следующие требования к тестированию верхнего и нуижнего уровня: Тестирование верхнего уровня:

— Требования высокого уровня должны включать в себя системные требования к ПО

— Требования высокого уровня должны формулироваться с учётом архитектуры ПО

— Программный код должен удовлетворять архитектуре ПО и требованиям низкого уровня

— Откомпилированный и готовый к использованию код должен удовлетворять требованиям к ПО

— Используемые значения должны технически соответствовать поставленным целям и выполнять их для всех уровней ПО

Тестирование нижнего уровня:

— Проверку (Verification) требований нижнего уровня

— Проверку архитектуры программного обеспечения (ПО)

— Проверку логического покрытия для всех функций написанных в ПО

— Контроль процедур тестирования

— Независимость ПО от тестирования. Т.е. ПО не должно перестраиваться особым образом под тесты

— Тестирование должно несколько раз покрывать исходный код, для обнаружения определённого класса ошибок

— Робастное тестирование

— Тестирование на предмет косвенного обнаружения ошибок. Например: соответствие стандартам разработки ПО.
наверх.

Заключение:

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

Виды испытаний (тестирования) информационной системы

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

Все виды испытаний информационной системы можно разделить на функциональные и нефункциональные тесты.

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

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

Виды функционального тестирования

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

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

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

Виды нефункционального тестирования

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

Стрессовое тестирование (stress testing) – испытание информационной системы в условиях минимальных аппаратных ресурсах и максимально допустимой нагрузки. Цель стрессового тестирования, как понятно из названия, — проверить работоспособность системы в стрессовых ситуациях.

Объемное тестирование (volume testing) – испытания информационной системы в условиях максимальных (предельно допустимых) объемов информации в базе данных. Основным объектом тестирования в данном случае является зависимость времени отклика и прочих аспектов производительности системы от объемов контролируемых данных.

Тестирование стабильности (stability testing) – проверка, может ли испытываемая информационная система длительное время нормально функционировать в условиях, близких к нормальным условиям (средняя нагрузка, средние объемы данных, рекомендуемые аппаратное ресурсы и т.д.).

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

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

Испытание информационной системы на этапах подготовки к эксплуатации

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

Тестирование процесса установки (installation testing) – проверка корректности развертывания программных компонентов системы в различных ее конфигурациях, предусмотренных исходными требованиями.

Тестирование на различных конфигурациях (configuration testing) — проверка работоспособности системы при развертывании отдельных ее компонентов (серверной части, клиентских рабочих мест) в условиях всех возможных (предусмотренных исходными требованиями) вариантах операционных систем и конфигурациях аппаратных и программных ресурсов.

Приемочное тестирование (acceptance testing) – комплексное испытание информационной системы, выполняемое представителями Заказчика по специально разработанной Исполнителем программе и методике испытаний (ПМИ). Цель приемочного испытания – показать, что разработанная и развернутая на территории Заказчика информационная система делает ровно то, что от нее требуется и делает это с заданными параметрами производительности.

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

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

Испытание информационной системы на этапах ее сопровождения

Регрессионное тестирование (regression testing) – тестирование, проводимое по результатам исправления обнаруженных дефектов и ошибок в работе системы и направленное на то, чтобы показать — исправленный дефект или ошибка в настоящий момент не проявляются, а целевая функциональность системы не нарушена.

Предварительное или дымовое тестирование (smoke testing) — вид испытаний, проводимый после выхода новой версии программных компонентов, входящих в состав информационной системы, целью которого является быстро показать общую работоспособность или неработоспособность системы. Если после установки новых версий программных продуктов от системы “не пошел дым”, то это означает, что на первый взгляд все работает, и можно приступать к более детальным видам тестирования. Дымовое тестирование позволяет экономить время, поскольку длится намного меньше, чем весь остальной комплекс испытаний, а его отрицательный результат говорит о том, что дальше можно и не продолжать, поскольку дефекты сборки уже обнаружены.

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

Задача нефункционального тестирования – оценить работу нефункциональных составляющих готового программного продукта.

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

Виды нефункционального тестирования

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

  • Объемное тестирование, главной задачей которого является анализ производительности системы при обработке различных объемов данных. Ключевыми показателями являются период выполнения задачи (время, затраченное на выполнение операции) и количество пользователей (возможность приложения обрабатывать запросы, осуществляемые несколькими пользователями одновременно).
  • Нагрузочное тестирование является одним из важнейших этапов оценки производительности системы. Оно дает возможность проверить стабильность работы разработанного ПО под различными нагрузками. Нагрузочное тестирование, как правило, автоматизировано. Нагрузочный тест моделирует объемы операций, которые выполняют пользователи приложения при различных условиях. Сами же объемы тестов подбираются индивидуально для каждой системы. Стоит учитывать, что нагрузочное  – это не однократное действие, а целый комплекс работ, которые требуют уверенных знаний программирования и предусматривают глубокую аналитическую деятельность.  
  • Стрессовое тестирование дает возможность понять, насколько система устойчива к предельным нагрузкам, а также может ли она самостоятельно восстанавливаться после таких нагрузок. Стрессовое тестирование напрямую связано с производительностью системы: при определенных условиях оно может указывать на снижение рабочих характеристик ПО.

Другие виды нефункционального тестирования

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

Добавить комментарий

Закрыть меню