1 / 43

Тестирование ПО Подходы и практика 22 мая 200 8 г.

Тестирование ПО Подходы и практика 22 мая 200 8 г. Технологии программирования. 4 курс. Тестирование ( def). Тестирование – деятельность, выполняемая для оценки и улучшения качества программного обеспечения.

Download Presentation

Тестирование ПО Подходы и практика 22 мая 200 8 г.

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Тестирование ПОПодходы и практика22 мая 2008 г. Технологии программирования 4 курс

  2. Тестирование (def) Тестирование –деятельность, выполняемая для оценки и улучшения качества программного обеспечения. Эта деятельность обычно базируется на обнаружении дефектов и проблем в программных системах.

  3. Качество ПО(def) «Достижение отличного уровня пригодности к использованию» - Watts Hamphrey, автор CMM. «Степень соответствия присущих характеристик требованиям» - ISO 9001. Приемлемое качество: <Количественно выраженный> компромисс между заказчиком и исполнителем в отношении характеристик продукта, создаваемого исполнителем в интересах решения задач заказчика с учетом других ограничений проекта.

  4. Доказательства правильности • Формальный подход. Формальное доказательство правильности – вывод формул при помощи формальных процедур из исходных аксиом. • Интерпретационный подход. Экспериментальная проверка. Подстановка данных и интерпретация результатов.

  5. Сущность тестирования Тестирование программных систем состоит из динамическойверификации поведения программ на конечном (ограниченном)наборе тестов, выбранныхсоответствующим образом из обычно выполняемых действий прикладной области и обеспечивающих проверку соответствия ожидаемомуповедению системы.

  6. Аспекты определения • Динамичность. Выполнение программы с заданными входными данными. • Конечность. Невозможно перебрать все варианты входных данных. • Выбор. Умение задавать вопросы системе. Что проверяем – то и находим. • Ожидания. Какое поведение приемлемо, а какое – ошибочно.

  7. Принципиальная ограниченность Тестирование программы может использоваться только для демонстрации наличия дефектов, но никогда не покажет их отсутствие. (Фальсификация, а не верификация.)

  8. Терминология • Отладка (debug, debugging) –процесс поиска, локализации и исправления ошибок в программе. • Тестированиеобеспечивает выявление (констатацию наличия) фактов расхождений с требованиями (ошибок). • Сбои и дефекты. Дефект или недостаток – это причина возникновения нежелательного поведения системы. Само это поведение называется сбоем или ошибкой.

  9. Уровни тестирования Над чем проводятся тесты: • Модульное тестирование. Тестирование отельного элемента системы. (Подробноеописание - стандартIEEE 1008-87 “Standard for Software Unit Testing”) • Интеграционное тестирование. Проверка взаимодействия между модулями. • Системное тестирование. Безопасность, надежность, скорость, точность, и т.п. Интерфейсы к внешним приложениям, ОС, аппаратуре.

  10. Цели тестирования • Приёмочное тестирование. Проверка поведения системы на предмет удовлетворения требований заказчика. • Установочное тестирование. Проверка процедуры инсталляции системы в целевом окружении. • Альфа- и бета-тестирование. Внутреннее (альфа) и внешнее (с привлечением отобранных пользователей) пробное использование. • Функциональные тесты. Проверка соответствия системы предъявляемым к ней требованиям, описанным на уровне спецификации поведенческих характеристик.

  11. Цели тестирования • Достижение и оценка надежности. Помогая идентифицировать причины сбоев, тестирование подразумевает и повышение надежности программных систем. • Регрессионное тестирование. Повторное выборочное тестирование системы или компонент для проверки сделанных модификаций не должно приводить к непредусмотренным эффектам. • Тестирование производительности. Цель - достижение реальных (достижимых) возможностей производительности. • Нагрузочное тестирование (Stress testing). Цель – выявить поведение системы при пиковой (стрессовой) нагрузке.

  12. Цели тестирования • Сравнительное тестирование. Единичный набор тестов, позволяющих сравнить две версии системы. • Восстановительные тесты. Цель – проверка возможностей рестарта системы в случае непредусмотренной катастрофы. • Конфигурационное тестирование. Проверка поведения и работоспособности системы в различных конфигурациях (в терминах «ролей» пользователей). • Тестирование удобства и простоты использования (Usability testing). Легкость освоения системы пользователем, решения им своих задач, качество защиты от ошибок пользователя.

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

  14. Техники тестирования • Базирующиеся на интуиции и опыте инженера. • Специализированное тестирование (Ad hoc testing). Тесты основываются на опыте, интуиции и знаниях инженера, рассматривающего проблему с точки зрения имевшихся ранее аналогий.

  15. Техники тестирования • Базирующиеся на интуиции и опыте инженера. • Исследовательские тесты. Одновременное обучение, проектирование теста и его исполнение. Использует знания инженера, формируемых на основе поведения тестируемого продукта в процессе проведения тестирования, степени знакомства с приложением, платформой, типами возможных сбоев и дефектов, и т.п.

  16. Техники тестирования • Базирующиеся на спецификациях. • Эквивалентное разделение. • Анализ граничных значений. • Таблицы принятия решений. • Конечные автоматы. • Формальные спецификации. • Случайное тестирование.

  17. Техники тестирования • Ориентированные на код. • Базирующиеся на блок-схеме. Проверка покрытия всех маршрутов на блок-схеме. • На основе потоков данных. Отслеживается полный жизненный цикл переменных внутри программы. • Ссылочные модели (дерево вызовов).

  18. Техники тестирования • Ориентированные на дефекты. • Предположение ошибок. Ищем наиболее вероятные или разрушительные ошибки. Например, на основе анализа рисков. • Тестирование мутаций. Мутация – небольшое изменение тестируемой программы, произошедшее за счет частных синтаксических изменений кода (в частности, рефакторинга).

  19. Техники тестирования • Ориентированные на условия использования. • Операционный профиль. Тестирование проводится в таком тестовом окружении, которое максимально приближено к реальным условиям работы системы. • Базирующиеся на надежности инженерного процесса. Базируются на условиях разработки системы.

  20. Процесс тестирования: соображения • Программирование без персоналий. Все заинтересованы в выпуске качественного продукта. Никто не скрывает ошибок. • Руководства по тестированию. Все знают, что и как делается. Есть программы, планы, известны подходы и методики. • Управление процессом тестирования. Известны люди, инструменты, есть регламент работ и значения количественных оценок.

  21. Процесс тестирования: соображения • Документирование тестов и рабочего продукта. Стандарт IEEE 829-98 “Standard for Software Test Documentation” Документы: • План тестирования. • Спецификация процедуры тестирования. • Спецификация тестов. • Лог тестов.

  22. Процесс тестирования: соображения • Внутренние и независимые команды тестирования. Лучше иметь обе. • Оценка стоимости и усилий. Выбор техники, концепции и модели тестирования в зависимости от бюджета и целей тестирования. • Окончание тестирования. Достижение системой приемлемого качества. • Повторное использование. Шаблоны тестов.

  23. Тестирование: состав работ • Планирование. • Генерация сценариев тестирования. • Разработка окружения. • Выполнение тестов. • Регистрация результатов (журнал тестирования). • Анализ результатов. • Отчет.

  24. 1. Планирование Ключевые аспекты планирования: • координация персонала. • управление оборудованием и другими средствами, необходимыми для организации тестирования. • планирование обработки нежелательных результатов.

  25. 2. Сценарии тестирования На этом этапе выбираем уровни и техники тестирования, конфигурации и версии системы и описываем ожидаемые результаты тестирования. Здесьже определяем критерии прекращения тестов.

  26. 3. Тестовое окружение Перечисляем средства, необходимые для тестирования: • Аппаратные средства. • Системное программное окружение. • Специализированное ПО для прогона и контроля тестов. • Средства регистрации и документирования.

  27. 4. Выполнение тестов • должны фиксироваться все работы и результаты процесса тестирования. • форма журналирования таких работ и их результатов должна быть такой, чтобы соответствующее содержание было понятно, однозначно интрепретируемо и повторяемо другими лицами. • тестирование должно проводиться в соответствии с заданными и документированными процедурами. • тестирование должно производиться над однозначно идентифицируемой версией и конфигурацией программной системы.

  28. 5. Регистрация результатов • Когда проводится тест. • Какой тест. • Кем проводится. • Для какой конфигурации программной системы. • Результат теста. • Сбой во время теста. • Последовательность шагов, приведших к сбою. • Уровень серьезности дефекта.

  29. 6. Анализ результатов Сбои, обнаруженные в процессе тестирования, чаще всего порождаются дефектами и ошибками, присутствующими в тестируемой программной системе. Анализ заключается в определении типов ошибок, ставших причиной этих дефектов (например, плохо сформулированные требования, некорректный дизайн, утечки памяти и т.д.)

  30. 7. Отчет о тестировании Зависит от цели тестирования. В отчете делается заключение об успешности или неуспешности тестирования в целом. Отчёты по тестам могут являться входом для процесса управления изменениями и генерации запросов на изменения (change request) в рамках процессов конфигурационного управления.

  31. Методологии разработки и тестирования • Каскадная (Водопад). • Итеративная/Спиральная. • Rational Unified Process (RUP). • Microsoft Solution Framework (MSF). • Rapid Application Development (RAD). • Гибкие методологии (Agile Dev).

  32. Каскадная модель

  33. Итеративная модель Каскадная модель, повторяемая несколько раз.

  34. RUP • Планирование тестов. • Дизайн тестов. • Разработка тестов. • Выполнение тестов. • Оценка тестов.

  35. MSF Фаза стабилизации. Вехи: • Точка конвергенции. • Точка достижения нуля. • Готовность версии-кандидата. • Контрольное тестирование завершено. • Тестирование приемлемости для потребителей завершено. • Пилотное внедрение завершено. • Готовность решения утверждена.

  36. MSF Фаза стабилизации. Результаты: • Окончательный продукт (golden release). • Документация выпуска (release notes). • Материалы поддержки решения. • Результаты и инструментарий тестирования. • Исходный и исполнимый код приложений. • Проектная документация. • Анализ пройденной фазы (milestone review).

  37. MSF:Основные задачи проектной группы.

  38. RAD • Быстрое прототипирование. • Тестирование и разработка не разделяются. • Регрессионное тестирование?

  39. Гибкие методы разработки • Разработка через тестирование(Test Driven Development, TDD). • Рефакторинг.

  40. Разработка через тестирование Разработка через тестирование - процесс разработки программного обеспечения, который предусматривает написание и автоматизацию модульных тестов еще до момента написания соответствующих классов или модулей.

  41. Рефакторинг • Когда в программу нужно добавить некую функциональность, но её код не структурирован удобным образом для добавления этой функциональности, то сначала стоит произвести рефакторинг программы, чтобы упростить внесение изменений, и только после этого вносить эти изменения. • Перед тем, как начать рефакторинг, убедитесь, что у Вас есть основательный комплект тестов. Тесты должны быть самопроверяющимися. • Ритм рефакторинга: тестирование, небольшое изменение и т.д.

  42. ПРОГРАММА И МЕТОДИКА ИСПЫТАНИЙ ЕСПД ГОСТ 19.301-79: • Объект испытаний. • Цель испытаний. • Требования к программе. • Требования к документации. • Средства и порядок испытаний. • Тестовые примеры.

  43. Спасибо за внимание Конец лекции.

More Related