Тестирование программного обеспечения
содержание курса
Общие положения.
· Процесс тестирования. Общая терминология. Спецификация.
· Жизненный цикл ПО. V-образная модель жизненного цикла. Стадии разработки ПО
· Различие между контролем качества (SQA) и тестированием ПО (SQC).
· Различие между тестированием, отладкой и проверкой (testing, debugging and verification)
Методы тестирования.
· Статический анализ кода
· Тестирование методом «Белого Ящика». Основные способы: проверка конца цикла (loop testing), тестирование условий (condition testing), полное тестирование ветвей( complete path testing), тестирование потока данных (data flow testing).
· Тестирование методом «Черного Ящика». Основные способы: тестирование синтаксиса (syntax testing), причинно-следственное отображение (cause effect graphing), граничный анализ (boundary value analysis), эквивалентное разбиение (equivalence partitioning).
Уровни тестирования.
· Модульное тестирование. Особенности и цель проведения.
· Оболочки модульного тестирования (tools: JUnit, Simple Test)
· Задачи и проблемы интеграционного и системного тестирования.
· Практическое задание: протестировать класс, процедуру с помощью JUnit.
· Системы отслеживания ошибок. (Bug Tracking Systems)
· Практическое задание: привести примеры и определить уровни допустимости ошибок, демонстрация работы системы отслеживания ошибок, документирование дефекта.
Тестовый цикл.
· Основные стадии: анализ спецификации, планирование, разработка, выполнение теста, составление отчета, debugging или рефакторинг и повторное тестирование.
· Тесты, как одна из форм документации. Тест план. Тест кейс. Bug Report.
· Test Effort Estimates
Типы тестирования.
· Основные виды тестирования: тестирование пользовательского интерфейса (GUI testing), тестирование безопасности (Security testing), конфигурационное тестирование (Configuration Testing), тестирование на предельных объемах (Volume testing), стрессовое тестирование (Stress testing), тестирование восстановления (Recoverability testing), тестирование надежности (Reliability testing), тестирование производительности (Performance testing).
· Экстремальное программирование. Разработка через тестирование. Модульное тестирование. Метафора светофора. Приемочное тестирование.
· Практическое задание: составление тест кейсов (на основании Help), выполнение тестирования по написанным тест-кейсам, составление отчета об ошибках(Bug Report). (Программа должна содержать различные типы ошибок. Можно взять программу Listboxer.)
Типы тестирования (продолжение темы).
· Основные виды тестирования: тестирование совместимости (Compatibility testing), тестирование инсталляции (Installation testing), тестирование на утечки памяти (Memory Leak), регрессионное тестирование (Regression testing), проверка результатов сборки (Smoke testing), приемочное тестирование (User Acceptance testing, UAT), тестирование удобства использования (Usability Testing).
Dependability или функциональная надежность: обеспечение
достоверных результатов в условиях наличия неисправностей.
Автоматизация тестирования. Rational Software. Основные продукты, их назначение. Тестирование для e-commerce, тестирование Web-приложений.


