Similar presentations:
Тестирование программного обеспечения (Часть 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. Содержание
Subtitle1. Введение
2. Верификация и валидация (аттестация) (согласно работе
И.Соммервилла по программой инженерии)
3. Тестирование программного обеспечения (согласно работе
И.Соммервилла по программой инженерии)
Lecturer
Title of the Lecture
Slide 3 of XY
4. SWEBOK проект
SubtitleSWEBOK проект
Управление конфигурацией ПО
Создание ПО
Проектирование ПО
Инфраструктура технологии разработки ПО
Управление разработкой ПО
Процесс разработки ПО
Развитие и сопровождение ПО
Анализ качества ПО
Анализ требований к ПО
Тестирование программного обеспечения!!!!!!
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. Базовые концепции и определения тестирования
SubtitleA. Базовые концепции и определения
тестирования
•Разработчики различают дефекты ПО и сбои.
•В случае сбоя программа ведет себя не так как
ожидает пользователь.
•Дефект – это ошибка, которая вызывает сбой.
•Когда результат выполнения теста отклоняется от
ожидаемого, наблюдается отказ, причиной которого
является ошибка.
Lecturer
Title of the Lecture
Slide 20 of XY
21.
SubtitleLecturer
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. Методы тестирования
SubtitleC. Методы тестирования
•Несколько тестовых методов были разработаны за
прошлые два десятилетия , учитывающие различные
критерии, и предлагаются еще новые.
Lecturer
Title of the Lecture
Slide 27 of XY
28. D. Измерение тестирования
SubtitleD. Измерение тестирования
•Иногда случается путаница между целями тестирования и его
методами. Например, охват разветвления является популярным
тестовым методом. Достижение определенного измерения по
покрытию разветвления нельзя рассматривать по существу как
цель тестирования: это - средство улучшить возможности
обнаружения отказов (с помощью систематического
исследования каждого разветвления программы из точки
решения). Чтобы избежать такие недоразумения, должно быть
сделано четкое различие между измерениями тестирования,
которые оценивают набор тестов (например, меры покрытия), и
теми методами, которые обеспечивают оценку тестируемой
программы на основании наблюдаемых результатах теста, как
надежность.
Lecturer
Title of the Lecture
Slide 28 of XY
29. E. Управление Процессом тестирования
SubtitleE. Управление Процессом тестирования
Понятия, стратегии, методы и метрики
тестирования должны быть интегрированы в
определенный и управляемый процесс, который
выполняется людьми. Процесс тестирования
должен обеспечивать тестирующие действия и
команды тестировщиков, от планирования теста до
оценивания результатов таким образом, чтобы
обеспечить оправданную уверенность, что тестовые
цели выполняются с наименьшими затратами.
Проблемы относятся к Управлению Тестовым
Процессом.
Lecturer
Title of the Lecture
Slide 29 of XY
30. F. Инструментарий тестирования
SubtitleF. Инструментарий тестирования
• Тестирование программного обеспечения
является очень дорогой и трудоемкой частью
разработки. Поэтому инструменты – средства
для поддержки тестовых действий. Более того,
чтобы улучшить показатель рентабельности,
ключевым вопросом всегда была автоматизация
тестирования в максимально возможной
степени.
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