Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Станд_методичка (БРОШЮРА для печати)темы 1-16.doc
Скачиваний:
14
Добавлен:
01.05.2025
Размер:
2 Мб
Скачать
☆

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

13.1 Тестирование программного обеспечения (ПО)

13.2 Место и цель этапа тестирования ПО

13.3 Виды тестирования

13.4 Передовые технологии в тестировании (автоматизация тестирования).

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

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

Создание и поддержка банка тестов – сложная задача и требует высокой квалификации сотрудников отдела тестирования. За все надо платить, но качество конечного продукта того стоит. Тестирование – это дорогостоящий и трудоемкий процесс, поэтому зарубежными компаниями ведутся разработки в области автоматизации тестирования. Попытки применения автоматизации тестирования связаны с тем, что в принципе невозможно полностью протестировать программный продукт, соответственно специализированные пакеты приближают «покрытие» тестами программы к 100%. На рынке специальных сред для тестирования программного обеспечения можно отметить разработки ведущих в этой области фирм: Rational (Visual Test, Rational Robot, Team Test и др.), Mercury Interactive (WinRunner), Segue Software (QA Partner).

Сегодня можно и нужно говорить о программном обеспечении как о промышленном продукте, соответственно о создании ПО – как о производстве. Существует множество стандартов поддержки жизненного цикла программного обеспечения. Разработано множество стандартов и методик поддержки стадий ЖЦ ПО, например стандарты ISO 9000 и ISO 9001, разработанные Международной организацией по стандартизации (ISO).

13.2 Место и цель этапа тестирования программного обеспечения

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

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

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

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

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

  2. Законодательно закрепленные принципы работают и активно используются в правоприминительной практике. Особенно это относится к защите авторских прав.

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

  4. Возросли требования заказчика к качеству программного обеспечения. Данный момент связан с правовой базой (законы о защите прав потребителей), жесткой конкуренцией на рынке.

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

По этим причинам процессы обеспечения и контроля качества, одним из которых является тестирование, приобретают в настоящий момент большое значение и актуальность. Целью тестирования является обнаружение максимального количества ошибок, а не всех ошибок в программе. Обнаружение всех ошибок невозможно. Полное и абсолютное тестирование выглядит скорее мечтой, чем реальностью. Вот простой пример: еще в 1979 г. Майерс (Myers) описал некоторый простой алгоритм. В нем был всего один цикл и несколько операторов условного перехода. В большинстве языков программирования для кодирования такого алгоритма потребуется не более 20 строк кода. Но такая программа имеет более 100 триллионов путей выполнения! Самому быстрому тестировщику для полного тестирования потребовался бы как минимум миллион лет. Аналогичная программа из 100 строк имеет 1018 триллионов путей выполнения, если на проверку выполнения одного пути тратить 1 секунду, то на полное ее завершение не хватит времени существования всей нашей вселенной, время жизни которой меньше 4 • 1017 секунд!

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

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

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

Тестирование программного обеспечения имеет тесную связь с качеством программного обеспечения.

Внутреннее и внешнее качество программного обеспечения

Современные идеологи проблем качества разделяют понятие «качество» на внешнее (external) и внутреннее (internal). Внешнее качество программного обеспечения – его способность удовлетворить потребность конечного пользователя. Именно на это и направлен процесс тестирования программного обеспечения – обнаружение ошибок и несоответствий, т.е. в процессе тестирования выявляются те моменты (ошибки, неправильная реализация или отсутствие функциональных возможностей), которые не удовлетворили бы конечного пользователя. Тестирование программного обеспечения обеспечивает контроль качества продукта, поставляемого конечным пользователям.

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