Слайд 1Тестирование ПО
Лекция 1. Понятие тестирования. Качество ПО
Штанюк А.А., 2019
Слайд 2Определение тестирования
Тестирование это:
Процесс поиска всех мыслимых ошибок или недостатков в
рабочем продукте [Майерс, 1979]
Проверка работоспособности продукта
Оценка качества продукта
Информирование руководства о
качестве продукта с целью улучшения управления рисками
Слайд 3Определение тестирования
Тестирование – процесс исследования программы с целью нахождения в
ней угроз качеству продукта
“Testing can be used to show the
presence of bugs, but never their absence!” [E.W. Dijkstra]
«Тестирование может быть использовано для демонстрации наличия ошибок, но никогда для их отсутствия» [Дейкстра]
Слайд 4Зачем тестировать?
Демонстрация отсутствия ошибок в программе?
Демонстрация корректности исполнения программой предусмотренных
сценариев?
Убедиться, что программа выполняет свое предназначение?
Убедиться, что у программы нет
«побочных эффектов»?
Понять ценность программы для потребителя?
Слайд 5Что такое «хороший тест»?
Тест, подтверждающий отсутствие ошибки?
Тест, находящий ошибку?
Слайд 6Требования к тестированию
Повторимо
Систематизировано
Документировано
Слайд 7История тестирования
До 1956 года тестирование=отладка
1957-1978 Тестирование – демонстрация выполнения требований.
Осознание невозможности «исчерпывающего» тестирования
1979–1982 «период разрушения» цель – поиск ошибок
1983–1987
Цель – оценка продукта и измерение качества. Появление первых систем автоматизированного тестирования
1988-сейчас. Соответствие спецификациям, нахождение дефектов, предотвращение дефектов
Слайд 8Мифы о тестировании
Цель тестирования – демонстрация отсутствия ошибок в продукте
Есть
код, который нет нужды тестировать
Тестирование – это просто. Все способны
тестировать
Тестирование – случайный, не систематизируемый процесс
Тестированию не нужно учиться
Тестирование = отсутствие карьерного роста
Продукт может быть протестирован полностью
Тестирование позволяет найти все дефекты продукта
Все дефекты должны быть исправлены
Автоматизированный тест эквивалентен аналогичному выполненному человеком
Слайд 9Отличие тестирования от программирования
Программирование – процесс конструктивный
Тестирование – процесс деструктивный
Слайд 10Требования к тестировщику
Деструктивное мышление
Умение точно описывать конфигурацию системы
Умение четко документировать
результаты
Способность (психологическая) приносить плохие вести
Стрессоустойчивость
Гибкость мышления
Слайд 11Требования к тестировщику
Способность одновременно видеть и всю картину, и детали
Экспертные
знания в различных областях (помимо тестирования)
Умение программировать
Умение быстро обучаться и
осваивать новые программы и инструменты
Терпение
Слайд 12QA, QC и тестер
Тестер
Выполнение тестов
Quality control
Контроль качества
Quality assurance
Предупреждение ошибок
Слайд 13Качество ПО
Термин неясен и неоднозначен, в связи с тем, что:
Слишком
«широкий» термин -существует множество аспектов
Каждый понимает под «качеством» свое
термин «качество»
- частью нашего повседневного общения, однако общепринятое и профессиональное использование сильно отличается
Слайд 14Популярный взгляд на качество
нематериальное и "неосязаемое" – о нем можно
спорить, его можно критиковать и восхвалять, но взвесить и измерить
невозможно
качество неразрывно связанно с роскошью и первым сортом – чем больше наворотов, тем качественнее; качество ограниченно определенным классом дорогостоящих продуктов
Слайд 15Профессиональный взгляд
Пригодность к использованию
Делает ли данный продукт то, в чем
я нуждаюсь, облегчает ли он мою работу, могу ли я
его использовать так, как мне удобно.
Соответствие специфицированным и собранным требованиям
делает ли данный продукт все то, что указано в требованиях.
Слайд 16Критерии качества
Понятность
Полнота
Краткость (отсутствие избыточности)
Портируемость
Согласованность (соответствие программы документации)
Сопровождаемость (Насколько сложно изменить
программу для удовлетворения новых требований)
Слайд 17Способы повышения качества
Проактивные:
Повышение квалификации разработчиков
Внедрение эффективных процессов разработки ПО
Проектная методология
разработки
Использование стандартов кодирования
Методологии контроля изменений
…
Выравнивание требований к продукту с
ожиданиями заказчика или потребителя
Слайд 18Способы повышения качества
Реактивные:
Инспекции кода
Использование статических анализаторов кода
Динамическое тестирование
Исправление найденных
ошибок
Слайд 19Критерии качества
Тестируемость
Usability (Простота и удобство использования)
Надежность
Эффективность (использования ресурсов)
Безопасность
Слайд 20Принципы тестирования (Майерс)
Необходимая часть тестового сценария – определение ожидаемого результата
Програмист
должен избегать тестирования собственных программ
Организации следует избегать тестирования собственных программ
Вдумчиво
изучайте результаты каждого теста
Тестовые сценарии должны разрабатываться для некорректных входных данных, так же как и для правильных и ожидаемых
Слайд 21Принципы тестирования (Майерс)
Определение что программа делает то что должна –
лишь половина дела. Другая половина – проверка что программа не
делает того чего не должна
Избегайте исключения тестовых сценариев
Не планируйте тесты в предположении, что ошибки не будут найдены
Вероятность нахождения ошибок в секции программы прямо пропорциональна количеству уже найденных там ошибок
Тестирование – исключительно творческая и интеллектуальная задача