Тестирование программного обеспечения

Программа курса

Тема 1. Введение в тестирование ПО

  • Введение.
  • Тестирование и качество.
  • Направления тестирования.
  • Этапы тестирования.
  • Методы тестирования (метод чёрного, белого и серого ящика).
  • Функциональное тестирование.
  • Виды тестирования.
  • Уровни тестирования.

Тема 2. Тестирование ПО и его связь с жизненным циклом ПО

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

Тема 3. Планирование тестовых испытаний

  • Введение.
  • Связь планирования тестовых испытаний с жизненным циклом ПО.
  • Области компетенции тестировщиков.
  • Задачи планирования и тестового плана.
  • Необходимые действия на стадии планирования.
  • Артефакты, создаваемые на стадии планирования.
  • Сложности планирования.
  • Риски.
  • Секции тестового плана.
  • Критерии хорошего тестового плана.
  • Преимущества хорошего тестового плана.
  • Рассмотрение пример тестового плана.
  • Тест.

Тема 4. Тестирование документации и требований

  • Введение.
  • Определение понятия “требование”.
  • Требования к продукту и процессу.
  • Важность требований.
  • Распределение дефектов по рабочим продуктам.
  • Виды документации, подвергаемой тестированию.
  • Уровни требований.
  • Типы требований.
  • Группа функциональных требований.
  • Группа нефункциональных требований.
  • Кто создаёт и использует требования.
  • Связь требований и архитектуры проекта.
  • Связь анализа требований и потоков программной инженерии.
  • Источники требований.
  • Пути выявления требований (интервью, анкетирование, наблюдение, самостоятельное описание, семинары, прототипирование).
  • Видение продукта и границы проекта.
  • Документирование требований. Секции документа “Требования”.
  • Тестирование требований.
  • Характеристики хорошего требования.
  • Характеристики хорошего набора требований.
  • Каких требований быть не должно.
  • Проблемы с требованиями.
  • Проблемы с наборами требований.
  • Работа с требованиями (техники и способы).
  • Практическое задание.
  • Тест.

Тема 5. Разработка тестов

  • Разновидности тестов.
  • Пример разработки тестов: задача о треугольнике.
  • Классы эквивалентности и граничные условия.
  • Рекомендации по разработке тестов.
  • Документирование тестов. Тест-кейсы.
  • Свойства тест-кейсов.
  • Язык написания тестов.
  • Критерии хорошего тест-кейса.
  • Тестовые сценарии.
  • Техники ускорения написания тестов.
  • Шаги разработки тестов.
  • Пример разработки тестов: Notepad.
  • Практическое задание.
  • Тест.

Тема 6. Поиск и документирование дефектов

  • Введение.
  • Определения дефекта.
  • Отчёты об ошибках.
  • Примеры отчётов об ошибках.
  • Атрибуты отчётов об ошибках.
  • Плохие и хорошие отчёты об ошибках.
  • Рекомендации по написанию отчётов об ошибках.
  • Преимущества хороших отчётов об ошибках.
  • Баг-трэкинговые системы.
  • Практическое задание.
  • Тест.

Тема 7. Документирование результатов тестирования

  • Введение.
  • Определения отчёта о результатах тестирования.
  • Цели написания отчёта о результатах тестирования.
  • Структура отчёта о результатах тестирования, примеры.
  • Потребности проектной команды в отчёте о результатах тестирования.
  • Финальный отчёт о результатах тестирования.
  • Рассмотрение примеров отчётов о результатах тестирования.
  • Тест.

Тема 8. Автоматизация тестирования

  • Введение.
  • Понятие автоматизации.
  • Области автоматизации.
  • Наилучшие и наихудшие тесты для автоматизации.
  • Памятки автоматизации.
  • Почему не всё следует автоматизировать.
  • Условия успешной автоматизации.
  • Преимущества автоматизации.
  • Недостатки автоматизации.
  • Лучшие идеи автоматизации.
  • Технология Record&Playback.
  • Функциональная декомпозиция.
  • Тестирование под управлением данными.
  • Тестирование под управлением ключевыми словами.
  • Обзор средств автоматизации.
  • Средство автоматизации SilkTest.
  • Практическое задание.
  • Тест.

Тема 9. Тестирование безопасности

  • Введение.
  • Определения тестирования безопасности.
  • Терминология тестирования безопасности.
  • Источники проблем информационной безопасности.
  • Принципы безопасности и защищённости.
  • Категории объектов защиты.
  • Уровни информационной безопасности.
  • Поиск уязвимостей.
  • Типы тестов уязвимости.
  • Атаки через среду.
  • Атаки через ввод.
  • Атаки через данные и логику.
  • Программное обеспечение для автоматизации тестирования безопасности.
  • Мифы безопасности.
  • Практическое рассмотрение средств тестирования безопасности.
  • Тест.

Тема 10. Тестирование юзабилити

  • Введение.
  • Определения юзабилити и тестирования юзабилити.
  • Тезисы тестирования юзабилити.
  • Виды тестирования юзабилити.
  • Контекстные исследования.
  • Оценочные листы.
  • Плюралистическая проработка.
  • Протоколы самоотчёта.
  • Фокусные группы.
  • Экспертиза компонентов.
  • Тест.

Тема 11. Модульное тестирование

  • Введение.
  • Термины и определения модульного тестирования.
  • Стратегия модульного тестирования.
  • Цель модульного тестирования.
  • Планирование модульного тестирования.
  • Распределение обязанностей при модульном тестировании.
  • Место модульного тестирования в программировании.
  • Уровни модульного тестирования.
  • Метрики покрытия.
  • Оболочки модульного тестирования.
  • Семейство XUnit.
  • Расширения XUnit.
  • Тест.

Тема 12. Итоги и перспективы

  • Классические ошибки тестировщиков.
  • Портрет тестировщика.
  • Перспективы карьерного роста тестировщика.
  • Общий тест по всему курсу.
  • Разбор теста.

Автоматизированное тестирование веб-приложений

Программа курса

Тема 1. Введение в Java-программирование. Основы языка — переменные

  • Язык программирования Java. Технологии Java: SE, EE, ME, Java FX. SE JDK и JRE — назначение и состав.
  • Установка и настройка SE JDK.
  • Технологии и инструменты для программирования на Java.
  • Установка и настройки IDE.
  • Структура проекта (с учётом выбранной IDE). Размещение файлов с исходными текстами и файлов классов.
  • Понятие пакета. Соотношение пакета и каталога файловой системы. Правила именования пакетов.
  • Создание проекта, пакета и класса в IDE.
  • Структура приложения. Основные правила написания Java-приложения.
  • Синтаксис языка.
  • Ключевые слова. Идентификаторы. Правила именования в Java. Литералы (константы).
  • Комментарии. Комментарии документации (javadoc).
  • Понятие ТИП. Примитивные типы данных. Ссылочные типы данных. Классы-обертки.
  • Операторы присваивания, арифметические (унарные и бинарные).
  • Операторы сравнения и логические операции.
  • Побитовые операции и сдвига.

Тема 2. Класс Scanner. Операторы управления. Циклы

  • Класс Scanner.
  • Условные операторы if-then / if-then-else, switch.
  • Циклы while и do-while.
  • Операторы break и continue.
  • Цикл for.

Тема 3. Массивы. Работа с библиотечными классами

  • Массивы.
  • Одномерные, двумерные, многомерные, нерегулярные массивы.
  • Различные сортировки массивов.
  • Классы оболочки примитивных типов.
  • Автоупаковка и автораспаковка.
  • Статический импорт.
  • Класс Math, Random.
  • Класс Date, DateFormat, Calendar, GregorianCalendar.

Тема 4. Принципы ООП

  • Основные понятия ООП.
  • Структура построения класса (поля, методы, логические блоки).
  • Спецификаторы доступа.
  • Объявление класса.
  • Методы и конструкторы.
  • Ключевое слово this.

Тема 5. Классы и объекты. Enum. String

  • Передача информации в методы и конструкторы.
  • Методы с переменным числом параметров.
  • Возврат значения из метода.
  • Перегрузка методов.
  • Логические блоки (статические и нестатические).
  • Ключевые слова static и final.
  • Тип Перечисление (Enum).
  • Класс String.
  • Использование классов StringBuilder/StringBuffer.

Тема 6. Автоматизация процессов тестирования

  • Введение в автоматизацию процессов тестирования.
  • Автоматизация тестов: технологии, методы, средства.
  • Хорошая архитектура тестового набора: почему это ТАК важно.
  • Проектирование автотестов: чем оно отличается от проектирования ручных тестов.

Тема 7. Введение в Selenium 2.0

  • Что такое Selenium, для чего он предназначен.
  • Основные элементы Selenium 2.0: Selenium IDE, Selenium RC, Selenium Webdriver, Selenium Server, Selenium Grid.
  • Установка Selenium IDE, запуск «табличных» тестов в браузере.

Тема 8. Рекордер Selenium IDE

  • Запись, воспроизведение, отладка теста в рекордере Selenium IDE.
  • Обзор набора команд, которые можно использовать в Selenium IDE.
  • Установка Selenium Server, запуск «табличных» тестов из командной строки.

Тема 9. Перевод тестов на язык программирования (JUnit)

  • Установка среды разработки Eclipse.
  • Cоздание и настройка проекта в среде разработки.
  • Перенос тестов из Selenium IDE в среду разработки.
  • Запуск тестов из среды разработки.

Тема 10. Доработка тестов

  • Отладка тестов — пошаговое прохождение и просмотр значений переменных.
  • Добавление простых проверок при помощи Selenium IDE.
  • Собственные методы инициализации и завершения.

Тема 11. Перевод тестов на язык программирования (TestNG)

  • Создание конфигурационного файла TestNG, запуск тестов из командной строки.
  • Параметризация запуска тестов через конфигурационный файл TestNG.
  • Параметризация запуска тестов через отдельный конфигурационный файл.
  • Передача параметров через командную строку при запуске тестов.
  • Динамическая генерация тестовых данных.
  • Подгрузка тестовых данных из внешних источников – текстовый файл, Excel.

Тема 12-13. Параллельный запуск тестов

  • Возможности фреймворка для запуска тестов TestNG.
  • Выполнение тестов параллельно на нескольких машинах с использованием Selenium Grid 2.0.
  • Выполнение тестов параллельно с использованием HtmlUnitDriver.
  • Встраивание тестов в системы непрерывной интеграции: Cruise Control, Jenkins (Hudson).
  • Выполнение тестов «в облаках»: CloudTesting, Sauce OnDemand.
  • Нагрузочное тестирование с использованием Selenium: BrowserMob.

Тема 14. Журналирование выполнения тестов

  • Снятие скриншотов.
  • Журналирование средствами фреймворка TestNG.
  • Журналирование с использованием EventFiringWebDriver.

Тема 15. Расширения для разработки тестов

  • Selenium IDE, Sauce IDE.
  • Fluent Selenium.
  • Тестирование веб-приложений под Android.
  • Работа с почтой (JavaMail).
  • Работа с базой данных (Hibernate).
  • Удалённый доступ по протоколам Telnet и FTP (Jakarta Commons Net).
  • Проверка знаний, итоговый тест.