Обеспечение
качества в
разработке ПО
Развенская Ксения и Влад Алюков
Предисловие
 В ВУЗах не уделяют внимания теме качества ПО
 Понимание необходимости тестировать продукт в лучшем
случае приходит с опытом

2
Опрос разработчиков Поиска

3
Цели курса
Качество – это важно
Обеспечение качества – общая задача
Как повысить качество разработки

5
Профит
 Знания и навыки, востребованные в сфере IT
 Привлекательность для работодателей

6
О чем курс
Расскажем:
 Какие виды тестирования бывают, когда применяются
 Как выбирать тесты, чтобы они находили ошибки
Научим:
 Автоматизировать функциональное тестирование
 Писать хорошие юнит-тесты
 Проводить нагрузочные испытания
 Организовывать непрерывное тестирование
7
О чем мы не расскажем
Об организации процесса ручного тестирования
О тестовой документации:
 составлении тест-планов
 описании тест-кейсов
 построении отчетов о тестировании
О подробностях всех методологий тестирования

8
Структура
 5 лекций
 4 практических занятия
 2 рубежных контроля: 40/60 баллов
 Тестирование по материалу курса
 Зачет – 70 и более баллов

9
Введение
 Интернет – высококонкурентная среда
 Выживает сильнейший
 Качество – ключ к успеху

10
Качество
Первые определения
 Пригодность к использованию/fitness for use
Joseph Juran
 Соответствие требованиям/conformance to
requirements
Philip Crosby
 Оправдание ожиданий потребителя/meeting the
expectations of the customer
Armand Feigenbaum

…
11
Управление
качеством
Управление качеством
 Plan-Do-Check-Act (PDCA)
 Juran Trilogy (Трилогия Джурана)
 Six Sigma (Шесть сигм)
 Zero Defects (Ноль дефектов)
 Total Quality Control
 Kaizen (Кайдзен)
 …
13
PDCA
Plan – Do – Check – Act (PDCA) – цикл Шухарта, колесо Деминга. Разработан в
1930-х годах Уолтером Шухартом (Bell System) – «цикл улучшений Шухарта».
Концепция получила известность благодаря Эдварду Демингу, который в 1950х
годах активно пропагандировал ее в качестве основного способа повышения
качества.
Цикл состоит из 4 шагов:
•
•
•
•

Планирование
Реализация
Проверка
Реакция

14
Управление качеством
 Plan-Do-Check-Act (PDCA)
 Juran Trilogy (Трилогия Джурана)
 Six Sigma (Шесть сигм)
 Zero Defects (Ноль дефектов)
 Total Quality Control
 Kaizen (Кайдзен)
 …
15
Модели
качества (ПО)
Модели качества ПО
 Модель МакКола (McCall), 1977
 Модель Боема, 1978
 FURPS, 1987
 ISO 9126, 1991, 2001
 ГОСТ - 28806-90 (!)
 SQuaRE, ISO 25010, 2011
 …

17
Модели качества ПО, McCall 1977
Характеристики качества:
• Факторы
• Критерии
• Метрики
Сопровождаемость
Гибкость
Тестопригодность

Переносимость
Переиспользуемость
Способность к взаимодействию

Переработка
продукта

Внедрение
продукта

Эксплуатация
продукта
Практичность Удобство Надежность Эффективность Целостность
18
Модели качества ПО
 Модель МакКола (McCall), 1977
 Модель Боема, 1978
 FURPS, 1987
 ISO 9126, 1991, 2001
 ГОСТ - 28806-90 (!)
 SQuaRE, ISO 25010, 2011
 …

19
ГОСТ
Качество программного средства:
Совокупность свойств программного средства, которые
обусловливают его пригодность удовлетворять заданные или
подразумеваемые потребности в соответствии с его назначением.







функциональность (functionality)
надежность (reliability)
удобство использования (usability)
эффективность (efficiency)
сопровождаемость (maintainability)
мобильность (portability)
20
Модели качества ПО
 Модель МакКола (McCall), 1977
 Модель Боема, 1978
 FURPS, 1987
 ISO 9126, 1991, 2001
 ГОСТ - 28806-90 (!)
 SQuaRE, ISO 25010, 2011
 …

21
SQuaRE

22
Про стандарты

23
И все-таки

Quality – is value to some person.. *
Gerald Weinberg
*У каждого – свое представление о качестве.

24
Тестирование
Тестирование, ISO
Тестирование — это наблюдение за
функционированием ПО в специфических условиях с
целью определения степени соответствия ПО
требованиям к нему (ISO, 1990 г).
ISO/IEC 29119 Software Testing – новый стандарт,
2011 год.

26
Тестирование, ISO
Тестирование — это наблюдение за
функционированием ПО в специфических условиях с
целью определения степени соответствия ПО
требованиям к нему (ISO, 1990 г).

НЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕТ

ISO/IEC 29119 Software Testing – новый стандарт,
2011 год.

27
Тестирование
 Процесс выполнения программы с намерением
обнаружить ошибки (Глен Майерс, 1979).
 Техническое исследование, которое проводится с целью
предоставить заинтересованным лицам информацию о
качестве тестируемого продукта (Сэм Канер, 1999).
 Проверка соответствия реального поведения системы
ожидаемому, осуществляемая на конечном наборе
тестов, выбранным определенным образом (SWEBOK,
2004).
28
QA – QC - Тестирование
 Обеспечение качества (Quality Assurance, (S)QA) –
деятельность по разработке, внедрению, оценке и
усовершенствованию процессов, способствующих
созданию качественного продукта (на всех этапах
создания ПО).
 Контроль качества (Quality Control, QC) – совокупность
видов деятельности, направленных на оценку качества
выпускаемого продукта и выявление расхождений с
требованиями к нему.
 Тестирование (Testing) – тестирование, каким мы хотим
его видеть, по сути и должно являться контролем
качества.
29
Верификация и валидация


Верификация – проверка соответствия характеристик продукта заданным
требованиям, результатом является вывод о соответствии (или несоответствии).





Статические методы (ex. код-ревью)
Динамические методы (ex. тестирование)

Валидация - анализ заданных областей применения продукта и оценка соответствия
характеристик продукта этим условиям.

“Verification: Are we building the product right?
Validation: Are we building the right product?”
B. Boehm

30
Цели тестирования
Поиск ошибок
Оценка качества ПО
Обеспечение стабильного развития системы

31
Development testing
Development Testing (Тестирование на стадии разработки) –
процессы и методы в разработке ПО, направленные на раннее
обнаружение дефектов и повышение качества кода.

32
Зачем разработчикам
уметь тестировать
 Чтобы писать более качественный код
 Вовремя завершать проекты по разработке ПО
 Выпускать в продакшн качественное ПО, даже если
на проекте недостаточно или нет тестировщиков
 Чтобы понимать специалистов по тестированию

33
Кривая Боема

34
Кривая Боема

35
«Development Testing: A New Era In
Software Quality», 2011
В 2011 году компанией Forrester Consulting было проведено независимое
исследование «Тестирование на стадии разработки: новая эра в качестве ПО». Было
опрошено 250+ IT-менеджеров из более 200 компаний.

36
«Development Testing: A New Era In
Software Quality», 2011
Основные результаты:
 Значимость тестирования на стадии разработки значительно
возросла за последние 2 года.
 Чем дольше баги остаются не замеченными, тем выше их
стоимость.
 От разработчиков требуют быстрого внедрения новейших
технологий, при этом они не могут жертвовать качеством
ради скорости.
 Тестирование – одна из основных функций разработчика.
 Отсутствие сотрудничества между разработчиками и
тестировщиками увеличивает проектные риски.
37
«Development Testing: A New Era In
Software Quality», 2011
Почему тестировать код на стадии разработки сегодня наиболее важно?

38
«Development Testing: A New Era In
Software Quality», 2011
Рассматриваете ли вы тестирование как одну из
ключевых задач разработчика?

39
«Development Testing: A New Era In
Software Quality», 2011
Какие виды тестирования выполняются
разработчиками (в вашей компании)?

40
Виды
тестирования
Стратегии тестирования
 Тестирование черного ящика/Black-box Testing/DataDriven
 Тестирование белого ящика (стеклянного,
прозрачного)/Структурное тестирование/Whitebox/Glass-box
 Тестирование серого ящика/Greybox/Комбинированное

42
Виды тестирования
По объекту тестирования:
 Модульное тестирование

Ручное

(Unit-testing)
 Интеграционное тестирование
(Integration testing)

Системное
Интеграционное

 Системное тестирование
(System testing)

Модульное

43
Виды тестирования
По цели тестирования:
 Smoke-тестирование (“дымовое”)
 Sanity-тестирование
 Приемочное тестирование (Acceptance testing)
 Регрессионное тестирование (Regression testing)
 Пользовательское тестирование (альфа- и бетатестирование)
44
Виды тестирования
По типу тестируемых характеристик:
 Функциональное (Functional)
 Нагрузочное тестирование, тестирование
производительности (Load, Performance, Stress, Volume)
 Безопасности и защищенности (Security)
 Удобства использования (Usability)
 …
45
Техники тестирования
На основе спецификации (Specification-based)
• На основе выбора входных данных/Доменное (Input Domain-based)
На основе кода (Code-based)
• Поток управления (control-flow)
• Поток данных (data-flow)
На основе модели (Model-based)
• Конечный автомат
• Таблица принятия решений
• Формальная спецификация
На основе интуиции и опыта
• Ad-hoc
• Исследовательское
• Прогнозирование ошибок
…
+ комбинации
46
В следующей лекции
 Какой ты тестировщик?
 Вся правда о тестовом покрытии
 Как выбрать тест-кейсы, чтобы обнаружить баги
 Критерии завершения тестирования

47
Материалы
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)/CF1C3230DB425EDCC1257069
00317C44/$FILE/chapter_1.pdf
5. SWEBOK 2004 http://www.computer.org/portal/web/swebok/htmlformat
6. http://www.testingeducation.org/BBST/foundations/
7. Forrester Consulting, “Development Testing: A New Era In Software
Quality”
8. http://www.intuit.ru/department/se/testing/3/2.html

48
Спасибо за внимание!
Развенская Ксения,
k.razvenskaya@corp.mail.ru

49

Тестирование осень 2013 лекция 1

  • 1.
  • 2.
    Предисловие  В ВУЗахне уделяют внимания теме качества ПО  Понимание необходимости тестировать продукт в лучшем случае приходит с опытом 2
  • 3.
  • 4.
    Цели курса Качество –это важно Обеспечение качества – общая задача Как повысить качество разработки 5
  • 5.
    Профит  Знания инавыки, востребованные в сфере IT  Привлекательность для работодателей 6
  • 6.
    О чем курс Расскажем: Какие виды тестирования бывают, когда применяются  Как выбирать тесты, чтобы они находили ошибки Научим:  Автоматизировать функциональное тестирование  Писать хорошие юнит-тесты  Проводить нагрузочные испытания  Организовывать непрерывное тестирование 7
  • 7.
    О чем мыне расскажем Об организации процесса ручного тестирования О тестовой документации:  составлении тест-планов  описании тест-кейсов  построении отчетов о тестировании О подробностях всех методологий тестирования 8
  • 8.
    Структура  5 лекций 4 практических занятия  2 рубежных контроля: 40/60 баллов  Тестирование по материалу курса  Зачет – 70 и более баллов 9
  • 9.
    Введение  Интернет –высококонкурентная среда  Выживает сильнейший  Качество – ключ к успеху 10
  • 10.
    Качество Первые определения  Пригодностьк использованию/fitness for use Joseph Juran  Соответствие требованиям/conformance to requirements Philip Crosby  Оправдание ожиданий потребителя/meeting the expectations of the customer Armand Feigenbaum … 11
  • 11.
  • 12.
    Управление качеством  Plan-Do-Check-Act(PDCA)  Juran Trilogy (Трилогия Джурана)  Six Sigma (Шесть сигм)  Zero Defects (Ноль дефектов)  Total Quality Control  Kaizen (Кайдзен)  … 13
  • 13.
    PDCA Plan – Do– Check – Act (PDCA) – цикл Шухарта, колесо Деминга. Разработан в 1930-х годах Уолтером Шухартом (Bell System) – «цикл улучшений Шухарта». Концепция получила известность благодаря Эдварду Демингу, который в 1950х годах активно пропагандировал ее в качестве основного способа повышения качества. Цикл состоит из 4 шагов: • • • • Планирование Реализация Проверка Реакция 14
  • 14.
    Управление качеством  Plan-Do-Check-Act(PDCA)  Juran Trilogy (Трилогия Джурана)  Six Sigma (Шесть сигм)  Zero Defects (Ноль дефектов)  Total Quality Control  Kaizen (Кайдзен)  … 15
  • 15.
  • 16.
    Модели качества ПО Модель МакКола (McCall), 1977  Модель Боема, 1978  FURPS, 1987  ISO 9126, 1991, 2001  ГОСТ - 28806-90 (!)  SQuaRE, ISO 25010, 2011  … 17
  • 17.
    Модели качества ПО,McCall 1977 Характеристики качества: • Факторы • Критерии • Метрики Сопровождаемость Гибкость Тестопригодность Переносимость Переиспользуемость Способность к взаимодействию Переработка продукта Внедрение продукта Эксплуатация продукта Практичность Удобство Надежность Эффективность Целостность 18
  • 18.
    Модели качества ПО Модель МакКола (McCall), 1977  Модель Боема, 1978  FURPS, 1987  ISO 9126, 1991, 2001  ГОСТ - 28806-90 (!)  SQuaRE, ISO 25010, 2011  … 19
  • 19.
    ГОСТ Качество программного средства: Совокупностьсвойств программного средства, которые обусловливают его пригодность удовлетворять заданные или подразумеваемые потребности в соответствии с его назначением.       функциональность (functionality) надежность (reliability) удобство использования (usability) эффективность (efficiency) сопровождаемость (maintainability) мобильность (portability) 20
  • 20.
    Модели качества ПО Модель МакКола (McCall), 1977  Модель Боема, 1978  FURPS, 1987  ISO 9126, 1991, 2001  ГОСТ - 28806-90 (!)  SQuaRE, ISO 25010, 2011  … 21
  • 21.
  • 22.
  • 23.
    И все-таки Quality –is value to some person.. * Gerald Weinberg *У каждого – свое представление о качестве. 24
  • 24.
  • 25.
    Тестирование, ISO Тестирование —это наблюдение за функционированием ПО в специфических условиях с целью определения степени соответствия ПО требованиям к нему (ISO, 1990 г). ISO/IEC 29119 Software Testing – новый стандарт, 2011 год. 26
  • 26.
    Тестирование, ISO Тестирование —это наблюдение за функционированием ПО в специфических условиях с целью определения степени соответствия ПО требованиям к нему (ISO, 1990 г). НЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕТ ISO/IEC 29119 Software Testing – новый стандарт, 2011 год. 27
  • 27.
    Тестирование  Процесс выполненияпрограммы с намерением обнаружить ошибки (Глен Майерс, 1979).  Техническое исследование, которое проводится с целью предоставить заинтересованным лицам информацию о качестве тестируемого продукта (Сэм Канер, 1999).  Проверка соответствия реального поведения системы ожидаемому, осуществляемая на конечном наборе тестов, выбранным определенным образом (SWEBOK, 2004). 28
  • 28.
    QA – QC- Тестирование  Обеспечение качества (Quality Assurance, (S)QA) – деятельность по разработке, внедрению, оценке и усовершенствованию процессов, способствующих созданию качественного продукта (на всех этапах создания ПО).  Контроль качества (Quality Control, QC) – совокупность видов деятельности, направленных на оценку качества выпускаемого продукта и выявление расхождений с требованиями к нему.  Тестирование (Testing) – тестирование, каким мы хотим его видеть, по сути и должно являться контролем качества. 29
  • 29.
    Верификация и валидация  Верификация– проверка соответствия характеристик продукта заданным требованиям, результатом является вывод о соответствии (или несоответствии).    Статические методы (ex. код-ревью) Динамические методы (ex. тестирование) Валидация - анализ заданных областей применения продукта и оценка соответствия характеристик продукта этим условиям. “Verification: Are we building the product right? Validation: Are we building the right product?” B. Boehm 30
  • 30.
    Цели тестирования Поиск ошибок Оценкакачества ПО Обеспечение стабильного развития системы 31
  • 31.
    Development testing Development Testing(Тестирование на стадии разработки) – процессы и методы в разработке ПО, направленные на раннее обнаружение дефектов и повышение качества кода. 32
  • 32.
    Зачем разработчикам уметь тестировать Чтобы писать более качественный код  Вовремя завершать проекты по разработке ПО  Выпускать в продакшн качественное ПО, даже если на проекте недостаточно или нет тестировщиков  Чтобы понимать специалистов по тестированию 33
  • 33.
  • 34.
  • 35.
    «Development Testing: ANew Era In Software Quality», 2011 В 2011 году компанией Forrester Consulting было проведено независимое исследование «Тестирование на стадии разработки: новая эра в качестве ПО». Было опрошено 250+ IT-менеджеров из более 200 компаний. 36
  • 36.
    «Development Testing: ANew Era In Software Quality», 2011 Основные результаты:  Значимость тестирования на стадии разработки значительно возросла за последние 2 года.  Чем дольше баги остаются не замеченными, тем выше их стоимость.  От разработчиков требуют быстрого внедрения новейших технологий, при этом они не могут жертвовать качеством ради скорости.  Тестирование – одна из основных функций разработчика.  Отсутствие сотрудничества между разработчиками и тестировщиками увеличивает проектные риски. 37
  • 37.
    «Development Testing: ANew Era In Software Quality», 2011 Почему тестировать код на стадии разработки сегодня наиболее важно? 38
  • 38.
    «Development Testing: ANew Era In Software Quality», 2011 Рассматриваете ли вы тестирование как одну из ключевых задач разработчика? 39
  • 39.
    «Development Testing: ANew Era In Software Quality», 2011 Какие виды тестирования выполняются разработчиками (в вашей компании)? 40
  • 40.
  • 41.
    Стратегии тестирования  Тестированиечерного ящика/Black-box Testing/DataDriven  Тестирование белого ящика (стеклянного, прозрачного)/Структурное тестирование/Whitebox/Glass-box  Тестирование серого ящика/Greybox/Комбинированное 42
  • 42.
    Виды тестирования По объектутестирования:  Модульное тестирование Ручное (Unit-testing)  Интеграционное тестирование (Integration testing) Системное Интеграционное  Системное тестирование (System testing) Модульное 43
  • 43.
    Виды тестирования По целитестирования:  Smoke-тестирование (“дымовое”)  Sanity-тестирование  Приемочное тестирование (Acceptance testing)  Регрессионное тестирование (Regression testing)  Пользовательское тестирование (альфа- и бетатестирование) 44
  • 44.
    Виды тестирования По типутестируемых характеристик:  Функциональное (Functional)  Нагрузочное тестирование, тестирование производительности (Load, Performance, Stress, Volume)  Безопасности и защищенности (Security)  Удобства использования (Usability)  … 45
  • 45.
    Техники тестирования На основеспецификации (Specification-based) • На основе выбора входных данных/Доменное (Input Domain-based) На основе кода (Code-based) • Поток управления (control-flow) • Поток данных (data-flow) На основе модели (Model-based) • Конечный автомат • Таблица принятия решений • Формальная спецификация На основе интуиции и опыта • Ad-hoc • Исследовательское • Прогнозирование ошибок … + комбинации 46
  • 46.
    В следующей лекции Какой ты тестировщик?  Вся правда о тестовом покрытии  Как выбрать тест-кейсы, чтобы обнаружить баги  Критерии завершения тестирования 47
  • 47.
    Материалы 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)/CF1C3230DB425EDCC1257069 00317C44/$FILE/chapter_1.pdf 5. SWEBOK 2004 http://www.computer.org/portal/web/swebok/htmlformat 6. http://www.testingeducation.org/BBST/foundations/ 7. Forrester Consulting, “Development Testing: A New Era In Software Quality” 8. http://www.intuit.ru/department/se/testing/3/2.html 48
  • 48.
    Спасибо за внимание! РазвенскаяКсения, k.razvenskaya@corp.mail.ru 49