QA Русов Flashcards
Самый приоритетный вид тестирования и объяснить почему так считаешь
Smoke - направлено на проверку самой главной, самой важной, самой ключевой
функциональности, неработоспособность которой делает бессмысленной саму идею использования приложения (или иного объекта, подвергаемого дымовому тестированию).
Самый низко-приоритетный вид тестирования
Расширенный тест - направлено на исследование всей заявленной в требованиях функциональности — даже той, которая низко проранжирована по степени важности. Ещё одним направлением исследования в рамках данного тестирования являются нетипичные, маловероятные, экзотические случаи и сценарии использования функций и свойств приложения, затронутых на предыдущих уровнях.
В каких случаях используются чеклисты, а в каких - тест-кейсы
- Простота
- Длительность
- Стабильность требований
- Размер команды
- Чек-лист
- Для простых проектов
- Для простой функциональности
- Для коротких проектов
- При нестабильных требованиях
- Тест-кейсы
- Сложные проекты
- Сложная бизнес логика
- Нужна детальная проверка функциональности
- Для долгих проектов
- При большом количестве тестировщиков
- При “текучке” тестировщиков - для стабильности
- При стабильных требованиях
Когда следует заканчивать тестирование
При выполнении критериев завершения тестирования. Пример:
- Выполнение более 80 % запланированных на итерацию тест-кейсов
- Исправлено 100% критических багов
- Автоматизированно 80% регрессионных тест-кейсов
Какие причины приводят к багам в ПО
- Ошибки в коде
- Ошибки в ТЗ
- Непроработанные требования
- Несовместимость с другим ПО или с железом
Приведите пример end-to-end теста для интернет магазина
- Регистрация
- Логин
- Найти товар
- Добавить в корзину
- Оплатить
В каком случае тестирование может доказать отсутствие дефектов
Невозможно доказать отсутствие дефектов
Какие тесты надо автоматизировать
SDLC
Software development life cycle:
1. Инициация (идея)
1. Сбор требований
1. Дизайн
1. Разработка
1. Тестирование
1. Ввод в эксплуатацию
1. Вывод из эксплуатации
QC
Quality Control (контроль качества)
- Планирование тестирования
- Выполнение тестирования
- Анализ результатов
QA
Quality Assurance (Обеспечение качества)
QA - выстраивание процессов позволяющих получить высокий уровень качества продукта, которое может полноценно оценить только конечный пользователь.
К задачам обеспечения качества относятся:
- проверка технических характеристик и требований к ПО;
- оценка рисков;
- планирование задач для улучшения качества продукции;
- подготовка документации, тестового окружения и данных;
- тестирование;
- анализ результатов тестирования, а также составление отчетов и других документов.
Cовокупность мероприятий, охватывающих все технологические этапы разработки, выпуска и поддержки ПО, предпринимаемых на разных стадиях жизненного цикла ПО, для обеспечения требуемого уровня качества выпускаемого продукта.
Разница между тестированием, QC и QA
- Тестирование - рутинные операции составления кейсов и проверок
- QC - процесс планирования и анализа качества + тестирования
- QA - введение, поддержание и улучшение процессов для обеспечения определенного уровня качества
Тестирование и QC работают с продуктом. QA - работает с процессами
Можно различать:
- Джун это тестировщик
- Миддл это QC специалист
- Сеньер\лид - QA специалист
Цели тестирования
- Проверка на соответствие требованиям
- Уверенность в качестве продукта
- Обнаружение и предотвращение ошибок
- Предоставление ответственным лицам информации о качестве для принятия решений
- Снижение стоимости разработки (теоретически)
___
1. Оценка рабочих продуктов (требования, пользовательские истории, проектирование и код)
2. Все ли указанные требования выполнены
3. Завершен ли объект и работает, как ожидают пользователи и заинтересованные лица
4. Создание уверенности в уровне качества объекта тестирования
5. Предотвращение и обнаружение отказов и дефектов
6. Предоставление заинтересованным лицам достаточной информации, позволяющей им принять обоснованные решения
7. Снижения уровня риска ненадлежащего качества програмнного обеспечения
8. Соблюдение договорных, правовых или нормативных требований, или стандартов и/или проверка соответствия объекта тестирования им
Принципы тестирования
- Тестирование показывает наличие дефектов, но не их отсутствие
- Полноценное тестирование невозможно
- Чем раньше найден баг - тем дешевле его исправить
- Большинство дефектов скапливается в небольшой сфере
- Парадокс пестицида - прогон одних и тех же тестов ведет к тому, что новые баги не находятся
- Тестирование зависит от контекста (веб\игры\медицина\авиа\космос и т.д.)
- Заблуждение об отсутствии ошибок
Как бороться с парадоксом пестицида?
- Набор тестов, тестовых данных и подходов нужно постоянно пересматривать и улучшать
- Обновлять тесты и тестовые данные после исправления уже найденных дефектов
Разница между l10n и i18n
- l10n - Тестирование локализации
- i18n - Тестировании интернационализации
Разница между ad-hoc и exploratory testing
ad-hoc - свободное неструктурированное тестирование
exploratory - структурированное ограниченное по времени и скоупу тестирование для исследования функционала
Примеры нефункционального тестирования
- Нагрузочное
- Безопасность
- Локализация
- Интернационализация
- UX
Виды требований
- Бизнес
- Пользовательские
- Функциональные
- Нефункциональные
___ - Бизнес-требования (business requirements) выражают цель, ради которой разрабатывается продукт (зачем вообще он нужен, какая от него ожидается польза, как заказчик с его помощью будет получать прибыль).
- Пользовательские требования (user requirements) описывают задачи, которые пользователь может выполнять с помощью разрабатываемой системы (реакцию системы на действия пользователя, сценарии работы пользователя).
- Функциональные требования (functional requirements) описывают поведение системы, т.е. ее действия (вычисления, преобразования, проверки, обработку и т.д.).
- Нефункциональные требования (non-functional requirements) описывают свойства системы (удобство использования, безопасность, надежность, расширяемость и т.д.), которыми она должна обладать при реализации своего поведения.
Неявные требования
Не всегда требования будут описаны на проекте в виде спецификации или пользовательской истории. В таком случае необходимо изучать неявные требования из других источников:
- Законы, регламенты, инструкции
- Список задач, существующие тесты и баг-репорты
- Руководство пользователя
- Реклама продукта
- Интервью с командой и заказчиками
- Чаты и email-переписка
- Прототип, дизайн-макет
- Конкурентный анализ, личный опыт
Это далеко не весь перечень, подробнее https://software-testing.ru/library/around-testing/requirements/3567-requirements
Алгоритм работы с требованиями со стороны тестировщика
Идеальный процесс
- Требования создают бизнес-аналитики или владельцы продукта. Обычно они содержат в себе дизайнерские макеты.
- Требования попадают к тестировщику, которыйпроверяет их на соответствие свойствам качественных требований. Дополнительно в Scrum есть BacklogRefinement, где требования обсуждаются и уточняются командой на отдельном собрании.
- В случае обнаружениянеточностей, требования отправляются бизнес-аналитику на доработку, например, оставляется комментарий в системе.
- Пункты 2-3 повторяются до тех пор, пока не будут устранены несоответствия. Параллельно требования могут изучать другие участники команды: разработчики, дизайнеры
- После того как требования согласованы, они берутся в разработку, а тестировщики создают тестовую документацию для дальнейших проверок. Важно: тест-кейсы и чек-листы создаются до того, как функциональность из требования будет разработана. Вспоминаем Shift Left Testing и раннее тестирование.
- Вносить изменения в требования после начала спринтане рекомендуется и по-хорошему должно быть запрещено.
Неидеальный процесс
- Анализ требований не всегда осуществляется до этапа разработки, и уточнения могут вноситься уже во время нее
- Тестовая документация может создаватьсяуже после разработки функциональности
- Требования могут вообще не документироваться и быть на проекте в неявном виде
Характеристики хороших требований
- Завершенность
- Атомарность
- Непротиворечивость
- Недвусмысленность
- Выполнимость
- Обязательность, нужность и актуальность
- Прослеживаемость
- Модифицируемость
- Проранжированность по важности, стабильности, срочности
- Корректность и Проверяемость
Завершенность (completeness)
Требование является полным и законченным с точки зрения представления в нём всей необходимой информации, ничто не пропущено по соображениям «это и так всем понятно».
Примеры:
- Пароли должны храниться в зашифрованном виде
- Экспорт осуществляется в форматы PDF, PNG и т.д.
- Приведённые ссылки неоднозначны (например: «см. выше» вместо «см. раздел 123.45.b»)
Атомарность, единичность (atomicity)
Требование является атомарным, если его нельзя разбить на отдельные требования без потери завершённости и оно описывает одну и только одну ситуацию.
Примеры:
- Кнопка “Restart” не должна отображаться при остановленном сервисе, окно “Log” должно вмещать не менее 20-ти записей о последних действиях пользователя
- Если пользователь подтверждает заказ и редактирует заказ или откладывает заказ, должен выдаваться запрос на оплату
- Когда пользователь входит в систему, ему должно отображаться приветствие; когда пользователь вошёл в систему, должно отображаться имя пользователя; когда пользователь выходит из системы, должно отображаться прощание
Непротиворечивость, последовательность (consistency)
Требование не должно содержать внутренних противоречий и противоречий другим требованиям и документам.
Примеры:
- После успешного входа в систему пользователя, не имеющего права входить в систему…
- “712.a Кнопка “Close” всегда должна быть красной” и “36452.x Кнопка “Close” всегда должна быть синей” - противоречия в разных требованиях
- “В случае, если разрешение окна составляет менее 800x600…” — разрешение есть у экрана, у окна есть размер
Недвусмысленность (unambiguousness, clearness)
Требование должно быть описано без использования жаргона, неочевидных аббревиатур и расплывчатых формулировок, должно допускать только однозначное объективное понимание и быть атомарным в плане невозможности различной трактовки сочетания отдельных фраз.
Примеры:
- «Доступ к ФС осуществляется посредством системы прозрачного шифрования» и «ФС предоставляет возможность фиксировать сообщения в их текущем состоянии с хранением истории всех изменений» - что такое ФС?
- «Система конвертирует входной файл из формата PDF в выходной файл формата PNG» - некоторые вещи опущены, так как автор считает их очевидными
Выполнимость (feasibility)
Требование должно быть технологически выполнимым и реализуемым в рамках бюджета и сроков разработки проекта.
Примеры:
- Анализ договоров должен выполняться с применением искусственного интеллекта, который будет выносить однозначное корректное заключение о степени выгоды от заключения договора - технически невыполнимо на данный момент
- Система поиска должна заранее предусматривать все возможные варианты поисковых запросов и кэшировать их результаты - нельзя реализовать
- «озолочение» (gold plating) — требования, которые крайне долго и/или дорого реализуются и при этом практически бесполезны для конечных пользователей
Обязательность, нужность (obligatoriness) и актуальность (up-to-date).
Если требование необязательное, оно должно быть просто исключено из набора требований. Если требование нужное, но «не очень важное», для указания этого факта используется указание приоритета. Также исключены (или переработаны) должны быть неактуальные требования
Примеры:
- Требование было добавлено «на всякий случай», хотя реальной потребности в нём не было и нет.
- Требованию выставлены неверные значения приоритета по критериям важности и/или срочности.
- Требование устарело, но не было переработано или удалено.
Прослеживаемость (traceability)
Прослеживаемость бывает вертикальной (vertical traceability) и горизонтальной (horizontal traceability). Вертикальная позволяет соотносить между собой требования на различных уровнях требований, горизонтальная позволяет соотносить требование с тест-планом, тест-кейсами, архитектурными решениями и т.д. Для обеспечения прослеживаемости часто используются специальные инструменты по управлению требованиями (requirements management tool) и/или матрицы прослеживаемости (traceability matrix). Типичные проблемы с прослеживаемостью:
Примеры:
- Требования не пронумерованы, не структурированы, не имеют оглавления, не имеют работающих перекрёстных ссылок.
- При разработке требований не были использованы инструменты и техники управления требованиями.
- Набор требований неполный, носит обрывочный характер с явными «пробелами».
Модифицируемость (modifiability)
Это свойство характеризует простоту внесения изменений в отдельные требования и в набор требований.
Примеры:
- Требования неатомарны и непрослеживаемы, а потому их изменение с высокой вероятностью порождает противоречивость.
- Требования изначально противоречивы. В такой ситуации внесение изменений (не связанных с устранением противоречивости) только усугубляет ситуацию, увеличивая противоречивость и снижая прослеживаемость.
- Требования представлены в неудобной для обработки форме (например, не использованы инструменты управления требованиями, и в итоге команде приходится работать с десятками огромных текстовых документов).
Проранжированность по важности, стабильности, срочности (ranked for importance, stability, priority)
Важность характеризует зависимость успеха проекта от успеха реализации требования. Стабильность характеризует вероятность того, что в обозримом будущем в требование не будет внесено никаких изменений.
Срочность определяет распределение во времени усилий проектной команды по реализации того или иного требования.
Корректность (correctness) и проверяемость (verifiability)
Эти свойства вытекают из соблюдения всех вышеперечисленных. В дополнение можно отметить, что проверяемость подразумевает возможность создания объективного тест-кейса (тест-кейсов), однозначно показывающего, что требование реализовано верно и поведение приложения в точности соответствует требованию.
Источник:Святослав Куликов “Тестирование ПО. Базовый курс.”
Модели разработки. Отличия, преимущества и недостатки
Важно детально изучить, но позже
Очень упрощенно (почти на грани допустимого) можно сказать, что гибкая модель представляет собой облегченную с точки зрения документации смесь итерационной инкрементальной и спиральной моделей; при этом следует помнить об «agile-манифесте» и всех вытекающих из него преимуществах и недостатках.
Главным недостатком гибкой модели считается сложность ее применения к крупным проектам, а также частое ошибочное внедрение ее подходов, вызванное недопониманием фундаментальных принципов модели. Тем не менее можно утверждать, что всё больше и больше проектов начинают использовать гибкую модель разработки.
- Водопад
- V-образная
- Итерационная инкрементальная
- Спиральная
- Гибкая
Scrum. Артефакты, события, роли
- Команда
- Product owner (Замена бизнес аналитика)
- Управление бэклогом продукта
- Описание бэклога
- Development team (3-9 человек)
- Самоорганизация
- Кроссфункциональность (каждый может делать и dev и qa и analysis)
- Единственная роль - разработчик
- Коллективная ответственность (?)
- Scrum master (servant leader (?))
- Функционирование Scrum
- Обучение и понимание Scrum членами команды
- Product owner (Замена бизнес аналитика)
- События
- Спринт (2-4 недели) (инкремент)
- Планирование спринта (Sprint Planning)
- Ежедневный Scrum (Daily Scrum) (15 минут)
- Что делал вчера
- Что будешь делать сегодня
- Какие есть препятствия для выполнения цели
- Обзор спринта (Sprint Review)
- Ретроспектива (Sprint Retrospective)
- Спринт (2-4 недели) (инкремент)
- Артефакты
- Бэклог продукта
- Уточнение бэклога продукта (могут оцениваться сторипоинтами)
- Критерии подготовленности (definition of ready)
- Фокус на уровне бэклога
- Помогает заказчику создавать хорошо написанные пользовательские истории, которые готовы для разработки
- Критерии готовности (definition of done)
- Фокус на уровне спринта или релиза
- Помогает проверить работу в соответствии со всеми требованиями проекта, а не только продемонстрировать, что функциональности работают
- Примеры:
- Написаны unit\integration тесты и они все прошли
- У нас % критичных багов меньше тутутут
- Пользовательские истории
- As a [Role]
- I can [Functionality]
- So that [Rationale]
- Acceptance criteria
- Покер планирования
- Стори поинты - не привязка ко времени, а оценка сложности задачи
- Бэклог спринта
- Инкремент продукта
- Метрики
- Velocity - Velocity is calculated at the end of the Sprint by totaling the Points for all fully completed User Stories.
- Позволяет определить максимальное количество сторипоинтов которые можно взять в спринт
- Capacity - количество рабочих часов всех разработчиков. Учитывается при планировании и рассчете рисков (праздники, кто-то заболел и т.д.)
- Burndown chart (диаграмма сгорания задач)
- Cumulative flow diagram
- Velocity - Velocity is calculated at the end of the Sprint by totaling the Points for all fully completed User Stories.