Upload
technopark
View
261
Download
3
Embed Size (px)
DESCRIPTION
Citation preview
Тестирование для разработчиков
Развенская Ксения & Алюков Влад
Почему нужен этот курс
• В ВУЗах не уделяют внимания теме качества ПО • Большинство стажеров надо учить с нуля
Цели курса
Показать:
• Что качество – это важно
• Обеспечение качества – общая задача
А также, что:
• Тестировать – интересно
И научить будущих разработчиков:
• Выпускать более качественный код
Почему вам полезен этот курс
• Знания и навыки, востребованные в сфере IT
• Привлекательность для работодателей
О чем пойдет речь в курсе
Расскажем: • Какие виды тестирования бывают, когда
применяются • Как выбирать тесты, чтобы они находили ошибки
Научим:
• Автоматизировать функциональное тестирование
• Писать хорошие юнит-тесты
• Проводить нагрузочные испытания
• Организовывать непрерывное тестирование
О чем мы не расскажем
• Об организации процесса ручного тестирования
• О тестовой документации:
• составлении тест-планов
• описании тест-кейсов
• построении отчетов о тестировании
• О подробностях всех методологий тестирования
Структура курса
• 5 лекций (4 ак. часа) • 4 практических занятия
• Тестирование по материалу курса • Форма оценки: зачет/незачет
• Самым активным - автомат
Поехали!
Введение
• Интернет – высококонкурентная среда
• >4 млн доменов в Рунете
• ~3000 новых доменов ежедневно
• В России интернетом пользуются ~70 млн человек
Введение
Качество – ключ к успеху, поэтому сейчас к качеству ПО предъявляются повышенные требования.
Качество
Что такое качество?
Первые определения Пригодность к использованию/fitness for use
Joseph Juran
Соответствие требованиям/conformance to requirements
Philip Crosby
Оправдание ожиданий потребителя/meeting the expectations of the customer
Armand Feigenbaum …
Управление качеством
Управление качеством
• Plan-Do-Check-Act (PDCA)
• Juran Trilogy (Трилогия Джурана)
• Six Sigma (Шесть сигм)
• Zero Defects (Ноль дефектов)
• Quality Function Deployment (QFD)
• Total Quality Control/Total Quality Management
• Kaizen (Кайдзен)
Управление качеством
Plan – Do – Check – Act (PDCA) – цикл Шухарта, колесо Деминга Разработан в 1930-х годах Уолтером Шухартом (Bell System) – «цикл улучшений Шухарта».
Цикл состоит из 4 шагов:
• Планирование • Реализация • Проверка • Реакция
Управление качеством
Трилогия Джурана (Juran Trilogy), 1950-е гг Джозеф М. Джуран (Joseph M. Juran) определил три процесса для управления качеством:
• Планирование качества • Контроль качества • Улучшение качества Первым обосновал переход от контроля качества к управлению.
Управление качеством
Six Sigma (Шесть сигм), 1986 год Разработана Биллом Смитом (Motorola). В 1990х годах применялась как ключевая стратегия в General Electric.
Суть концепции – минимизация дефектов и статистических отклонений в производственном процессе.
Процесс качеством 6 сигм на выходе дает 99.99966% выходов без дефектов, или не более чем 3.4 дефекта на 1 млн операций.
Управление качеством
Zero Defects (Ноль дефектов), 1962 год Фил Кросби (Philip Bayard "Phil" Crosby), «Martin»
Завод изготавливал для армии США ракетные снаряды «Першинг».
Для выполнения жестких требований поставки было решено уменьшить до предела время на устранение дефектов, повторные проверки и испытания.
Управление качеством
Quality Function Deployment (QFD)
Впервые описал доктор Й. Акао, 1966 год.
QFD трансформирует потребности клиентов в технические
характеристики продукции, расставляет приоритеты для каждого
продукта/услуги и одновременно определяет задачи в области
развития.
Основа QFD – построение матрицы, названной в соответствии с ее
формой «Домом качества», в рамках которой фиксируется
информация о качестве продукта и принимаемых решениях.
Управление качеством
Total Quality Control/Total Quality Management (Всеобщее управление качеством)
Разработал Арманд Фейгенбаум (Armand Vallin Feigenbaum) в 50х гг. Фейгенбаум предложил рассматривать качество не как конечный результат производства изделия, а на каждом этапе его создания. TQM – развитие TQC.
Акцент на потребителя
Вовлечение всего персонала
Внимание к процессам
Решения основаны на фактах
Постоянное улучшение
Управление качеством
Kaizen (Кайдзен), 1986 год – японская философия или практика, которая фокусируется на непрерывном совершенствовании процессов производства и управления, а также всех аспектов жизни.
Цель кайдзен – производство без потерь.
В Scrum может применяться как процесс устранения помех.
Модели качества
(ПО)
Модели качества – McCall, 1977
Характеристики качества: • Факторы • Критерии • Метрики
Треугольник МакКола (факторы качества)
Эксплуатация продукта
Переработка продукта
Внедрение продукта
Сопровождаемость Гибкость Тестопригодность
Переносимость Переиспользуемость
Способность к взаимодействию
Практичность Удобство Надежность Эффективность Целостность
Модели качества – Boehm, 1978
Критерии МакКолл Боем
Корректность/Correctness * *
Надежность/Reliability * *
Целостность/Integrity * *
Удобство/Usability * *
Эффективность/Efficiency * *
Поддерживаемость/Maintainability * *
Тестопригодность/Testability *
Способность к взаимодействию/Interoperability *
Гибкость/Flexibility * *
Переиспользуемость/Reusability * *
Переносимость/Portability * *
Прозрачность/Clarity *
Изменяемость/Modifiability *
Документированность/Documentation *
Способность к восстановлению/Resilience *
Понятность/Understandability *
Валидность/Адекватность/Validity *
Функциональность/Functionality *
Универсальность/Generality *
Экономическая эффективность/Economy *
Модели качества – FURPS, 1987
Модели качества – ISO 9126, 1991, 2001
3 уровня оценки качества: Цели (goals) — то, что мы хотим видеть в ПО. Атрибуты (attributes) —свойства ПО, показывающие приближение к целям. Метрики (metrics) — количественные характеристики степени наличия атрибутов.
Качество ПО (ГОСТ)
ГОСТ - 28806-90 Качество программного средства: Совокупность свойств программного средства, которые обусловливают его пригодность удовлетворять заданные или подразумеваемые потребности в соответствии с его назначением. • функциональность (functionality) • надежность (reliability) • удобство использования (usability) • эффективность (efficiency) • сопровождаемость (maintainability) • мобильность (portability)
Модели качества – SQuaRE, 2011
ISO 25010 (Software product Quality Requirements and Evaluation)
Consortium for IT Software Quality – CISQ Model
Про стандарты
И все-таки..
Quality – is value to some person.. * Gerald Weinberg
*У каждого – свое представление о качестве.
Тестирование
Тестирование - ISO
Тестирование — это наблюдение за функционированием ПО в специфических условиях с целью определения степени соответствия ПО требованиям к нему (ISO, 1990 г). ISO/IEC 29119 Software Testing – новый стандарт, 2011 год.
Тестирование - ISO
В 1990 году стандартом ISO принято следующее определение тестирования: Тестирование — это наблюдение за функционированием ПО в специфических условиях с целью определения степени соответствия ПО требованиям к нему (ISO, 1990 г). ISO/IEC 29119 Software Testing – новый стандарт, 2011 год.
НЕЕЕЕЕЕЕЕЕТ
Тестирование
Процесс выполнения программы с намерением обнаружить ошибки (Глен Майерс, 1979).
Техническое исследование, которое проводится с целью предоставить заинтересованным лицам информацию о качестве тестируемого продукта (Сэм Канер, 1999). Проверка соответствия реального поведения системы ожидаемому, осуществляемая на конечном наборе тестов, выбранным определенным образом (SWEBOK, 2004).
QA – QC - Тестирование
Обеспечение качества (Quality Assurance, (S)QA) – деятельность по разработке, внедрению, оценке и усовершенствованию процессов, способствующих созданию качественного продукта (на всех этапах создания ПО).
Контроль качества (Quality Control, QC) – совокупность видов деятельности, направленных на оценку качества выпускаемого продукта и выявление расхождений с требованиями к нему.
Тестирование (Testing) – тестирование, каким мы хотим его видеть, по сути и должно являться контролем качества.
Верификация и валидация
Верификация – проверка соответствия характеристик продукта заданным требованиям, результатом является вывод о соответствии (или несоответствии). • Статические методы (ex. код-ревью) • Динамические методы (ex. тестирование)
Валидация - анализ заданных областей применения продукта и оценка соответствия характеристик продукта этим условиям.
“Verification: Are we building the product right? Validation: Are we building the right product?”
B. Boehm
Цели тестирования
• Поиск ошибок
• Оценка качества ПО
• Обеспечение стабильного развития системы
Зачем разработчикам изучать тестирование
Чтобы писать более качественный код Вовремя завершать проекты по разработке ПО Выпускать в продакшн качественное ПО, даже если на проекте недостаточно или нет тестировщиков Чтобы понимать специалистов по тестированию
Development Testing
Кривая Боема (Boehm curve)
«Development Testing: A New Era In Software Quality», 2011
В 2011 году компанией Forrester Consulting было проведено независимое исследование «Тестирование на стадии разработки: новая эры в качестве ПО». Было опрошено 250+ IT-менеджеров из более 200 компаний.
«Development Testing: A New Era In Software Quality», 2011
Основные результаты:
• Значимость тестирования на стадии разработки значительно возросла за последние 2 года.
• Чем дольше баги остаются не замеченными, тем выше их стоимость.
• От разработчиков требуют быстрого внедрения новейших технологий, при этом они не могут жертвовать качеством ради скорости.
• Тестирование – одна из основных функций разработчика.
• Отсутствие сотрудничества между разработчиками и тестировщиками увеличивает проектные риски.
Development Testing: A New Era In Software Quality
Почему тестировать код на стадии разработки сегодня наиболее важно?
Development Testing: A New Era In Software Quality
Рассматриваете ли вы тестирование как одну из ключевых задач разработчика?
Development Testing: A New Era In Software Quality
Какие виды тестирования выполняются разработчиками (в вашей компании)?
Виды тестирования
Стратегии тестирования
• Тестирование черного ящика/Black-box Testing/Data-Driven • Тестирование стеклянного ящика (белого, прозрачного)/Структурное
тестирование/White-box/Glass-box • Тестирование серого ящика/Grey-box/Комбинированное
Виды тестирования
По объекту тестирования: • Модульное тестирование (Unit-testing)
• Интеграционное тестирование (Integration testing)
• Системное тестирование (System testing)
Модульное
Интеграционное
Системное
Ручное
Виды тестирования
По цели тестирования:
• Smoke-тестирование (“дымовое”)
• Sanity-тестирование
• Приемочное тестирование (Acceptance testing)
• Регрессионное тестирование (Regression testing)
• Пользовательское тестирование (альфа- и бета-тестирование)
Виды тестирования
По типу тестируемых характеристик:
• Функциональное (Functional)
• Нагрузочное тестирование, тестирование производительности
(Load, Performance, Stress, Volume)
• Безопасности и защищенности (Security)
• Удобства использования (Usability)
…
Техники тестирования
• На основе спецификации (Specification-based) • На основе выбора входных данных/Доменное (Input Domain-
based) • На основе кода (Code-based)
• Поток управления (control-flow) • Поток данных (data-flow)
• На основе модели (Model-based) • Конечный автомат • Таблица принятия решений • Формальная спецификация
• На основе интуиции и опыта • Ad-hoc • Исследовательское • Прогнозирование ошибок
• … + комбинации
В следующей лекции
Критерии завершения тестирования
Тестовое покрытие
Критерии выбора тестов
Материалы
1. Сэм Канер, Джек Фолк, Енг Кек Нгуен “Тестирование программного обеспечения”
2. Г. Майерс “Искусство тестирования программ”, 3-е издание 3. International Organization for Standardization. Software Engineering—Product
Quality—Part 1: Quality Model. ISO, Geneva, Switzerland, 2001. ISO/IEC 9126-1:2001(E).
4. Software Quality Models and Philosophies http://www.bth.se/com/besq.nsf/(WebFiles)/CF1C3230DB425EDCC125706900317C44/$FILE/chapter_1.pdf
5. SWEBOK 2004 http://www.computer.org/portal/web/swebok/htmlformat 6. Forrester Consulting, “Development Testing: A New Era In Software Quality”
Спасибо за внимание Развенская Ксения, [email protected] Алюков Влад, [email protected]