Кто подготавливал тест-кейсы?

Ответ

Подготовка тест-кейсов была совместным процессом. Как разработчик, я писал модульные (unit) и интеграционные тесты для своего кода, используя xUnit/NUnit и Moq для изоляции зависимостей. QA-инженеры писали end-to-end тесты и тест-кейсы для приемочного (UAT) тестирования, основываясь на пользовательских историях (user stories) и требованиях от продукт-менеджера. Мы также практиковали сессии совместного создания тест-кейсов (Test Case Design Workshops) с участием разработчиков, QA и аналитика, чтобы сразу выявить edge-кейсы и неоднозначности в требованиях.

Ответ 18+ 🔞

А, ну это про то, как мы с тестировщиками этот цирк с тестами организовывали! Ёпта, история знатная.

Смотри, как дело было. Я, как разработчик, сижу и думаю: «Э, сабака сука, надо бы этот свой свеженаписанный код проверить, а то потом вылезет какая-нибудь манда с ушами». Беру, значит, пишу модульные тесты — это когда ты каждую мелкую функцию, каждый метод по отдельности дёргаешь. xUnit, NUnit — без разницы, главное, чтобы работало. А чтобы они не лезли в базу или куда-то ещё, я зависимости подменяю — тут Moq в руки, и начинается магия. Создаю эти заглушки, которые ведут себя как надо, и проверяю: а если сюда null передать? А если отрицательное число? А если строка длиной в овердохуища символов? В общем, пытаюсь представить, как пользователь будет взъебнуть систему, и заранее от этого защищаюсь.

Но это же только начало, чувак. Потом подключаются QA-инженеры — наши лихие тестировщики. Их задача — смотреть на всё это хозяйство глазами того самого юзера, который даже читать не умеет, а только кнопки тыкает. Они берут пользовательские истории от проджекта и пишут на них end-to-end тесты. Это когда проверяется не один кусок кода, а целый сценарий: «залогинился → создал заказ → оплатил → получил уведомление». И приемочные тесты (UAT) — чтобы бизнес точно сказал: «Да, это то, что мы хотели, а не хуй в пальто».

А самое весёлое, знаешь, что было? Сессии совместного проектирования тест-кейсов, эти вот воркшопы. Собираемся все: я (разработчик), тестировщик, а иногда ещё и аналитик с продукт-менеджером. И начинаем э бошка думай над одной фичей. Я рассказываю, как я это внутри устроил. Тестировщик начинает придумывать, как это сломать. Аналитик смотрит в требования и орёт: «Так, стоп! А тут в требованиях написано одно, а ты сделал совсем немножко по-другому!».

И вот на этих-то сборищах и вылезают все хитрые жопы и пограничные случаи (edge cases), про которые поодиночке никто бы и не вспомнил. Типа: «А что если пользователь захочет отменить заказ в тот момент, когда он уже у курьера в машине, но ещё не отмечен как „вручён“?». Или: «А если у него на счету ровно ноль рублей и ноль копеек, и он пытается купить товар за ноль рублей?». Сразу видно, где требования криво написаны, где дыры в логике. Удивление пиздец иногда наступает у всех — сам от себя охуеешь, какую дичь можно придумать.

В общем, смысл в том, что если делать это вместе и с самого начала, то потом не приходится бздеть перед релизом, что всё развалится. Потому что если тесты писались врозь, то доверия ебать ноль, что покрыли всё. А так — коллективный разум работает, и шанс пропустить какую-нибудь пиздопроебибну логическую ошибку гораздо меньше. Работает, короче.