Приходилось ли пользоваться SQL и джойнами
Что проверяют
Готовы ли вы проверять данные в хранилище, а не только глазами в интерфейсе. Тестировщику SQL нужен ради трёх вещей: подготовить данные под сценарий, подтвердить, что действие в приложении реально записалось, и найти расхождение между экраном и базой. Джойны в вопросе появляются потому, что почти любая проверка затрагивает несколько таблиц сразу.
Как отвечать
Скажите, зачем ходили в базу, и покажите, что понимаете разницу соединений: inner join оставляет только совпавшие пары, left join сохраняет все строки левой таблицы и подставляет null там, где пары нет, full join держит обе стороны, cross join даёт все комбинации. Для тестирования ценнее всего левое соединение: именно оно показывает осиротевшие записи.
select o.id, o.total
from orders o
left join customers c on c.id = o.customer_id
where c.id is null;Такой запрос находит заказы без клиента, то есть нарушенную целостность, которую в интерфейсе видно разве что как пустую строку. Добавьте, что для поиска дублей используете group by с having count(*) > 1, а после соединения всегда сверяете количество строк с ожидаемым.
Где спотыкаются
Соединение один ко многим незаметно размножает строки, и суммы по такому результату оказываются завышенными. Лечится проверкой количества строк до соединения и после либо агрегацией в подзапросе.
Второе: условие на правую таблицу переносят из on в where, и левое соединение молча превращается во внутреннее, потому что строки с пустыми значениями фильтр не проходят. Баг при этом выглядит как «данных нет», хотя данные есть.
Третье: сравнивают с пустым значением через равенство вместо is null и ждут стабильного порядка строк без order by. И то и другое даёт проверку, которая зеленеет через раз и подрывает доверие ко всему прогону.