662
.pdfМинистерство образования и науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования
«Нижегородский государственный архитектурно-строительный университет»
Никитенкова С.П.
ТЕСТИРОВАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
Учебно-методическое пособие по подготовке к лекционным и практическим занятиям
(включая рекомендации по организации самостоятельной работы)
для обучающихся по дисциплине «Тестирование программного обеспечения»
по направлению подготовки 09.03.04 Программная инженерия профиль Разработка программно-информационных систем
Нижний Новгород
2018
УДК 004.9
Платов А.Ю. / Тестирование программного обеспечения [Электронный ресурс]: учеб.-метод. пос. / А.Ю. Платов; Нижегор. гос. архитектур. - строит. ун-т – Н. Новгород: ННГАСУ, 2018. – 14 с.– 1 электрон. опт. диск (CD-RW).
В настоящем учебно-методическом пособии по дисциплине «Тестирование программного обеспечения» даются конкретные рекомендации учащимся для освоения как основного, так и дополнительного материала дисциплины и тем самым способствующие достижению целей, обозначенных в учебной программе дисциплины. Цель учебно-методического пособия — это помощь в усвоении лекций, в подготовке к практическим занятиям.
Учебно-методическое пособие предназначено для обучающихся в ННГАСУ по дисциплине «Тестирование программного обеспечения» по направлению подготовки 09.03.04 Программная инженерия, профиль Разработка программно-информационных систем.
Учебно-методическое пособие ориентировано на обучение в соответствии с календарным учебным графиком и учебным планом по основной профессиональной образовательной программе направления 09.03.04 Программная инженерия, профиль Разработка программноинформационных систем, утверждённым решением учёного совета ННГАСУ от 02.03.2018 г. (протокол № 3).
© |
А.Ю. Платов, 2018 |
© |
ННГАСУ, 2018 |
2
Оглавление
1. |
Общие положения .......................................................................................................................... |
4 |
|
|
1.1 |
Цели изучения дисциплины и результаты обучения ........................................................... |
4 |
|
1.2 |
Содержание дисциплины........................................................................................................ |
4 |
2. |
Методические указания по подготовке к лекциям...................................................................... |
6 |
|
|
2.1 |
Общие рекомендации по работе на лекциях......................................................................... |
6 |
|
2.2 |
Общие рекомендации при работе с конспектом лекций ..................................................... |
6 |
|
2.3 |
Общие рекомендации по изучению материала лекций ....................................................... |
6 |
|
2.4 |
Контрольные вопросы............................................................................................................. |
8 |
3. |
Методические указания по подготовке к практическим занятиям ......................................... |
10 |
|
|
3.1 |
Общие рекомендации по подготовке к практическим занятиям...................................... |
10 |
|
3.2 |
Примеры задач для практических занятий ......................................................................... |
10 |
4. |
Методические указания по организации самостоятельной работы........................................ |
11 |
|
|
4.1 |
Общие рекомендации для самостоятельной работы.......................................................... |
11 |
|
4.2 |
Темы для самостоятельного изучения................................................................................. |
13 |
|
4.3 |
Учебно-методическое обеспечение самостоятельной работы.......................................... |
13 |
|
4.4 |
Задания для самостоятельной работы ................................................................................. |
13 |
3
1. Общие положения
1.1 Цели изучения дисциплины и результаты обучения
Целями освоения учебной дисциплины «Тестирование программного обеспечения» является приобретение студентами теоретических и практических навыков тестирования программных продуктов и улучшение навыков разработки программного обеспечения в области повышения качества программ.
В процессе освоения дисциплины студент должен Знать:
- методы тестирования программного обеспечения, верификация, качество ПО
-основные методы тестирования программного обеспечения баз данных
-типовые методы контроля, оценки и обеспечения качества программной продукции
Уметь:
-проводить тестирование компонентов программного обеспечения информационных систем
-проводить анализ методов тестирования баз данных
-использовать стандарты при разработке и документировании программных средств
Владеть:
-методами тестирования программного обеспечения
-навыками тестирования БД в различных профессиональных областях
-методами и средствами автоматизированного тестирования программного обеспечения Данная дисциплина позволит студентам не только систематизировать полученные теорети-
ческие знания, укрепить исследовательские навыки, но и даст возможность ориентироваться в новом предметном поле программной инженерии.
1.2 Содержание дисциплины
Материал дисциплины сгруппирован по следующим разделам:
1.Основные понятия и термины.
Основные понятия и термины. Дефект и его жизненный цикл. Цели и роль тестирования,
качество программного обеспечения и тестирование
2. Классификация тестирования
Классификация тестирования. Классификация по видам. Классификация по последовательности, методам и глубине. Функциональное тестирование. Проблема подготовки тестовых данных. Классы эквивалентности, парное тестирование, граничные значения, прогноз ошибок. Сложные ошибки: синхронизации (data races), утечки памяти
3. Организация тестирования
Тестовые сценарии и инструменты тестирования. Шаблон и примеры тестовых сценариев.
4
Листы проверки. Формы требований к ПО. Понятие покрытия требований, кода. Инструменты подготовки тестовых данных
4. Автоматизация тестирования
Автоматизация тестирования. Структура и шаблоны тестов для формирования тестовогонабора для автоматического прогона. Инструментальные системы автоматизациитестирования. Затраты, связанные с тестированием. Ручные и автоматизированные тесты,описание тестовых наборов и тестовых отчетов. Жизненный цикл дефекта. Метрики,используемые при тестировании.
5. Статическое и динамическое тестирование
Статическое и динамическое тестирование. Модель динамического тестирования. Тестовые данные и оракулы. Тестирование и требования к ПО
6. Тестирование usability и accessibility, конфигурационное, безопасности, локализации
Тесты на человеческий фактор, эстетику интерфейса и его непротиворечивость, наличие и качество оперативной и контекстной помощи, руководств и учебных материалов.
7. Тестирование и производственные процессы
Тестирование и производственные процессы. Гибкие и классические методологии. Особенности организации тестирования в различных процессах. Жизненный цикл ПО. Задачи тестирования на различных этапах жизненного цикла ПО. Разработка управляемая тестированием
8. Тестирование производительности
Тестирование производительности, надежности и специальные виды тестирования. Виды нагрузочного тестирования и их задачи. Критерии. Инструменты автоматизации нагрузочного тестирования.
9. Стратегии и планирование тестирования.
Содержание плана тестирования. Выход тестирования. Риски. Стратегии и планирование тестирования. Ad-hoc, исследовательское тестирование. Отчетность и прогнозирование.
5
2. Методические указания по подготовке к лекциям
2.1 Общие рекомендации по работе на лекциях
Лекция является главным звеном дидактического цикла обучения. Ее цель — формирование основы для последующего усвоения учебного материала. В ходе лекции преподаватель в устной форме, а также с помощью презентаций передает обучаемым знания по основным, фундаментальным вопросам изучаемой дисциплины.
Назначение лекции состоит в том, чтобы доходчиво изложить основные положения изучаемой дисциплины, ориентировать на наиболее важные вопросы учебной дисциплины и оказать помощь в овладении необходимых знаний и применения их на практике.
Личное общение на лекции преподавателя со студентами предоставляет большие возможности для реализации образовательных и воспитательных целей.
При подготовке к лекционным занятиям студенты должны ознакомиться с презентаций, предлагаемой преподавателем, отметить непонятные термины и положения, подготовить вопросы с целью уточнения правильности понимания. Рекомендуется приходить на лекцию подготовленным, так как в этом случае лекция может быть проведена в интерактивном режиме, что способствует повышению эффективности лекционных занятий.
2.2Общие рекомендации при работе с конспектом лекций
Входе лекционных занятий необходимо вести конспектирование учебного материала. Конспект помогает внимательно слушать, лучше запоминать в процессе осмысленного записывания, обеспечивает наличие опорных материалов при подготовке к семинару, зачету, экзамену.
Полезно оставить в рабочих конспектах поля, на которых делать пометки из рекомендованной литературы, дополняющие материал прослушанной лекции, а также подчеркивающие особую важность тех или иных теоретических положений.
В случае неясности по тем или иным вопросам необходимо задавать преподавателю уточняющие вопросы. Следует ясно понимать, что отсутствие вопросов без обсуждения означает в большинстве случаев неусвоенность материала дисциплины.
2.3 Общие рекомендации по изучению материала лекций
Раздел 1: "Основные понятия и термины" – 2 лекции
Цель: дать основы понимания терминологии предметной области.
Содержание: Тестовые сценарии и инструменты тестирования. Шаблон и примеры тестовых сценариев. Описание начальных условий, входных данных, действий пользователя и ожидаемого результата. Написание тестовых сценариев на основании вариантов использования. Основные ошибки при составлении тестовых сценариев. Примеры тестовых сценариев. Листы проверки.
6
Формы требований к ПО. Понятие покрытия требований, кода. Инструменты подготовки тестовых данных.
Раздел 2: «Классификация тестирования» - 2 лекции
Цель: изучить классификацию тестов в зависимости от задач, которые с их помощью реша-
ются.
Содержание: Классификация тестирования. По объекту тестирования: функциональное тестирование, тестирование производительности, нагрузочное тестирование, стресс-тестирование, тестирование стабильности, конфигурационное тестирование, юзабилити-тестирование, тестирование интерфейса пользователя, тестирование безопасности, тестирование локализации, тестирование совместимости. По знанию внутреннего строения системы: тестирование чёрного ящика, тестирование белого ящика, тестирование серого ящика. По степени автоматизации: ручное тестирование, автоматизированное тестирование, полуавтоматизированное тестирование. По степени изолированности: тестирование компонентов, интеграционное тестирование, системное тестирование. По времени проведения тестирования: альфа-тестирование , дымовое тестирование (англ. smoke testing), тестирование новой функции (new feature testing), подтверждающее тестирование, регрессионное тестирование, приёмочное тестирование, бета-тестирование. По признаку позитивности сценариев: позитивное тестирование, негативное тестирование. По степени подготовленности к тестированию: тестирование по документации (формальное тестирование), интуитивное тестирование (англ. ad hoc testing). Классификация по последовательности, методам и глубине. Функциональное тестирование. Подготовка тестовых данных. Классы эквивалентности, парное тестирование, граничные значения, прогноз ошибок. Сложные ошибки: синхронизации
(data races), утечки памяти.
Раздел 3: «Организация тестирования» – 2 лекции
Цель: изучить основы организации тестирования.
Содержание: Тестирование программного обеспечения — процесс исследования программного обеспечения (ПО) с целью получения информации о качестве продукта. Тестовые сценарии и инструменты тестирования. Шаблон и примеры тестовых сценариев. Проектирование тестов. Способ построения рабочей программы. Монолитное, пошаговое тестирование. Нисходящее и восходящее тестирование. Методы тестирования за столом - инспекции, сквозные просмотры и обзоры программ. Тестирование «белого ящика» и «чёрного ящика». Статическое и динамическое тестирование. Регрессионное тестирование
Раздел 4: «Автоматизация тестирования» – 2 лекции
Цель: изучить способы оценки программ на основе процедурно-ориентированных метрик. Содержание: Автоматизация тестирования. Структура и шаблоны тестов для формирования
тестового набора для автоматического прогона. Инструментальные системы автоматизациитестирования. Затраты, связанные с тестированием. Ручные и автоматизированные тесты, описание тестовых наборов и тестовых отчетов. Жизненный цикл дефекта. Метрики, используемые при тестировании.
Раздел 5: «Статическое и динамическое тестирование» — 2 лекции
7
Цель: изучить способы статического и динамического тестирования.
Содержание: Статическое и динамическое тестирование. Модель динамического тестирования. Ошибки, которые потенциально можно выявить с помощью автоматического статического тестирования. Утечки ресурсов (утечки памяти, неосвобождаемые файловые дескрипторы и т.д.). Возможность переполнения буфера (buffer overflows). Ситуации частичной (неполной) обработки ошибок. Примеры динамического тестирования: модульное тестирование (unit testing), интеграционное тестирование (integrated testing), приемочное тестирование (acceptance testing)
Раздел 6: «Тестирование usability и accessibility» — 2 лекции
Цель: изучить основы оценки доступности интерфейса для пользователей с различными физическими или техническими возможностями.
Содержание: Тестирование usability и accessibility, конфигурационное, безопасности, локализации. Тесты на человеческий фактор, эстетику интерфейса и его непротиворечивость, наличие и качество оперативной и контекстной помощи, руководств и учебных материалов. Тесты на человеческий фактор, эстетику интерфейса и его непротиворечивость, наличие и качество оперативной и контекстной помощи, руководств и учебных материалов.
Раздел 7: «Тестирование и производственные процессы» — 2 лекции
Цель: изучить основы тестирования производительности.
Содержание: Тестирование производительности, надежности и специальные виды тестирования. Разработка нагрузочного теста. Автоматизация нагрузочного тестирования. Нагрузочное (load), стресс (stress), тестирование стабильности (endurance or soak or stability), конфигурационное
(configuration) тестирование.
Раздел 8: "Стратегии и планирование тестирования" -2 лекции
Цель: изучить основы стратегии и планирования тестирования.
Содержание: Стратегии и планирование тестирования. Ad-hoc, исследовательское тестирование. Разработка плана тестирования. Выход тестирования. Оценка рисков. Стратегия оценки рисков. Понятие критического функционала. Требование к численности и квалификации персонала. Проблемы с координацией и кооперацией.
2.4Контрольные вопросы
1.Понятие тестирования ПО. Основные определения.
2.Цели и принципы тестирования (ISTQB)
3.Цели тестирования. Уровень доверия, корректное поведение, реальное окружение
4.Тестирование и качество. Уровни восприятия тестирования в компании.
5.Участники тестирования, их роль, квалификация и обязанности.
6.Мониторинг прогресса и контроль тестирования (ISTQB)
7.Модульное тестирование. Понятие модуля. Драйверы и заглушки.
8.V-образная модель. Статическое и динамическое тестирование.
9.Валидация и верификация. Тестирование методом "чёрного" и "белого" ящика.
10.Тестовый случай, тестовый сценарий и тестовое покрытие.
11.Полное тестовое покрытие. Оценка объема и времени полного покрытия
8
12.Повторяемость тестового сценария. Автоматизированное тестирование
13.Регрессионное тестирование
14.Цели и задачи интеграционного тестирования.
15.Алгоритм интеграционного тестирования. Стратегии интеграции.
16.Тестирование системы целиком - системное тестирование.
17.Тестирование возможностей, стабильности, отказоустойчивости, совместимости
18.Тестирование производительности.
19.Альфа и Бета тестирование.
20.Приемочное тестирование.
21.Статическое тестирование. Рецензия, технические анализ, сквозной контроль.
22.Статическое тестирование. Инспекции.
23.Статическое тестирование. Статический анализ кода.
24.Выбор тестового покрытия с помощью анализа эквивалентности.
25.Анализ граничных значений.
26.Выбор тестового покрытия с помощью таблицы решений.
27.Выбор тестового покрытия с помощью диаграммы состояний и таблицы переходов.
28.Выбор тестового покрытия с помощью функционального тестирования.
29.Три наиболее важных принципа тестирования
30.Оценка полноты набора тестов.
9
3. Методические указания по подготовке к практическим занятиям
3.1Общие рекомендации по подготовке к практическим занятиям
Входе подготовки к практическим занятиям необходимо изучать основную литературу, знакомиться с дополнительной литературой, а также с новыми публикациями в периодических изданиях: журналах, газетах и т.д. При этом необходимо учесть рекомендации преподавателя и требования учебной программы.
Всоответствии с этими рекомендациями и подготовкой полезно дорабатывать свои конспекты лекции, делая в нем соответствующие записи из литературы, рекомендованной преподавателем и предусмотренной учебной программой. Целесообразно также подготовить тезисы для возможного выступлений по всем учебным вопросам, выносимым на практическое занятие.
При подготовке к занятиям можно также подготовить краткие конспекты по вопросам темы. Очень эффективным приемом является составление схем и презентаций.
Готовясь к докладу или реферативному сообщению, желательно обращаться за методической помощью к преподавателю. Составить план-конспект своего выступления. Продумать примеры с целью обеспечения тесной связи изучаемой теории с реальной жизнью. Своевременное и качественное выполнение самостоятельной работы базируется на соблюдении настоящих рекомендаций и изучении рекомендованной литературы. Студент может дополнить список использованной литературы современными источниками, не представленными в списке рекомендованной литературы, и в дальнейшем использовать собственные подготовленные учебные материалы при написании курсовых и дипломных работ.
3.2 Примеры задач для практических занятий
Пример № 1 Составление тестов разного типа для проверки различных функциональностей и форм (на-
пример, стандартный интерфейс авторизации, поисковая система базы данных, и т.д)
Пример № 2
Нахождение и описание дефектов, составление Bug Reports, тестирование специальной программы с введенными дефектами разных типов, практическая работа с баг-трекинг системой.
Пример № 3
Проведение нагрузочного тестирования на примере программы под Windows. Моделирование нагрузки, определение KPI targets для нагрузочного тестирования. Использование стандартных утилит Windows для отслеживания состояния системы.
10