itmo_conspects

Тестирование ПО. Трек от Яндекса

Курс разделен на 4 блока:

  1. Требования и тестируемость
  2. Как спроектировать проверки
  3. Дефекты
  4. Автоматизация проверок

Лекция 1. Введение в тестирование

Соответствие требованиям чаще всего не означает, что продукт качествен. Продукт может соответствовать требованиям, оставаться стабильным и проходить все тесты, но может не решать нужную задачу или быть неустойчивым в эксплуатации

У качества есть 4 основные метрики:

  1. Поведение - делает ли система то, что от нее требуется?
  2. Характеристики качества - насколько она удобна, быстра, надежна и безопасна?
  3. Результат использования - может ли пользователь решить свою задачу?
  4. Эксплуатация - можно ли обнаружить сбой и после него восстановиться?

Ведь проблема с продуктом может появиться в: составлении требований, дизайне продукта, его разработке, конфигурации и эксплуатации. Поэтому работа с качеством включает предотвращение проблем, получение информации, управление рисками и обучение на результатах и инцидентах


Рассмотрим ключевые термины

Важно заметить, что обеспечение качества направлено на предотвращение дефектов, а контроль качества - на их обнаружение

Приведем пример: форма регистрации требует, чтобы возраст человека был не меньше 18. Если пользователь вводит 18, а система дает отказ, то это может быть:

На практике симптом редко указывает на истинную причину. Корень проблемы может лежать глубже - в коде, данных, конфигурации или даже в исходных требованиях


Рассмотрим 7 важных принципов тестирования:

  1. Тесты показывают наличие дефектов, но никак не их отсутствие
  2. Из первого следует, что проверить все дефекты невозможно. Полное покрытие тестами всех возможных дефектов в сложной системе невозможно из-за того, что число возможных состояний чересчур огромно. Поэтому нужны приоритеты того, что проверять
  3. Тестировать нужно как можно раньше. На ранних этапах разработки исправить дефект, который возник из требований, проще, быстрее и дешевле
  4. Дефекты обычно концентрируются. Связано это может быть со сложными бизнес-правилами, частыми изменениями, количеством интеграций или накопленным техническим долгом
  5. Тесты имеют свойство устаревать. Изменения в продукте могут изменять условия, при которых тесты хорошо работали
  6. Тестирование зависит от контекста. Для разных продуктов приоритеты к тому, что тестировать, разные, так как ошибки в ПО в разных областях имеют разные риски. Контекст определяет приоритет проверок и допустимый риск совершения ошибки
  7. Продукт без дефектов может быть бесполезен. Продукт может соответствовать спецификации, не иметь дефектов, быть стабильным, но может не решать задачу пользователя

Однако после того, как все запланированные тесты успешно прошли, какой вывод можно сделать? Можно сделать вывод, что продукт соответствует запланированным критериям качества и требованиям, но это не гарантирует отсутствия скрытых дефектов и не доказывает его полезности для пользователей. Тестирование лишь дает информацию о качестве, но не является его абсолютной мерой


Рассмотрим, как тестирование работает в различных моделях разработки:

Обычно цикл тестирования проводят параллельно циклу разработки и является обратной связью для разработки:


Тесты обычно делят по уровню:

Также тесты делятся: