Bug or Defect?
2.51K subscribers
237 photos
94 videos
1 file
213 links
Download Telegram
Bug or Defect?
Зроблю вам скоро крутий пост про Fiddler по фільтрам і для чого)
Доброго вечора)
Яж обіцяв зробити вам пост про Fiddler ну так ось він!

Це дуже крутий тул, який часто виручає в дебагінгу, перехопленні трафіку і навіть моках.
Для QA-шника, must-have. Особливо коли треба подивитись, що саме летить в API, а UI мовчить як партизан.

Якщо Charles Proxy це Mac-style тул для перехоплення, то Fiddler, це його батя в світі Windows (але є і для Mac, і для Linux через Everywhere версію).
Без нього дуже складно уявити нормальну роботу з API.

Напишу вам мінімальний гайд по Fiddler від мене і шо я юзаю коли треба.

Обовьязково налаштування SSL
Щоб бачити HTTPS.

Tools > Options > HTTPS
- Ставимо галку на (Decrypt HTTPS traffic)
- Actions > Trust Root Certificate
Готово - бачиш усе, навіть зашифроване.

Фільтри, які реально юзаю
method == "POST"

- тільки POST ну і там можно по кожному методу
responseCode >= 400 && responseCode < 500

- тільки клієнтські помилки
url.contains("/login")

- тільки логін
host.contains("api.yourapp.com")

- конкретний домен
requestBody.contains("token")

- всі запити з токеном
url.matches("/user/\\d+")

- всі юзер-запити з ID
responseBody.contains("\"role\":\"admin\"")

- відповіді де адмін

Все просто. Жодних UI-шних "фільтрувань", тільки логіка.

ну і куди же без Breakpoints
Fiddler дає змогу ставити точки зупинки.

Rules > Automatic Breakpoints > Before Requests / After Responses
Зупиняє запит, редагуй що хочеш (token, userID, method...)
Також можна вручну через FiddlerScript

if (oSession.uriContains("/auth")) {
oSession["x-breakrequest"] = "true";
}


Modify Response (AutoResponder або FiddlerScript)
AutoResponder це твій built-in мок сервер.
Можна замінити будь-яку відповідь без реального бекенда.

AutoResponder > Add Rule

URL: /api/v1/user


Відповідь, локальний файл .json або свій текст
Ну же можно фіддлер скрипт для зміни статусів,
if (oSession.uriContains("/status")) {
oSession.utilDecodeResponse();
oSession.utilReplaceInResponse('"status":"active"', '"status":"banned"');
}


ну і як же не забути про Throttling, яке уповільнення мережі
Через фіддлер скрипт можна імітувати повільний інтернет
oSession["request-trickle-delay"] = "500";
oSession["response-trickle-delay"] = "1000";



Ну і Зберегти сесію
File > Save > All Sessions
Перекинув деву або в Jira, і не пояснюєш (що я бачив).

Якщо коротко то без Fiddler ти просто клікаєш по кнопках.
З ним, контролюєш трафік. І тестуєш не напам’ять, а по факту.

Офіційний сайт
https://www.telerik.com/download/fiddler

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

#fiddler
🔥255👍31🤩1
This media is not supported in your browser
VIEW IN TELEGRAM
Всім доброго ранку!
Неділька стартувала саме час трохи попрацювати після (Типо) відпустки або зануритись у всі ті листи, що зависли в пошті ще з прошлого понеділка 😅

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

Гарного вам дня, друзі!
Кофу в руки і спокійно, без паніки, по задачках)
😁8🤣62🔥1
Завдання дня для QA

Сьогодні трохи глибше в мережу, уявіть що клієнт має знайти потрібний сервіс у мережі (наприклад, SIP або XMPP сервер). Який тип DNS-запису відповідає за зберігання адреси та порту сервісу?
Anonymous Quiz
14%
(A) A(запит)
17%
(B) MX(запит)
57%
(C) SRV(запит)
12%
(D) CHAME(запит)
🔥42👍21💊1
All commands.pdf
480.5 KB
Всім доброго вечора!! як ваші справи? 🫣🫣🫣

Ось вам 1000000+ команд лінукса і не тільки
Якби в мене таке було раніше, та ти шо, життя QA було б набагато легше 😄

Зібрав усе в один PDF, бо інакше довелось би робити 10+ постів.
Команди системні, мережеві, з правами, логами, архівами, коротше, все шо треба.


Юзайте, зберігайте, шерте в команду

Всім продуктивного продовження дня і мінімум Permission denied
❤‍🔥19👍632🔥2🥴1
This media is not supported in your browser
VIEW IN TELEGRAM
Всім доброго вечора 🌙
Ну шо, як у вас день пройшов?

Я от тільки зараз доповз до моменту, коли можу спокійно видихнути, перший день після відпустки 🫠
І класика жанру розгрібай пошту, відповідай на листи, репорти, кастомерів і а шо там з тією фічею як воно працює)?

Реально, під кінець дня вже пальці відвалюються від клави, ніби марафон біг по Jira і chat'у одночасно

У вас теж таке буває? Коли здається, що нічого критичного не сталося але по факту ти пів дня просто ловиш фаєрболами.

Ось На відео це маст хев-стіл, коли ти в тотальній запарі
все під рукою, але як би не крутився все одно знайдуть по колу стануть і будуть засипати ????????????????????

Всім гарного вечора, релаксу вам бажаю 🤗🤗🤗
😁143🤓2
This media is not supported in your browser
VIEW IN TELEGRAM
Друзі, всім привіт ☀️
Сподіваюсь, у вас усе добре і ви в безпеці 🙏

Сьогодні просто хочу побажати вам гарного, спокійного і продуктивного дня.
Почніть ранок з чашечки кофаа (а кому не можна, то з соку апельсинового або чая),
візьміть шматочок чорного шоколаду, вдихніть-видихніть і вперед, розривати беклог і життя 🔥

Вірю в кожного з вас
Ви круті. Ви сильні.

Всіх обняв. Бережіть себе ❤️
4🥰126❤‍🔥4
Всім привіт, як ви? кавуся допомогла?

Обідня історія QA


Коли без LocalStorage не куда для веба.

Сьогодні з ранку ну прям день почався з кави але не з настрою після неї, це ішшью ідеальна класика для QA

Якщо коротко то тестував веб-додаток для відео/аудіо дзвінків, де юзер може вибрати, або свій телефон, або софтфон (внутрішній SIP) куди буде йти стрім аудіо,
Юзер вибрав софтфон очікуєш, що дзвінок піде через нього?
Ага, щас.
Дзвінок стабільно йде на старий номер, якого вже немає в UI.

Ну і консоль кричить
Error: call target mismatch, unexpected endpointId received ну це класична помилка. но не можу далі понять в чому проблема, і на другому env у мене не відтворюється.

Ну пишу деву, показую відео, логи.
Ну і Відповідь стандартна
У мене не відтворюється. У тебе щось з RDP або кешем. Це не бага. Ну да… тільки я цей баг вже тричі відловив.

Ну я як завжди Окей, іду копати глибше.
DevTools → Application → Local Storage.

Що бачу?
Є ключ call.rooms
В ній масив з кількома об'єктами типу і там є явно "type": "softphone", але поручь є ше один запис тільки з другой сессієй ID де там вже "type": "phone", і ось ти мій дорогенький

Виявляється, UI бере просто перший endpoint із localStorage
і дзвонить куди бачить першим, ігноруючи активну сесію.

Це як if (storage.rooms[0].endpoint) і поїхали. і це не відтворюється бо коли є реально 1 запись там все гуд працює і не дочепишься)

Знаєте мені 1 раз сказала дуже умна люди круту річь - якщо баг в QA відтвориться хотя б 1 раз і не де більше, в кастомерів він точно вилізе, і це True

Хотів також вам в комплект порадити пару тулів які я теж юзаю

Local Storage - це зручний інструмент для керування локальним сховищем через панель розширень
https://chromewebstore.google.com/detail/local-storage/nnlekldijoehomfgfciodmolohhfkfpm

Polypane - це реально справжня знахідка для куа якщо ви не знали, тестуєш різні стани юзерів (log in / log out, різні ролі) не треба логінитись щоразу, бачиш одразу як зміна localStorage/cookie впливає на рендер, Можна одночасно тримати кілька версій UI, наприклад, staging vs prod
https://polypane.app/


ну про Recorder у Chrome DevTools я думаю ви всі чули, Це інструмент вбудований у Chrome DevTools, який дозволяє записувати, редагувати й відтворювати дії користувача на сторінці, а також експортувати їх у скрипти для автотестів.

ну і куди ж без швидкого копіпаст localStorage між браузерами / сесіями

// Експорт:
copy(JSON.stringify(localStorage))
// Імпорт:
Object.entries(JSON.parse(prompt('Встав JSON:'))).forEach(([k,v]) => localStorage.setItem(k, v))


ось вам і бага на ровному місці)))
А які ви розширення чи тули юзаєте? поділіться в коментарям мені правда дуже цікаво - бо я як вже казав старе і юзаю може не шось новіше і всі про це знають)

ну і да, QA це коли ти кажешь деву це баг і це треба фіксити, і якщо він каже це фіча, треба як кажуть донести істину)

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

#обідні_історії_QA #localStorage
2🔥14👍531🥴1
This media is not supported in your browser
VIEW IN TELEGRAM
Доброго ранку, народ

Сьогодні без філософії, просто ранок, просто робота.
Той самий день, де нічого нового, але всьо якось треба зробить.
Знаєте цей вайб, коли не хочеш, а вже робиш? Ну от і я вже так з 08:15

Сьогодні кум мені підняв настрій з ранку

Прикладаю відео коли ти GPT знов шось не те, і ти вже давай, давай по новій, ну давай, блін, давай
😂😂😂

І як тут не згадати класичне

Той, хто боїться, що його через пару років замінить ШІ, скоріше за все, просто ще не юзає GPT правильно

Так шо гарного вам дня, стабільного Wi-Fi,
і шоб таски не плодились самі по собі, а бажано, закривались 💪
Обійняв.
2😁10👍7💯3
Привіт друзі) мене вже не одна людина в коментах питала і в лс щось для мобайл!

Пост саме для тих, хто тестить мобайли або просто задовбався кожен раз мучитись зі збірками, API, інсталом і дебагом
Поділюсь 5-ма топовими тулзами, які я сам юзав в роботі

1. Loadly
https://loadly.io/
Це просто магія, якшо ти працюєш з iOS.
Ставити .ipa без TestFlight, акаунтів і болі, закинув файл -> згенерував QR -> відсканував айфоном -> все!
Юзав купу разів, коли треба було швидко накатити збірку комусь або самому протестити щось із минулого. Працює прям стабільно, не підводило.

2. HTTP Toolkit
https://httptoolkit.com/
Це коли дев каже, У мене все працює, а ти бачиш, що респонз пустий відкриваєш цей тул і ловиш весь трафік. можно подивитись API прямо з мобілки, перехопити, змінити, зафейкати респонс, додати сертифікат для SSL
Прям must-have якщо API тестиш не тільки на браузері.

3. Pyto IDE - юзав давно, але це актуалочка
https://apps.apple.com/us/app/pyto-ide/id1436650069
А це для тих моментів, коли на проді все попливло, а тебе немає біля ноута. Тут як DevTools прямо на айфоні, верстка, стилі, консоль
Все як у великому Chrome але в кишені)

4. firebase
https://firebase.google.com/products/app-distribution
Якшо ти працюєш у команді, дуже зручно. Закинув apk/ipa, Тестер або менеджер отримав пуш на телефон видно, хто встановив

5. Screen studio
https://screen.studio/
а ось це вже не тул для тестів, але для записів просто вогонь. Якість відео шикарна/ Видно натискання, є круті анімації
Ну і Можна записати демо, баг, інструкцію для юзера
Особисто я ним записую все девам і менеджерам заходить, бо виглядає як презентація Apple

Всі ці тули перевірені особисто але не всі юзаю зараз але вони актуальні)

Якщо теж щось юзаєте круте, пишіть в коментар, люди реально багато питали) але я з мобайлом дуже рідко стикаюсь

Обняв, банда 💛
7❤‍🔥20🔥1032🙏1
Доброго ранку, банда ☀️☀️☀️
Що я маю вам сказати. Вчора говорив із одним знайомим, крутий спец, шарить добре, та й працює реально як за 10-тьох.
Але каже, Просто вже не можу. Вигорання люте. На роботу не хочеться, на мітингах тільки 'ага' і 'окей'. І навіть звільнитись не можу, бо відчуття, що все тримається на мені.

І тут мені знову згадалась та сама думка, яку я собі не раз повторював і вам нагадаю

Робота має або приносити гроші, або задоволення.
Ідеально обидва. Але хоча б щось із цього.

Можна фігачити як конячка, але якщо,
добре платять - це мотивація.
кайфуєш від того, що робиш -це заряд.

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

Я наприклад дуже кайфую від своїй роботи, так буває тяжкі дні і коли мозок плавиться - але коли ти вирішив на роботі ту чи іншу проблему або розібрався в том функціоналі та ти шо ти як заново родився і гордий за себе)

Як ви це відчуваєте?
Бували моменти, коли ловили себе на думці, Та гори воно все...
Як виходили з цього стану?

Поділіться, тут всі свої. Може, комусь із нашої банди допоможе ваше слово

Всім гарного дня і настрою)
18💔4👍2🥴2🙏1
Bug or Defect?
Завдання дня для QA

Навіщо браузери поважають заголовок X-Content-Type-Options: nosniff?
Доброго вечора, як ваші справи? щось у мене завал просто, не продохнути.
Вирішив вам зробити розбір цього пула вже як звільнився від праці)

ну коротенько чому це не (A) але він в топі по відповідям
Caме це робить заголовок SameSite, або політика CORS, а не nosniff.

чому ні (С)
Тут принцепі не про те, nosniff не має ніякого відношення до швидкості. Це про безпеку, а не про перформанс.

Чому і не (D)
А тут навпаки. nosniff підсилює політику Same-Origin. Він забороняє виконання файлів, якщо вони не мають правильний тип.

ну і правильна відповідь чому саме (B)
Друзі, дивіться яка штука.
Є той самий заголовок X-Content-Type-Options: nosniff і він звучить складно, але насправді суть проста, тобто це заборона браузеру розумничати.

Бо браузери іноді думають, що вони знають краще, ніж сервер. Ти умовно кажеш ось тобі CSS, а він каже Ммм це виглядає як JavaScript, давай я його виконаю.

І ось тут саме тоді в гру вступає nosniff, він каже не вигадуй. Виконуй лише той контент, MIME-тип якого чітко співпадає з очікуваним і все.

Це важливо для безпеки, бо інакше можна завантажити скрипт з .css розширенням, і браузер його виконає. А це вже XSS і інші пригоди.

Як я це запам’ятав та дуже просто
nosniff це як QA, який каже не треба здогадуватись, працюємо тільки по документації!

Ось така простенька, але важлива деталька, яку краще памʼятати 😉

сподіваюсь пул вийшов цікавий і комусь корисний)

Всім гарного вечора, обняв 🤗🤗🤗
2❤‍🔥9🔥5👍31
This media is not supported in your browser
VIEW IN TELEGRAM
Друзі, всім привіт! Як ваші справи?

В Одесі сьогодні було дуже гучно, але сподіваюсь, ви всі в безпеці і цілі 💛💙

А я вже з 6 ранку, вже дві кафусі бахнув, і поліз в роботу, бо кінцівка спринта така, шо аж нікуди, питання, фікси, блокери, все й одразу 🤯

Бажаю вам продуктивного, але спокійного дня. Не забувайте відпочивати)

А відео для підняття настрою

Ну цеж прямо класика коли до тебе такі приходять

Все, релізнемось сьогодні, поїхали!
А ти, Який реліз? Я навіть ще не дивився, шо там!

Всіх обняв 🤗🤗🤗
212🤣8🥴1
Друзі привіт, сорі сьогодні день не як пʼятниця, завал)

Но без рубрики залишить вас не можу) Завдання дня для QA Для чого найчастіше використовують Telnet у тестуванні або налагодженні?
Anonymous Quiz
10%
(A) Щоб шифрувати дані перед передачею
6%
(B) Щоб перевірити наявність XSS у фронтенді
72%
(C) Щоб перевірити, чи відкритий порт на віддаленому сервері
11%
(D) Щоб моніторити CPU-споживання сервера в реальному часі
3👍3
This media is not supported in your browser
VIEW IN TELEGRAM
🌞 Ранковий QA-постик 🌞

Друзі всім привіт, як ваші справи?
Субота, вихідні, час трошки перевести подих, ну, це якщо ти не я, бо сьогодні ще 3 уроки з учнями, але я радий, це для мене в кайф

На відео це буквально я вчора, один фікс, і за ним 1005000000 регресій, які ми ще будемо розгрібати понеділок-п’ятниця 😅

А ще, помітив от яку штуку. Уже не перший раз проводжу уроки по Postman, і кожен раз дивуюсь env, pre-request, post-respons і test scripts майже ніхто не юзає.

А це ж просто мастхев для нормального API тестування. Не обов’язково одразу все автоматизувати, але базовий сетап, це вже 50% профі-роботи.

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

Якщо цікаво, поставте 🔥)
Всіх обняв, гарного дня і настрою, і кава щоб була смачна.

#ранковіісторіїQA
7🔥453😁2
Bug or Defect?
🌞 Ранковий QA-постик 🌞 Друзі всім привіт, як ваші справи? Субота, вихідні, час трошки перевести подих, ну, це якщо ти не я, бо сьогодні ще 3 уроки з учнями, але я радий, це для мене в кайф На відео це буквально я вчора, один фікс, і за ним 1005000000 регресій…
Привіт банда)

Як і обіцяв, сьогодні трошки про ту тему, яка чомусь часто пролітає мимо, скрипти в Postman Pre-request і Tests.
Але як казав один мудрий QA, якщо у тебе ріквести йдуть у флоу, не використовувати параметризацію це просто злочин. І я повністю згоден.

Я знаю, ніхто не любить скрипти в Postman'і, бо все ж працює.
Але давайте чесно, ти або тикнеш 50000000 разів руками, або один раз напишеш нормально, і потім живеш.

Так от що це таке страшне ці Pre-request + Test scripts, це прям твій внутрішній автотестер у Postman.
Вони юзаються для того, щоб передати id, token, username між запитами, згенерити унікальні значення типу емейлу, логіна, дати, одразу провалідити респонс і зберегти щось в env
ну і що головне, працювати з Postman як з легенькою автоматизацією, не тільки ручками тикати.

так ну что я написав вам стандартні і те шо юзаю за часту і показую на уроках для своїх учнів)

1. Pre-request script і готуємо дані до запиту
Унікальний логін
const rnd = Math.floor(Math.random() * 10000);
pm.environment.set("test_login", test_user_${rnd});


це щоб створити унікальний логін користувача на кожен запуск, і не ловити помилку (користувач вже існує.
Зручно при тесті реєстрації, створення акаунтів, унікальних назв.


2. Валідний email
const email = user_${Date.now()}@example.com;
pm.environment.set("test_email", email);


а ценерує email, який точно буде унікальний, з міткою часу.
Корисно при реєстрації, коли система не дозволяє дублі.


3. Дата створення та завершення
const now = new Date();
const plus10 = new Date(now);
plus10.setDate(now.getDate() + 10);


const nowISO = new Date(now.getTime() - now.getTimezoneOffset() * 60000).toISOString();
const plus10ISO = new Date(plus10.getTime() - plus10.getTimezoneOffset() * 60000).toISOString();

pm.environment.set("created_at", nowISO);
pm.environment.set("expired_at", plus10ISO);


це тут ставить дату зараз + через 10 днів у правильному ISO-форматі (з урахуванням таймзони).
Супер для створення сесій, подій, об’єктів з датами дії.

Це вже ми про Test Script

4. Перевірка статусу + збереження ID та токена
pm.test("Status 201 — Created", function () {
pm.response.to.have.status(201);
});

const res = pm.response.json();
pm.environment.set("user_id", res.data.id);
pm.environment.set("access_token", res.data.token);


Перевіряємо, що об’єкт створено (201) чи можемо на любий статус код і зберігаємо id + token, щоб далі юзати їх в наступних запитах без копіпасту, тобто налаштував собі env всі данні в зміні автоматично записалися і в наступному запиті полетіли)
Це ключова зв’язка для побудови флоу із декількох запитів.

5. Валідація структури відповіді
pm.test("Поле name — рядок", function () {
const data = pm.response.json().data;
pm.expect(data.name).to.be.a("string");
});


а це щоб одразу перевірити, чи в полі name реально приходить рядок, а не null, object, або взагалі undefined.
Добре ловить непомітні проблеми типу бекенд вернув щось не те, але ти не помітив.

Мій поінт такий, якщо в тебе є більше ніж 1 запит і між ними летять якісь змінні - скрипти, твої друзі.
Це не автоматизація в класичному сенсі, але це QA-професіоналізм, якому не треба соромитись.

А хто ще не пробував, спробуйте, це реально спрощує і покращує вашу щоденну роботу.

Сподіваюсь коротко вийшло але зрозуміло

якщо вам є шо додати то пишіть які ви юзаєте скрипти і навіщо, буде цікаво не тільки мені)



Якщо пост зайшов і був корисний, ставь серденько)

Зберу фідбек і знайду час напишу для вас окремий ше пост де розповім про

setNextRequest як будувати динамічні флоу ну і pm.iterationData щоб робити data-driven тести


Гарного вам дня і вечора) 🤗🤗🤗
447❤‍🔥5👍3
This media is not supported in your browser
VIEW IN TELEGRAM
Всім доброго ранку і гарного старту тижня!
Понеділок день, коли кава закінчується швидше, ніж таски)

І знаєте, буває такий момент, коли щось не працює. І ти такий ходиш, думаєш:
«Ну точно хтось натупив. Хто це зробив? Хто там міг поламати?
А потім копаєш, і та-дам
це ж Ти сам і зробив ту бяку ще у п’ятницю 🫠

От на відео, прям я в такі моменти
(коли ловлю сам себе за хвіст у багрепорті)

Друзі, бажаю вам сьогодні не ловити самі себе, пити теплу каву і не забути те, що зробили в п’ятницю 😅
А якщо забули, нічого, головне чесно зізнатися самому собі й порішати!

Обняв, гарного понеділка!
#qaбудні #ранковіісторіїQA
1😁165👍2🔥2🥴1
Завдання дня для QA

Питання: Під час тестування API на локальному сервері ви отримали помилку ERR_CONNECTION_TIMED_OUT. Сервер працює, URL правильний. Яка з причин найбільш ймовірна?
Anonymous Quiz
7%
(A) Некоректний формат JSON у тілі запиту
18%
(B) Помилка в логіці бекенду (500 помилка)
64%
(C) Обмеження фаєрволу або мережевий доступ заблокований
11%
(D) Невірний Content-Type заголовок
🔥9👏2