
- •1. Технология разработки программного обеспечения. Определение. Основные этапы на примере классического жизненного цикла.
- •2. Два взгляда на по: научная разработка, программное изделие. Свободное по.
- •3. Парадигмы проектирования программных систем. Макетирование.
- •4.Парадигмы проектирования пс. Инкрементная модель.
- •5. Парадигмы проектирования программных систем. Быстрая разработка приложений.
- •6. Парадигмы проектирования программных систем. Спиральная модель.
- •7. Парадигмы проектирования программных систем. Компонентно-ориентированная модель.
- •8. Парадигмы проектирования программных систем. Унифицированный процесс. Rup.
- •1. Начало
- •2. Уточнение
- •3. Построение (Конструирование)
- •4. Внедрение
- •9. Парадигмы проектирования программных систем. Экстремальное программирование.
- •10. Спецификация требований. Виды требований.
- •1) Пользовательские требования
- •2) Системные требования
- •3) Проектная системная спецификация.
- •11. Функциональные требования.
- •12. Нефункциональные требования.
- •13. Требования предметной области.
- •14. Пользовательские требования.
- •15. Системные требования.
- •16. Описание технического задания по гост.
- •17. Прецеденты. Определение. Актеры. Сценарии.
- •18. Задачи и рамки прецедентов.
- •19. Степень формализации прецедентов. Сжатый, свободный и развёрнутый формат описания.
- •20. Пояснения к прецедентам. Предусловия и постусловия. Альтернативные сценарии.
- •22. Объектно-ориентированные анализ и проектирование программных систем. Основные определения.
- •23. Основные принципы объектно-ориентированной разработки программ.
- •24. Обязанности объектов. Разложение системы на объекты. Crc-карты.
- •25. Инкапсуляция. Связность внутри классов и зацепление между классами.
- •26. Композиция и наследование. Абстрактные классы. Интерфейс класса. Рекомендации.
- •27. Методы, операции, сообщения. Разделение команд и запросов.
- •28. Проектирование по контракту. Предусловия и постусловия в методах. Инварианты.
- •29. Паттерны проектирования. Определение. Формат описания.
- •30. Виды паттернов по уровню абстракции и по цели. Примеры.
- •36. Минимальное грубое тестирование
- •37. Автоматизированные тесты. Основные определения. XUnit
- •38. Разработка через тестирование
- •39. Особенности командной разработки по
- •40. Оценка стоимости по. Модели и методики. Модель cocomo
36. Минимальное грубое тестирование
По сути это критерий покрытия решений и условий, дополненный проверкой циклов. Проверка циклов организуется по следующим правилам:
Для каждого цикла с предусловием должна быть проверена правильность при нулькратном, однократном и многократном повторениях тела цикла. Под многократным понимается повторение более 1 раза
Для каждого цикла с постусловием проверяется правильность при однократном и многократном повторении тела цикла.
Проверка цикла со счётчиком – если границы цикла фиксированы или они вычисляются. В лучшем случае проверка аналогична 1му случаю
МГТ удобно представлять с помощью таблицы, в которой строки соответствуют проверяемым условиям, а столбцы – тестам.
Для каждого простого условия создается 2 строки, для каждого цикла с предусловием - по 3 строки и для циклов с постусловием по 2 строки.
В случае оператора множественного выбора пишется столько строк, сколько условий в операторе.
МГТ явл-ся достаточно разумным компромиссом между сложностью и надёжностью.
37. Автоматизированные тесты. Основные определения. XUnit
Классификация методов тестирования по изолированности компонент:
- компонентное (модульное)
- интеграционное тестирование – тестирование модулей в группе. Для его автоматизации применяются системы непрерывной интеграции
- системное тестирование - выполняется на полной интегрированной системе для проверки соответствия исходным требованиям. Это, по сути, тестирование чёрного ящика, проверяются в том числе и нефункциональные требования. Сложно автоматизировать.
Модульное тестирование – процесс в программировании, позволяющий проверить на корректность модули исходного кода. Суть – изолировать отдельные части программы и показать, что по отдельности они работоспособны.
xUnit - это семейство управляемых кодом framework'ов тестирования. Эти framework'и позволяют тестировать различные элементы (unit) программного обеспечения, например, функции и классы. Главное преимущество xUnit framework'ов заключается в возможности выполнять автоматическое тестирование без необходимости писать одни и те же тесты много раз и запоминать правильные результаты их выполнения. xUnit framework'и основаны на разработке Kent Beck, которая первоначально предназначалась для языка программирования Smalltalk и называлась SUnit.
Архитектура xUnit
Архитектура xUnit framework'ов зависит от нескольких компонентов.
Конфигурации тестирования (Test fixtures)
Конфигурации тестирования (также известны как контексты) это набор предварительных условий или состояний, необходимых для успешного прохождения теста. Разработчик перед началом тестирования должен установить известное правильное состояние, а после завершения тестов должен вернуть систему в первоначальное состояние.
Наборы тестов (test suite)
Набор тестов это несколько тестов, которые используют общую конфигурацию (Test fixtures) Последовательность тестов не должна иметь значение.
Выполнение тестов
Выполнение отдельного теста выглядит примерно так:
setup(); /* Сначала мы должны подготовить наш 'мир' - изолированное окружение для тестирования */
...
/* Тело теста - Здесь мы выполняем все тесты */
...
teardown(); /* В заключении в независимости от результата тестирования,
мы должны очистить наш 'мир', чтобы не мешать другим тестам */
Методы setup() и teardown() выполняют инициализацию и очистку тестовой конфигурации.
Утверждения (Assertions)
Утверждение - это функция или макрос, который проверяет поведение (или состояние) теста. В случае ошибки утверждение обычно выбрасывает исключение, которое прерывает выполнение текущего теста.