
- •56. Понятие корректно и некорректно поставленных задач.
- •57. Метод простой интерации явного типа решения некорректных задач с апостериорным выбором числа итераций
- •Доказательство.
- •56. Понятие корректно поставленной и некорректно поставленной задачи. Пример. Неявный метод простой итерации решения некорректных задач с априорным выбором числа итераций.
- •59. Сходимость метода итераций явного типа решения некорректных задач в энергетической норме.
- •Полагаем и рассмотрим разность
- •Доказательство.
- •7. Обзор популярных технологий программирования.
- •8. Стиль программирования.
- •10. Проектирование программ. Возможности реализации.
- •11. Эффективность программ.
- •Отношение к эффективности
- •Эффективность или удобочитаемость?
- •Оптимизирующие компиляторы
- •Оптимизация программ
- •Оптимизаци памяти
- •Вычислительные составляющие
- •12. Отладка программ.
- •Отличие отладки от тестирования
- •Отладочный барьер
- •Наиболее распространенные ошибки
- •Бесхитростное программирование
- •Синтаксические ошибки
- •Ошибки не обнаруживаемые компилятором
- •Виды отладки
- •Общие рекомендации
- •Средства отладки
- •Программирование без ошибок
- •Предотвращение ошибок
- •13. Тестирование программ.
- •Уровни тестирования
- •Методы тестирования Тестирование «белого ящика» и «чёрного ящика»
- •Статическое и динамическое тестирование
- •Регрессионное тестирование
- •Покрытие кода
- •Пример тестовых данных
Уровни тестирования
Модульное тестирование (юнит-тестирование) — тестируется минимально возможный для тестирования компонент, например, отдельный класс или функция
Интеграционное тестирование — проверяет, есть ли какие-либо проблемы в интерфейсах и взаимодействии между интегрируемыми компонентами — например, не передается информация, передаётся некорректная информация.
Системное тестирование — тестируется интегрированная система на её соответствие исходным требованиям
Альфа-тестирование — имитация реальной работы с системой штатными разработчиками, либо реальная работа с системой потенциальными пользователями/заказчиком на стороне разработчика. Применяется для законченного продукта в качестве внутреннего приемочного тестирования. Иногда выполняется под отладчиком или с использованием окружения, которое помогает быстро выявлять найденные ошибки. Обнаруженные ошибки могут быть переданы тестировщикам для дополнительного исследования в окружении, подобном тому, в котором будет использоваться ПО.
Бета-тестирование — в некоторых случаях выполняется распространение версии с ограничениями (по функциональности или времени работы) для некоторой группы лиц, с тем чтобы убедиться, что продукт содержит достаточно мало ошибок. Иногда бета-тестирование выполняется для того, чтобы получить обратную связь о продукте от его будущих пользователей.
Методы тестирования Тестирование «белого ящика» и «чёрного ящика»
При тестировании белого ящика (прозрачного ящика), разработчик теста имеет доступ к исходному коду и может писать код, который связан с библиотеками тестируемого ПО. Это типично для юнит-тестирования, при котором тестируются только отдельные части системы. Оно обеспечивает то, что компоненты конструкции — работоспособны и устойчивы, до определенной степени.
При тестировании чёрного ящика, тестировщик имеет доступ к ПО только через те же интерфейсы, что и пользователь, либо через внешние интерфейсы, позволяющие другому компьютеру либо другому процессу подключиться к системе для тестирования. Например, тестирующий модуль может виртуально нажимать клавиши или кнопки мыши в тестируемой программе с помощью механизма взаимодействия процессов, с уверенностью в том, что эти события вызывают тот же отклик, что и реальные нажатия клавиш и кнопок мыши.
Статическое и динамическое тестирование
Динамическое тестирование предполагает исполнение кода. При статическом тестировании программный код не выполняется — анализ программы происходит на основе исходного кода, который вычитывается вручную, либо анализируется специальными инструментами.
Регрессионное тестирование
После внесения изменений в очередную версию, регрессионные тесты подтверждают, что сделанные изменения не повлияли на функциональность предыдущей версии. Регрессионное тестирование может выполняться как вручную, так и программой, автоматизирующий этот процесс.
Покрытие кода
Тестируемое ПО собирается со специальными настройками или библиотеками и/или запускается в особом окружении, в результате чего для каждой используемой функции программы определяется местонахождение этой функции в исходном коде. Этот процесс позволяет разработчикам и специалистам по обеспечению качества определить части системы, которые используются очень редко или никогда не используются. Это позволяет сориентировать тестировщиков на тестирование наиболее важных режимов.