Вы встречались с ошибками, которые возникают время от времени в продакшне, но никак не воспроизводятся локально? Бывает, изучаешь такой баг и вдруг понимаешь, что он проявляется только при одновременном параллельном выполнении скриптов. Изучив код, понимаешь как это исправить, чтобы такого больше не повторялось. Но на такое исправление хорошо бы написать тест…
В статье я расскажу о своем подходе к тестированию таких ситуаций. А также приведу несколько наглядных (и наверное даже классических) примеров багов, которые удобно протестировать с помощью этого подхода. Все примеры багов живые — то, что встречается в работе.
Забегая вперед сразу скажу, что в конце статьи будет ссылка на github, куда я выложил готовое решение, позволяющее тестировать параллельные консольные процессы легко и просто.
Пример номер один. Параллельное добавление одного и того же
Задача. У нас есть приложение с базой данных (PostgreSQL) и нам надо наладить импорт данных из сторонней системы. Допустим, есть таблица account (id, name) и связи идентификаторов с внешней системой в таблице account_import (id, external_id). Давайте набросаем простой механизм приема сообщений.
При приеме сообщения будем сперва проверять — есть ли такие записи у нас в базе. Если есть, то будем обновлять имеющиеся. Если нет, то будем добавлять в базу.
Вы недавно работаете в тестировании, или только хотите приобщиться к этой отрасли? Хотите структурировать теоретические знания и набраться практики? Тогда эта школа для вас.
Выпускник школы получает:
Понимание, что такое тестирование — 14 видео-лекций по 30-60 минут + ссылки на полезные статьи
Работа на реальном проекте больше месяца — много практики
Работа с реальными инструментами, которые вы будете использовать в дальнейшем
Портфолио — выгодно выделит среди других кандидатов
Разбор резюме — больше шансов, что его прочитают
Инструменты, которые вы попробуете на курсе
Баг-трекинг: JIRA, Redmine, Bugzilla, Mantis
Ведение тестов: Sitechco, Testlink, Confluence
Другое: mindmap, pict, perlclip
Эта школа для Вас, если Вы недавно работаете в тестировании, или только хотите приобщиться к этой отрасли, хотите структурировать теоретические знания и набраться практики.