Разделы портала

Онлайн-тренинги

.
Тестирование баз данных
30.03.2020 01:00

Автор: Кристин Джеквони (Kristin Jackvony)
Оригинал статьи
Перевод: Ольга Алифанова

Как тестировщики, мы часто воспринимаем наличие базы данных приложения, как должное. Мы стараемся фокусироваться на более видимых участках – пользовательском интерфейсе или логике API. Однако тестирование базы данных – это тоже очень важно! Ниже – шесть способов тестирования базы данных вашего приложения.

1. Убедитесь, что у полей данных правильный тип.

У каждого поля в базе данных есть определенный тип – например, int, float, string, datetime. Убедитесь, что этот тип подходит конкретному полю. К примеру, поле даты в приложении должно сохраняться в формате datetime, а не строкой. Возможно, это кажется не таким уж и важным, но если в приложении есть функциональность сортировки, то 10 апреля окажется раньше 10 января, потому что даты будут сортироваться по алфавиту.

2. Убедитесь, что обязательные поля базы данных так же обязательны в API и интерфейсе.

Обычно каждая запись в базе данных имеет ряд обязательных полей. Если поле помечено в БД как обязательное, оно должно быть аналогично отмечено в API и UI. Если UI не отмечает поле фамилии как обязательное, но в БД оно необходимо, пользователь сможет создать новую запись без фамилии, и БД вернет ошибку.

3. Убедитесь, что параметры полей в базе данных соответствуют параметрам в API и UI.

У полей данных в БД есть набор определенных ограничений – к примеру, на длину строки или максимальное значение int. Поля в API и интерфейсе должны иметь аналогичные ограничения. Если ограничения не совпадают, это вызовет непонятки. Допустим, что в вашем приложении есть поле адреса. В UI его предел установлен на 50 символах, а в базе данных – на 40. Если пользователь введет адрес из 45 символов, то интерфейс примет такое значение, а БД – нет. В результате запись не сохранится, а пользователю будет неясно, что же он сделал не так.

4. Убедитесь, что важные данные – например, пароли – зашифрованы в БД.

Я как-то работала в компании, где пользовательские пароли не шифровались. У меня был доступ к БД прода, что означало, что я могла видеть логины и пароли абсолютно всех пользователей компании. Очевидно, что это был колоссальный риск безопасности! Пароли всегда должны быть зашифрованы в БД – и тогда никто, кроме пользователя, не сможет получить к ним доступ.

5. Убедитесь, что ваша БД поддерживает все API-операции.

То, что ваши POST-запросы возвращают 200, не означает, что данные верно сохранились в базе данных. Делая API-запрос, убедитесь, что база верно сохраняет каждое поле. Я сталкивалась с ситуациями, когда PUT-запрос не приводил к сохранению всех новых значений в БД. Я также встречала ситуацию, когда PATCH-запрос обновлял нужные поля, но обнулял все остальные! Протестируйте все возможные CRUD-операции и проверьте точность сохранения для каждого поля. Не забудьте также поменять значения полей с null на непустые, и с непустых на null. Если тестируемое поле – строка, определите с командой, разрешаете ли вы пустые строки, и протестируйте переходы с null на пустоту, с пустоты на значение, со значения на пустоту, и так далее.

Если ваш API к тому же поддерживает операцию DELETE, выясните с командой, будет ли это жестким удалением, означающим, что запись полностью удаляется из БД, или мягким (запись остается в БД, но перемещается в другую таблицу или же остается где была с флагом "удалено"). Затем протестируйте операцию удаления, чтобы убедиться, что все идет как надо.

6. Убедитесь, что ведущие и замыкающие пробелы удаляются при сохранении записи в БД.

Сталкивались ли вы когда-нибудь с проблемой авторизации в приложении, хотя логин введен абсолютно правильно? Проблема может быть в том, что при первичном создании логина в него случайно вкрался замыкающий пароль, и логин так и сохранился в базе. Когда вы пытаетесь авторизоваться как "doglvr49", система ожидает "doglvr49 ". Схожим образом, если вы вводите фамилию как " Иванов" вместо "Иванов", и ведущий пробел не обрезается, а потом вы будете пытаться сортировать контакты по алфавиту – вы обнаружите "Иванова" перед "Андреевым". Тестируя текстовые поля вашего приложения, старайтесь проверить ведущие и замыкающие пробелы, и убедиться, что в БД они обрезаются.

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

Обсудить в форуме