Bug or Defect?
2.51K subscribers
237 photos
94 videos
1 file
213 links
Download Telegram
Шпаргалка, що покрилась пилом 😆

Витягуємо з архіву те, що мали б давно памʼятати, але... реальність така, що навіть сеньори інколи лізуть в гугл 👀

Хтось помітив?
1🔥254🌚3
Всім доброго ранку!! 🤗

Ранкові історіі 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
1👍147👀6🥴3🔥2
Завдання для QA: Git-команда дня

Ти працюєш з гілкою 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, щось наламав і хочеш скасувати останні зміни у файлі, але не комміт, а саме локальні зміни в робочій директорії. Яку команду використаєш? ДУЖЕ УВАЖНО!!!
Всім доброго вечора, ну що ось і вихідні наступають)
Всім гарних і сонячних вихідних 🤗🤗🤗

Залишу це вам, Шпаргалка по Git, яку хочеться зберегти

Колись я теж плутався між git pull, git fetch, git reset --hard, і думав, що rebase — це щось, що краще не чіпати руками без амулету та зілля захисту 😅

Тому ось вам міні-шпаргалка — просто, коротко і наочно

Буду вдячний за поширення групи)
🔥298
👋 Доброго ранку, QA-друзі!

Сьогодні без історій — вже 11:02, а перший урок на сьогодні вже проведено (і поки що він же й останній )

Сподіваюсь, у вас гарний настрій, бо день тільки починається — або вже якось йде 😄
У мене за вікном дощ, тому саме час зробити собі кави або чаю
…і заскочити почитати щось корисне для професійної душі.

Навіть у суботу ми трішки качаємо скіли 💪

А нижче — рубрика, яка не дасть розслабитись 👇
12
Bug or Defect?
Завдання для QA:
Тестуєш 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
1🔥282
Завдання дня для QA:

Ти логуєш баг з додатку, який бігає на 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
😁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:
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
🔥15👍5🥴43