Шпаргалка, що покрилась пилом 😆
Витягуємо з архіву те, що мали б давно памʼятати, але... реальність така, що навіть сеньори інколи лізуть в гугл 👀
Хтось помітив?
Витягуємо з архіву те, що мали б давно памʼятати, але... реальність така, що навіть сеньори інколи лізуть в гугл 👀
Хтось помітив?
1🔥25❤4🌚3
Всім доброго ранку!! 🤗
Ранкові історіі QA - Впевнений шо у вас таке теж було і не раз)
Дайте хоч щось… — сказав дев і зробив твій день присвішений дослідження і збору 1000000 кб логів 🤪🤪🤪
Коли дев каже
А ти бачиш, як на клієнті трансляція йде. Відео програється, спікер говорить, все типу ок. Але dev на стороні серверу каже:
У нас порожньо. Нічого не приходить.
І ти такий
Ну добре…
Тут починається твоя улюблена частина — трасування, sniffing і трохи QA-магії
Бо коли в UI щось відображається, а бекенд ніби нічого не отримує — ти вже знаєш, що це класика.
Клієнт є, сервер є, а трафік — ніби у відпустці.
Сценарій дуже простий як двері
У додатку йде трансляція. Але сервер не бачить ніякого трафіку (відеопотік через UDP).
А дев каже
У нас все чисто. Напевно, на клієнті щось…
І ти такій окей давай ставимо флажки і ловимо пакети
Слухаємо клієнта
Вмикаємо Wireshark (або dumpcap) на клієнтському боці.
або просто
Запускаємо запис, відтворюємо трансляцію, ловимо .pcap.
У дампі бачимо:
Пакети йдуть / payload є / порти вказані правильно
Клієнт — невинний.
ну окай тоді слухаємо сервер
На сервері — tcpdump, бо він не підведе
І… порожньо. Нічого. Нуль.
кей, тоді пробуємо ще фокус
Все ще — тиша. Нема навіть SYN, нема навіть запитів.
Ага! Тут вже цікаво.
так тепер аналізую мережу
Якщо на клієнті видно, а на сервері — нічого, це може бути:
фаєрвол (локальний або міжмережевий)
UDP-зв’язок блокується між сегментами
Неправильна маршрутизація (NAT, VPN, проксі)
Сервер слухає не той інтерфейс або порт
Аналіз в Wireshark
Фільтруємо пакети за:
(якщо це RTSP)
І вже можна точно сказати:
“Ось клієнт відправляє, ось час, ось порт. Але сервер не бачить взагалі.”
Відправляєш dev’у: .pcap + скрін + timestamp
І підпис:
Ось вам всі логи і почті рішення - займайтесь)
але можно спробувати ще и фікс зробити))) але яж просто QA
Ключові фішки аналізу
tcpdump на сервері — must have
Wireshark — ідеально для фільтрації по потоку (stream)
Фільтри: ip.addr, udp, tcp.stream eq, frame contains
Завжди дивись: SYN, ACK, payload, порт, інтерфейс
Moral of the story,
Коли dev каже “Дайте хоч щось” —
Дай йому дамп і хай не бубнить.
бувало у вас таке що деви хочуть вид вас все на блюдечці?
Буду вдячний за репост группи, + приєднуйтесь до нас)
https://t.me/BugOrDefects
Ранкові історіі QA - Впевнений шо у вас таке теж було і не раз)
Дайте хоч щось… — сказав дев і зробив твій день присвішений дослідження і збору 1000000 кб логів 🤪🤪🤪
Коли дев каже
“У нас нічого не видно. Дайте хоч щось…”
А ти бачиш, як на клієнті трансляція йде. Відео програється, спікер говорить, все типу ок. Але dev на стороні серверу каже:
У нас порожньо. Нічого не приходить.
І ти такий
Ну добре…
Тут починається твоя улюблена частина — трасування, sniffing і трохи QA-магії
Бо коли в UI щось відображається, а бекенд ніби нічого не отримує — ти вже знаєш, що це класика.
Клієнт є, сервер є, а трафік — ніби у відпустці.
Сценарій дуже простий як двері
У додатку йде трансляція. Але сервер не бачить ніякого трафіку (відеопотік через UDP).
А дев каже
У нас все чисто. Напевно, на клієнті щось…
І ти такій окей давай ставимо флажки і ловимо пакети
Слухаємо клієнта
Вмикаємо Wireshark (або dumpcap) на клієнтському боці.
ip.addr == <server_ip> && udp.port == 5000
або просто
ip.addr == <server_ip>
Запускаємо запис, відтворюємо трансляцію, ловимо .pcap.
У дампі бачимо:
Пакети йдуть / payload є / порти вказані правильно
Клієнт — невинний.
ну окай тоді слухаємо сервер
На сервері — tcpdump, бо він не підведе
sudo tcpdump -i any host <client_ip> and udp port 5000 -w /tmp/server_capture.pcap
І… порожньо. Нічого. Нуль.
кей, тоді пробуємо ще фокус
sudo tcpdump -i any port 5000
Все ще — тиша. Нема навіть SYN, нема навіть запитів.
Ага! Тут вже цікаво.
так тепер аналізую мережу
Якщо на клієнті видно, а на сервері — нічого, це може бути:
фаєрвол (локальний або міжмережевий)
UDP-зв’язок блокується між сегментами
Неправильна маршрутизація (NAT, VPN, проксі)
Сервер слухає не той інтерфейс або порт
Аналіз в Wireshark
Фільтруємо пакети за:
ip.addr == <server_ip>
udp
rtp
frame contains "SETUP"
(якщо це RTSP)
І вже можна точно сказати:
“Ось клієнт відправляє, ось час, ось порт. Але сервер не бачить взагалі.”
Відправляєш dev’у: .pcap + скрін + timestamp
І підпис:
Ось вам всі логи і почті рішення - займайтесь)
але можно спробувати ще и фікс зробити))) але яж просто QA
Ключові фішки аналізу
tcpdump на сервері — must have
Wireshark — ідеально для фільтрації по потоку (stream)
Фільтри: ip.addr, udp, tcp.stream eq, frame contains
Завжди дивись: SYN, ACK, payload, порт, інтерфейс
Moral of the story,
Коли dev каже “Дайте хоч щось” —
Дай йому дамп і хай не бубнить.
бувало у вас таке що деви хочуть вид вас все на блюдечці?
Буду вдячний за репост группи, + приєднуйтесь до нас)
https://t.me/BugOrDefects
Telegram
Bug or Defect?
Welcome to Bug or Defect?
youtube - https://www.youtube.com/@BugOrDefect
instagram - https://www.instagram.com/bugordefect_life?igsh=MTFlYzZyMncwZWd4eQ==
youtube - https://www.youtube.com/@BugOrDefect
instagram - https://www.instagram.com/bugordefect_life?igsh=MTFlYzZyMncwZWd4eQ==
1👍14❤7👀6🥴3🔥2
Завдання для QA: Git-команда дня
Ти працюєш з гілкою feature/test-123, щось наламав і хочеш скасувати останні зміни у файлі, але не комміт, а саме локальні зміни в робочій директорії. Яку команду використаєш? ДУЖЕ УВАЖНО!!!
Ти працюєш з гілкою feature/test-123, щось наламав і хочеш скасувати останні зміни у файлі, але не комміт, а саме локальні зміни в робочій директорії. Яку команду використаєш? ДУЖЕ УВАЖНО!!!
Anonymous Quiz
19%
(A) git reset --hard HEAD
15%
(B) git checkout <назва_файлу>
19%
(C) git clean -fd
47%
(D) git restore <назва_файлу>
❤12
Bug or Defect?
Завдання для QA: Git-команда дня
Ти працюєш з гілкою feature/test-123, щось наламав і хочеш скасувати останні зміни у файлі, але не комміт, а саме локальні зміни в робочій директорії. Яку команду використаєш? ДУЖЕ УВАЖНО!!!
Ти працюєш з гілкою feature/test-123, щось наламав і хочеш скасувати останні зміни у файлі, але не комміт, а саме локальні зміни в робочій директорії. Яку команду використаєш? ДУЖЕ УВАЖНО!!!
Всім доброго вечора, ну що ось і вихідні наступають)
Всім гарних і сонячних вихідних 🤗🤗🤗
Залишу це вам, Шпаргалка по Git, яку хочеться зберегти
Колись я теж плутався між git pull, git fetch, git reset --hard, і думав, що rebase — це щось, що краще не чіпати руками без амулету та зілля захисту 😅
Тому ось вам міні-шпаргалка — просто, коротко і наочно
Буду вдячний за поширення групи)
Всім гарних і сонячних вихідних 🤗🤗🤗
Залишу це вам, Шпаргалка по Git, яку хочеться зберегти
Колись я теж плутався між git pull, git fetch, git reset --hard, і думав, що rebase — це щось, що краще не чіпати руками без амулету та зілля захисту 😅
Тому ось вам міні-шпаргалка — просто, коротко і наочно
Буду вдячний за поширення групи)
🔥29❤8
👋 Доброго ранку, QA-друзі!
Сьогодні без історій — вже 11:02, а перший урок на сьогодні вже проведено (і поки що він же й останній )
Сподіваюсь, у вас гарний настрій, бо день тільки починається — або вже якось йде 😄
У мене за вікном дощ, тому саме час зробити собі кави або чаю
…і заскочити почитати щось корисне для професійної душі.
Навіть у суботу ми трішки качаємо скіли 💪
А нижче — рубрика, яка не дасть розслабитись 👇
Сьогодні без історій — вже 11:02, а перший урок на сьогодні вже проведено (і поки що він же й останній )
Сподіваюсь, у вас гарний настрій, бо день тільки починається — або вже якось йде 😄
У мене за вікном дощ, тому саме час зробити собі кави або чаю
…і заскочити почитати щось корисне для професійної душі.
Навіть у суботу ми трішки качаємо скіли 💪
А нижче — рубрика, яка не дасть розслабитись 👇
❤12
Завдання для QA:
Тестуєш API.
Запит GET працює в Postman, але в UI — 403 Forbidden. Чому?
Тестуєш API.
Запит GET працює в Postman, але в UI — 403 Forbidden. Чому?
Anonymous Quiz
15%
A) Невірний endpoint у фронті
63%
B) В UI не передається Authorization header
21%
C) Браузер автоматично дропає credentials через політику CORS
1%
D) Сервер просто не любить UI
❤11🤔9🔥7
Bug or Defect?
Завдання для QA:
Тестуєш API.
Запит GET працює в Postman, але в UI — 403 Forbidden. Чому?
Тестуєш API.
Запит GET працює в Postman, але в UI — 403 Forbidden. Чому?
Всім доброго ранку, як ваші справи? 🫣☀️☀️☀️
Понеділок, а це значить, що
кава вже в руці,
планінг вже десь поруч,
а ми вже потроху в робочому строю,
Якщо ще не в строю саме час приєднатися, зараз пробую розібрати вам суботній пулл, бо результати нашого пулу вас трохи заплутали
І це нормально, завдання було з підвохом
Чому ж не А?
Якби був невірний endpoint, швидше за все був би 404 (Not Found) або взагалі CORS Error. А не 403. тому це не може бути вірною відповідью
і чому не B?
Це вже ближче. Але це наслідок, а не причина.
Браузер не передає авторизаційні дані, бо йому не дали на це дозвіл саме через credentials і політику CORS.
ну про D не будемо згадувати)
а ось чому же С?
Бо браузер не просто труба між UI і беком.
Це справжній митник. І якщо ви не вказали,
fetch(url, { credentials: 'include' })
або в axios
axios.get(url, { withCredentials: true })
тоді ніякі куки чи токени не поїдуть.
А сервер, побачивши "аноніма", чемно каже
403 Forbidden доступ заборонено.
Postman ж не обмежений цими політиками. Там що вставив те й поїхало. Тому там усе працює.
Тому треба постійно буди на чеку
Якщо бачиш розрив між UI і Postman дивись не тільки на запит, а і на контекст його виконання.
Порівнюй заголовки, дивись на CORS, перевіряй, чи летить токен.
Бо в UI без credentials: 'include' токен не поїде, навіть якщо в localStorage/куках він є.
Буду вдячний за репост группи, + приєднуйтесь до нас)
https://t.me/BugOrDefects
Понеділок, а це значить, що
кава вже в руці,
планінг вже десь поруч,
а ми вже потроху в робочому строю,
Якщо ще не в строю саме час приєднатися, зараз пробую розібрати вам суботній пулл, бо результати нашого пулу вас трохи заплутали
І це нормально, завдання було з підвохом
Чому ж не А?
Якби був невірний endpoint, швидше за все був би 404 (Not Found) або взагалі CORS Error. А не 403. тому це не може бути вірною відповідью
і чому не B?
Це вже ближче. Але це наслідок, а не причина.
Браузер не передає авторизаційні дані, бо йому не дали на це дозвіл саме через credentials і політику CORS.
ну про D не будемо згадувати)
а ось чому же С?
Бо браузер не просто труба між UI і беком.
Це справжній митник. І якщо ви не вказали,
fetch(url, { credentials: 'include' })
або в axios
axios.get(url, { withCredentials: true })
тоді ніякі куки чи токени не поїдуть.
А сервер, побачивши "аноніма", чемно каже
403 Forbidden доступ заборонено.
Postman ж не обмежений цими політиками. Там що вставив те й поїхало. Тому там усе працює.
Тому треба постійно буди на чеку
Якщо бачиш розрив між UI і Postman дивись не тільки на запит, а і на контекст його виконання.
Порівнюй заголовки, дивись на CORS, перевіряй, чи летить токен.
Бо в UI без credentials: 'include' токен не поїде, навіть якщо в localStorage/куках він є.
Буду вдячний за репост группи, + приєднуйтесь до нас)
https://t.me/BugOrDefects
Telegram
Bug or Defect?
Welcome to Bug or Defect?
youtube - https://www.youtube.com/@BugOrDefect
instagram - https://www.instagram.com/bugordefect_life?igsh=MTFlYzZyMncwZWd4eQ==
youtube - https://www.youtube.com/@BugOrDefect
instagram - https://www.instagram.com/bugordefect_life?igsh=MTFlYzZyMncwZWd4eQ==
1🔥28❤2
Завдання дня для QA:
Ти логуєш баг з додатку, який бігає на Linux-сервері. Треба подивитися останні 50 рядків з логу app.log. Що вибереш?
Ти логуєш баг з додатку, який бігає на Linux-сервері. Треба подивитися останні 50 рядків з логу app.log. Що вибереш?
Anonymous Quiz
3%
A) tail app.log
25%
B) cat app.log | head -n 50
57%
C) tail -n 50 app.log
14%
D) less app.log | grep 50
❤3👌2
Доброго вечора всім - Як пройшов ваш понеділок? У мене щось прям в напрузі, зараз розповім)
Вечірня історія QA, А шо, камера вже зайнята?
або як я навчився читати помилки, а не тільки логи 😅
Сьогодні день був щось пекельний, займався стрімінгом, тестував запуск відео з клієнта.
Запускаю, а відео просто не стартує.
Ні помилки в UI, ні фейлу, ні лагу. Просто тиша.
Я, як порядний QA, лізу в логи.
А там нічого. Порожньо, як в холодильнику))
Починається класика:
Та ну як це, все ж працювало...
Може кудись не туди дивлюсь?
Може сервер тупе?
Може dev щось поламав?
А може... 😶🌫️
Пішов в DevTools → Console
І нарешті! Та сама рятівна стрічка
NotReadableError: Could not start video source
Google каже, така помилка буває, коли камера вже зайнята іншим застосунком або вкладкою.
А тепер тримайте кульмінацію
Я сам сидів на іншому екрані, там був відкритий Zoom бо була англіська і я залишився весіти в румі і саме він тримав камеру.
Я навіть не помітив індикатору, бо ну... QA без уваги це окрема професія 😅
в підсумку,
Завів ішшью на клієнт - Error від WebRTC має хендлити такі фейли з повідомленням типу “Камера зайнята”
Бо якщо користувач не бачить помилки він подумає, що воно просто не працює
А насправді просто не твій день (і не твоя камера)
А у вас таке було?
Коли баг знайшовся не завдяки скілам, а власній неуважності?
Поділіться, щоб не я один тут соромився 😅
Буду вдячний за репост группи, + приєднуйтесь до нас)
https://t.me/BugOrDefects
Вечірня історія QA, А шо, камера вже зайнята?
або як я навчився читати помилки, а не тільки логи 😅
Сьогодні день був щось пекельний, займався стрімінгом, тестував запуск відео з клієнта.
Запускаю, а відео просто не стартує.
Ні помилки в UI, ні фейлу, ні лагу. Просто тиша.
Я, як порядний QA, лізу в логи.
А там нічого. Порожньо, як в холодильнику))
Починається класика:
Та ну як це, все ж працювало...
Може кудись не туди дивлюсь?
Може сервер тупе?
Може dev щось поламав?
А може... 😶🌫️
Пішов в DevTools → Console
І нарешті! Та сама рятівна стрічка
NotReadableError: Could not start video source
Google каже, така помилка буває, коли камера вже зайнята іншим застосунком або вкладкою.
А тепер тримайте кульмінацію
Я сам сидів на іншому екрані, там був відкритий Zoom бо була англіська і я залишився весіти в румі і саме він тримав камеру.
Я навіть не помітив індикатору, бо ну... QA без уваги це окрема професія 😅
в підсумку,
Завів ішшью на клієнт - Error від WebRTC має хендлити такі фейли з повідомленням типу “Камера зайнята”
Бо якщо користувач не бачить помилки він подумає, що воно просто не працює
А насправді просто не твій день (і не твоя камера)
А у вас таке було?
Коли баг знайшовся не завдяки скілам, а власній неуважності?
Поділіться, щоб не я один тут соромився 😅
Буду вдячний за репост группи, + приєднуйтесь до нас)
https://t.me/BugOrDefects
Telegram
Bug or Defect?
Welcome to Bug or Defect?
youtube - https://www.youtube.com/@BugOrDefect
instagram - https://www.instagram.com/bugordefect_life?igsh=MTFlYzZyMncwZWd4eQ==
youtube - https://www.youtube.com/@BugOrDefect
instagram - https://www.instagram.com/bugordefect_life?igsh=MTFlYzZyMncwZWd4eQ==
😁22👍10🔥3
Доброго ранко!!! як ваш настрій? 👀👀👀
Ранкові Історіі QA. коли сам собі зробив ранковий ППЦ*****
Вівторок.
Всі кажуть, що понеділок, важкий день.
Ага, ага.
Я тепер в це не вірю.
Бо от ранок, вівторок, ніщо не віщує бєди. Я собі далі тестую стрімінг, ловлю баги, слухаю лофі… і тут прилітає ідея, а що як трохи нагрузити систему?
Ну, типу, не одна камера, а 10-20…
Ага! Підняти віртуальні камери і хай стримять собі стріми, хай бекенд потіє трохи.
Мислю далі, як це зробити?
Йду до тимліда,
Кажу Слухай, є ідея така…
Він (як завжди позитивний, як мій термометр у липні)
Та легко. Підійми віртуалку десь у vSphere, заімплементуй скриптом кілька камер і буде тобі щастя!
Я такий - Challenge accepted.
Іду в вебшару vSphere, і тут починається та сама технічна реальність, де ти QA, DevOps, і чарівник одночасно.
що роби и куди я ото поліз - ну окай
Підняв віртуалку у vSphere
Взяв Ubuntu Server ISO
Налаштував ресурси (2 CPU, 4 GB RAM, мінімум 10 GB disk)
Включив SSH, бо без нього як без рук.
Поставив віртуальні камери
Встановив v4l2loopback:
Завантажив:
Це створює 5 віртуальних камер /dev/video10-14.
Залив відео на луп
За допомогою ffmpeg:
Кожен ffmpeg крутить своє відео вічно (-stream_loop -1), подаючи його у віртуальну камеру в реальному часі (-re).
Моніторю логіку стріму на бекенді
Через логери, метрики, response time дивлюсь, як воно себе веде.
А далі…
Ви думаєте, я пішов пити каву після такого?
Ха! Мій мозок вирішив, що він заслуговує на морозиво, бо плавитись вже почав конкретно
А ви, друзі, юзали якісь тулзи для створення віртуальних камер чи емуляції стріму?
Може, знаєте крутіші способи?
Діліться в коментах або в особисті може щось є по проще?
І памʼятайте: хороший QА, це не лише про «знайти баг», а й про «а давай нагрузимо це по-доброму »
Буду вдячний за репост группи, + приєднуйтесь до нас)
https://t.me/BugOrDefects
Ранкові Історіі QA. коли сам собі зробив ранковий ППЦ*****
Вівторок.
Всі кажуть, що понеділок, важкий день.
Ага, ага.
Я тепер в це не вірю.
Бо от ранок, вівторок, ніщо не віщує бєди. Я собі далі тестую стрімінг, ловлю баги, слухаю лофі… і тут прилітає ідея, а що як трохи нагрузити систему?
Ну, типу, не одна камера, а 10-20…
Ага! Підняти віртуальні камери і хай стримять собі стріми, хай бекенд потіє трохи.
Мислю далі, як це зробити?
Йду до тимліда,
Кажу Слухай, є ідея така…
Він (як завжди позитивний, як мій термометр у липні)
Та легко. Підійми віртуалку десь у vSphere, заімплементуй скриптом кілька камер і буде тобі щастя!
Я такий - Challenge accepted.
Іду в вебшару vSphere, і тут починається та сама технічна реальність, де ти QA, DevOps, і чарівник одночасно.
що роби и куди я ото поліз - ну окай
Підняв віртуалку у vSphere
Взяв Ubuntu Server ISO
Налаштував ресурси (2 CPU, 4 GB RAM, мінімум 10 GB disk)
Включив SSH, бо без нього як без рук.
Поставив віртуальні камери
Встановив v4l2loopback:
sudo apt install v4l2loopback-dkms
Завантажив:
sudo modprobe v4l2loopback devices=5 video_nr=10,11,12,13,14 card_label="Cam1","Cam2","Cam3","Cam4","Cam5"
Це створює 5 віртуальних камер /dev/video10-14.
Залив відео на луп
За допомогою ffmpeg:
ffmpeg -re -stream_loop -1 -i cam1.mp4 -f v4l2 /dev/video10 &
ffmpeg -re -stream_loop -1 -i cam2.mp4 -f v4l2 /dev/video11 &
ffmpeg -re -stream_loop -1 -i cam3.mp4 -f v4l2 /dev/video12 &
ffmpeg -re -stream_loop -1 -i cam4.mp4 -f v4l2 /dev/video13 &
ffmpeg -re -stream_loop -1 -i cam5.mp4 -f v4l2 /dev/video14 &
Кожен ffmpeg крутить своє відео вічно (-stream_loop -1), подаючи його у віртуальну камеру в реальному часі (-re).
Моніторю логіку стріму на бекенді
Через логери, метрики, response time дивлюсь, як воно себе веде.
А далі…
Ви думаєте, я пішов пити каву після такого?
Ха! Мій мозок вирішив, що він заслуговує на морозиво, бо плавитись вже почав конкретно
А ви, друзі, юзали якісь тулзи для створення віртуальних камер чи емуляції стріму?
Може, знаєте крутіші способи?
Діліться в коментах або в особисті може щось є по проще?
І памʼятайте: хороший QА, це не лише про «знайти баг», а й про «а давай нагрузимо це по-доброму »
Буду вдячний за репост группи, + приєднуйтесь до нас)
https://t.me/BugOrDefects
Telegram
Bug or Defect?
Welcome to Bug or Defect?
youtube - https://www.youtube.com/@BugOrDefect
instagram - https://www.instagram.com/bugordefect_life?igsh=MTFlYzZyMncwZWd4eQ==
youtube - https://www.youtube.com/@BugOrDefect
instagram - https://www.instagram.com/bugordefect_life?igsh=MTFlYzZyMncwZWd4eQ==
🔥15👍5🥴4❤3