Андрей Попов. Доцент.

В этом мире ни в чем нельзя быть абсолютно уверенным, кроме неотвратимости смерти и налогов.
Бенджамин Франклин

Методы тестирования программных продуктов

Короткий вводный курс в тестирование: основные понятия и методики.


Скайп для онлайн-занятий: https://join.skype.com/FroKJb0YxNlT

Вопросы к экзамену

  1. Дефекты в программном обеспечении.
  2. Цели и задачи тестирования ПО. Эволюция подходов к тестированию программного обеспечения.
  3. Методологии разработки ПО. Место и роль тестирования в жизненном цикле программного продукта в различных методологиях.
  4. Жизненный цикл тестирования программного продукта. Источники данных о функциональности программного продукта.
  5. Функциональные и нефункциональные требования к программному продукту. Тестирование документации и требований.
  6. Классификация по уровню детализации приложения. Уровни и пирамида тестирования.
  7. Модульное тестирование. Инструменты для модульного тестирования в Python (doctest, unittest, pytest).
  8. Тестирование модулей "сверху вниз" и "снизу вверх".
  9. Интеграционное тестирование. Инструменты для интеграционного тестирования веб-приложений (Selenium).
  10. Сквозное (end2end) тестирование.
  11. Классификация по субъекту и времени проведения тестирования. Альфа- и бета-тестирование.
  12. Классификация по доступу к коду и архитектуре тестируемой системы. Черный, белый и серый ящики.
  13. Статическое тестирование. Инспекция и прогон кода как инструмент повышения качества ПО.
  14. Классификация по объекту тестирования (функциональное тестирование, тестирование UI, тестирование скорости и надежности, тестирование опыта пользователя)
  15. Классификация по принципам работы с приложением. Позитивное и негативное тестирование.
  16. Классификация по степени важности тестируемых функций. "Дымовое" тестирование, тестирование критического пути, расширенное тестирование.
  17. Классификация по степени автоматизации. Ручное и автоматизированное тестирование.
  18. Функциональное и доменное тестирование.
  19. Регрессионное тестирование и тестирование новых функциональных возможностей.
  20. Приемочное тестирование. Дымовые тесты и санитарное тестирование.
  21. Тестирование производительности. Нагрузочное тестирование.
  22. Опережающее тестирование. Методология разработки TDD.

Литература и ссылки к курсу

  1. Куликов С.С. "Тестирование программного обеспечения. Базовый курс" — 3-е изд. — Минск: Четыре четверти, 2020. — 312 с.
  2. Савин Р. "Тестирование Дот Ком, или Пособие по жестокому обращению с багами в интернет-стартапах" — М.: Дело, 2007. — 312 с.
  3. Мейерс Г. "Искусство тестирования", М.: Финансы и статистика, 1982.
  4. Канер С., Фолк Дж., Кек Нгуен Е. "Тестирование программного обеспечения" — Киев: ДиаСофт, 2000. — 416 с.
  5. Бейзер Б., Тестирование черного ящика. Технологии функционального тестирования программного обеспечения и систем. – СПб.: Питер, 2004. -318 с.
  6. Любанович Б. "Простой Python. Современный стиль программирования" — СПб.: Питер, 2021. — 592 с.
  7. Хирьянов Т. Лекция "Качество ПО. Тестирование" курса "Практика программирования на Python", МФТИ, 2020 г.
  8. Куликов С.С. Онлайн-курс "Software Testing Introduction"

Презентации к лекциям

Схема сдачи лабораторных работ через Pull Request.

Обзорная лекция

Лабораторные работы

Тематика заданий
  1. Модульное тестирование кода на языке Python.
  2. Ручное интеграционное тестирование веб-сайта.
  3. Автоматизированное функциональное тестирование веб-сайта с помощью фреймворка Selenium.
Отчетность по заданиям

Статистика группы 202М

При расчете баллов учитываются два критерия:
  1. Полнота выполнения задания (в процентах).
  2. Своевременность сдачи задания:
    • К контрольному сроку - коэффициент 1.
    • Задержка до 14 дней - коэффициент 0,8.
    • Задержка 14 дней и более - коэффициент 0,5.