📌Информация для начинающих и для коллег в области QA, для личного закрепления знаний. 📌Теория, тесты, практика Ментор-Консультация - 5тр/час Мои курсы: @info_course_protestinginfo https://protestinginfo.ru Вопросы @nadin_qa ИП РКН: https://clck.ru/3FWD9v
Вышла новая полезная статья на хабре:
Подробное руководство по Logcat в Android Studio с примерами
В статье узнаете подробно про:
- Logcat
- Анатомию лога-сообщения
- Уровни логирования
- Начало работы с инструментом
- Фильтрацию: находим нужную информацию
- Логические операторы и регулярные выражения
- Окно вывода логов
- Основные Настройки
Бонус от автора статьи: Приложение для практики работы с логами🙌
Теория и практика - это 👏
Нельзяграм - зафиксировала красивое число, пока не отписались.😂
А там снова новый reels) помешалась на мемах.😁
Подписаться
Многие пишут, что шедевры 🥹
Техники эстимации, которыми пользуются тестировщики
Без лишних предисловий сегодня продолжаем разбирать техники эстимации и поговорим про техники, которые используют тестировщики.
Благодарю за ваши ответы!
Я оставила несколько контрольных уроков с процентом правильно выполненных заданий для успешного прохождения как 50-70%, но два контрольных урока сделала как обычные, чтобы была возможность выбрать сразу тесты по Postman, которые для большинства являются приоритетными.
И несколько вебинаров перенесла как уроки к соответствующим модулям, чтобы вы посмотрели вебинар и приступили к тестированию сразу.
Курс по тестам
Следите за обновлениями на /channel/info_course_protestinginfo
Хочу напомнить для всех, что результат прохождения практики и тестов - это подготовиться к собеседованию, закрепить знания, выполнить практические задания на примере тестовых заданий.
Мои вебинары это разбор тестовых заданий и делюсь своим опытом, обучение.
Все о курсе в закрепленном сообщении, старт в начале июля.
И кстати 11111 подписчиков уже есть, скоро проведу розыгрыш, благодарю за подписку😍
Здравствуйте, где можно посмотреть чек-лист к проверкам API
Читать полностью…Продолжаем разбирать вопросы из списка
Какой сценарий тестирования приносит больше результатов: Позитивный или негативный?
👩💻Пример встречного вопроса: Какие «результаты» имеются ввиду?
Задавайте на собесе уточняющие вопросы для того чтобы дать свой конкретный ответ
Допустим, ответ от интервьюера:
Результат того, что приложение будет точно протестированным и дать актуальную информацию по продукту команде или заинтересованным лицам.
Поэтому здесь больше ответ идет на позитивное тестирование.
Если ответ про ожидаемые результаты, то при негативном тестировании их будет больше, и надежность приложения может быть оценена только с помощью эффективно разработанных негативных сценариев (взято из статьи)
Запомните на собесе важны ваши рассуждения, правильного ответа может и не быть, так как это спорный вопрос.
👨💻Еще пример ответа: Позитивные сценарии - happy path тестирование. Мы знаем, что должно произойти, мы создаем эти ситуации согласно требованиям, и мы наблюдаем ожидаемый результат.
Негативное тестирование — это поиск и создание ситуаций, при которых происходит отклонение от „happy path” и наблюдается непредусмотренный результат. Это отклонение от предусмотренных сценариев и поиск непредусмотренных
👩💻Я спросила у чата GPT, ответ таков:
Сценарий тестирования (тест-кейс) может быть как позитивным, так и негативным, и каждый из них приносит результаты, важные для обеспечения качества программного обеспечения.
Оба типа сценариев тестирования важны, но они приносят разные результаты:
Позитивные сценарии помогают убедиться, что система выполняет свои основные функции правильно и соответствует ожиданиям пользователей.
Негативные сценарии выявляют потенциальные проблемы и уязвимости, которые могут возникнуть при некорректном использовании или в непредвиденных ситуациях.
Таким образом, нельзя однозначно сказать, какой тип тестирования приносит больше результатов, так как они служат разным целям. Комплексный подход, включающий как позитивное, так и негативное тестирование, обеспечит наилучшее качество и надежность программного обеспечения.
Предлагайте свои рассуждения.
Продолжаем дальше разбирать вопросы сперва в нельзяграме.
Напоминаю, что у меня есть курс по тестам для закрепления знаний и по подготовке на собеседования, на курсе также разбираются основные вопросы на собеседования в записях вебинаров и в тестах, а также в вебинарах, которые планирую проводить.
Следующий поток в начале июля.
Весь прогресс коллег и дополнения к курсу буду показывать на канале
/channel/info_course_protestinginfo
Основные темы для разбора в интерактивном формате:
▪️Основные понятия тестирования
▪️Классификация видов тестирования
▪️Тестовая документация
▪️Техники тест-дизайна
▪️Основы SQL-запросов
▪️Протоколы HTTP/HTTPS, + другие протоколы, cURL
▪️Тестирование API
▪️REST, SOAP, JSON, XML
▪️Протоколы
▪️DevTools
▪️Postman (создание коллекций, параметризация, сниппеты)
▪️Git в рамках тестирования
➕ Вебинары в записи про собеседование, тестирование API, логирование, тестовая модель, техники тест-дизайна, процессы тестирования и брокеры сообщений.
➕Живые вебинары раз в месяц.
➕ Доступ к чату с автором курса.
➕Обратная связь по проверке заданий по практике в зависимости от тарифа.
Чтоб узнать первыми о старте продаж и цену тарифов, заполните форму предзаписи.
🐹 Вы всё ещё тапаете? А мы уже всё автоматизировали!
Встречаемся завтра, 14 июня в 20:00 по московскому времени, чтобы автоматизировать клики в Hamster Kombat, используя современные инструменты для автоматизации тестирования.
Итак:
– Настраиваем рабочее место: устанавливаем IDEA, Android Studio, Appium Server & Inspector
– Запускаем простейший скрипт в классическом стеке: Java, Selenide, Appium
– Учимся имитировать клики, ввод текста (и другие возможности) в приложении Hamster Kombat (господи прости)
и готово 🤑.
Ссылку на комнату мы опубликуем завтра в 19:50 МСК в нашем чате.
Добавляй напоминание в календарь, чтобы не пропустить событие недели 💥
Вопросы, которые любят задавать на собеседовании не только на роль BA/SA, но и на роль QA Engineer.
Сохраняйте полезный пост 😎 и необходимые ссылки.
У меня тоже есть план набрать 11111 подписчиков и снова сделаю подарок-розыгрыш.😁
Читать полностью…Всем привет!
Статья требует вашего прочтения 😄
Читать:
Сложно о простом. Модель OSI и TCP/IP
На собесе порой спрашивают про TCP/IP.
В дискуссиях на тему soft skills периодически упоминают умение просить помощи у коллег.
В случае сложностей возникает дилемма, как быть? Бежать за помощью немедленно? Пробовать решить проблему самому?
Если бежать за помощью немедленно:
- высокая вероятность быстро получить помощь и устранить проблему. Высокая потому что нет 100% гарантии, что у коллеги уже есть готовое решение. Иногда приходится обращаться к нескольким. Как правило проблема будет решена.
- НО: этот подход имеет и свои недостатки
- приходится отрывать коллег от работы
- не нулевая вероятность того, что никто не сможет помочь и проблему придется в итоге решать самому
- отсутствие образовательного эффекта, так как в целях экономии собственного времени коллеги не объясняют детали, а дают готовое решение
Если пытаться найти решение самому:
- с помощью документации, google, ChatGPT и тд можно найти решение самому не отвлекая коллег
- образовательный эффект за счет глубокого погружения а проблему, нахождения вариантов решения, проб и ошибок
- НО: и здесь есть недостатки
- нет гарантии, что проблему удастся решить самому и и в итоге все равно придется обращаться к коллегам
- есть риск зарыться и потратить непозволительно большое время на поиск решения. То, на что с помощью коллеги ушло бы минут десять, при самостоятельном решении может занять час-полтора и больше в зависимости от проблемы
Разбор вопросов из нельзяграма (подписаться на аккаунт Protestinginfo)
Подписчице задали такой вопрос на
Локализацию бага:
⁉️Тестировщик в Postman через post создаёт пользователя (email и пароль), а ему приходит 200 статус код и пустой json.
А точно ли это баг?
Я считаю, что это нормальное поведение, если под пустым json понимается, что нет тела ответа от сервера. На скрине отображено нормальное поведение, и все же хотелось бы, чтоб был 201 статус код, например, документация без тела ответа от сервера "Code - 201; Description - User has been registered and expects confirmation by e-mail"
Но если будет действительно пустое тело ответа от сервера как {} или ключи имеют значения null, то по сути это дефект, и здесь нужно провести локализацию бага.
Смотрим документацию и проверяем значения в таблице БД.
Помните ваша задача на собесе рассуждать, задавать вопросы интервьюеру.
Сперва я укажу ответы подписчиков:
▪️- Самый главный ответ, что дефект на бэкенде.
▪️- Обычно при создании пользователя приходит статус код 201.
▪️- Пустой json - это некорректный ответ от сервера.
- проверить данные в базе данных;
- проверить эндпойнт на корректность.
У меня возникает два вопроса:
1. Какое апи?
2. Возвращается именно пустой json? Не пустой body, а именно json?
Если именно пустой json то вероятно да дефект.
Если просто пустое бади, то не факт.
Если это банальный REST то там жестких правил нету. Можно сделать POST запрос, где будет 200 статус код и пустое тело в ответе. И ничего криминального в этом не будет.
Я бы в первую очередь обратился к документации. Чтобы понять - а как должно быть? Прелесть апи в том, что по-любому документация есть. Даже если нет её в привычном понимании - есть реализованный код, в котором запрограммировано поведение, там указано и какой код ответа должен возвращаться и что должно возвращаться в теле ответа.
Если следовать мысли бест-практикс реализации restful, то здесь логичней 201 статус код и в теле ответа информация о созданном пользователе.
Статус код 201 в коде прописывается тут локализовать нечего.
Пустой json: идем в БД проверить, что запись создалась корректно. Если БД допускает null значения, то запись могла создаться с пустыми значениями. Если запись есть, но поля пустые - идем в логи и смотрим, что произошло в момент записи в БД.
Если запись корректна - то идём в логи смотреть что произошло когда апи "забирал" данные из БД.
👋 Всем привет!
Друзья, на этой неделе, 6 июня в 20:00 МСК состоится вводное занятие 14-го потока курса "Автоматизация тестирования на Python".
➡️ Зарегистрироваться на урок
Что вас ждёт:
🤖 Познакомимся с профессией инженера по тестированию и разберем различия между QA Automation Engineer и QA Manual Engineer.
Оценим текущее состояние рынка труда в сфере QA.
Проведём сессию вопросов с QA Lead.
👨🎓 Разработаем ваш первый автотест на Python/Selene.
Рассмотрим проект, охватывающий полную инфраструктуру (Web, Mobile, API).
Каждый участник получит домашнее задание, которое мы проверим и дадим обратную связь.
🗓 Добавить напоминание в календарь
Посмотреть полную программу и купить курс можно самостоятельно на сайте школы или напишите нам в саппорт.
🔥 До 7 июня включительно на курс действует скидка 5%.
На понедельник как всегда 😂
Читать полностью…Техники эстимации по ISTQB
Сейчас при изучении какой либо темы по тестированию не обойтись без обращения к ISTQB, как общепризнанной базе знаний. Поэтому и мы сегодня рассмотрим, какие же техники эстимации описываются там.
Техники эстимации, которыми пользуется вся команда
Читать полностью…Вопрос на #собеседование:
Оценка времени на тестирование, какие способы используете?
Мне нравится вот эта статья для того, чтобы подготовиться к данному вопросу.
Сложные, затянутые, требующие математической обработки (я добавила ссылки, где можно изучить предлагаемые методы):
⌛️Метод Дельфи;
⏳Метод трех точек, когда дается оптимистичная (a), пессимистичная (b) и наиболее вероятная оценка (m). Итоговая оценка считается как Е = )а + (4*m) + b) / 6.;
⌛️Метод анализа функциональных точек /точек тестирования;
⏳Метод оценки точек вариантов использования
⏳COCOMO (COnstructive COst MOdel) – модель издержек;
Более простые в использовании методы:
🕰️ПВН (пальцем в небо), или метод проб и ошибок, он же метод научного тыка;
⏳“Специальный” метод, когда оценка приходит сверху (от менеджеров, руководителей, маркетологов) без настоящих попыток оценить трудозатраты;
⏳Аналогии с другими проектами и рекомендации экспертов (экспертные оценки довольно понятно описаны на wiki и вот этой страничке);
⏳Оценка через декомпозицию работ (декомпозируем до тех пор, пока не сможем оценить);
⏳Процентное отношение к разработке (исходя из предыдущего опыта высчитывается какой процент от разработки занимает тестирование и в прогнозировании будущих проектов используется этот процент);
🕰️Метод процентного распределения (все этапы жизненного цикла разработки программного продукта делятся на части, которым присваивается значение трудозатрат в %.).
https://docs.google.com/document/d/1JyxzLqU72IRiPZMaI0YaBJRpkf37oK76EnJiALhr5nU/edit
Читать полностью…Я также разбираю вопросы на собеседования по тестированию на своем курсе по тестам. И мне его хочется улучшить, и те кто сейчас на курсе, и те кто не на курсе важно ваше мнение, проголосуйте, пожалуйста, /channel/info_course_protestinginfo
Читать полностью…Друзья, сегодня в рамках рубрики про айтишный английский разбираем слова, связанные с программным обеспечением. Их оказалось так много, что пришлось разбить на два поста. 😎
Достаем словарики и записываем 27 слов, связанных с программным обеспечением. ✍️
🟢 a compiler — компилятор
🟢 a database — база данных
🟢 a debugger — отладчик
🟢 a desktop application/app — приложение для настольного компьютера
🟢 a device driver — драйвер устройства
🟢 a graphical user interface (GUI) — графический пользовательский интерфейс
🟢 a kernel — ядро (например, операционной системы)
🟢 a mobile application/app — мобильное приложение
🟢 a plug-in (plugin) — плагин, расширение, дополнительный программный модуль
🟢 a programming language — язык программирования
🟢 a query — запрос
🟢 a scroll bar — полоса прокрутки
🟢 a snapshot — снимок состояния системы
🟢 a spreadsheet — электронная таблица
🟢 a status bar — строка состояния
🟢 a template — шаблон
🟢 a version control system (VCS) — система контроля версий
🟢 a web application, a web app — веб-приложение
🟢 a word processor — текстовый процессор
🟢 a text editor — текстовый редактор
🟢 a utility — утилита (служебная программа)
🟢 acceptance testing — приемочное тестирование
🟢 an algorithm — алгоритм
🟢 an array — массив
🟢 an encoding — кодировка
🟢 an enterprise application — корпоративное приложение
🟢 an executable (file) — исполняемый файл
Сохраняйте пост себе в избранное и пишите в комментариях, какие слова были вам незнакомы.
Cтавь реакцию:
🔥 — если все слова знакомы
👍 — если знаешь больше половины слов
👀 — если узнал много нового
#английскийдляпрограммистов
Вопрос на собеседование:
К тебе на тест попадает 2 проекта. В одном проекте необходимо проверить корректность внесенных правок, на другом - протестировать новый функционал. Какой проект ты возьмешь в работу раньше?
Запомните: важно рассуждать на собеседование, у тех кого есть опыт - рассказывать на основании своего опыта, у кого нет опыта - прочитайте пост для ознакомления.
Данный вопрос разместила в нельзяграме (подписаться), снизу ответы от подписчиков и обмен своим опытом.
1. Зависит от дедлайнов по каждому из проектов и от оценок на тестирование каждого;
2. По приоритету задачи проекта;
3. Если приоритет одинаков, то я буду проверять новую функциональность согласно видам тестирования связанные с изменением,
я считаю, что сперва new feature testing, а потом retest - проверка правок;
Вы можете иначе сказать🙃, но думаю будет дискуссия. Поясните почему?
Ответы:
1
Я бы сказал время, если ретест значит фича близка к релизу и ее нужно быстрее обработать чтобы уложится в срок/не затягивать релиз
Новый функционал обычно планируется к релизу позже
Я предпочту сначала ретест, чтобы если там все починено, мы могли раскатить на прод эту фичу и начать аб эксперимент)
Зависит от приоритетов проекта(если таковые имеются), от количества правок и их срочности - может это хотфикс, тогда конечно его в приоритете, если это мелкие баги и дедлайн не скоро то можно и подождать. Тоже самое с новой фичей - какой у неё приоритет, насколько она большая? Если предположить что обе очень срочные задачи и приоритет одинаков, я возьму более мелкую сначала, потому что большая задача в любом случае займёт много времени. В общем все зависит от ответов на мои вопросы😂
Если правки сильно ждут на проде, это тормозит релиз, то сначала старую задачу.
Если релизов нет, то сначала новую, понаходить там багов, отдать разрабу, чтоб не скучал, а потом уже ретестом заниматься.
Поскольку она могла задеть имеющийся важный функционал программы, ну в общем, конечно, зависит от приоритета задач, в данном случае если приоритет одинаковый, то можно исходить из окружения, на котором ты будешь проверять, если это спец дев ветка, то корректные правки можно отодвинуть на второй план и проверить на дев ветке именно новый функционал, а после залития правок на препрод, в совокупности можно посмотреть две задачи одновременно, наверняка они имеют места смежного функционала))
Ретест - скорее всего, функциональность уже на проде, юзер уже ею пользуется, сможем быстрее выдать в релиз.
При тестировании новой функциональности запросто вылезут недостатки требований и баги, на уточнение и исправление багов уйдет какое-то время, из-за этого ретест может быть отложен во времени и не успеет в релиз.
Но вообще, конечно, нюансов тьма - что по объемам, цели спринта и критичности изменения.
Скорее всего я бы взяла тестировать новое, а пока жду уточнений/фиксов, спокойно в параллель бы тестировала фикс на ретесте.
Почитала еще ответы, согласна с ними тоже. Возможно новый функционал мизерный, а проверка дефекта это объемный ретест. Но почему считаю, что даже небольшой новый функционал займет больше времени - это в любом случае изучение ТЗ, какие-то уточнения с аналитиком и разрабами, написание тестов и тестирование. А существующий дефект это ситуация с шагами и описанием, где нужно проверить воспроизводится или нет. Если это твой же дефект, проверка занимает меньше времени…
Алоха! Сегодня продолжаем разбирать вопросы, которые любят задавать на собеседовании на роль BA/SA и продолжим тему про работу с базами данных и поговорим именно об SQL:
#вопросыссобеседования
Часть 7:
Данную тему очень часто затрагивают на собеседованиях и спрашивают как теорию, так и просят что-либо показать на практике, поэтому нашла пару статей👇🏼, где уже отмечены вопросы с ответами по теме sql:
📌 27 распространённых вопросов по SQL с собеседований и ответы на них
📌 Топ-30 вопросов по SQL на технических собеседованиях:
- Часть 1
- Часть 2
📌 20 вопросов и задач по SQL на собеседовании с ответами
📌 50 популярных вопросов и ответов на собеседовании по SQL Server
Также исходя из опыта и прочитав разные статьи выделю несколько вопросов, которые практически всегда задают на собеседовании:
📍Вопрос 1: Какие есть операторы SQL
✅Краткий ответ:
DDL (Data Definition Language, язык описания данных) - это группа операторов определения данных, в нее входят такие операторы как:
- CREATE
- ALTER
- DROP
DML (Data Manipulation Language, язык управления данными) - это группа операторов для манипуляции данными, в нее входят такие операторы как:
- SELECT
- INSERT
- UPDATE
- DELETE
DCL (Data Control Language, язык контролирования данных) - группа операторов определения доступа к данным, в нее входят такие операторы как:
- GRANT
- REVOKE
- DENY
TCL (Transaction Control Language, язык управления транзакциями) - группа операторов для управления транзакциями, в которую входят такие операторы как:
- BEGIN TRANSACTION
- COMMIT TRANSACTION
- ROLLBACK TRANSACTION
- SAVE TRANSACTION
📎Материалы по теме:
- Основные команды SQL, которые должен знать каждый программист
📍Вопрос 2: Какие есть типы соединения в SQL
✅ Краткий ответ:
Для соединения двух таблиц используют оператор JOIN. Соединение может быть внутренним (INNER), внешним (OUTER), которое в свою очередь может быть левым (LEFT), правым (RIGHT) и полным (FULL).
Рассмотрим чуть подробней каждое из них:
- INNER JOIN - объединяет записи из двух таблиц по связующему полю, если оно содержит одинаковые значения в обеих таблицах
- FULL OUTER JOIN - возвращает все записи, для которых есть совпадение в любой из таблиц. Следовательно, он возвращает все строки из левой таблицы и все строки из правой таблицы
- LEFT JOIN - используется для возврата всех строк из левой (первой) таблицы и только совпадающих строк из правой (второй) таблицы, для которых выполняется условие соединения
- RIGHT JOIN - используется для возврата всех строк из правой (второй) таблицы и только совпадающих строк из левой (первой) таблицы, для которых выполняется условие соединения
📎Материалы по теме:
- Соединение таблиц – операция JOIN и ее виды
- SQL JOIN - соединение таблиц базы данных
📍Вопрос 3: Что такое SQL-ограничения (Constraints) и какие они бывают?
✅ Краткий ответ:
Ограничения (constraints) используются для указания ограничения на тип данных таблицы. Они могут быть указаны при создании или изменении таблицы
Примеры ограничений:
- NOT NULL - значение не может быть NULL
- CHECK - значения столбца должны соответствовать заданным условиям
- DEFAULT - предоставляет столбцу значения по умолчанию
- UNIQUE - гарантирует уникальность значений в столбце
- INDEX — создаёт индексы в таблице для быстрого поиска/запросов
- PRIMARY KEY - требует, чтобы каждая запись в данном столбце была уникальной и не равнялась NULL
- FOREIGN KEY - требует, чтобы каждая запись в данном столбце уже существовала в определенном столбце из другой таблицы
📎Материалы по теме:
- SQL Создание ограничений
- Основы работы с ограничениями SQL
Источник: @ba_and_sa
#собеседование
‼️Предыдущие части смотрите по #собеседование #вопросыссобеседования
p.s.Делитесь своими мыслями в комментариях и напишите, какие вопросы были у вас на собесах
WWDC 2024 закончилась. Я бы хотел поделиться итогами и моими мыслями.
🫥Интересные обновления IOS 18:
• Возможность устанавливать иконки приложений в любом месте экрана, а так же менять их цвет
• С помощью Hide an App прячем приложения от публичных глаз
• Через iPhone Mirroring возможен шаринг и управление Iphone
🚀Приложения:
• Почта сможет фильтровать источники и группировать их.я
• iMessages дает возможность ставить реакции на сообщения и вводит "мини-приложения". Аналогично как в Telegram
• Обновлено приложение "Фото". Изменена навигация, добавлена сортировка по месту, времени и контенту в кадре
• GenMoji генерирует кастомные эмодзи
🤖AI
• Редактирует напечатанный текст
• Создает эмодзи и картинки в iMessages
• Clean Up может убирать с фотографии конкретных людей
• Siri сильно прокачали и теперь она может помогать в более сложных задачах
○Поддержку новой версии получили все Iphone у которых доступна 17я версия IOS
○Все фишки с ИИ доступны только на последних iPhone 15 Pro и 15 Pro Max и в США на английском языке
○Apple обещают не продавать данные пользователь при использовании ИИ. Но тут сложно, ведь много запросов уходит на сторонние сервисы. Т.е. по факту сервис в любом случае получает доступ до информации миллиона пользователей.
Лично у меня двоякое впечатление после конференции.
С одной стороны Apple смогли дать интересные фишки для своих пользователей и использовать свое преимущество - экосистема не только из смартфонов, но и других девайсов.
Но с другой стороны ощущается. что это скорее попытка догнать другие компании с фишками ИИ(очень многое уже давно реализовано) и не только. И начинать презентацию обновления ИОС с возможности перетаскивать иконки...не самый впечатляющий жест. Больше только запомнился паркур на лестнице.
Для QA, как часто это бывает с Apple, мало интересного, ведь обновления затрагивают либо саму ОС, либо приложения самой экосистемы. Но еще предстоит изучать внутреннюю документацию для разработчиков, а там может быть что-то интересное.
А у тебя какие впечатления от конференции? Что думаешь по обновлениям от Apple?
Мини - план на испытательном сроке🤣 выше читаем)
Читать полностью…А также и это рекомендую почитать схема-шаблон правильного ответа, взято из видео
Сохранено на @protestinginfo
А еще есть крутая шпаргалка, которую мне прислала коллега! 😏
Сохраняем, пользуемся и делимся с другими!
С вас реакция ❤️
Заметки тестировщика
Для ознакомления:
Прочесть Детективную историю - Старый баг в MySQL.
От автора тренажера по SQL
https://sqltest.online/ru/
+ сама шпаргалка
Размещено на канале: @protestinginfo