Bug or Defect?
2.51K subscribers
237 photos
94 videos
1 file
213 links
Download Telegram
Wireshark для QA — мінімум зусиль, максимум користі

Після останнього кейса з «сервер мовчить», обіцяв накидати фільтри, які реально юзаю, коли треба перевірити трафік і не згоріти в потоках SYN’ів і ACK’ів.

Ось топчик для QA:



🔹
Перевірити лише POST-запити:
http.request.method == "POST"


🔹 Побачити весь HTTPS-трафік (коли шифрування, але хоч бачити сесії):
tls


🔹 Показати тільки трафік між твоїм клієнтом і певною IP-адресою:
ip.addr == 192.168.1.100


🔹 Подивитися, чи є взагалі TCP-зʼєднання:
tcp.flags.syn == 1 && tcp.flags.ack == 0


Це покаже всі SYN-запити (початок встановлення TCP-зʼєднання) — корисно, коли підозрюєш, що сервер не приймає коннект.



🧠 Ідея яка: тобі як QA не треба лізти в payload (особливо якщо він зашифрований). Але можна побачити —
чи взагалі пішов запит, чи сервер щось відповів, чи зʼєднання встановилось.

І от тоді ти не просто кажеш «не працює», а вже приходиш на стендап з картами на руках.
3🆒1
👋 Всім привіт у BugOrDefects!

Радий бачити вас тут — сподіваюсь, вам цікаво читати, так само як мені цікаво писати.
Цей канал я створив не просто для зберігання інфи, а щоб ми з вами мали простір для росту, обміну досвідом і трошки інсайтів QA.

А тепер — коротка історія з життя. Технічна, але життєва.

Коли баг жив не в коді, а в... CDN
Одного разу ми отримали репорт: “Кнопка не працює”.
Формально — все ОК. UI завантажується, запити йдуть, відповіді приходять.
Тільки в одних юзерів все працює, а в інших — ні.

Почав копати:

в DevTools — 200 на все

в логах сервера — теж чисто

все, що можна повторити локально — повторюється без багу

І ось де магія:
після перевірки через VPN виявилося, що з певних регіонів CDN (Content Delivery Network) віддає стару версію JS-файлів, які вже не сумісні з оновленим бекендом.

Причина — кешування на стороні CDN не було інвалідовано після деплою.

Висновок: навіть якщо код без багів — інфраструктура теж частина “системи”, і вона може ламати UX.

Такі дрібниці формують великий досвід.
QA — це не тільки “натиснути кнопку”, це вміння мислити ширше, бачити зв'язки і не зупинятись, поки не зрозумієш “чому насправді”.

Дякую, що ви тут! Далі — тільки цікавіше 👀
8🆒1
Всім привіт і вітаю на каналі
Сьогоднішня історія — з серії "Усе було добре... поки ні"

Прийшов зранку на роботу. Перевіряю Jira. І тут — повідомлення, від якого одразу вирівнюється постава 😅

Багу, яку раніше вже ловили і фіксили, знову находять на продакшені.
Думаю: ну як так?
А виявилось усе просто й боляче одночасно —
бага була зафіксена
але таргет-версія в Jira стояла не релізна, а якась other-branch

В результаті — фікс пішов повз реліз, QA поставила невірний таргет і все тихенько поїхало не туди.

Добре, що встиг вчасно помітити, переніс завдання в правильну версію, підтягнули в реліз — і все ок. Навіть спасибі прилетіло 😊

Мораль проста:
🛡 QA — це не тільки тести, а ще й контроль процесу.
Бо іноді один чек у Jira може вирішити долю продакшну.
5🆒1
🧩 5 Chrome-розширень, без яких моє тестування вже не те
або «що в моєму QA-арсеналі завжди включено»

🔍 Wappalyzer
Дозволяє миттєво побачити, на чому побуданий сайт — фреймворки, CMS, вебсервер, аналітика, CDN, шрифти.
Часто допомагає ще до початку тестів зрозуміти технології проєкту, або знайти щось "неочікуване".

🍪 EditThisCookie
Редактор cookies. Міняю токени, видаляю зайве, підставляю роль іншого користувача — кайф.
Корисний не тільки для авторизації, а й для перевірки безпеки (наприклад, чи правильно працює expiry/session, чи не можна підкинути іншу сесію).

📡 Postman Interceptor
Пряме підключення браузера до Postman. Перехопив сесію — і можеш тестити API як залогінений юзер.
Сильно економить час, коли треба повторити флоу в UI та одразу поганяти бек.

🧾 JSON Formatter
Просто красиво форматує JSON. Все.
Коли response важкий і багато вкладень — без цього можна не побачити різницю між null, undefined і typo.

⚛️ React Developer Tools
Для тих, хто тестує React. Можна залізти в компонент, подивитись state, props, чи щось оновлюється і що ні.
Допомагає зрозуміти, чому кнопка неактивна або форма не сабмітиться — без танців з дебагом.

🧠 Ці інструменти — як продовження моїх рук.
Іноді саме завдяки ним баг знаходиться не за години, а за хвилини.

📌 Якщо зайде — зберу ще добірку з тулзами для API, mobile або accessibility тестування.

📲 Буду вдячний за репост Групи:
https://t.me/BugOrDefects
👍63❤‍🔥3🆒1
☕️ Ранкові історії QA #1: “Тест-кейс на інтуїцію”

Тікет:
📝 "Додати обмеження на кількість символів"

І все. Без макетів.
Без уточнень.
Без прикладів.

Ти такий:
"Ну, стандарт же — 255. Зроблю, перевірю, полетів далі."

А потім...

🚨 На проді обрубало все після 32 символів.
Клієнт в паніці, фідбек летить градом, баг репорт — прямо в серце.

💡 Мораль історії:
Ніколи не покладайся на “інтуїцію”.
Те, що здається очевидним — зазвичай, ні для кого не очевидне.
Питай. Уточнюй. Фіксуй. І ще раз уточнюй. 😄

📲 Буду вдячний за репост Групи.
https://t.me/BugOrDefects
6🆒1
Обідній скролінг не минув дарма: натрапив на мега добірку по security — ділюсь!

Хочете розпочати проводити тестування безпеки? Ось гайд

- OWASP Mobile Security Testing Guide – посібник від OWASP з тестування мобільних застосунків.

- OWASP Web Security Testing Guide – посібник від OWASP з тестування веб-застосунків.

- HowToHunt – туторіал і рекомендації щодо пошуку вразливостей.

- Pentest Book – корисна база знань із пентесту, сценаріїв проникнення та багато іншого.

- HackTricks – база знань CTF-гравця, де він ділиться хакерськими прийомами, техніками та всім, що дізнався на CTF, а також останніми дослідженнями та новинами.

- NIST SP 800-115 – керівництво від NIST із методологій тестування безпеки та проведення пентестів.

- Red Team Field Manual (RTFM) – кишенькова книга з корисними командами та техніками для Red Team і пентестерів.

- MITRE ATT&CK – база даних тактик, технік і процедур (TTPs), які використовуються в реальних атаках.
🔥5👍2🆒1
🕵️ QA-історія: “Таймаут — це не завжди про порт”

Недавно мав кейс, коли один сервер (назвемо його Сервер А) стукався до іншого (Сервер B) — і на кожну спробу з’єднання ми отримували таймаут.

Ну що ж, класика. Беру термінал, перевіряю.

Ну, думаю:
“Зараз по-швидкому telnet, curl, nc, і все злетить”.
Але щось пішло не так. 🙃

📍 Перші кроки перевірки:
🔸 Перевіряю з’єднання з A до B:
telnet server-b 8080

— конект є.

🔸 Далі:
nc -vz server-b 8080

— з’єднання успішне.

🔸 curl:
curl -v http://server-b:8080/ping

— зависає. Потім: Connection timed out.

❗️Це вже цікаво. Значить — дістатися можемо, але відповіді немає.

📍 Діагностика:

Перевіряю з боку B:
sudo netstat -tulnp | grep 8080

— сервіс слухає порт.

Перевіряю журнал логів на B — видно, що запити доходять і відповіді відправляються.

На B пускаю tcpdump:
sudo tcpdump -i eth0 port 8080

— видно пакети на вхід і на вихід.

📍 А тепер магія Wireshark:
На Сервері A запускаю tcpdump:

sudo tcpdump -i eth0 host server-b and port 8080 -w trace.pcap

— відкриваю .pcap у Wireshark, і там видно тільки SYN → SYN-ACK → ACK → [DATA] → …
І все. Далі — нуль. Відповідь не доходить.

📍 Розгадка:

Після довгих пошуків і залучення інфри, знайшов причину:
🔥 фаєрвол на Сервері A блочив вхідні відповіді, бо вони приходили з іншого регіону (інший діапазон IP).

👉 Тобто:
Сервер A міг ініціювати з’єднання (вихідні пакети дозволені)

Але коли Сервер B відповідав — фаєрвол A це блочив (вхідні пакети з цього регіону були заборонені)

💡 І тому — таймаут.

📍 Команди, що реально допомогли:

🔹 Перевірити конект:
nc -vz server-b 8080
telnet server-b 8080


🔹 Перевірити маршрут:
traceroute server-b

🔹 Подивитись відкриті порти:
sudo netstat -tulnp


🔹 Зняти трафік:
sudo tcpdump -i eth0 host server-b -w trace.pcap


🔹 Аналіз трафіку у Wireshark

📍 Мораль QA-історії: Іноді конект не гарантує, що все працює.
🧠 Не зупиняйся на “telnet працює” — йди глибше.

Бо фаєрвол може сказати:
🔒 “Виходити можна. А от повертатись — ні.”

📲 Буду вдячний за репост Групи.
https://t.me/BugOrDefects
👍61🆒1
Ранкові історії QA #2: “П’ятничний реліз”
PM:
— Та нічого складного, дрібне оновлення. Зробимо сьогодні.
Dev:
— Там одна стрічка коду, пофіксили.
А ти запускаєш smoke — і бачиш, як “дрібне оновлення” знесло пів застосунку.
І ти розумієш:
в QA не буває “дрібного оновлення”, особливо в п’ятницю.

📲 Буду вдячний за репост Групи.
https://t.me/BugOrDefects
😁8😱2🥴2💔1🆒1
🎯 "Як набратись досвіду, якщо роботи в QA ще нема?"
Це питання мені за цей тиждень написали в особисті кілька людей. Прямо:

"Я вчуся на курсах, практикуюсь, але як почати?"
"Де брати реальні таски, якщо ще не працевлаштований?"

І я такий:
Окей, настав час розповісти.

📍 uTest і TestIO — дві платформи, з яких я сам починав.
Причому я ще був на другому місяці курсів, а вже фрілансив і мав "Практичний" досвід.

🔹 На TestIO я тестував мобільні апки, вебсайти, фічі для логінів, баги ловив — і реально заробляв.
Перші виплати — чистий кайф. Плюс англійська в дії, UI — як на долоні, і вчишся писати багрепорти, які не соромно в портфоліо.

🔹 На uTest теж круто: там багато exploratory тестування, юзерські сценарії, де треба думати як end-user, а не просто тицяти.

💬 Ці платформи — це не просто “погратись”. Це:
✔️ Практика в реальних проектах
✔️ Можливість бачити, як пишуть баги інші
✔️ Робота з інтернаціональною QA-спільнотою
✔️ І головне — досвід, який можна писати в CV вже зараз

💡 Мораль:
Якщо роботи поки нема — досвід все одно можна здобути.
І повір: навіть кілька місяців на TestIO/uTest дають більше, ніж чекати першу вакансію на дивані.

📲 Буду вдячний за репост Групи.
https://t.me/BugOrDefects
7
🛠 5 прикольних фішок Postman, які реально спрощують життя QA-шника

Я часто чую: «Postman — це просто для ручного ганяння API». Але насправді він набагато глибший. Якщо ти мануальний QA і працюєш з API, ось 5 речей у Postman, які я використовую майже щодня і які варто знати:

1️⃣ Змінні середовища (Environment variables)
Коли ти тестиш на кількох енвах — dev, staging, prod — забивати руками URL або токени кожного разу = біль.
В Postman можна створити середовище і підставляти змінні типу
{{baseUrl}}

або
 {{authToken}}.

Ідеально, коли треба швидко перемкнутись з одного енву на інший — 2 кліки і готово.

2️⃣ Pre-request scripts — автоматизація до того, як піде запит
Наприклад, треба згенерити унікальний email або зберегти токен перед наступним запитом?
Postman дозволяє запускати JS-скрипти до запиту.
Я, наприклад, часто юзаю:
pm.environment.set("email", 

user_${Date.now()}@test.com);

Потім просто вставляю
{{email}} 

у body.

3️⃣ Collection Runner — для масових прогонів
Не хочеш клікати вручну по 10+ запитах? Запускай колекцію одразу.
Плюс — можна підвантажити CSV/JSON з різними параметрами й перевірити, як API поводиться з різними даними.

4️⃣ Автотест у вкладці Tests (так, Postman — це ще й маленький тест-фреймворк)
Postman дозволяє писати невеликі перевірки прямо у кожному запиті:
pm.test("Status code is 200", () => {
pm.response.to.have.status(200);
});

Я так часто перевіряю не лише статус, а й тіло відповіді або специфічні поля. Це не повна автоматизація, але вже щось.

5️⃣ Newman — якщо треба запускати все з терміналу або CI/CD
Newman — це CLI-версія Postman. Завантажив колекцію, і можеш запускати її хоч у Jenkins, хоч з терміналу.
Коли хочеться напівавтоматизувати smoke-тест — ідеально.

Це все прості штуки, але якщо почати ними користуватись — ручне тестування API стає на рівень вище.

📲 Буду вдячний за репост Групи.
https://t.me/BugOrDefects
🔥5
П’ятниця. Вечір
Всі нормальні люди — на барі, на дивані або вже в сні.
А ти — QA.

Лягаєш спати після важкого тижня, і тут…
БАМ! — в голову прилітає думка:
“А якщо той тікет не репродюситься, бо дані летять не туди? Або тому що time
zone не співпав?..”

Вставати не можна. Але спокою вже немає.
Бо мозок — це ще той Jenkins:
пуш — трігер — білд думок — без таймауту.

Вам таке знайоме? Відчути той дзен на п’ятничній ночі і в той же час — тиск думок про баги?

Всім гарного вечора і
вихідних
8💔2
Ранкові історії QA #3: "Субота для QA"

Плани:
☕️ Спокійно випити каву.
🛋 Полежати без думок про баги.
📖 Можливо, почитати щось для душі.

Реальність:
Замовляєш латте через додаток.
Отримуєш американо.
Починаєш тестувати апку доставки:

- Чи правильна передача параметрів?
- Чи не переплутані поля у базі?
- Чи не відвалився десь маппінг кавових типів?..

QA mode: активовано автоматично.
Навіть у суботу. Навіть за кавою.

Мораль:
Ти можеш вийти у вихідний, але вихідний з QA — ні.

📲 Буду вдячний за репост Групи.
https://t.me/BugOrDefects
🤣5🥴3🍓1
Bug or Defect? pinned «Рубрика "Завдання дня" для QA

Що важливо перевіряти при тестуванні API?
»
Рубрика "Завдання дня" для QA

Який HTTP-статус код зазвичай повертається при успішному створенні ресурсу через API?
Anonymous Quiz
24%
A) 200 OK
71%
B) 201 Created
0%
C) 204 No Content
5%
D) 202 Accepted
Рубрика "Завдання дня" для QA

Питання: Що обов'язково потрібно перевірити при натисканні кнопки "Додати", яка підключена до REST API?
Anonymous Quiz
14%
A) Чи відправився правильний REST-запит (Add) і отримано коректну відповідь
9%
B) Чи з'явився запис у базі даних після натискання
77%
C) І перше, і друге
3
Всім привіт - для вас 15 потужних безкоштовних інструментів для QA 🚀
🔹 Playwright (США)
Швидке кросбраузерне E2E-тестування. Підтримує Chrome, Firefox, Safari. Ідеально для UI-тестів і інтеграції у CI/CD пайплайни.

🔹 Selenium (США)
Легенда автоматизації. Підтримка багатьох мов (Java, Python, C#, JS), тестування у реальних браузерах та хмарних сервісах.

🔹 Cypress (США)
Інтуїтивний JavaScript-фреймворк для тестування вебдодатків. Пише тести прямо у браузері, швидкий рантайм і стабільність.

🔹 Katalon Studio (Community Edition) (США)
Готовий набір для автоматизації веб, API та мобільного тестування. Мінімум налаштувань — максимум можливостей.

🔹 TestProject (Ізраїль)
Платформа для запису і запуску автоматичних тестів без коду. Інтеграція із CI/CD, спільнота плагінів, хмарне збереження.

🔹 Appium (США)
Кросплатформне тестування мобільних додатків для iOS та Android. Підтримує нативні, гібридні та вебдодатки.

🔹 JMeter (США)
Класика для навантажувального тестування. Створення сценаріїв тестування вебсайтів, API, баз даних та серверів.

🔹 Rest Assured (Швеція)
Фреймворк на Java для легкого тестування REST API. Простий синтаксис для складних сценаріїв перевірки запитів і відповідей.

🔹 Postman CLI & Collection Runner (США)
Потужний інструмент для тестування API. Дозволяє запускати тести через термінал, інтегрувати в CI/CD та автоматизувати регресію.

🔹 Robot Framework (Фінляндія)
Фреймворк із ключовими словами для автоматизації тестування. Підходить для Acceptance Testing, API, UI, DevOps задач.

🔹 Gauge (США)
Тести у форматі Markdown. Легке налаштування, підтримка мультиплатформності та чудова читабельність тест-кейсів.

🔹 Taiko (США)
Сучасний інструмент для стабільного браузерного тестування. Мінімум флейків, прості API для інтеграції з CI/CD.

🔹 Pact (Австралія)
Контрактне тестування для мікросервісів і API. Перевірка сумісності сервісів до релізу — мінімізація багів у продакшені.

🔹 TestNG (США)
Потужний тестовий фреймворк для Java. Підтримує параметризацію тестів, групування, паралельне виконання та гнучкі репорти.

🔹 ZAP (OWASP) (США)
Інструмент для сканування вразливостей у вебдодатках. Автоматичні перевірки безпеки, інтеграція у пайплайни DevSecOps.

Всі інструменти open-source і доступні для вільного використання!

📲 Буду вдячний за репост Групи.
https://t.me/BugOrDefects
👍7😎21
Ранкові історії QA #4: “Недільний релакс”

Прокидаєшся в неділю з думкою:
"Сьогодні тільки Family, кава і абсолютний чіл."
Але доля така:
Ти не просто QA Team Lead. Ти ще й ментор.
І вчора ввечері тобі прилетіло 10 000 домашок на перевірку.
Кава в руку, ноутбук на коліна, режим "Let's goooo!" увімкнено.
Чіл відкладається. Починається QA-марафон.

Мораль:
У нас немає вихідних. Є просто інша форма баг-трекінгу. 😄

📲 Буду вдячний за репост Групи.
https://t.me/BugOrDefects
🤓82
Рубрика "Завдання дня" для QA

Питання: Який технічний прийом тест-дизайну базується на перевірці значень на межах допустимих діапазонів?
Anonymous Quiz
0%
A) Аналіз причинно-наслідкових зв'язків
92%
B) Граничні значення (Boundary Value Analysis)
8%
C) Еквівалентне розбиття (Equivalence Partitioning)
0%
D) Попарне тестування (Pairwise Testing)
7
Рубрика "Завдання дня" для QA

Питання: Користувач додає товар у кошик через форму. Дані у базу записуються правильно, але при повторному відкритті кошика — він порожній. Що варто зробити в першу чергу?
Anonymous Quiz
4%
A) Спробувати додати товар ще раз
9%
B) Оновити сторінку
22%
C) Перевірити, чи вірно записався товар у потрібну таблицю в БД
64%
D) Перевірити GET-запит, який отримує дані кошика, і впевнитися, що відповідь коректна
6🤔3
🛠 Вечірня історія з технічним присмаком: Вебсокети і магія ping/pong

Короче, сьогодні сидів, перевіряв домашки і мене різко вилогінює з системи. Я такий: "Опа, що це було?". Тільки ж сьогодні логінився, токен мав би жити довше, тим більше я активно клікав по LMS.

И тут я згадав для вас реальну історію, якою хотів би Поділитися)

Тестували ми тоді новий функціонал авторизації.
Я зайшов тестовим юзером, роблю собі завдання, все норм. Відволікся на іншу вкладку, через кілька хвилин повертаюсь — юзера викинуло в логаут. Думаю: "Може я сам випадково натиснув щось?.."

Працюємо далі. Знову логінюся, клікаю туди-сюди — повертаюсь на вкладку... і знову вилогін. Тут вже явно щось не так подумав я.

Почав розбиратися. Поліз у логи. Бачу чіткий Logout Event від сервера. Тобто мене не фронт розлогінює — сервер сам присилає команду на вигнання, цікаво 👀

Тоді я поліз у логи сервера — шукав всі події по моєму sessionID. Там явно видно:
Session expired due to inactivity.
Sent logout event to client.
Але сесія ж була активна... ну, або мала бути. 🤔

Відкрив devtools → вкладку Network → фільтр WebSocket → і почав слідкувати, що відбувається.

Після копання стало ясно:
Фронт мав періодично слати ping серверу через WebSocket, щоби підтверджувати "я тут". А насправді клієнт мовчав, і через 90 секунд сервер вирішував: "Та його вже нема" — і автоматично сесію закривав.


Мораль історії:
🧠Іноді причина проблеми глибше, ніж здається на перший погляд. Не вистачає просто подивитись на куки чи токени — треба копати до рівня WebSocket протоколу і реально ловити трафік! Та Дивитися як поводить себе транспортний рівень — особливо, коли працюєш з WebSocket'ами.

я даже знайшов всій старий скрипт по Python який писав коли ще було цікаво погратися з WebSocket та набити руку по коду - я його чутка підправив і залишу вам, може кому буде цікаво подивитися


import websocket
import threading
import time


WS_URL = "wss://echo.websocket.org" # заміни на свій WebSocket URL
PING_INTERVAL = 30


def on_open(ws):
print("[OPEN] Connection established")

def send_ping():
while True:
print("[PING] Sending ping to server...")
try:
ws.send(
"ping"
)
except Exception as e:
print("[ERROR] Error while sending ping:", e)
break
time.sleep(PING_INTERVAL)


threading.Thread(target=send_ping).start()


def on_message(ws, message):
print(f"[MESSAGE] Message received: {message}")


def on_pong(ws, message):
print(f"[PONG] Pong response from server: {message}")


def on_error(ws, error):
print(f"[ERROR] Connection error: {error}")


def on_close(ws, close_status_code, close_msg):
print(f"[CLOSE] Connection closed. Code: {close_status_code}, Message: {close_msg}")



ws = websocket.WebSocketApp(
WS_URL,
on_open=on_open,
on_message=on_message,
on_error=on_error,
on_close=on_close,
on_pong=on_pong,
)


print("[INFO] Starting WebSocket client...")
ws.run_forever(ping_interval=PING_INTERVAL, ping_timeout=10)


🛠 Чому цей скрипт бійсно корисний)
Працює на будь-якому WebSocket сервері (wss і ws підтримка)
Має окремий обробник pong відповідей
Показує реальні помилки, якщо сервер не відповідає
Дає змогу швидко діагностувати проблеми з heartbeat (пінг-понг механізмом

📲 Буду вдячний за репост Групи.
https://t.me/BugOrDefects
5👍1😎1