Лекция 12. Проведение Тестирования. Анализ данных об отказах для принятия решений (Лекции)
Описание файла
Файл "Лекция 12. Проведение Тестирования. Анализ данных об отказах для принятия решений" внутри архива находится в папке "Лекции". PDF-файл из архива "Лекции", который расположен в категории "". Всё это находится в предмете "надёжность программного обеспечения" из 7 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст из PDF
НАДЁЖНОСТЬ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯЛекция 12:Проведение тестирования.Анализ данных оботказах для принятия решенийВМиК МГУ им. М.В. Ломоносова,Кафедра АСВК, Лаборатория Вычислительных КомплексовАссистент Волканов Д.Ю.План лекцииРаспределение ресурсов притестировании Методы тестирования Диаграмма надёжности Модель RDC Критерии выпуска ПО2SRE: процесс• 5 шагов в SREпроцессе:– Определить необходимыйуровень надежности– Разработатьфункциональный разрез– Подготовить длятестирования– Выполнить тестирование– Проанализировать данныеоб ошибках ииспользовать их дляпринятия решенийDefine NecessaryReliabilityDevelopOperational ProfilePrepare for TestExecute TestApply Failure Datato Guide Decisions3Как распределить время1)2)3)Между тестируемыми системамиМежду функциональным,регрессионным и нагрузочнымтестированием для каждой изподсистемМежду режимами функционированиядля нагрузочных тестов каждой изподсистем41.
Распределение время тестирования вмасштабах системыИнтерфейсВыделяйте время надля сторонних системтестированиесвязанных систем всоответствии сПриобретённые РазработанныерассчитаннымкомпонентыкомпонентырискомРаспределяйтеоставшееся время вОС, системное ПОсоответствии спропорциями,Аппаратное обеспечениеопределёнными длятестовых сценариев52.
Распределение времени ирост надёжностиПри росте надёжности для каждойподсистемы и каждого нового тестовогосценария выделяйте время на:Функциональное тестирование[первая версия программы]Регрессионное тестирование[последующие версии программы]При этом гарантируется проверка всехновых критических операций.Оставшееся время выделяется нанагрузочное тестирование.63. Распределение временинагрузочного тестирования•Выделяйте время нагрузочноготестирования между режимамифункционирования программы всоответствии с числом операций в каждомиз нихПример:РежимПропорцияоперацийПиковаянагрузка0.1Инициализация0.7Часы простоя0.27Запуск тестовых сценариев (1)Последовательность тестирования:1.
Приобретённые компонентыПроверочные тесты2. Разрабатываемая системаСначала функциональные, затем нагрузочные тестыдля первой версии программыСначала функциональные, затем регрессионные тестыдля последующих версий программы3. Интерфейсы других системТолько нагрузочные тестыДопустимо изменение порядка илипараллельное тестирование8Запуск тестовых сценариев (2)При тестах на увеличение надёжности сначалапроводите функциональное, а затем нагрузочноетестирование. Проводите регрессионноетестирование после каждого значительногоизменения программыВыполнение тестов проводится в случайное времяПри функциональном тестировании новые тесты ирегрессионные тесты предыдущей версиипрограммы выполняются в случайном порядкеПри нагрузочном тестировании вызывайте сценариикаждого режима функционирования в соответствиис выделенным для него временемЧисло нагрузочных тестов определяется временем,выделенным для данного режима9функционированияВыбор сценариев (1)Для нагрузочных тестов, сценарии могутвыбираться повторно.
Для функциональныхи регрессионных тестов это не такПри функциональном и регрессионномтестировании результаты прогонов скореевсего будут идентичными, так как влияниекосвенных переменных сведено к минимумуПри нагрузочном тестировании результатынескольких прогонов скорее всего будутотличаться10Выбор сценариев (2)•Зачем повторять одни и те же тесты?Одна операция может содержать в себенесколько ошибок. Если выборпроизводится без перемещения, тооперация может быть вызвана только одинраз, и вероятность обнаружения другихошибок снижается11Определение отказов системыЧтобы определить факт отказа:1)Найдите отклонения от нормы ввыводе программы2)Определите какие из них вызваныотказами3)Определите время возникновенияотказа4)Определите класс тяжести отказа5)Задокументируйте отказ121.
Анализ вывода программы1.Некоторые отклонения отнормального поведения можно найтис помощью средств отладки (GDB,…)Примеры:Неверное обращение к памятиВзаимная блокировка процессовЗависаниеetc.132. Отклонения и ошибкиС помощью ручного анализаотклонения можно сделать вывод, чтонарушаются требования к программе,следовательно произошёл отказОтказы наибольшей тяжести можноопределить без анализа выводапрограммы:Аварийное завершение программыНеполное выполнение поставленнойзадачи143. Время возникновенияотказаДля определения времени отказаиспользуйте ту же меру, что и призадании желаемой целевойинтенсивности отказовДля тестов функциональностиизмеряйте время, когда произошёлотказДля тестов надёжности системыиспользуйте интервальную оценку.[5 отказов за 1000 операций]–154. Определение классатяжести отказаВыберете один из описанных ранееклассов тяжести отказов, который бысоответствовал найденной ошибкеЗадокументируйте отказы и их классытяжестиНачинайте исправлять ошибки сотказов, имеющих больший класстяжести16Терминология (1)Статический анализРучная проверка кодаМетоды нахождения отклонений и ошибокВзаимопроверкаФормальная проверкаАудит исходного кодаПроверка интерфейсовПоблочное тестированиеАнализ потоков данныхСтруктурный анализ17Терминология (2)Динамический анализИнструментализацияСтруктурный анализИзмерение производительности: временивыполнения и объёма потребляемых ресурсовИзмерение производительности: анализсложности алгоритма работыВставка динамических проверок (assert)Интерактивное тестирование и отладкаСлучайное тестирование18Терминология (3)Динамический анализФункциональное тестированиеМутационное тестированиеНа основе спецификацииПостроение причинно-следственных связейМутационный анализПодсев ошибокТестирование в реальном времениФормальное тестирование19Простейшие технологиитестированияДва широко известных метода:Метод прозрачного ящикаОбнаруживает ошибки на основеанализа внутренней структурыпрограммыМетод чёрного ящикаОценивает насколько хорошопрограмма выполняет предъявляемые кней требования201.
Метод прозрачного ящикаТребует детального знанияреализации программыЦель – обеспечить полное покрытиекодаКак много путей выполнения программыпроверены на самом деле?Эффективность теста часто измеряетсяразмером покрытого им кода212. Метод чёрного ящикаПредполагает, что требования уже прошливалидациюПоиск нереализованной или неправильнореализованной функциональностиЗадаёт входные данные, заранее зная какойрезультат должен быть полученСуществует много методов:Тестирование производительностиСтресс-тестированиеТестирование надёжностиТестирование безопасностиetc.22Уровни тестированияТестированиесвязано с цикломразработкипрограмм:БлочноеИнтеграционноеПользователямиУстановкиРегрессионноеОценкаресурсовРазвёрткасистемыОписаниепрограммыТестированиепользователямиАбстрактнаяархитектураИнтеграционноетестированиеДетальнаяархитектураБлочноетестированиеРеализация231. Блочное тестированиеТестирование одного модуляпрограммы методом белого ящика вконтролируемом окружении инезависимо от других модулейМодуль – функция или небольшой ихнабор, который может быть полностьюпокрыт тестовыми сценариями242.
ИнтеграционноетестированиеТестируется комбинация модулейФокус на их взаимодействииМетоды белого и чёрного ящикаСуществует три основных подхода:Сверху-внизСнизу вверхБольшого взрыва253. Внешнее тестированиеМетод чёрного ящикаПроверяет, что система корректнореализует требуемый функционалИногда известно как альфатестированиеТестирование имитируетиспользование системы конечнымипользователями264.
Системное тестированиеБолее робастная версия внешнеготестированияРазличие в тестовой платформеОкружение идентично реальномуУчитывается «железо», размеры БД, …Позволяет лучше оценитьнефункциональные требования(производительность, безопасность,…)275. ТестированиепользователямиТакже известно как бета-тестированиеСистема тестируется конечнымипользователямиЕщё более реалистичное тестированиепо сравнению системнымВалидация на основепользовательских представленийОпределяет степень готовности дляразвёртывания286.
Тестирование установкиПроверка полной, частичнойустановки/удаления программы и еёобновленияРасплывчато описывается влитературе297. РегрессионноетестированиеТестирование модифицированнойпрограммыПроверяет, что внесённые изменения неповлияли на работу остальных подсистемДля тестирования выбираются сценарии, наработу которых могут повлиять внесённыеправкиИсправление ошибки может добавить новуюошибку, нарушить структуру иликорректность интеграции с другимикомпонентами30Стоимость ошибкиТребованиеПроектированиеКодирование50 %ФункциональноетестированиеСистемноетестированиеПолевыеиспытанияПричиныотказов40 %10 %3%5%7%25 %Найденныеотказы50 %10 %20 KDM12 KDM1 KDM1 KDM1 KDMСтоимостьошибки6 KDM1 KDM = 1,000 Немецких марокCMU.