Лекция 11. Подготовка к тестированию (Лекции)
Описание файла
Файл "Лекция 11. Подготовка к тестированию" внутри архива находится в папке "Лекции". PDF-файл из архива "Лекции", который расположен в категории "". Всё это находится в предмете "надёжность программного обеспечения" из 7 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст из PDF
НАДЁЖНОСТЬ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯЛекция 11:Подготовка к тестированиюВМиК МГУ им. М.В. Ломоносова,Кафедра АСВК, Лаборатория Вычислительных КомплексовАссистент Волканов Д.Ю.План лекцииПрямые и косвенные переменныеПолевые испытания и регрессионноетестированияЧто такое сценарий теста?Как управлять сценариями теста?Процесс тестированияКлассы эквивалентности играничные условияКак разрабатывать сценарии тестов?Подготовка успешного тестирования2SRE: процесс• 5 шагов в SREпроцессе:– Определить необходимыйуровень надежности– Разработатьфункциональный разрез– Подготовка длятестирования– Выполнить тестирование– Проанализировать данныеоб ошибках ииспользовать их дляпринятия решенийDefine NecessaryReliabilityDevelopOperational ProfilePrepare for TestExecute TestApply Failure Datato Guide Decisions3Основные понятия (1)Прогон: наименьшее задание, котороеможет быть вызвана внешним воздействием.Прогон ассоциируется с входнымсостоянием (набором входных переменных).Прогоны с одинаковыми входнымисостояниями называются прогонами одноготипаОперация – группа типов прогона с точкизрения её архитектуры программыТестовая процедура – программа, котораяустанавливает переменные окружения ивызывает случайные тестовые сценарии в4случайные моменты времениОсновные понятия (2)Типы тестовТест на поиск ошибок: выполнениеодной операции, максимальнонезависимое от других операцийНагрузочный тест: тестирование нареальных данных с подсчётомпоказателей производительностиРегрессионный тест: проверкафункциональности после каждогозначительного изменения в коде5Основные понятия (3)Прямые входные переменные явноуправляют поведением программыПример: аргументы, введённые данныеВажны во время тестированияфункциональностиКосвенные входные переменные могуттолько влиять на результат операцийПример: сетевой траффик, переменныеокруженияВажны во время нагрузочного тестирования6ПримерПрямые и косвенные входныепеременные и их эффект нарезультат операции7Что такое тестовыйсценарий?Тестовый сценарий – спецификация прогонав виде перечисления имён входныхпеременных и их значенийТестовый сценарий не зависит от режимафункционирования программыОдин и тот же тестовый сценарий можетвыполняться в разных режимахфункционирования.
Поэтому тестовыйсценарий может соответствовать сразунескольким прогонам с разнымпотенциально возможными отказами8Хороший тестовый сценарийСуществует разумная вероятностьобнаружения ошибкиНе обладает избыточностьюЛучше других подходит к сценариюНе слишком прост и не слишкомсложенДелает ошибку в программе очевидной9ПримерТестовый сценарийопределяется входнымсостояниемВ теории (необязательно напрактике) можнопровести прогоны длялюбого входногосостояния10Тестовые сценарии ипрогоныСпецификация косвенных входныхпеременных даёт тестовому сценариюнедостающий контекст для того, чтобы тотстал прогономВо время тестов функциональности влияниекосвенных входных переменных нарезультат должно быть сведено к минимуму,чтобы убедиться в реальной надёжностисистемыИспользование косвенных входныхпеременных важно во время нагрузочныхтестов11ПроцедураСостоит из двух этапов:1) Подготовка тестовых сценариев(управление сценариями)Использование реальных данных ифункциональных профилейПодготовка тестовых процедур2)Создание одной процедуры для каждогорежима функционирования, используяего профиль и частоты использованияопераций12Управление тестовымисценариямиПодготовка тестовых сценариев включает:1.Подсчёт числа новых тестовых сценариев,которые нужно создать для данной версиипрограммы2.Распределение сценариев средиподсистем, которые необходимотестировать[уровень системы]3.Распределение сценариев между новымиоперациями внутри каждой подсистемы[уровень операций]4.Описание новых сценариев тестирования5.Добавление новых сценариев131.
Подсчёт числа новых сценариевМетодология:Число тестовых сценариев зависит от:Времени:(доступное время доступные люди)/(среднее время создания сценария)Стоимости:(доступный бюджет) / (средний расход на созданиесценария)Число выбирается как минимальное израссчитанных значений142. Распределение сценариев междуподсистемами (1)БольшинствоИнтерфейссценариев нужнодля сторонних системориентировать напоиск ошибок вПриобретённые РазработанныеразрабатываемомкомпонентыкомпонентыпродуктеОС, системное ПОАппаратное обеспечение152.
Распределение сценариев междуподсистемами (2)Большинство сценариев нужно ориентировать напоиск ошибок в разрабатываемом продуктеСоздавайте больше сценариев для операций сбольшей вероятностью использованияНе создавайте сценариев для приобретённыхкомпонентов, если они уже использовались ранее.В противном случае создайте для них числосценариев, соответствующее риску ихиспользования в контексте надёжности системыЕсли ваша программа значительно зависит отфункций операционной системы и её надёжностьнеизвестна, то на её проверку необходимовыделить 20-30% сценариев163.
Распределение сценариев междуоперациями (1)1.2.3.4.Конвертируйте графические представленияпрофилей функционирования в табличноепредставлениеНайдите новые критические операции,которые редко встречаются, и выделите длякаждой из них приблизительное числотребуемых сценариевВыделите по одному сценарию для каждойновой редко встречающейся операцииРаспределите оставшееся число сценариевмежду остальными новыми операциями173. Распределение сценариев междуоперациями (2)Найдитепороговуювероятность: 0,5делёные на числоновых сценариев.Выделите поодному тесту длякаждой новойнечастойоперацииНовые операцииНечастыеКритическеРаспределите оставшиеся тестовые сценариимежду оставшимися новыми операциямиВыделите по 24 сценария длякаждойнечастойкритическойоперации183.1 Критические операцииКритическая операция – операция, получениерезультата которой принципиально важно, аотказ выполнения ведёт к значительномуущербу (определённому в соответствии склассами тяжести отказа)Пример критической операции – остановкареактора атомной электростанции в случае егоперегрева.
Эта операция используется крайнередко, но очень важнаВыделяйте только редкие критическиеоперации, так как остальные будут провереныза счёт их использования сразу во многихсценариях выполнения программы193.2 Нечастые операцииНечастые операции – те которые бы непроверялись в случае равномерногораспределения тестовых сценариев из-заочень маленькой вероятности ихиспользованияУстановите порог вероятностииспользования операции. Хороший выборего значения равен отношению 0.5 кколичеству новых тестовых сценариевВыделите по одному тестовому сценариюдля всех операций с вероятностью нижепорогового значения20Пример (1)Число тестовых сценариев: 500Первая версия программы.
Все сценарии новыеПусть в программе есть одна критическаяоперация. Выделяем для ей проверки 2 сценарияРассчитываем пороговое значение вероятностииспользования: 0.5 / 500 = 0.001Пусть число операций с вероятностью нижепороговой равно двум. Выделяем по тесту накаждую из нихРаспределяем оставшиеся сценарии 500 - (2+2) =496 между остальными операциями всоответствии с их вероятностями использования21Пример (2)Вероятности операций для нормальногорежима функционированияНечастыеоперациис вероятностьюниже пороговойКритическая операция22Пример (2)Вероятности операций для нормальногоРаспределяемрежима функционированиясценарии всоответствии свероятностямиНечастыеоперациис вероятностьюниже пороговойКритическая операция234. Задание тестовыхсценариев (1)Простое определение:Тестовый сценарий – спецификацияпрогона в виде перечисления имёнвходных переменных и их значенийЛучшее определение:Тестовый сценарий – случайиспользования, описанный в терминахтестовых входных данных, условийвыполнения и ожидаемых результатовСлучаи использования должны бытьописаны до начала разработки тестовых24сценариев4.
Задание тестовыхсценариев (2)Обычное описание случаяиспользования включает:Имя случая использованияИнициаторЦельUse CaseActorПредусловияРезультат (Постусловия)Детальное описаниеИсключения и альтернативные Use-Case Definitionпути выполнения25Тестовые сценарииДля каждого случая использованиядолжно быть создано не меньше двухсценариев:Один для штатного выполнения, другой –для отказаМожет создаваться и большееколичество сценариев, покрывающихисключения и альтернативные путивыполнения265. Добавление нового сценария внабор тестов программы (1)Набор тестов обычно состоит из старыхсценариев (оставшихся после выходапредыдущих версия программ) и новыхсценариев (для добавленных функций)Для каждого режима функционированияпрограммы необходимо разработать свойпрофиль функционирования теста,отличающийся от профиля программы:Редким операциям уделяется больше вниманияДобавлены новые операции275.
Добавление нового сценария внабор тестов программы (2)Для описания профиля функционированиятеста для заданного режима начните с:Режима и профиля функционирования(для первой версии программы)Режима и профиля функционирования теста(для последующих версий программы)Измените вероятности операций с учётомновых редких критических операцийИзмените вероятности вновь добавленныхопераций с учётом взаимного влиянияопераций друг на друга28Тестовая процедураТестовая процедура – программа,которая устанавливает переменныеокружения и вызывает случайныетестовые сценарии в случайныемоменты времениПодготавливается по одной тестовойпроцедуре для каждого режимафункционирования29Как описать тестовыйсценарий?Для заданной операции определите наборызначений прямых входных переменных, длякоторых программа будет вести себя поодному сценариюТогда тестовый сценарий можно описатькак:Комбинацию значений входных переменныхВремя их передачи на вход программеЕсли число выделенных комбинацийпревосходит число доступных сценариев, тосценарии должны создаваться только для ихчасти30Как создать тестовыйсценарийНа основе пользовательских сценариев ислучаев использования2.
На базе классов эквивалентности1.3.На базе граничных условий4.Подготовка одного теста для класса операцийПрограмма, которая не работает на простыхусловиях, не работает и на граничных условияхНа основе диаграммы изменениясостояний311. Классы эквивалентностиГруппа сценариев «эквивалентна» если: Все они проверяют одну операцию Если один сценарий может найтиошибку, остальные скорее всего тожесмогут Если один сценарий не может найтиошибку, остальные – тоже не смогут Они используют одинаковый наборвходных переменных и влияют назначения одинакового набора32выходных переменныхЗамечание (1)Не забывайте о классахэквивалентности для некорректныхвходных данныхПример:Пусть программа принимает на вход любоецелое число между 1 и 99Тогда существует 4 класса эквивалентности:Целые числа между 1 и 99 (корректный ввод)Любое целое число меньше 1 (некорректныйввод)Любое целое число больше 99 (некорректныйввод)Не целое число (некорректный ввод)33Замечание (2)Обращайте внимание на диапазонзначений переменныхПример:Пусть программа принимает на вход любоецелое число между 1 и 99Тогда существует 4 класса эквивалентности:Сделайте тест для очень больших значенийПроверьте небольшие отрицательные значения,так как знак может обрабатываться некорректно34Замечание (3)Проверяйте переполнение стекарекурсивных программПример:Пусть программа осуществляет рекурсивныйобход дерева в глубинуПроверьте корректность её работы на большомдереве, вытянутом в список35Замечание (4)Если входные данные принадлежат кодной группе, то все числа из этойгруппы должны включаться в одинкласс эквивалентностиПример:Пусть программа просит пользователя ввестиимяПрограмма должна корректно принимать любыебуквы алфавита в любом регистреПопытайтесь ввести однобуквенное или оченьдлинное имяПроверьте корректность обработки символов неиз таблицы ASCII36Замечание (5)Обращайте внимание назависимости между входнымипеременнымиПример:Путь программа принимает на входзначения трёх углов треугольникаПопытайтесь ввести углы, сумма которых неравна 180 градусам372.