Тестирование программных средств Оглавление Требования к тестировщику Мифы о QA-инженере Классические модели жизненного цикла ПО Что такое качество ПО Критерии качества ПО История «бага» Типы тестирования Требования к тестировщику (подборка из описания вакансий) Деструктивное мышление Умение точно описывать конфигурацию системы Умение четко документировать результаты Способность (психологическая) приносить плохие вести Стрессоустойчивость Гибкость мышления Способность одновременно видеть и всю картину, и детали Экспертные знания в различных областях (помимо тестирования) Умение программировать Умение быстро обучаться и осваивать новые программы и инструменты Терпение Мифы о QA-инженере Менее квалифицированная работа, чем разработчик Стартовая позиция прежде чем приступать к программированию Работа скучная, рутинная. У программиста более творческая и интересная Классические модели жизненнго цикла ПО Каскадная модель Каскадная модель с промежуточным контролем Спиральная модель Основные этапы жизненного цикла Спецификация требований (Оценка реального объема проекта, его целей и задач) Анализ (исследование бизнес-процессов) Проектирование (формирование модели данных) Реализация Тестирование Внедрение Эксплуатация и техподдержка Каскадная модель Спецификация требований Анализ Проектирование Реализация Тестирование Внедрение Эксплуатация и техподдержка Водопад с обратной связью Спецификация требований Модель базируется на том, что человек никогда не ошибается Является идеалом, который, к сожалению, недостижим Анализ Проектирование Реализация Тестирование Внедрение Эксплуатация и техподдержка Спираль проектирование реализация тестирование Анализ Спецификация требований Внедрение и эксплуатация Что такое качество? Термин неясен и неоднозначен, в связи с тем, что: Слишком «широкий» термин существует множество аспектов Каждый понимает под «качеством» свое термин «качество» - частью нашего повседневного общения, однако общепринятое и профессиональное использование сильно отличается Популярный взгляд на качество нематериальное и "неосязаемое" – о нем можно спорить, его можно критиковать и восхвалять, но взвесить и измерить невозможно качество неразрывно связанно с роскошью и первым сортом – чем больше наворотов, тем качественнее; качество ограниченно определенным классом дорогостоящих продуктов Профессиональный подход к качеству Пригодность к использованию Делает ли данный продукт то, в чем я нуждаюсь, облегчает ли он мою работу, могу ли я его использовать так, как мне удобно. Соответствие специфицированным и собранным требованиям делает ли данный продукт все то, что указано в требованиях. Критерии качества Понятность Полнота Краткость (отсутствие избыточности) Портируемость Согласованность (соответствие программы Сопровождаемость (Насколько сложно изменить документации) программу для удовлетворения новых требований) Тестируемость Usability (Простота и удобство использования) Надежность Эффективность (использования ресурсов) Безопасность Тестирование программного обеспечения Определения: - процесс, помогающий определить корректность, полноту и качество разработанного программного обеспечения Задача: - Можно ли полностью протестировать программный продукт? О происхождении «бага» 9 сентября 1945 - «First actual case of bug being found» (с) Грейс Хоппер в журнале тестирования MARK II “It has been just so in all of my inventions. The first step is an intuition, and comes with a burst, then difficulties arise—this thing gives out and [it is] then that «Bugs»—as such little faults and difficulties are called—show themselves and months of intense watching, study and labor are requisite before commercial success or failure is certainly reached.” © Томас Эдисон, 1878 Типы тестирования По этапам жизненного цикла: Юнит тестирование – тестирование базовых функциональных элементов Интеграционное тестирование – тестирование сборки целостного решения из отдельных компонентов Системное тестирование – тестирование программного продукта как единого целого Приемо-сдаточные испытания – тестирование совместно с заказчиком • Альфа-тестирование • Бета-тестирование Типы тестирования По доступности исходного кода Тестирование черного ящика – исходный код не доступен Тестирование белого ящика – исходный код доступен Тестирование серого ящика – нечто среднее (тестирование идет со стороны GUI, но в случае проблем не пренебрегают исследованием и исходного кода) Относительно выполнения процесса тестирования Ручное тестирование Автоматизированное тестирование Типы тестирования Относительно направления тестирования Юзабилити тестирование – удобство использования Тестирование безопасности – защита данных Тестирование производительности – работа на пиковых нагрузках и с большими объемами данных Стресс-тестирование – проверка на предмет устойчивости к сбоям Регрессионное тестирование – проверяется, воспроизводятся или нет старые ошибки после новых правок Дымовое тестирование – тестирование нового релиза на базовую работоспособность на минимальном наборе тестов Соотношение типов тестирования Черный ящик Стеклянный ящик Юнит тестирование Интеграционное тестирование Системное тестирование Х Х Х Х Приемосдаточные испытания Х