Theory Flashcards
Learn qa theory (44 cards)
Тестирование ПО
Процесс анализа программного средства и сопутствующей документации с целью выявления
дефектов и повышения качества продук
Качество программного обеспечения
Это степень, в которой ПО обладает требуемой комбинацией свойств.
Разница Quality Assurance и Quality Control
- QA – это проактивный процесс, направленный на предотвращение возможных дефектов. Он выполняется во время разработки продукта. Основное внимание уделяется предотвращению появления дефектов в процессе разработки продукта.
- QC – это реактивный процесс, целью которого является подтверждение качества конкретного продукта посредством тестирования, выявления и устранения неисправностей. Он проводится после того, как продукт был разработан. Основное внимание уделяется тестированию готового продукта, выявлению и устранению дефектов.
Модели разработки ПО
Водопадная
V-образная
Итерационная инкрементальная
Гибкая модель (Agile)
Жизненный цикл разработки ПО
- Идея
- Сбор и анализ требований
- Проектирование. Дизайн и архитектура
- Разработка
- Тестирование
- Внедрение и сопровождение
- Вывод из эксплуатации
Жизненный цикл тестирования
- Анализ требований
- Уточнение критериев приемки
- Уточнение стратегии тестирования
- Разработка тест-кейсов
- Выполнение тест-кейсов
- Фиксация найденных багов
- Отчет с результатами тестирования
Тест план
документ, описывающий и регламентирующий перечень работ по тестированию, а также соответствующие техники и подходы, стратегию, области ответственности, ресурсы, расписание и ключевые даты.
Разделы тест-плана
- Цель (purpose)
- Области, подвергаемые тестированию (features to be tested)
- Области, не подвергаемые тестированию (features not to be tested)
- Тестовая стратегия (test strategy) и подходы (test approach)
- Критерии (criteria)
- Приемочные критерии, критерии качества (acceptance criteria)
a. Критерии начала тестирования (entry criteria)
b. Критерии приостановки тестирования (suspension criteria)
c. Критерии возобновления тестирования (resumption criteria)
d. Критерии завершения тестирования (exit criteria) - Ресурсы (resources) (необходимое ПО, аппаратные ресурсы, человеческие ресурсы, временные ресурсы, финансовые ресурсы)
- Расписание (test schedule)
- Роли и ответственность (roles and responsibility)
- Оценка рисков (risk evaluation)
- Документация (documentation)
- Метрики (metrics)
Тестовая документация
- Тест-план
- Чек-лист
- Тест кейс
- Тест репорт
- Requirement Traceability Matrix
Требование
описание того, какие функции и с соблюдением каких условий должно выполнять приложение в процессе решения полезной для пользователя задачи
Свойства качественных требований
- Завершённость (completeness)
- Корректность (correctness)
- Непротиворечивость (consistency)
- Недвусмысленность (ambiguousness)
- Проверяемость (verifiability)
Как анализировать требования?
Взаимный просмотр (беглый просмотр, технический просмотр, формальная инспекция) Задавать вопросы, писать тест-кейсы и рисовать рисунки, прототипирование
Чек-лист
Список, содержащий ряд необходимых проверок во время тестирования программного продукта
Тест-кейс
Набор тестовых входных данных, условий выполнения и ожидаемых результатов, разработанных с конкретной целью, такой как проверка некоторого пути выполнения программы или проверка соответствию некоторому требованию.
Принципы тестирования
- Тестирование показывает наличие дефектов.
- Исчерпывающее тестирование невозможно.
- Раннее тестирование.
- Скопление дефектов.
- Парадокс пестицида.
- Тестирование зависит от контекста.
- Заблуждение об отсутствии ошибок.
Верификация и Валидация
Процесс верификации. Это статическая практика проверки документов, дизайна, архитектуры, кода и так далее. Это значит, что
процесс верификации проходит без запуска кода. Верификация всегда отвечает на вопрос “делаем ли мы
продукт правильно?”. Эта проверка связана с тем, что мы убеждаемся в том, что система хорошо
спроектирована и безошибочно. Верификация всегда происходит ДО валидации.
Процесс валидации - это процесс оценки конечного продукта, когда необходимо проверить:
соответствует ли программное обеспечение ожиданиям и требованиям клиента. Это динамический процесс, в
отличии от верификации. Этот процесс всегда включает в себя запуск кода программы и отвечает на вопрос
“делаем ли мы правильный продукт?”. Процесс валидации всегда происходит ПОСЛЕ верификации, поэтому на
этапе валидации можно уловить ошибки, которые процесс верификации не позволил нам найти.
Классификация тестирования по уровням
- Unit тестирование (компонентное, модульное)
- Интеграционное тестирование
- Системное тестирование
- Приёмочное тестирование
Разновидности интеграционного тестирования
- Тестирование интеграции компонентов, т.е. как отдельные модули одного приложения
взаимодействуют между собой. - Системное интеграционное тестирование, под которым понимают тестирование
взаимодействия между всеми компонентами системы, либо взаимодействия разных систем
между собой, либо тестирование интерфейсов с помощью которых взаимодействуют системы.
Именно об интерфейсах я хочу поговорить более подробно. Существует три вида интерфейсов:
● Интерфейс программирования приложений, либо API. Этот набор методов можно
использовать для доступа к функциональности другой программы. Например, API используется
для того, чтобы наладить какую-то платежную систему для того или иного ресурса. Например,
интернет-магазин, для него разработчик налаживает интеграцию с системой посредством
данного интерфейса. Ему не нужно разрабатывать свою платежную систему, таких систем
существует огромное количество. Самые известные из них это API взаимодействия с
социальными сетями той же в Facebook или ВКонтакте.
● CLI (command line interface), интерфейс командной строки, там, где инструкция компьютеру
даётся путем ввода с клавиатуры текстовых строк, по-простому - это обычная командная строка
в системе Windows.
● GUI (graphical User Interface). В нём программные функции предоставляются графическими
элементами экрана. Например, это то, что мы видим в окне браузера, когда открываем страницу
в интернете.
Альфа-тестирование / Бета-тестирование
Альфа-тестирование - эксплуатационное тестирование, проводится на стороне разработчика,
но не в рамках нашей компании.
Бета-тестирование проводится на внешней стороне и без участия разработчиков. Обычно
бета-тестирование проводится небольшой группой пользователей, чтобы получить их отзыв до
выхода продукта на рынок,
Классификация тестирования по позитивности
Позитивное тестирование - это такое тестирование, когда применяются сценарии, которые
соответствуют нормальному ожидаемому поведению системы.
Негативное тестирование. Тестирование в рамках которого применяются сценарии, которые
соответствуют внештатному поведению системы.
Классификация тестирования по степени важности тестируемых функций
Smoke testing (дымное, дымовое) тестирование направлено на проверку готовности разработанного продукта к
проведению расширенного тестирования и определение общего состояния качества продукта.
Тест критического пути (critical path test) - основной тип тестовых испытаний, во время которого
значимые элементы и функции приложения проверяются на предмет правильности работы при стандартном использовании.
Расширенный тест (extended test) - проверка
нестандартного использования программного продукта.
Классификация тестирования по цели тестирования
New feature test (тестирование новой функциональности) - это проверка качества новой
функциональности, поставленной на тестирование.
Регрессионное тестирование (Regression testing) - это тестирование ранее проверенной функциональности, с целью удостовериться, что
изменения в коде, например добавление новой функциональности, либо же исправления какого-либо дефекта,
не повлияли на работу старой функциональности.
Re-test - это проверка результата работы над дефектом, проверка правильности исправления дефекта.
Классификация тестирования по степени автоматизации
При ручном
тестировании тестировщики вручную выполняют тесты, не используя никаких средств автоматизации.
Автоматизированное тестирование предполагает использование специального программного обеспечения, помимо того, что мы тестируем, для контроля выполнения тестов и сравнения ожидаемого и фактического результатов работы программы.
Классификация тестирования по знанию кода
Тестирование черного ящика (black box)
White box testing (тестирование белого ящика)
Gray box test (серый ящик)