Что такое QA (Quality Assurance) ?

Самое короткое определение, которое я смог найти в интернете: Quality Assurance – это систематический процесс, направленный на выявление соответствия продукта обозначенным требованиям. Когда я только начинал заниматься тестированием, мне казалось, что это отличное определение. Сейчас – уже нет.

Рассмотрим пример 1:

Необходимо имплементировать функционал на основе следующих требований:

User story 1:

Я, как юзер, могу войти в свой аккаунт используя свой логин и пароль.

Имплементация:

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

Рассмотрим пример 2:

User story 2:

Я, как покупатель, должен иметь возможность создать новый аккаунт, чтобы иметь возможность получить доступ к своему self-service аккаунту.

Имплементация:

Форма регистрации содержит поле подтверждения email-адреса, но при этом не содержит поля подтверждения пароля. Понятно, что оно используется для того, чтобы избежать неправильного ввода, но, с другой стороны, работает ли это? Пользователь может скопировать адрес в это поле или просто ввести его неправильно дважды, если неправильно его помнит. Если бы поля подтверждения адреса не было на странице, то пользователь всё равно бы имел возможность проверить правильность ввода – просто визуально. Однако, ввод пароля так проверить невозможно – оно замаскировано звёздочками. Именно поэтому форма подтверждения пароля обычно и существует.

example2

С точки зрения формальных требований, функциональность в этом примере имплементирована правильно, как и в первом. Есть ли какие-то проблемы с качеством в этом примере? Мне кажется, да. На худой конец, задача подтверждения ввода email-адреса может быть решена более эффективно, например, поле подтверждения может находится на следующей странице, после клика по кнопке Create Account. Это заставит пользователя копировать email-адрес откуда-то ещё, кроме первого поля ввода или печатать его заново.

Я думаю, исходя из этих примеров, можно сказать, что качество зависит не только от прямых требований, но также и от факторов, не указанных напрямую, а именно:

  1. Здравого смысла;
  2. Стандартов.

Если продолжать рассуждать в том же ключе, можно выделить ещё несколько:

  1. Локализация, особенности языка;
  2. Ориентированность на определенную группу клиентов;
  3. Производительность, в ключе создания приятного пользовательского опыта;
  4. Полезность для бизнеса и т.п.

Резюмируя сказанное, на мой взгляд, правильное определение такое:

Quality Assurance – это систематический процесс, направленный на выявление соответствия продукта обозначенным и косвенным требованиям.