Uploaded by Darya Kretova

Lesson 1. Введение в тестирование ПО

advertisement
Занятие 1
Введение в тестирование ПО
Введение. С чего всё начиналось?
•
Только крупные фирмы и институты,
•
единицы продуктов в год,
•
сверхпрофессионализм кадров,
•
низкоуровневые языки разработки ПО.
it-courses.by
Основные «эпохи тестирования»
В 50–60-х годах тестирование представляло собой скорее отладку
программ (debugging). Существовала концепция т.н.
«исчерпывающего тестирования (exhaustive testing)» – проверки всех
возможных путей выполнения кода со всеми возможными входными
данными.
Однако очень скоро выяснилось, что исчерпывающее тестирование
невозможно, т.к. количество возможных путей и входных данных
очень велико, а также при таком подходе сложно найти проблемы в
документации.
it-courses.by
Основные «эпохи тестирования»
В 70-х годах фактически родились 2 фундаментальные идеи тестирования.
Сначала оно рассматривалось как процесс доказательства
работоспособности программы (positive testing),
а затем, наоборот, как процесс доказательства неработоспособности
программы (negative testing).
!!! Неверное утверждение: негативные тест-кейсы должны заканчиваться
возникновением сбоев и отказов в приложении.
!!! Верное утверждение: негативные тест-кейсы пытаются вызвать сбои и
отказы, но корректно работающее приложение выдерживает это испытание и
продолжает работать верно.
it-courses.by
Основные «эпохи тестирования»
В 80-х годах произошло ключевое изменение места тестирования в разработке
ПО: тестирование стало применяться на протяжении всего цикла разработки
(software lifecycle). Появились первые элементарные попытки автоматизировать
тестирование.
В 90-х годах произошёл переход от тестирования как такового к более
всеобъемлющему процессу, который называется «обеспечение качества (quality
assurance)», охватывает весь цикл разработки ПО и затрагивает процессы
планирования, проектирования, создания и выполнения тест-кейсов, поддержку
имеющихся тест-кейсов и тестовых окружений.
it-courses.by
Основные «эпохи тестирования»
В 2000-х годах развитие тестирования продолжалось в контексте поиска всё
новых и новых путей, методологий, техник и подходов к обеспечению качества.
Серьёзное влияние на понимание тестирования оказало появление гибких
методологий разработки.
Автоматизация тестирования уже воспринималась как обычная неотъемлемая
часть большинства проектов, а также стали популярны идеи о том, что во главу
процесса тестирования следует ставить не соответствие программы
требованиям, а её способность предоставить конечному пользователю
возможность эффективно решать свои задачи.
it-courses.by
Основные «эпохи тестирования»
О современном этапе развития тестирования мы будем говорить на
протяжении всего курса.
Основные характеристики:
•
гибкие методологии и гибкое тестирование,
•
глубокая интеграция с процессом разработки,
•
широкое использование автоматизации,
•
колоссальный набор технологий и инструментальных средств,
•
кросс-функциональность команды.
it-courses.by
ПК–революция в разработке ПО
•
Проникновение компьютеризации во все сферы
жизнедеятельности,
•
увеличение количества фирм-разработчиков,
•
экспоненциальный рост числа
создаваемых программ,
•
постоянный пересмотр
подходов к обеспечению качества
и требований к надежности программ.
it-courses.by
Больше фирм – выше конкуренция
Потребитель/заказчик выбирает разработчика, обещающего
оптимальное сочетание цены, времени разработки, качества
продукта.
Разработчик ищет новые способы обхода конкурентов (технологии,
методологии разработки).
Тестирование – конкурентное преимущество (повышение качества).
Всё больше и больше программ в наше время должны
быть безупречными. Современные программы
управляют оборудованием больниц, аэропортов,
атомных реакторов, космических кораблей.
it-courses.by
Тестирование и качество
Качество ПО •
степень, в которой ПО обладает требуемыми свойствами;
•
совокупность характеристик ПО, относящихся к его способности
удовлетворять установленные и предполагаемые потребности.
Обеспечение качества (QA) - комплекс действий,
направленных на обеспечение качества
разрабатываемого продукта,
на всех стадиях его разработки.
it-courses.by
Тестирование и качество
Тестирование ПО (Software Testing) – процесс анализа программного
средства и сопутствующей документации с целью выявления дефектов
и повышения качества продукта.
Тестирование ПО (Software Testing) – проверка соответствия между
реальным и ожидаемым поведением программы с помощью
конечного набора тестов.
it-courses.by
Тестирование и качество
В более широком смысле тестирование - это техника контроля
качества (QC).
Контроль качества (QC) состоит из
•
планирования работ (Test Management),
•
проектирования тестов (Test Design),
•
выполнения тестирования (Test Execution),
•
анализа полученных результатов (Test Analysis).
it-courses.by
Тестирование и качество
Quality Control направлен на поиск дефектов в готовом продукте, для того
чтобы убедиться, что продукт соответствует требованиям и готов к передаче
пользователю (заказчику).
Quality Assurance направлено больше на процессы, их усовершенствование
(оптимизацию) для минимизации количества багов (дефектов) в самом начале
разработки продукта. Это довольно эффективно, так как анализируются все
аспекты в самом начале, а не когда продукт готов и выясняется, что работать с
ним не совсем удобно или можно реализовать функциональность по-другому.
it-courses.by
Тестирование и качество
Вывод:
QA ориентирован на
процесс,
QC - на тестирование
продукта.
QA - делаем вещи
правильным образом.
QC - результат разработки
соответствует ожиданиям.
it-courses.by
Объекты тестирования:
•
•
•
Программы при их непосредственном запуске и исполнении (software).
Код программ без запуска и исполнения (code).
Прототип программного продукта (product prototype).
•
Проектная документация (project documentation):
• Требования к продукту (product requirements).
• Функциональные спецификации к продукту (functional specifications).
• Документы по архитектуре (product architecture) и дизайну (product design).
• План проекта (project plan).
• Тестовые сценарии (test cases).
•
Сопроводительная документация:
• Интерактивная помощь (on-line help).
• Руководства по установке (Installation guide) и использованию (user manual).
it-courses.by
Характеристики качества (
•
•
•
•
•
•
•
•
•
функциональность,
надежность,
удобство использования,
практичность,
эффективность,
удобство сопровождения,
портативность (мобильность),
совместимость,
защищенность.
it-courses.by
ISO/IEC 25010
):
Функциональность
ПО признается функциональным, если выполняет возложенные на
него задачи, отвечает заданным потребностям пользователей.
Данный аспект предполагает правильную и точную работу,
совместимость всех входящих в состав ПО компонентов.
•
•
•
ПО решает прикладные задачи заказчика/пользователя.
ПО используется в конкретной области.
Продукт не может быть всюду применимым.
it-courses.by
Надежность
Под надежностью понимается бесперебойное выполнение
возлагаемых на ПО задач в заданных условиях в течение
установленного времени.
it-courses.by
Практичность набор атрибутов, требуемых для использования и индивидуальной
оценки этого использования определенным или
предполагаемым кругом пользователей.
К практичности ПО относят:
•
понятность,
•
обучаемость,
•
простоту использования.
it-courses.by
Удобство использования степень удобства ПО для
пользователей, его наглядность,
легкость эксплуатации и
изучения, привлекательность.
it-courses.by
Эффективность
Эффективность - свойство ПО обеспечивать требуемый уровень
эффективности в решении задач с учетом используемых
вычислительных ресурсов в определенных условиях.
Эффективность - это оптимальное сочетание производительности
приложения и затрачиваемых ресурсов системы.
it-courses.by
Удобство сопровождения
Сопровождаемость - приспособленность ПО к модификации
конфигураций и функций.
Добавление новой функциональности - обычное дело для
приложений в промышленной эксплуатации.
Важно, чтобы приложение
не имело внутренних ограничений
развития.
it-courses.by
Портативность (мобильность)
Портативность - способность ПО работать на разных аппаратных
платформах или под управлением разных операционных систем,
переносимость между операционными системами, оборудованием в
целом.
it-courses.by
Совместимость способность программных компонентов взаимодействовать друг с
другом.
it-courses.by
Защищенность минимизация угроз, связанных с несанкционированным чтением,
изменением информации и т. д. Угрозы могут быть также связаны с
некорректным использованием ПО, внешним воздействием со
стороны посторонних лиц, выходом из строя технических средств.
it-courses.by
Модель качества ПО (ISO/IEC 9126)
it-courses.by
Этапы тестирования:
•
анализ требований,
•
планирование испытаний,
•
проектирование тестов,
•
запуск тестов,
•
редактирование тестов,
•
системное тестирование,
•
приемочные испытания,
•
эксплуатация и сопровождение.
it-courses.by
Анализ требований:
1. Изучаем спецификации требований.
2. Изучаем функциональные требования к системе.
3. Отвечаем на вопросы:
a. Что нам предстоит тестировать?
b. Как много будет работы?
c. Какие есть сложности?
d. Всё ли необходимое у нас есть?
4. Получаем данные,
по которым составляем
план тестирования.
it-courses.by
Планирование испытаний:
1. Определяем объемы испытаний и ресурсы.
2. Пишем расписание того, когда будем выполнять намеченные
действия.
it-courses.by
Проектирование тестов:
1. Определяем:
•
цель тестирования,
•
специфику входных данных
(классы эквивалентности...),
•
модули и подмодули приложения,
•
архитектуру проверок (группы чек-листов),
•
архитектуру тестов (детализация от крупного к деталям).
2. Пишем тесты.
it-courses.by
Запуск тестов:
1. Проверяем наши тесты в действии.
2. Анализируем тестовые результаты.
it-courses.by
Редактирование тестов:
1. Пересматриваем и корректируем тесты.
2. Держим тесты в актуальном состоянии.
3. Дополняем новыми тестами.
it-courses.by
Системное тестирование:
1. Проверяем всю систему
(все модули нашего продукта как единую систему).
2. Получаем сведения о качестве ПО.
it-courses.by
Приемочные испытания
Альфа-тестирование - использование незавершённой (альфа) версии
продукта, в которой реализована не вся функциональность,
запланированная для версии проектной командой, сотрудниками
компании, с целью выявить ошибки в работе реализованных модулей
и функций для их последующего устранения.
Бета-тестирование - интенсивное использование почти готовой
версии продукта ограниченной аудиторией конечных пользователей
(фокус- группами), чтобы выявить максимальное число ошибок (и
устранить их) перед окончательным выходом (релизом) продукта на
рынок к массовому потребителю.
it-courses.by
Альфа-версия и бета-версия
it-courses.by
Поддержка и сопровождение:
1. Тестирование багов, найденных в релизном продукте.
2. Регрессионное тестирование билда после внесенных исправлений
(regression testing).
it-courses.by
Жизненный цикл тестирования
it-courses.by
Направления тестирования:
●
статическое
(без запуска программного кода продукта),
●
динамическое
(при запущенной системе).
it-courses.by
Статическое тестирование
!! Раннее выявление дефектов дешевле.
Проверяем:
• код,
• требования и спецификации,
• архитектуру
• дизайн (прототип).
it-courses.by
Динамическое тестирование
Более позднее выявление –
более дорогое устранение дефектов
(спецификации написаны,
архитектура разработана,
интерфейс программы тоже готов).
Проверяем
все характеристики качества
запущенного приложения.
it-courses.by
Методы тестирования
Мы работаем с кодом системы?
•
НЕТ = метод «черного» ящика (black-box).
•
Частично = метод «серого» ящика (grey-box).
•
ДА = метод «белого» ящика (white-box).
it-courses.by
Уровни тестирования
Над чем мы проводим тесты?
“Вширь”(модуль -> группа модулей -> система):
• компонентное/модульное (component/unit testing),
• интеграционное (integration testing),
• системное (system testing).
“Вглубь”:
• приемочное (smoke test, acceptance testing),
• тест критического пути (critical path test),
• расширенный тест (extended test).
it-courses.by
Виды тестирования:
• функциональное тестирование,
• нефункциональное тестирование,
• тестирование, связанное с изменениями.
it-courses.by
Функциональное тестирование тестирование ПО, главная цель которого - это проверка
реализуемости функциональных требований приложения, т.е.
способности приложения в заданных критериях решать
возложенные на него задачи:
• функциональное тестирование (functional testing),
• тестирование новой функциональности (new feature testing),
• тестирование безопасности
(security testing).
it-courses.by
Нефункциональное тестирование проверка на соответствие нефункциональным требованиям:
1. Производительности (performance testing):
• нагрузочное (performance & load testing),
• стрессовое ( stress testing),
• тестирование стабильности / надежности (stability / reliability testing),
• тестирование объемами (volume testing).
2. Установочное (installation testing).
3. Удобства пользования (usability testing).
4. Тестирование на отказ и восстановление (failover & recovery testing).
5. Конфигурационное (configuration testing).
6. Интернационализации (internationalization testing).
7. Локализационное (localization testing).
8. Тестирование документации (document testing).
9. Тестирование совместимости (compatibility testing).
it-courses.by
Тестирование производительности
Тестирование производительности
(performance testing) - тестирование, чтобы определить, как быстро
работает система или её часть под определённой нагрузкой.
it-courses.by
Нагрузочное тестирование
Нагрузочное тестирование
(load testing) – это автоматизированное тестирование, которое
имитирует одновременную работу множества пользователей над
приложением.
it-courses.by
Стрессовое тестирование
Стрессовое тестирование (stress testing)
позволяет проверить, насколько приложение (система в целом)
работоспособны в условиях стресса, и также оценить способность
системы к регенерации (возвращению к нормальному состоянию
после прекращения стресса).
!Цель - оценить работоспособность системы в условиях повышенной и
предельной нагрузки.
it-courses.by
Тестирование надежности
Тестирование стабильности / надежности
(stability / reliability testing) –
проверка работоспособности приложения при длительном
(многочасовом) тестировании со средним уровнем нагрузки.
it-courses.by
Тестирование объемами
Задача - оценить производительность при увеличении объемов
данных в БД приложения, при этом
•
происходит измерение времени выполнения выбранных операций
при определенных интенсивностях
выполнения этих операций,
•
может производиться
определение количества
пользователей,
одновременно
работающих с приложением.
it-courses.by
Тестирование документации
Тестирование документации (document testing) –
тестирование, с которого начинается почти любой проект.
•
Оно призвано обнаружить ошибки в документации.
•
Эти ошибки опасны тем, что они растут как снежный ком и могут
вызвать лавину проблем,
приводящих на более поздних стадиях
работы с проектом к
очень сложно устранимым
и дорогостоящим последствиям.
it-courses.by
Установочное тестирование
Тестирование установки направлено на проверку успешной
инсталляции и настройки, а также обновления и удаления ПО.
it-courses.by
Тестирование удобства пользования
Тестирование удобства использования
(usability testing) - тестирование, показывающее степень удобства
использования, обучаемости, понятности и привлекательности для
пользователя разрабатываемого ПО в контексте определенных
условий.
it-courses.by
Тестирование на отказ и
восстановление
Тестирование на отказ и восстановление
(Failover and Recovery Testing) проверяет продукт с точки зрения
способности противостоять сбоям и успешно восстанавливаться после
них. Сбои могут возникать в связи с ошибками ПО, отказом
оборудования или проблемами связи (отказом сети).
it-courses.by
Конфигурационное тестирование
Конфигурационное тестирование (Configuration Testing) специальный вид тестирования, направленный на проверку работы
программного обеспечения при различных конфигурациях системы
(заявленных платформах, поддерживаемых драйверах, различных
конфигурациях компьютеров и т.д.).
it-courses.by
Тестирование совместимости
Тестирование совместимости (compatibility testing) - тестирование для
проверки корректной работы продукта в определенном окружении.
Окружение - это:
•
•
•
•
•
•
•
аппаратная платформа;
сетевые устройства;
периферия (принтеры, CD/DVD-приводы, веб-камеры...);
операционная система (Unix, Windows, MacOS)
базы данных (Oracle, MS SQL, MySQL, ...)
системное программное обеспечение
(веб-сервер, антивирус, ...)
браузеры (Internet Explorer, Firefox,
Opera, Chrome, Safari).
it-courses.by
Тестирование интернационализации
Тестирование интернационализации (internationalization testing)
проверяет готовность приложения к работе с разными языковыми
интерфейсами:
•
•
•
корректному отображению шрифтов и пунктов меню,
возможности сортировки и поиска,
способности обрабатывать
файлы на разных языках.
Следующая стадия – локализационное
тестирование.
it-courses.by
Локализационное тестирование
Локализационное тестирование (localization testing)
проверяет, насколько корректно продукт адаптирован к работе на
другом языке:
• всё ли переведено и переведено ли правильно,
• не нарушилась ли логика построения интерфейса
и обработки данных...
it-courses.by
Локализационное тестирование
Для локализационного тестирования
рекомендуется обязательно приглашать
в команду носителя того языка,
перевод на который тестируется.
В противном случае мы рискуем увидеть нечто подобное:
• Пункт меню «Сделать под себя» («Customise»).
• Огромная красная кнопка «ВСЁ!» («Finish»).
• Пункт меню «Ясные печенья» («Clear cookies»).
it-courses.by
Связанные с изменениями виды
Починен баг – необходимо проверить, воспроизводится он или нет.
Виды:
• дымовое тестирование (smoke testing),
• регрессионное тестирование (regression testing),
• тестирование сборки (build verification testing),
• проверка согласованности/исправности (sanity testing).
it-courses.by
Smoke Test
Smoke Test – короткий цикл тестов, чтобы убедиться, что после сборки
кода (нового или исправленного) приложение стартует и выполняет
основные функции.
Smoke Test – выполнение минимального
набора тестов для выявления
явных ошибок критичного функционала.
it-courses.by
Регрессионное тестирование
Регрессионное тестирование –
вид тестирования для подтверждения факта, что существующая ранее
функциональность работает, как и прежде, после сделанных в
приложении или окружающей среде исправлений или дополнений
(починки дефекта, слиянии кода, миграции на другую операционную
систему, базу данных, веб-сервер или сервер приложения) .
it-courses.by
Тестирование сборки
Тестирование сборки –
тестирование выпущенной версии (сборки) по критериям качества для
начала тестирования.
it-courses.by
Санитарное тестирование
Санитарное тестирование –
это узконаправленное тестирование, чтобы доказать, что конкретная
функция работает согласно заявленным требованиям.
it-courses.by
Ментальная схема видов тестирования
it-courses.by
Download