Manual QA plan - ryaskina/qa-courses GitHub Wiki

План курса.

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

1. Введение в профессию инженера тестирования.  
2. Различные области тестирования: функциональность, производительность, безопасность, нагрузка, надёжность, совместимость, юзабилити.  
3. Различные способы организации тестирования: зависимое и независимое, валидация и верификация, контроль качества и обеспечение качества.  
4. Различные тесты: позитивные, негативные и исследовательские. Тесты белого, чёрного и серого ящика.  

Тема 2. Жизненный цикл разработки ПО.

1. Шаги и модели процесса. 
      1.1 Описание жизненного цикла "от" и "до" шаги процесса.  
      1.2 Модели процесса: водопадная, итерационная.  
      1.3 Место тестирования в жизненном цикле (цели и задачи).  
2. Методологии разработки.  
      2.1 Экстремальное программирование.     
      2.2 RUP.    
      2.3 SCRUM.  
      2.4 AGILE.  
      2.5 DevOps.   
      2.6 TDD.  
      2.7 BDD.  
      2.8 XP.  
      2.9 Kanban.  

Тема 3. Тестовая документация.

1. Документы, создаваемые в процессе тестирования.
2. Тест-план. Связь тестовых планов с другими типами документов.  
3. Составление отчётов по результатам тестирования.  
4. Тест-кейс. Правила написания, степень детализации, независимость. 
5. Инструментарий для документирования тестов: Testrail, Testlink, Jira.
6. Чек-лист.  
7. Тест-кейсы или чек-листы: что использовать?
8. Эффект пестицида и способы борьбы с ним. 

Тема 4. Организация процесса тестирования.

1. Ручное и автоматизирование: когда какое использовать?  
2. Скриптовое и исследовательское тестирование: как выбрать и как совмещать?    
3. Как выглядит процесс тестирования в различных компаниях: Google, Microsoft, Yandex.  
4. Стартапы: маленькие начинающие проекты. Нужно ли тестирование? Как проводить?  
5. Аутсорсинговые компании.   
6. Удовольствие от тестирования? как увеличить?  

Тема 5. Баг-трекинг.

1. Ведение системы отслеживания дефектов.   
2. Правила описания дефектов. Критичность и приоритет ошибок.   
3. Жизненный цикл ошибок: каким бывает? Что от него зависит, как подстроиться?  
4. Инструменты баг-трекинга: Bugzilla, Jira, Redmine.   
5. Формулирование ошибок: как сделать так, чтобы нас поняли?  

Тема 6. Виды тестирования: функциональное и нефункциональное.

1. Функциональные виды тестирования.   
2. Нефункциональные виды тестирования.  
3. Подготовка к нефункциональному тестированию: что нам важно учесть? какие особенности продукта?   
4. Тестирование безопасности, тестирование взаимодействия.  
5. Тестирование производительности.  
6. Нагрузочное тестирование.  
7. Юзабилити тестирование.  
8. Тестирование надёжности.  
9. Тестирование совместимости и окружения.  

Тема 7. Техники тест-дизайна.

1. Основы. 
      1.1 Разбиение на классы эквивалентности и поиск границ в разных типах значений.  
      1.2 Доменный анализ (domain analysis): связи классов эквивалентности  в разных влияющих на тестирование параметрах.  
2. Тестовая комбинаторика.  
      2.1 Как правильно комбинировать параметры.  
      2.2 Как совмещать негативные проверки.   
      2.3 Техника Pairwise.  
3. Продвинутые техники.  
      3.1 Диаграмма состояний и переходов.  
      3.2 Тестирование на основе вариантов использования.  
      3.3 Техника создания таблиц решений (decision tables).  
      3.4 Комбинирование рассмотренных техник.  

Тема 8. Исследовательское тестирование.

1. Отличия исследовательского, ad hoc и monkey-testing.   
2. Как тестировать продукт, по которому нет документации?   
3. Чек-листы и тест-туры.   
4. Мнемоники и эвристики исследовательского тестирования.  

Тема 9. Тестирование пользовательского интерфейса (GUI). Тестирование web-приложений.

1. Задачи и цели тестирования пользовательского интерфейса.  
2. Функциональное тестирование пользовательского интерфейса.  
3. Тестирование удобства пользовательского интерфейса (юзабилити).  
4. Дизайн интерфейса.   

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

1. Fuzzing.  
2. Алиса и Боб.  
3. Сертификаты, ключи, различия, для чего нужны.  

Тема 11. БД.

1. Теория. 
2. SQL-запросы. Основы.  
3. PL/SQL. Основы.  

Тема 12. WEB.

1. Протоколы: HTTP/HTTPS, TCP.    
2. Базовые знания: HTML, CSS, OAuth, XML, JSON, JSONSCHEMA, XPATH, XSD.   
3. Основы работы с putty, cmd.    
4. Jmeter. Postman. Функциональное тестирование.   
5. Jmeter. Нагрузочное тестирование.  
6. Автоматизация GUI тестирования. Тестирование с помощью Selenuim IDE.   
7. SoapUI, groovy. Создание заглушек.  

Тема 13. Уровни тестирования. Критерии покрытия кода тестами.

1. Модульное тестирование. Драйверы.    
2. Интеграционное тестирование. Способы.
3. Системное тестирование.   
4. Понятие покрытия кода тестами. Критерии покрытия.   
5. Метрика покрытия.   
6. Анализ покрытия.