QA_Bible
  • Введение
  • FAQ для новичков
    • Ответы на самые популярные вопросы новичков в чатах
    • Качества и навыки, которыми нужно обладать тестировщику?
    • Что должен знать и уметь Junior? Что спросят на собеседовании?
    • С чего начать обучение и куда развиваться?
    • Как составить резюме?
    • Где искать работу?
    • Как происходит процесс найма?
    • Как проходить собеседование?
    • Начало работы Junior-тестировщика
    • Ошибки в работе у начинающих тестировщиков
    • Как взаимодействовать с коллегами?
    • Перспективы профессии
  • Полезные ссылки
    • Список полезных ресурсов на разных платформах
    • Список ресурсов по инструментам тестировщика
  • Общее
    • QA/QC/Testing
    • Почему требуется тестирование ПО?
    • Качество ПО (Software Quality)
    • Принципы тестирования
    • Верификация и валидация (Verification and Validation)
    • Дефекты и ошибки
    • Серьезность и приоритет Дефекта (Severity & Priority)
    • Альфа- и бета- тестирование (Alpha Testing and Beta Testing)
    • Процесс тестирования (test process) (draft)
    • Техники оценки тестов/оценка трудозатрат на тестирование (Test Estimation)
    • Экономика тестирования/стоимость качества (Cost of quality)
    • Подход к тестированию (Test Approach)
    • Импакт анализ (анализ влияния, Impact Analysis)
    • Анализ первопричин (RCA - Root Cause Analysis)
    • Тестирование со сдвигом влево (Shift left testing)
    • Модель зрелости возможностей (CMM - Capability Maturity Model)
    • Тестовая среда и тестовый стенд (Test Environment/Test Bed)
    • Бизнес-логика (Business logic)
    • Политика отсутствия багов (ZBP - Zero Bug Policy)
    • Независимое тестирование (Independent testing)
    • Роли/должности в команде
    • Эвристики и мнемоники
  • Виды-методы-уровни тестирования
    • Методы тестирования (White/Black/Grey Box)
    • Тестирование методом черного ящика (Black Box Testing)
    • Тестирование методом белого ящика (White Box Testing)
    • Тестирование методом серого ящика (Grey Box Testing)
    • Статическое и динамическое тестирование (Static Testing, Dynamic Testing)
    • Пирамида / уровни тестирования (Test Pyramid / Testing Levels)
    • Модульное/юнит/компонентное тестирование (Module/Unit/Component testing)
    • Интеграционное тестирование (Integration testing)
    • Системное тестирование (System Testing)
    • Приемочное тестирование (AT - Acceptance testing)
    • Основные виды тестирования ПО
    • Функциональное тестирование (Functional/Behavioral testing)
    • Нефункциональное тестирование (Non-Functional testing)
    • Тестирование производительности (Performance testing)
    • Тестирование емкости (Capacity testing)
    • Нагрузочное тестирование (Load testing)
    • Стрессовое тестирование (Stress testing)
    • Тестирование масштабируемости (Scalability testing)
    • Объемное тестирование (Volume testing)
    • Тестирование выносливости/стабильности (Endurance/Soak/Stability testing)
    • Тестирование устойчивости (Resilience testing)
    • Тестирование надежности (Reliability Testing)
    • Тестирование на отказ и восстановление (Failover and Recovery testing)
    • Эталонное и базовое тестирование (Benchmark and Baseline Testing)
    • Тестирование хранилища (Storage testing)
    • Одновременное / многопользовательское тестирование (Concurrency/Multi-user testing)
    • Тестирование сервиса (Service Testing)
    • Тестирование безопасности (Security and Access Control testing)
    • Оценка уязвимости/защищенности (Vulnerability Assessment)
    • Фаззинг-тестирование (Fuzz testing)
    • Можно ли отнести тестирование безопасности или нагрузочное тестирование к функциональным видам тести
    • Тестирование совместимости/взаимодействия (Compatibility/Interoperability testing)
    • Конфигурационное тестирование (Configuration testing)
    • Инсталляционное тестирование (Installation Testing)
    • Тестирование на соответствие (Conformance/Compliance testing)
    • Тестирование удобства пользования (Usability testing)
    • Тестирование доступности (Accessibility testing)
    • Тестирование локализации, глобализации и интернационализации (Localization/ globalization/internatio
    • Исследовательское тестирование (Exploratory testing)
    • Свободное / Интуитивное тестирование (Adhoc, Ad-hoc Testing)
    • Тестирование поддержки (Maintenance testing)
    • Регрессионные виды тестирования (Regression testing)
    • Тестирование клиентской части и серверной (Frontend testing Vs. Backend testing)
    • Тестирование графического интерфейса/визуальное тестирование (GUI - Graphical User Interface testing
    • Тестирование API (API - Application Programming Interface)
    • A/B тестирование (A/B Testing)
    • Деструктивное и недеструктивное тестирование (DT - Destructive testing and NDT - Non Destructive tes
    • Выборочное/хаотическое тестирование (Random/monkey testing)
    • Тестирование рабочего процесса/воркфлоу (Workflow testing)
    • Тестирование документации (Documentation testing)
    • Как протестировать продукт без требований?
    • Кроссбраузерное тестирование (Cross-browser testing)
    • Тестирование, основанное на рисках (Risk-Based Testing)
    • Разница тестирования ПО и железа (Software Vs. Hardware testing)
    • Тестирование качества данных (Data Quality Testing)
  • Тест дизайн
    • Тест-дизайн и техники тест-дизайна (Test Design and Software Testing Techniques)
    • Static - Reviews
    • Static - Static Analysis
    • Dynamic - White box
    • Dynamic - Black box
    • Dynamic - Experience based
  • Тестовая документация и артефакты (Test Deliverables/test artifacts)
    • Виды тестовой документации
    • Политика качества и политика тестирования (Quality policy and Test policy)
    • Стратегия тестирования (Test strategy)
    • План тестирования (Test plan)
    • Тестовый сценарий (Test scenario)
    • Тест-кейс (Test case)
    • Чек-лист (Check List)
    • Баг-репорт (Defect/bug report)
    • Требования (Requirements)
    • Пользовательские истории (User stories)
    • Критерии приемки (Acceptance Criteria)
    • Виды отчетов (Reports)
    • Базис тестирования (Test basis)
    • Матрица трассируемости (RTM - Requirement Traceability Matrix)
    • Метрики тестирования (Software Test Metrics)
    • Тестовый оракул (Test oracle)
  • Мобильное тестирование
    • Android
      • Архитектура Android OS
      • Архитектура Android Application
      • Тестирование покупок в Android-приложениях
      • Android Developer Settings
      • Android Debug Bridge (ADB)
      • Android Studio для QA
    • iOS
      • Архитектура iOS
      • Архитектура iOS Application
      • Тестирование покупок в iOS-приложениях
      • iOS Developer Settings
    • Особенности в тестировании мобильных приложений
    • Покрытие девайсов
    • Типы мобильных приложений
    • Симуляторы и эмуляторы
    • Основные различия Android/iOS
    • Последнее обновление Android/iOS, что нового?
    • Основные проверки при тестировании мобильного приложения
    • Каким образом тестировщик получает приложение на тест?
    • Как успешно зарелизить продукт в App Store и Google Play
    • Тестирование требований к мобильным приложениям
    • Тестирование push-уведомлений
    • Тестирование дип линков (mobile deep links)
    • Тестирование сохраненных поисков
    • Тестирование рекламы
    • Тестирование просмотренных товаров
    • Middleware
    • Как проверить использование ресурсов на Android
    • Как протестировать приложение для другой страны?
  • Тестирование в разных сферах-областях (testing different domains)
    • Тестирование веб-сайта или веб-приложения (Web application)
    • Тестирование интернет-магазина (eCommerce)
    • Тестирование платежного шлюза (Payment Gateway)
    • Тестирование игр (Game testing)
    • Тестирование VR программного обеспечения
    • Тестирование мессенджера (Messenger)
    • Тестирование чат-бота (Chatbot)
    • Тестирование электронных писем (E-mail)
    • Тестирование интернета вещей (IoT - Internet of Things)
    • Тестирование облачных решений (Cloud testing)
    • Тестирование сервис-ориентированной архитектуры (SOA - Service Oriented Architecture)
    • Тестирование микросервисной архитектуры (MSA/Microservices)
    • Тестирование платформы электронного обучения (E-learning platform)
    • Тестирование систем розничной торговли (POS - Point Of Sale)
    • Тестирование банковского ПО (Banking domain applications/BFSI)
    • Тестирование страхового ПО (Insurance)
    • Тестирование в сфере телекоммуникаций (Telecom)
    • Тестирование планирования ресурсов предприятия (ERP - Enterprise Resource Planning)
    • Тестирование миграции данных (ETL)
    • Тестирование баз данных (Database)
    • Другое
  • SDLC и STLC
    • Жизненный цикл разработки ПО (SDLC - Software Development Lifecycle)
    • Жизненный цикл тестирования ПО (STLC - Software Testing Lifecycle)
    • Модели разработки ПО
    • Agile
    • Scrum
    • Подходы к разработке/тестированию (... - driven development/testing)
  • Сети и около них
    • База по сетям
    • Клиент - серверная архитектура (Client-Server Architecture)
    • Микросервисная архитектура (Microservice Architecture)
    • Эталонные модели OSI и TCP/IP
    • HTTP
    • Идентификация ресурсов в сети (Identifying resources on the Web)
    • Веб-сервис (WS - Web service)
    • REST/SOAP/gRPC
    • Socket / WebSocket
      • Сокет/веб-сокет (socket/websocket)
      • Тестирование WebSocket на клиентах
    • Хранилище на стороне клиента (Client-side storage)
    • Кэш (Cache)
    • Аутентификация и авторизация (Authentication and authorization)
    • Рендеринг в интернете (Rendering on the Web)
  • Практическая часть
    • Логические задачи
    • Тестирование полей и форм
    • Примеры задач на собеседованиях и тестовых заданий
    • Платформы для тренировок и квизы
  • Автоматизация (beta)
    • Общее
    • Полезные ссылки
    • Как стать автоматизатором и вопросы с собеседований
    • Что нужно автоматизировать?
    • Виды и инструменты автоматизации
    • Инфраструктура и пайплайн (CI/CD)
    • Процессы и автоматизация проекта с нуля
    • Лучшие практики автоматизации
    • Что такое flaky tests?
    • Мутационное тестирование (Mutation testing)
    • Параллельное тестирование (Parallel testing)
    • Подкожный тест (Subcutaneous test)
    • Разница между coupling и cohesion
    • Другое (ссылки)
  • Контакты
Powered by GitBook
On this page

Was this helpful?

Edit on GitHub
  1. Тестирование в разных сферах-областях (testing different domains)

Тестирование баз данных (Database)

База данных - представленная в объективной форме совокупность самостоятельных материалов (статей, расчётов, нормативных актов, судебных решений и иных подобных материалов), систематизированных таким образом, чтобы эти материалы могли быть найдены и обработаны с помощью электронной вычислительной машины (ЭВМ).

База данных является одной из неизбежных частей программного приложения. Неважно, будет ли это веб, настольный или мобильный, клиент-серверный, одноранговый, корпоративный или индивидуальный бизнес; База данных требуется везде на бэкенде. Точно так же, будь то здравоохранение, финансы, лизинг, розничная торговля, почтовое приложение или управление космическим кораблем; База данных всегда находится в действии за кулисами.

Зачем тестировать БД?

1. Отображение данных (Data Mapping)

В программных системах данные часто перемещаются туда и обратно из UI (пользовательского интерфейса) в серверную БД и наоборот. Итак, вот некоторые аспекты, на которые стоит обратить внимание:

  • Проверьте, сопоставляются ли поля в формах пользовательского интерфейса/внешнего интерфейса с соответствующими полями в таблице БД. Обычно эта информация о сопоставлении определяется в документах с требованиями;

  • Всякий раз, когда определенное действие выполняется во внешнем интерфейсе приложения, соответствующее действие CRUD (создание, извлечение, обновление и удаление) вызывается в бэкенде. Тестировщик должен будет проверить, вызывается ли правильное действие и является ли вызванное действие само по себе успешным или нет.

2. Проверка требований ACID (ACID Properties Validation)

Каждая транзакция, которую выполняет БД, должна соответствовать этим четырем свойствам:

  • Атомарность (Atomicity): гарантирует, что каждая транзакция будет выполнена полностью или не будет выполнена совсем. Не допускаются промежуточные состояния;

  • Согласованность (Consistency): транзакция, достигающая своего нормального завершения (EOT - end of transaction, завершение транзакции) и, тем самым, фиксирующая свои результаты, сохраняет согласованность базы данных. Другими словами, каждая успешная транзакция по определению фиксирует только допустимые результаты;

  • Изолированность (Isolation): во время выполнения транзакции параллельные транзакции не должны оказывать влияния на ее результат;

  • Постоянство/надежность (Durability): если пользователь получил подтверждение от системы, что транзакция выполнена, он может быть уверен, что сделанные им изменения не будут отменены из-за какого-либо сбоя.

3. Целостность данных (Data Integrity)

Для любой операции CRUD обновленные и самые последние значения/статус общих данных должны отображаться во всех формах и экранах. Значение не должно обновляться на одном экране и отображать более старое значение на другом.

Когда приложение находится в процессе выполнения, конечный пользователь в основном использует операции «CRUD».

CRUD - акроним, обозначающий четыре базовые функции, используемые при работе с базами данных: создание (англ. create), чтение (read), модификация (update), удаление (delete). В SQL этим функциям, операциям соответствуют операторы Insert (создание записей), Select (чтение записей), Update (редактирование записей), Delete (удаление записей). В системах, реализующих доступ к базе данных через API в стиле REST, эти функции реализуются зачастую (но не обязательно) через HTTP-методы PUT, POST, GET, PATCH, DELETE.

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

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

4. Соответствие бизнес-правилам (Business Rule Conformity)

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

Что тестировать?

1. Транзакции

2. Схемы базы данных

Схема базы данных - это не что иное, как формальное определение того, как данные будут организованы внутри БД. Чтобы проверить это:

  • Определите требования, на основе которых работает база данных. Образец требований:

    • Первичные ключи должны быть созданы до создания любых других полей;

    • Внешние ключи должны быть полностью проиндексированы для легкого извлечения и поиска;

    • Имена полей, начинающиеся или заканчивающиеся определенными символами;

    • Поля с ограничением, что определенные значения могут или не могут быть вставлены.

  • Используйте один из следующих методов в зависимости от релевантности:

    • SQL-запрос для проверки схемы.

    • Регулярные выражения для проверки имен отдельных полей и их значений;

    • Такие инструменты, как SchemaCrawler.

3. Триггеры

Когда определенное событие происходит в определенной таблице, часть кода (триггер) может быть автоматически проинструктирована для выполнения.

Например, новый ученик присоединился к школе. Ученик посещает 2 класса: математику и естествознание. Ученик добавлен в таблицу учеников. Триггер может добавить учащегося в соответствующие предметные таблицы, как только он будет добавлен в студенческую таблицу.

Обычный метод тестирования состоит в том, чтобы сначала независимо выполнить SQL-запрос, встроенный в триггер, и сравнить фактический результат с ожидаемым.

  • Тестирование белого ящика : заглушки и драйверы используются для вставки, обновления или удаления данных, которые могут привести к срабатыванию триггера. Основная идея состоит в том, чтобы просто протестировать БД в одиночку еще до того, как будет выполнена интеграция с внешним интерфейсом (UI).

  • Тестирование черного ящика :

    • а) Начиная с UI и БД теперь доступна интеграция; мы можем вставлять/удалять/обновлять данные из внешнего интерфейса таким образом, чтобы вызывался триггер. После этого операторы Select можно использовать для получения данных БД, чтобы увидеть, успешно ли триггер выполнил намеченную операцию.

    • б) Второй способ проверить это - напрямую загрузить данные, которые вызовут триггер, и посмотреть, работает ли он так, как задумано.

4. Хранимые процедуры

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

Они хранятся в СУБД и доступны для приложений.

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

  • Тестирование «черного ящика»: выполните операцию из внешнего интерфейса (UI) приложения и проверьте выполнение хранимой процедуры и ее результаты.

5. Ограничения полей

Значение по умолчанию, уникальное значение и внешний ключ (Default value, Unique value, and Foreign key):

  • Выполните интерфейсную операцию, которая проверяет условие объекта базы данных.

  • Подтвердите результаты с помощью SQL-запроса.

Проверить значение по умолчанию для определенного поля довольно просто. Это часть проверки бизнес-правил. Вы можете сделать это вручную или использовать такие инструменты, как QTP. Вручную вы можете выполнить действие, которое добавит значение, отличное от значения поля по умолчанию, из внешнего интерфейса и посмотреть, не приведет ли это к ошибке.

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

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

Автоматизация

Автотесты в БД обычно пишутся на хранимые процедуры и джобы и похожи на автотесты API, только транспортный уровень - драйвер БД, и добавляются транзакции и роллбэки в тирдаун секции.

Источники:

Доп. материал:

PreviousТестирование миграции данных (ETL)NextДругое

Last updated 3 years ago

Was this helpful?

Database Testing Complete Guide (Why, What, And How To Test Data)
Базы данных: большой обзор типов и подходов. Доклад Яндекса
Требования ACID на простом языке
Плейлист “Тестирование баз данных”
Тестирование СУБД: 10 лет опыта
30+ Database Testing Interview Questions And Answers (Updated 2022)
Testing code that talks to the database