Тестирование программного обеспечения Часть 1
Цели
Содержание
SWEBOK проект
Тестирование ПО?
Тестирование ПО?
Точка зрения
Тестировщики/программисты
Проблемы при тестировании ПО
Исчерпывающее тестирование ПО
Определение тестирования программного обеспечения
Динамичность верификации
Законченность набора тестов
Выбор тестов
Пример тестирования
Статические методы
Тестирующуя деятельность
Предотвращение ошибок
A. Базовые концепции и определения тестирования
Уровни тестирования
Цели тестирования
Цели тестирования
Критерии тестирования
C. Методы тестирования
D. Измерение тестирования
E. Управление Процессом тестирования
F. Инструментарий тестирования
Рекомендуемая литература для изучения тестирования ПО

Тестирование программного обеспечения (Часть 1)

1. Тестирование программного обеспечения Часть 1

Subtitle
Тестирование
программного обеспечения
Часть 1
Lecturer
Title of the Lecture
Slide 1 of XY

2. Цели

Subtitle
Цели
1. Познакомить с тестированием программного обеспечения (ПО) и
объяснить его важность
2. Объяснить определения тестирования ПО
Lecturer
Title of the Lecture
Slide 2 of XY

3. Содержание

Subtitle
1. Введение
2. Верификация и валидация (аттестация) (согласно работе
И.Соммервилла по программой инженерии)
3. Тестирование программного обеспечения (согласно работе
И.Соммервилла по программой инженерии)
Lecturer
Title of the Lecture
Slide 3 of XY

4. SWEBOK проект

Subtitle
SWEBOK проект
Управление конфигурацией ПО
Создание ПО
Проектирование ПО
Инфраструктура технологии разработки ПО
Управление разработкой ПО
Процесс разработки ПО
Развитие и сопровождение ПО
Анализ качества ПО
Анализ требований к ПО
Тестирование программного обеспечения!!!!!!
Lecturer
Title of the Lecture
Slide 4 of XY

5.

Лаб. работы
Subtitle
Лаб.1. Тестирование, основанное на спец. программы (ТЗ).
Разработка тест. вариантов (решение квадр. уравнения).
Лаб.2. Модульное тестирование в MVS 2010/2012. Методы класса
Assert. Task: Числа Фибаначчи.
Лаб.3. Модульное тестирование. В MVS 2010/2012. Методы класса
CollectionAssert.
Лаб. 4. Автоматический анализ кода.
Лаб. 5. Метрики кода.
Лаб. 6. Профилирование и производительность.
Лаб. 7. Тестирование интерфейса.
Лаб. 8. Нагрузочное тестирование (independent work)
Lecturer
Title of the Lecture
Slide 5 of XY

6. Тестирование ПО?

Subtitle
Тестирование ПО?
•Процесс выполнения программного обеспечения для
определения правильные ли результаты оно выдает”, - Глэсс
•“Процесс выполнения программы с целю обнаружения ошибок”,Майерс
•“Тестирование программы может использоваться, чтобы
показать наличие ошибок, но никогда их отсутствие”, - Диейкстра.
Lecturer
Title of the Lecture
Slide 6 of XY

7. Тестирование ПО?

Subtitle
Тестирование ПО?
•Цель состоит не в том, чтобы обнаружить ошибки, а в том, чтобы
обеспечить убедительное доказательство того, что нет ни одной, или
показать, что нет особых классов ошибок”, -Хеннел
•“Тестирование - мера качества программного обеспечения”, - Хетсел
•Процесс работы с системой или ее компонентами при определенных
условиях, наблюдение или фиксирование результатов, а также
оценивание некоторых аспектов системы или компонент.”
IEEE/ANSI.
Lecturer
Title of the Lecture
Slide 7 of XY

8. Точка зрения

Subtitle
Точка зрения
•“Если наша цель состоит в том, чтобы показать отсутствие ошибок, то
мы обнаружим их очень мало”.
•“Если наша цель состоит в том, чтобы показать присутствие ошибок, мы
обнаружим большое их количество”
Lecturer
Title of the Lecture
Slide 8 of XY

9. Тестировщики/программисты

Subtitle
Тестировщики/программисты
•1:5-10 Мейнфреймы
т. е., 1 тестировщик для каждых 5 - 10 разработчиков
•2:3 Microsoft
•1:2 В среднем по американским компаниям
Lecturer
Title of the Lecture
Slide 9 of XY

10. Проблемы при тестировании ПО

Subtitle
Проблемы при тестировании ПО
•плохо выраженные требования
•неформальные методы проектирования
•нет ничего исполняемого до стадии тестирования
•огромное множество исходных данных: тестируется программное
обеспечение, которое определяет оценку экзамена: 101 вход
Lecturer
Title of the Lecture
Slide 10 of XY

11. Исчерпывающее тестирование ПО

Subtitle
Исчерпывающее тестирование ПО
•Исчерпывающее тестирование ПО является невыполнимым.
•Даже если все возможные входы были бы идентифицированы,
проблема идентификации ожидаемых результатов
неразрешима.
•Вейкер показал, что нет никакого алгоритма, который может
определить, будут ли выполнены данные операторы, ветвление
или путь!
Lecturer
Title of the Lecture
Slide 11 of XY

12. Определение тестирования программного обеспечения

Subtitle
Определение тестирования программного
обеспечения
• Тестирование ПО состоит из динамической
верификации поведения программы на конечном
наборе вариантов тестов, соответствущим образом
отобранных, как правило, из бесконечной области
выполнения пограммы , для проверки определенного
ожидаемого ее поведения.
Lecturer
Title of the Lecture
Slide 12 of XY

13. Динамичность верификации

Subtitle
Динамичность верификации
•Это термин означает, что тестирование всегда подразумевает
выполнение программы на определенных входных данных.
Статические методы анализа, такие как рецензирование и
инспектирование, не рассматриваются, равно как и выполнение
программы на символьных входных данных, или символьная ее
оценка;
Lecturer
Title of the Lecture
Slide 13 of XY

14. Законченность набора тестов

Subtitle
Законченность набора тестов
•Ясно, что тесты не выбираются буквально из бесконечного множества
возможных тестов, а из очень большого конечного множества (набор
всех строк битов короче, чем некоторая последовательность). Тем не
менее, даже для простых программ, теоретически возможно столько
вариантов тестов, что для исчерпывающего тестирования могли бы
потребоваться годы. Вот почему практически число тестов в общем
могло бы быть бесконечным. Однако, число выполнений, которые могут
реалистично наблюдаться при тестировании, должно, очевидно, быть
конечным, и более того, - оно должно быть управляемым.
Действительно, тестирование всегда подразумевает компромисс между
ограниченными ресурсами и сроками, и по сути неограниченными
тестовыми требованиями: этот конфликт указывает на известные
проблемы тестирования, оба они по природе технические (критерии для
того, чтобы доказать адекватность теста) и управляемые (оценка
затраченных усилий на испытания);
Lecturer
Title of the Lecture
Slide 14 of XY

15. Выбор тестов

Subtitle
Выбор тестов
•Много предложенных методов испытания по существу
отличаются по тому, как они выбирают (конечный)
набор тестов, и тестировщики должны знать, что
различные критерии для выбора могут значительно
различаться
по
эффективности.
Проблема
определения самого лучшего критерия отбора при
данных условиях все еще является объектом
исследования.
Lecturer
Title of the Lecture
Slide 15 of XY

16. Пример тестирования

Subtitle
Пример тестирования
Варианты теста
{1,3,2}
{1,2,3}
{3,2,3}
{}
{-1, -2}
Список
Сортированный список
Повторный
ввод.
список.
Пустой список
Отрицательные числа.
Спецификации:
Берется список
чисел;
возвращается
сортированный
список
Программа
сортировки
{2,
3,-1}
{1,
2,
3}
{-2,{}
Output
Результат
Lecturer
Title of the Lecture
Slide 16 of XY

17. Статические методы

Subtitle
Статические методы
•Тестирование программного обеспечения - средство
для оценки качества. В главе SQA SWEBOK действия
и методы для качественного анализа разбиты на
категории: статические методы (никакого выполнения
кода), и динамичные методы (выполнение кода). Обе
категории полезны. Мы хотели бы подчеркнуть, что
статические методы одинаково важны для построении
качественного программного продукта.
Lecturer
Title of the Lecture
Slide 17 of XY

18. Тестирующуя деятельность

Subtitle
Тестирующуя деятельность
•Со временем, отношение к тестированию ПО становилось все более
конструктивно. Тестирование больше не рассматривается как действие,
которое начинается только после того, как фаза кодирования завершена,
с ограниченной целью найти ошибки. Тестирование программного
обеспечения в настоящее время рассматривается как действие, которое
охватывает весь процесс разработки, и является само по себе важной
частью фактической разработки ПО. Действительно, планирование
тестирования запускается на ранней стадии анализа требований, и
планирование тестирования и его процедуры систематически и
непрерывно совершенствуются по ходу продолжения разработки. Эти
действия планирования и проектирования тестов представляют сами по
себе полезную информацию разработчикам для определения
потенциально «слабых» мест.
Lecturer
Title of the Lecture
Slide 18 of XY

19. Предотвращение ошибок

Subtitle
Предотвращение ошибок
•Как достаточно широко обсуждалось в главе SQA, правильное
отношение к качеству является одной из привентивных мер: лучше
предотвратить проблемы, вместо того, чтобы бороться с ними.
Тестирование должно рассматриваться, прежде всего, как средство для
демонстрации того, что предотвращение эффективно, и кроме того для
того, чтобы идентифицировать аномалии в тех случаях, в которых, по
некоторым причинам, оно не эффективно. Наконец, стоит признать, что
даже после хорошего тестирования, система может все еще содержать
ошибки. Средства для обработки системных отказов после поставки
обеспечивается (корректирующими) действиями по сопровождению ПО.
Проблемы обслуживания разработки программного обеспечения
рассматриваются в главе «Развитие и сопрождение программного
обеспечения» в SWEBOK
Lecturer
Title of the Lecture
Slide 19 of XY

20. A. Базовые концепции и определения тестирования

Subtitle
A. Базовые концепции и определения
тестирования
•Разработчики различают дефекты ПО и сбои.
•В случае сбоя программа ведет себя не так как
ожидает пользователь.
•Дефект – это ошибка, которая вызывает сбой.
•Когда результат выполнения теста отклоняется от
ожидаемого, наблюдается отказ, причиной которого
является ошибка.
Lecturer
Title of the Lecture
Slide 20 of XY

21.

Subtitle
Lecturer
Title of the Lecture
Slide 21 of XY

22. Уровни тестирования

Subtitle
Уровни тестирования
•Тестирование программного обеспечения обычно выполняется на
разных уровнях в течение процесса разработки. То есть объект теста
может меняться: целая программа, ее часть (функционально или
структурно связанная), один модуль. Ясно, что не все перечисленные
типы тестирования применяются к каждой системе.
Lecturer
Title of the Lecture
Slide 22 of XY

23.

Subtitle
применяется для законченного продукта в качестве
внутреннего приемочного тестирования (можно нанять
тестировщика).
Для ПО заказ- приемочное, для рынка – бета.
Lecturer
Title of the Lecture
Slide 23 of XY

24. Цели тестирования

Subtitle
Цели тестирования
•Тестирование
проводится
с
точки
зрения
определенной цели (цели тестирования), которая
заявлена более или менее явно, и с различной
степенью точности. Заявление цели в точных,
количественных терминах позволяет установить
управления процессом тестирования.
Lecturer
Title of the Lecture
Slide 24 of XY

25. Цели тестирования

Subtitle
Цели тестирования
•Одна из целей тестирования - это выявить отказы (столько, сколько
возможно), и много популярных тестирующих методики были
разработаны для этой цели. Эти методики по-разному пытаются
"сломать" программу, запуская определенные классы (считающиеся
эквивалентными) на выполнение: ведущий принцип, лежащий в основе
таких методик,- это быть как можно более систематичным в определении
репрезентативного множества поведений программы (главным образом,
в форме подклассов входного домена). Однако, со всесторонней точки
зрения KA (knowledge area) по тестированию, как средство по
повышению качества, должно включать и другие важные цели, такие как
измерение надежности, оценки удобства пользования, принятие
заказчиком, для которых могли бы быть применены разные подходы.
Заметим, что цели тестирования могут меняться в зависимости от
объекта тестирования, то есть, в целом, для различных целей
применяются разные уровни тестирования.
Lecturer
Title of the Lecture
Slide 25 of XY

26. Критерии тестирования

Subtitle
Критерии тестирования
•Цель тестирования определяет, как набор тестов идентифицируется, с
одной стороны, относительно его непротиворечивости - сколько
тестирований достаточно для того, чтобы достигнуть
установленной цели?, с другой стороны, относительно его состава какие варианты тестов должны быть выбраны для того, чтобы
достигнуть установленной цели?; - хотя обычно часть -"для того,
чтобы достигнуть установленной цели" - остается неявной и только
первая часть выше приведенных вопросов излагается. Критерий,
относящийся к первому вопросу, называется тестовым критерием
адекватности, в то время как ко второму - тестовый критерий отбора.
Lecturer
Title of the Lecture
Slide 26 of XY

27. C. Методы тестирования

Subtitle
C. Методы тестирования
•Несколько тестовых методов были разработаны за
прошлые два десятилетия , учитывающие различные
критерии, и предлагаются еще новые.
Lecturer
Title of the Lecture
Slide 27 of XY

28. D. Измерение тестирования

Subtitle
D. Измерение тестирования
•Иногда случается путаница между целями тестирования и его
методами. Например, охват разветвления является популярным
тестовым методом. Достижение определенного измерения по
покрытию разветвления нельзя рассматривать по существу как
цель тестирования: это - средство улучшить возможности
обнаружения отказов (с помощью систематического
исследования каждого разветвления программы из точки
решения). Чтобы избежать такие недоразумения, должно быть
сделано четкое различие между измерениями тестирования,
которые оценивают набор тестов (например, меры покрытия), и
теми методами, которые обеспечивают оценку тестируемой
программы на основании наблюдаемых результатах теста, как
надежность.
Lecturer
Title of the Lecture
Slide 28 of XY

29. E. Управление Процессом тестирования

Subtitle
E. Управление Процессом тестирования
Понятия, стратегии, методы и метрики
тестирования должны быть интегрированы в
определенный и управляемый процесс, который
выполняется людьми. Процесс тестирования
должен обеспечивать тестирующие действия и
команды тестировщиков, от планирования теста до
оценивания результатов таким образом, чтобы
обеспечить оправданную уверенность, что тестовые
цели выполняются с наименьшими затратами.
Проблемы относятся к Управлению Тестовым
Процессом.
Lecturer
Title of the Lecture
Slide 29 of XY

30. F. Инструментарий тестирования

Subtitle
F. Инструментарий тестирования
• Тестирование программного обеспечения
является очень дорогой и трудоемкой частью
разработки. Поэтому инструменты – средства
для поддержки тестовых действий. Более того,
чтобы улучшить показатель рентабельности,
ключевым вопросом всегда была автоматизация
тестирования в максимально возможной
степени.
Lecturer
Title of the Lecture
Slide 30 of XY

31. Рекомендуемая литература для изучения тестирования ПО

Subtitle
Рекомендуемая литература для изучения
тестирования ПО
•K. Beck, Test-Driven Development by Example, AddisonWesley, 2002.
•P. C. Jorgensen, Software Testing: A Craftsman's
Approach, second edition, CRC Press, 2004
•C. Kaner, J. Bach, and B. Pettichord, Lessons Learned in
Software Testing, Wiley Computer Publishing, 2001.
•S. L. Pfleeger, Software Engineering: Theory and
Practice, second ed., Prentice Hall, 2001
Lecturer
Title of the Lecture
Slide 31 of XY
English     Русский Правила