среда, 14 июля 2021 г.

Обобщил текущие знания

Обобщил текущие знания на основе источников, указанных в этом посте

Обеспечение качества (QA — Quality Assurance)

Контроль качества (QC — Quality Control)

Тестирование (Testing)


Цель тестировщика
– проверить ПО на соответствие требованиям, находить критические ошибки.

Принципы тестирования

Принцип 1 — Тестирование демонстрирует наличие дефектов (Testing shows presence of defects).

Т может показать, что дефекты присутствуют, но не может доказать, что дефектов нет.

Принцип 2 — Исчерпывающее тестирование невозможно (Exhaustive testing is impossible).

Полное тестирование с использованием всех входных комбинаций данных, результатов и предусловий физически невыполнимо.

Принцип 3 — Раннее тестирование (Early testing).

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

Принцип 4 — Скопление дефектов (Defects clustering).

Большая часть дефектов находится в ограниченном количестве модулей.

Принцип 5 — Парадокс пестицида (Pesticide paradox).

Если повторять те же тестовые сценарии снова и снова, в какой-то момент этот набор тестов перестанет выявлять новые дефекты.

Принцип 6 — Тестирование зависит от контекста (Testing is context depending). Тестирование проводится по-разному в зависимости от контекста. Например, программное обеспечение, в котором критически важна безопасность, тестируется иначе, чем новостной портал.

Принцип 7 — Заблуждение об отсутствии ошибок (Absence-of-errors fallacy). Отсутствие найденных дефектов при тестировании не всегда означает готовность продукта к релизу. Система должна быть удобна пользователю в использовании и удовлетворять его ожиданиям и потребностям.

Качество ПО составляет:
  • функциональность - ожидание юзеров, соответствие требованиям
  • UX, UI, юзабилити
  • эффективность
  • надежность – скорость, стабильность, безопасностью, устойчивая работа
  • удобство сопровождения
  • портативность
Логика Т:
  1. анализ ТЗ
  2. smoke
  3. позитив
  4. негатив
  5. другие виды
Жизненный цикл разработки ПО:
  1. идея – заказчик (бизнес, пользователи)
  2. анализ требований
  3. проектирование (м-р проекта – ТЗ, анализ ТЗ)
  4. разработка и тестирование (кодировка и проверка)
  5. внедрение (beta тест, релиз)
  6. эксплуатация и поддержка
Жизненный цикл Т:
  1. анализ/тестирование требований (Requirement Analysis)
  2. планирование Т (Test planning) – определение цели, составление Т плана, определение трудоемкости, составление расписания Т.
  3. разработка Т (Test development) – составление Т кейсов, чек-листов, создание Т данных, Т окружения
  4. выполнение Т (Test execution) – выполнение Т, создание отчетов (баг-трекинг)
  5. оценка результатов (Test reporting) – составление отчета по Т, определение состояния ПО, оповещение заинтересованных лиц о результатах.
  6. ретроспектива
На этапе написания ТЗ\спецификации также могут быть сформированы следующие атрибуты: тест-смета (Test Estimation), критерий начала/завершения (Entry/Exit Criteria). Если они не сформированы на данном этапе, целесообразно обсудить их необходимость на этапе планирования Т.

Этапы Т:

Этап 1. Анализ/тестирование требований (Requirement Analysis)

Атрибуты требований:
  • Непротиворечивость
  • Однозначность
  • Атомарность
  • Приоритетность
  • Выполнимость
  • Прослеживаемость
  • Модифицируемость
  • Корректность
  • Проверяемость
  • Полнота
Этап 2. Планирование Т (Test planning) – определение цели, составление Т плана, определение трудоемкости, составление расписания Т.

Методы генерирования тестов:
  1. Черновик-чистовик (dirty list-white list).
  2. Матричная раскладка (matrices).
  3. Блок-схемы (flowchart).
Методы отбора тестов:
  1. Оценка риска (risk estimate).
  2. Эквивалентные классы (equivalent classes).
  3. Пограничные значения (boundary values).
Эквивалентная область (equivalence partition) – часть области входных или выходных данных, для которой поведение компонента или системы, основываясь на спецификации, считается одинаковым.

Алгоритм использования техники эквивалентных классов:
  1. Определить классы эквивалентности.
  2. Выбрать одного представителя от каждого класса,
  3. Выполнить тесты.
Алгоритм техники анализа граничных условий:
  1. Выделить классы эквивалентности.
  2. Определить граничные значения этих классов.
  3. Определить к какому классу будет относиться каждая граница.
  4. По каждой границе нужно провести Т значений: до границы, на границе, после границы.
Этап 3. Разработка Т (Test development) – составление Т кейсов, чек-листов, создание Т данных, Т окружения.

Этап 4. Выполнение Т (Test execution) – выполнение Т, создание отчетов (баг-трекинг).

Этап 5. Оценка результатов (Test reporting) – составление отчета по Т, определение состояния ПО, оповещение заинтересованных лиц о результатах.

Этап 6. Ретроспектива.

Виды тестирования:
по запуску кода на исполнение
Статическое тестирование
Динамическое тестирование
по доступу к коду и архитектуре
Т белого ящика
Unit T
Т серого ящика
Т чёрного ящика
UI
Т по требованиям
по уровню детализации приложения
Модульное тестирование
Unit T
Интеграционное тестирование
Т связей м/у модулям
Т связей м/у частями 
Т связей м/у системами
Системное тестирование
Приёмочное тестирование
по степени автоматизации
Ручное
Автоматизированное
ПолуАвтоматизированное
по принципам работы с приложением
Позитивное
Негативное
по уровню важности тестируемых функций
Дымовое (smoke test)
Т критического пути (critical path) 
Расширенное тестирование (extended)
в зависимости от целей тестирования
Функциональное Т (functional testing) 
Нефункциональное Т (non-functional testing) 
Тестирование производительности (performance testing)
Нагрузочное тестирование (load testing) 
Тестирование масштабируемости (scalability testing)
Объёмное тестирование (volume testing)
Стрессовое тестирование (stress testing)
Инсталляционное тестирование (installation testing)
Тестирование интерфейса (GUI/UI testing)
Тестирование удобства использования (usability testing)
Тестирование локализации (localization testing) 
Тестирование безопасности (security testing)
Тестирование надёжности (reliability testing)
Конфигурационное Т
Регрессионное тестирование (regression testing)
Повторное/подтверждающее тестирование (re-testing/confirmation testing)
связанные с изменениями в коде
Дымовое (smoke test)
Т сборки
Санитарное Т

Комментариев нет:

Отправить комментарий