Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
конспект_ИС.doc
Скачиваний:
270
Добавлен:
22.02.2015
Размер:
1.69 Mб
Скачать

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

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

В начале осуществляется тестирование элементов ( программных модулей), проверяющее результаты кодирования ПО. Цель - индивидуальная проверка каждого модуля. Используются способы тестирования « белого ящика».

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

  • потеря данных при прохождении через интерфейс;

  • отсутствие в модуле необходимой ссылки;

  • неблагоприятное влияние одного модуля на другой;

  • проблемы при работе с глобальными структурами данных и др.;

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

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

  • тестирование восстановления (проверяется время и полнота восстановления);

  • тестирование безопасности (проверяется реакция всех защитных механизмов, встроенных в систему, на проникновение);

  • стрессовое тестирование ( проверяется работа системы при аномальных ситуациях, например, очень большом количестве запросов на ресурсы системы);

  • тестирование производительности в системах реального времени.

Тестирование программного обеспечения в какой – то момент времени необходимо заканчивать. В [6.4] предлагается передавать крупномасштабный программный продукт пользователю на регулярную эксплуатацию, если специалисты по тестированию и все пользователи в совокупности выявляют не более одной ошибки или дефекта каждые два-три месяца использования ПО. Это соответствует высокой наработке на отказ ПО, равной порядка 5-10 тысяч часов и коэффициенту готовности выше 0,99.

6.5.2. Способы повышения оперативной надежности по

При временной избыточности ( см. п.. 2.1), если имеет место сбой ПО (или аппаратуры), можно повторить выполнение программного модуля.

Для организации программного резервирования [6.6] подготавливаются две или несколько версий решения одной и той же задачи. Желательно, чтобы эти версии значительно отличались друг от друга, т.е. основывались на различных алгоритмах или, по крайней мере, выполнялись разными программистами. Маловероятно, что возможные ошибки различных версий программ совпадут. Далее параллельно или последовательно во времени рассматривают выполнение версий ПО непосредственно в процессе эксплуатации. Если версий программ две, то говорят о дуальном программировании, иначе (при нескольких подготовленных вариантах ПО) выполняется n- версионное программирование.

При дуальном программировании, если обнаруживается расхождение результатов ( результаты сравниваются соответствующими аппаратными или программными средствами), необходимо определить по каким-либо дополнительным критериям, какой из результатов правильный и отбросить другой результат. При n- версионном программировании правильный результат выбирается по мажоритарному признаку (см. п. 5).

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

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

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

Существует более экономный способ повышения надежности ПО – метод контрольных функций. При этом методе наряду с вычисляемой функцией по иной программе определяется другая функция, находящаяся с основной функцией в определенных соотношениях. Эти соотношения позволяют не только обнаружить отказ в ПО, но и восстановить искаженный результат. Простейшим примером применения метода контрольных функций является вычисление функций sin x и cos x по отдельным программам. Контрольным соотношением в данном случае будет соотношение sin2x+cos2x=1.

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

    1. Липаев В.В. Надежность программного обеспечения . – М.: Наука, 1998

    2. Орлов С.А. Технологии разработки программного обеспечения: Учебник для вузов.- СПб: Питер, 2004

    3. Майерс Г. Надежность программного обеспечения. – М.: Мир, 1980

    4. Липаев В.В. Методы обеспечения качества крупномасштабных программных средств. – М.: Сантег, 2003

    5. Пальчун Б.П., Юсупов Р.М. Оценка надежности программного обеспечения. – С-Пб.: Наука, 1994

    6. Иыуду К.А. Надежность контроль и диагностика вычислительных машин и систем. - М.: Высшая школа, 1989

    7. Капбертсон Р.,Браун К.,Кобб Г. Быстрое тестирование: Пер. с англ.- М.: Издательский дом « Вильямс», 2002

    8. Гнеденко Б.В., Беляев Ю.К., Соловьев А.Д. Математические основы теории надежности. - М.: Наука, 1966