Ну що, обіцяний розбір хто винен, коли після логіна ви опиняєтесь на дашборді, а там дані ніби з минулого життя.
І так що я маю вам сказать!
(A) Компонент кешує старий state і чому одна з правильних відповідей
Це прямо топова причина, фронт після логіна не перерендерив потрібний компонент або взяв дані з попереднього useState/useEffect.
Таке буває, якщо логіка не підв’язана на userId чи authState, а просто працює як було.
(B) Куки не оновились після логіна це майже відпадає.
Якби куки не оновились, API скоріш за все повернув би 401 або дані старого юзера, А ми ж бачимо, що API дає правильну відповідь, просто UI не встигає або не знає.
(C) Браузер тримає старий localStorage тут можливо, але залежить від реалізації. бо якщо фронт бере дані не з API, а з localStorage (бо так хтось оптимізував) то після логіна може не бути оновлення.
Тоді в дашборді буде старе userInfo, поки не перезавантажиш сторінку.
(D) Race condition між запитами. це серйозний кандидат у винуватці.
Уявіть ви логінитесь, UI одразу відправляє запит на дані юзера, але токен або куки ще не оновились.
І бах дашборд приходить з даними попереднього юзера або взагалі кешованим.
(E) У бекенда затримка в записі даних, Рідко, але трапляється.
Якщо бек ще дописує сесію, або профіль юзера не одразу оновлюється в БД тоді дані можуть повертатись із затримкою.
Це зазвичай вирішується ретраєм або затримкою перед фетчем.
Якщо ловили таке у проєктах діліться як відловлювали.
Note: Про зустріч) це не інфо циганство це просто корисна зустріч щоб круто провести час, поспілкуватися обсудити якісь круті насушні питання)
І так що я маю вам сказать!
(A) Компонент кешує старий state і чому одна з правильних відповідей
Це прямо топова причина, фронт після логіна не перерендерив потрібний компонент або взяв дані з попереднього useState/useEffect.
Таке буває, якщо логіка не підв’язана на userId чи authState, а просто працює як було.
(B) Куки не оновились після логіна це майже відпадає.
Якби куки не оновились, API скоріш за все повернув би 401 або дані старого юзера, А ми ж бачимо, що API дає правильну відповідь, просто UI не встигає або не знає.
(C) Браузер тримає старий localStorage тут можливо, але залежить від реалізації. бо якщо фронт бере дані не з API, а з localStorage (бо так хтось оптимізував) то після логіна може не бути оновлення.
Тоді в дашборді буде старе userInfo, поки не перезавантажиш сторінку.
(D) Race condition між запитами. це серйозний кандидат у винуватці.
Уявіть ви логінитесь, UI одразу відправляє запит на дані юзера, але токен або куки ще не оновились.
І бах дашборд приходить з даними попереднього юзера або взагалі кешованим.
(E) У бекенда затримка в записі даних, Рідко, але трапляється.
Якщо бек ще дописує сесію, або профіль юзера не одразу оновлюється в БД тоді дані можуть повертатись із затримкою.
Це зазвичай вирішується ретраєм або затримкою перед фетчем.
Якщо ловили таке у проєктах діліться як відловлювали.
Note: Про зустріч) це не інфо циганство це просто корисна зустріч щоб круто провести час, поспілкуватися обсудити якісь круті насушні питання)
3❤11🔥3👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Банда привіт!
Сьогодні п’ятниця, той день, коли хочеться все встигнути, все доробити, і вже о 17:00 сидіти нога на ногу з кавусею в руках
Але ж ми знаємо, як воно буває.
18:00 і твій тімлід такий: А давайте ще швидко придумаємо концепт на понеділок. 😅
Ти якого вже як годину у компа нема)))
Ви сильні 💪 Гарного дня!
Сьогодні п’ятниця, той день, коли хочеться все встигнути, все доробити, і вже о 17:00 сидіти нога на ногу з кавусею в руках
Але ж ми знаємо, як воно буває.
18:00 і твій тімлід такий: А давайте ще швидко придумаємо концепт на понеділок. 😅
Ти якого вже як годину у компа нема)))
Ви сильні 💪 Гарного дня!
1🔥9😁8❤2
Завдання дня для QA:
Уявіть тестуєте вебзастосунок. Відкриваєте форму, почали роботу, але через деякий час клієнт перестав отримувати відповіді від сервера, сесія обірвалась. Що найімовірніше сталося?
Уявіть тестуєте вебзастосунок. Відкриваєте форму, почали роботу, але через деякий час клієнт перестав отримувати відповіді від сервера, сесія обірвалась. Що найімовірніше сталося?
Anonymous Quiz
50%
(A) ui не підтримував заголовок Connection: keep-alive, і тср-з'єднання розірвалось через таймаут
34%
(B) Сервер закрив з'єднання через відсутність нових запитів (через Keep-Alive timeout)
12%
(C) Клієнт змінив IP і сесія стала недійсною
5%
(D) Сервер випадково заблокував IP клієнта
👀7🔥4👍3
Bug or Defect?
Всім доброго вечора друзі) Щось давно не було! Вечірня історія QA. Як перевірити, чи проект світиться назовні і заробити плюсик в репутацію. ну що я маю вам сказати. Повертаємось до теми безпеки. І якщо ви QA, який не просто клікає кнопки, а хоче розуміти…
Всім доброго вечора) Як ваш день?
Ну шо, обіцянку тримаю. Ви ставили серденько а значить, буде продовження.
Тема реально важлива, і сьогодні практичне доповнення, типові шляхи, які варто перевірити, якщо ви хочете побачити а чи не світиться у вас щось зайве
Що я маю вас сказати, ось ТОП службових файлів і директорій, які іноді забувають сховати
Як завжди по класиці через curl -I або навіть просто в браузері, якщо IP/домен доступний)
Це перевірка конфігів
Це лог-файлів
Це git
Це health/статуси
ну і не забувайте шо якщо це https то це по замовчуваню 443 - на 8080 це я вам як приклад)
Якщо щось з цього повертає 200 OK це означає
- Файл/шлях світиться
- Немає захисту (навіть найпростішого deny all або auth_basic)
- І будь-хто ззовні може отримати доступ до внутрішньої інфи (url-и, конфіги, ключі, логи)
І ше раз повторюсь чому це критично
- Це не якась дрібничка, це може коштувати компанії витоку
- Це може бути точкою входу для атаки
- І ви, як QA, можеш бути тим, хто зупинив це ще до релізу
ну і мій поіт по висновку
куа не зобов’язаний бути сек’юріті-спецом, але розуміти, де шукати дірки, це вже 50% справи. Навіть простий curl і трохи уважності можуть підняти тебе в очах команди.
Ну що всім гарного вечора друзі, відпочивайте хто як вміє)
Всіх обняв 🤗💛
Ну шо, обіцянку тримаю. Ви ставили серденько а значить, буде продовження.
Тема реально важлива, і сьогодні практичне доповнення, типові шляхи, які варто перевірити, якщо ви хочете побачити а чи не світиться у вас щось зайве
Що я маю вас сказати, ось ТОП службових файлів і директорій, які іноді забувають сховати
Як завжди по класиці через curl -I або навіть просто в браузері, якщо IP/домен доступний)
Це перевірка конфігів
curl -I http://<IP>:8080/.env
curl -I http://<IP>:8080/config.json
curl -I http://<IP>:8080/.htpasswd
Це лог-файлів
curl -I http://<IP>:8080/debug.log
curl -I http://<IP>:8080/logs/latest.log
Це git
curl -I http://<IP>:8080/.git/config
curl -I http://<IP>:8080/.git/HEAD
curl -I http://<IP>:8080/.gitignore
Це health/статуси
curl -I http://<IP>:8080/healthz
curl -I http://<IP>:8080/server-status
curl -I http://<IP>:8080/internal/status
ну і не забувайте шо якщо це https то це по замовчуваню 443 - на 8080 це я вам як приклад)
Якщо щось з цього повертає 200 OK це означає
- Файл/шлях світиться
- Немає захисту (навіть найпростішого deny all або auth_basic)
- І будь-хто ззовні може отримати доступ до внутрішньої інфи (url-и, конфіги, ключі, логи)
І ше раз повторюсь чому це критично
- Це не якась дрібничка, це може коштувати компанії витоку
- Це може бути точкою входу для атаки
- І ви, як QA, можеш бути тим, хто зупинив це ще до релізу
ну і мій поіт по висновку
куа не зобов’язаний бути сек’юріті-спецом, але розуміти, де шукати дірки, це вже 50% справи. Навіть простий curl і трохи уважності можуть підняти тебе в очах команди.
Ну що всім гарного вечора друзі, відпочивайте хто як вміє)
Всіх обняв 🤗💛
2👍16❤🔥8❤3🤗1
Друзі, доброго ранку! 🌞
Як ваш настрій у суботу? Поки ви насолоджуєтесь кавою й спокійною атмосферою, хочу поділитися чудовим і корисним інсайтом з технічної сторони
https://medium.com/%40fulminoussoftwares/best-practices-for-testing-web-applications-in-2025-6d8f7f6460b9
Гарної суботи і продуктивного вікенду! Обняв 🤗
Як ваш настрій у суботу? Поки ви насолоджуєтесь кавою й спокійною атмосферою, хочу поділитися чудовим і корисним інсайтом з технічної сторони
https://medium.com/%40fulminoussoftwares/best-practices-for-testing-web-applications-in-2025-6d8f7f6460b9
Гарної суботи і продуктивного вікенду! Обняв 🤗
Medium
Best Practices for Testing Web Applications in 2025
As technology rapidly evolves, web applications are becoming more advanced, interactive, and integral to business operations. With the…
1❤8👍5🔥2🤯1
This media is not supported in your browser
VIEW IN TELEGRAM
Банда, всім доброго раночку ☀️☀️☀️
Як ви? Встигли відпочити?
Бо понеділок починається з класики:
беклог ще з п’ятниці, купа питань від девів, хтось уже в чаті а глянеш?
А ти з кавусею в руці гордо заходиш у тиждень, красень 😄
А тепер риалії життя
Завтра у нас офіційний вихідний
І я ще в п’ятницю подумав: Ооо, візьму ще й понеділок собі ООО і буде 4 дні відпочинку! цеж просто міні відпустка не круто ні??
Але ж ні.
Не взяв. Бо сезон відпусток, людей мало, а я такий думав - А якщо щось впаде? Хто підхопить? ну короче як завжди - диагноз як же без мене(
Коротше, сьогодні я на роботі.
Розгрібаю, працюю, як справжній QA
Як ви з цим сіндромом "як же без мене " Справляєтесь?? чи так як я теж?
Всім гарного дня - і гарного початку тижня)
на цьому тижні хочу зробити багато крутой інфи) вона є але треба оформити)
Обняв 🤗🤗🤗
Як ви? Встигли відпочити?
Бо понеділок починається з класики:
беклог ще з п’ятниці, купа питань від девів, хтось уже в чаті а глянеш?
А ти з кавусею в руці гордо заходиш у тиждень, красень 😄
А тепер риалії життя
Завтра у нас офіційний вихідний
І я ще в п’ятницю подумав: Ооо, візьму ще й понеділок собі ООО і буде 4 дні відпочинку! цеж просто міні відпустка не круто ні??
Але ж ні.
Не взяв. Бо сезон відпусток, людей мало, а я такий думав - А якщо щось впаде? Хто підхопить? ну короче як завжди - диагноз як же без мене(
Коротше, сьогодні я на роботі.
Розгрібаю, працюю, як справжній QA
Як ви з цим сіндромом "як же без мене " Справляєтесь?? чи так як я теж?
Всім гарного дня - і гарного початку тижня)
на цьому тижні хочу зробити багато крутой інфи) вона є але треба оформити)
Обняв 🤗🤗🤗
❤23💯6🤗3
Завдання дня для QA:
На проді зламався доступ через HTTPS, Dev каже Сертифікат не подовжився... А ти такий: А хто його взагалі ставив і чим? Що таке Let's Encrypt і навіщо він?
На проді зламався доступ через HTTPS, Dev каже Сертифікат не подовжився... А ти такий: А хто його взагалі ставив і чим? Що таке Let's Encrypt і навіщо він?
Anonymous Quiz
7%
(A) Це інструмент для моніторингу логів у реальному часі
77%
(B) Це сервіс, який автоматично видає SSL-сертифікати
15%
(C) Це SSL/TLS-сертифікати
1%
(D) Це платформа CI/CD для Linux
👀8🔥3👍2
Bug or Defect?
Доброго вечора) Я знаю, я обіцяв і не забув. Сьогодні трохи про безпеку. Не лекція, а просто по-людськи, шо я юзав, юзаю, і за що не соромно порадити. Тема реально зараз гаряча, всі говорять про CVE, вразливості, атаки на прод, і навіть QA вже не може нічого…
Всім доброго вечора друзі! як ваш настрій?
ну що продовжуємо далі?
OWASP ZAP коротко, по справі і для чого це
почнемо саме з інструменту, який дійсно використовував не один раз. Не з курсів. Не з теорії. А коли треба було швидко перевірити вебдодаток і не чекати, поки хтось підключиться.
Що я маю вам сказати за цей ZAP?
https://www.zaproxy.org/
ZAP (Zed Attack Proxy) це DAST-сканер від OWASP. якщо дуже коротко то його завдання, перевірити вебдодаток у дії, знайти дірки, показати, що саме можна зламати прямо зараз. Відкрив, запустив, перевірив.
де можно його застосовувати,
- Перевірка після інтеграцій на QA-середовищі
- Перевірка на швидку руку перед демкою
- Коли бекенд чи фронт поводиться дивно, а деви кажуть "у нас все норм"
- Просто як звичка, щоб не тягнути в прод фігню
Вміє він не багато - але як)
- це втоматичний скан по всіх сторінках і запитах
- Фуззинг форм, параметрів, щоб подивитися, чи щось не ламається
- Працює через зручний UI або з CLI
- і у звісно підтримка інтеграцій: GitHub Actions, Jenkins тощо, також Можна проганяти Postman-колекції
Во флоу він ну ше простіше ніж ви собі уявляєте,
Скачав, Ввів URL свого стенду
Вибрав режим "Automated Scan"
Подивився, що вилізло у вкладці "Alerts"
Якщо потрібно, включив проксі, походив по сайту вручну, і прогнав всі збережені запити ще раз
на шо саме треба звертати увагу то це на
Неправильні заголовки (X-Frame, CSP, XSS і т.д.), Відсутність Secure/HttpOnly у cookies, IDOR і відкрите API без авторизації
Звісно шо ZAP не замінить повноцінний пентест, але для повсякденної практики QA, саме те. Тим більше, що можна інтегрувати в пайплайни CI і запускати на кожен білд.
Мій поінд у чому
Якщо ти QA і працюєш з вебом, знайди 10 хвилин, розберися з ZAP. Це простий і ефективний інструмент, який реально підсвітить речі, що можуть пройти повз тебе. І це той самий момент, коли ти не просто клікаєш UI, а закриваєш вразливості ще до того, як про них хтось напише в чаті клієнта.
Так що ось так)
Я думаю що багато хто з вас вже знає про нього і юзать, якщо ні стобуйте, потім скажите як вам це
Всім гарного вечора друзі, відпочівайте а ще я попрацюю - треба готувати нови теми для учнів)
Всіх обняв 🤗🤗🤗
ну що продовжуємо далі?
OWASP ZAP коротко, по справі і для чого це
почнемо саме з інструменту, який дійсно використовував не один раз. Не з курсів. Не з теорії. А коли треба було швидко перевірити вебдодаток і не чекати, поки хтось підключиться.
Що я маю вам сказати за цей ZAP?
https://www.zaproxy.org/
ZAP (Zed Attack Proxy) це DAST-сканер від OWASP. якщо дуже коротко то його завдання, перевірити вебдодаток у дії, знайти дірки, показати, що саме можна зламати прямо зараз. Відкрив, запустив, перевірив.
де можно його застосовувати,
- Перевірка після інтеграцій на QA-середовищі
- Перевірка на швидку руку перед демкою
- Коли бекенд чи фронт поводиться дивно, а деви кажуть "у нас все норм"
- Просто як звичка, щоб не тягнути в прод фігню
Вміє він не багато - але як)
- це втоматичний скан по всіх сторінках і запитах
- Фуззинг форм, параметрів, щоб подивитися, чи щось не ламається
- Працює через зручний UI або з CLI
- і у звісно підтримка інтеграцій: GitHub Actions, Jenkins тощо, також Можна проганяти Postman-колекції
Во флоу він ну ше простіше ніж ви собі уявляєте,
Скачав, Ввів URL свого стенду
Вибрав режим "Automated Scan"
Подивився, що вилізло у вкладці "Alerts"
Якщо потрібно, включив проксі, походив по сайту вручну, і прогнав всі збережені запити ще раз
на шо саме треба звертати увагу то це на
Неправильні заголовки (X-Frame, CSP, XSS і т.д.), Відсутність Secure/HttpOnly у cookies, IDOR і відкрите API без авторизації
Звісно шо ZAP не замінить повноцінний пентест, але для повсякденної практики QA, саме те. Тим більше, що можна інтегрувати в пайплайни CI і запускати на кожен білд.
Мій поінд у чому
Якщо ти QA і працюєш з вебом, знайди 10 хвилин, розберися з ZAP. Це простий і ефективний інструмент, який реально підсвітить речі, що можуть пройти повз тебе. І це той самий момент, коли ти не просто клікаєш UI, а закриваєш вразливості ще до того, як про них хтось напише в чаті клієнта.
Так що ось так)
Я думаю що багато хто з вас вже знає про нього і юзать, якщо ні стобуйте, потім скажите як вам це
Всім гарного вечора друзі, відпочівайте а ще я попрацюю - треба готувати нови теми для учнів)
Всіх обняв 🤗🤗🤗
ZAP
The ZAP Homepage
Welcome to ZAP!
❤🔥12🔥7❤1😁1
Друзі, доброго ранку!
Як ви? Як настрій? Надіюсь, що ви в безпеці і з гарячою кавою в руках
У мене сьогодні день почався з новин про нові фішингові атаки, прям лізуть звідусіль
Тому хочу вам щиро порадити одну топову штуку безкоштовний курс від Alison по цифровій безпеці - я його рекомендую свої учням - бо бувають тицяють усе підряд
Digital Security Awareness
https://alison.com/course/digital-security-awareness
так те що я люблю и багато хто
Дасть круте розуміння як працюють фішингові атаки
Навчить розпізнавати небезпеки
І ще сертифікат отримаєте для галочки)))
Зараз у час, коли фішингце вже не там десь у банку, а ой, це мені на пошту зараз прилетіло, знання реально рятують.
якщо ще хтось якись знає кидайте комент)
А поки бажаю вам продуктивного, спокійного дня!
Сильні 💛
Обняв 🤗
Як ви? Як настрій? Надіюсь, що ви в безпеці і з гарячою кавою в руках
У мене сьогодні день почався з новин про нові фішингові атаки, прям лізуть звідусіль
Тому хочу вам щиро порадити одну топову штуку безкоштовний курс від Alison по цифровій безпеці - я його рекомендую свої учням - бо бувають тицяють усе підряд
Digital Security Awareness
https://alison.com/course/digital-security-awareness
так те що я люблю и багато хто
Дасть круте розуміння як працюють фішингові атаки
Навчить розпізнавати небезпеки
І ще сертифікат отримаєте для галочки)))
Зараз у час, коли фішингце вже не там десь у банку, а ой, це мені на пошту зараз прилетіло, знання реально рятують.
якщо ще хтось якись знає кидайте комент)
А поки бажаю вам продуктивного, спокійного дня!
Сильні 💛
Обняв 🤗
Alison
Free Online Cyber Security Awareness Course | Alison
Learn about types of security threats, social engineering, identity theft, and data classification in this free online cyber security awareness course.
🔥10❤3🤗2
Завдання дня для QA:
Яка база краще для зберігання такого JSON? { "user": "Іван", "items": [ { "product": "Чай" }, { "product": "Кава" } ] }
Яка база краще для зберігання такого JSON? { "user": "Іван", "items": [ { "product": "Чай" }, { "product": "Кава" } ] }
Anonymous Quiz
2%
(A) Excel просто таблиця з рядками і колонками
52%
(B) SQL усе чітко: таблиці, зв’язки, JOIN
43%
(C) NoSQL як коробка, в яку можна скласти все, що завгодно
3%
(D) Google Docs бо зручно копіпастити
❤5🔥3👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Привіт, колеги!
Як ваш день, як настрій?
Ну шо, вчора реально відпочили, чи відпочивали з ноутом на колінах?
Бо в мене, як завжди: що вихідний, що ні одне і те саме.
Купа лекцій + ще й підготовка матеріалу для для учнів ну і для вас звісно)
Сьогодні зловив відео, яким просто не можу не поділитися.
Це реально Я + 50% з вас, які вже в середу чекають пʼятниці 😭
Ну що
Видихнули.
Попили кави.
Погнали розносити таски з силою QA 😜
Гарного вам дня і хай буде продуктивним!
Сильні.💛
Як ваш день, як настрій?
Ну шо, вчора реально відпочили, чи відпочивали з ноутом на колінах?
Бо в мене, як завжди: що вихідний, що ні одне і те саме.
Купа лекцій + ще й підготовка матеріалу для для учнів ну і для вас звісно)
Сьогодні зловив відео, яким просто не можу не поділитися.
Це реально Я + 50% з вас, які вже в середу чекають пʼятниці 😭
Ну що
Видихнули.
Попили кави.
Погнали розносити таски з силою QA 😜
Гарного вам дня і хай буде продуктивним!
Сильні.💛
👍6⚡3😭3💯2🤗2❤1
Завдання дня для QA:
Ти залогінився на сервер і хочеш переглянути останні 50 рядків з лога app.log, який лежить у /var/logs. Яку команду ти використаєш?
Ти залогінився на сервер і хочеш переглянути останні 50 рядків з лога app.log, який лежить у /var/logs. Яку команду ти використаєш?
Anonymous Quiz
13%
(A) head -n 50 /var/logs/app.log
21%
(B) less /var/logs/app.log | tail -50
48%
(C) tail -n 50 /var/logs/app.log
17%
(D) cat /var/logs/app.log | head -50
🔥6❤4👍1🤔1
Bug or Defect?
Завдання дня для QA:
Яка база краще для зберігання такого JSON? { "user": "Іван", "items": [ { "product": "Чай" }, { "product": "Кава" } ] }
Яка база краще для зберігання такого JSON? { "user": "Іван", "items": [ { "product": "Чай" }, { "product": "Кава" } ] }
Привіт друзі - ну що чучуть розберемо цей пул?
(A) Excel ну я думаю тут не будемо сильно зупиняться і так все понятноТак,
Excel топ для таблиця хто що здав, але JSON з вкладеним масивом у Excel виглядає як трагедія.
Пробуєте розтягнути items, зберегти цілісність структури, а потім ще це все парсити... Це не база це костиль)
Чому все ж не (B) хоча так хотілось би, Так?
На перший погляд виглядає як норм: робимо таблицю users, окремо items, через user_id зв'язуємо. Але постійно є це АЛЕ, Структура JSON вимагає нормалізації а масив items це взагалі окрема таблиця ну і потрібні JOIN'и для відновлення повної структури
І якщо у product завтра додасться поле price треба міняти схему.
це ускладнює зберігання гнучких структур.
SQL, дійсно хороший варіант, коли схема стабільна та фіксована.
(D) Google Docs, для копіпасту - тут теж все просто і зрозуміло)
Ніяких індексів, запитів, цілісності, Це не база, а текстовий документ. JSON там зберігається просто як текст.
ну і чому саме (C) NoSQL, правильна відповідь)
Наприклад, MongoDB, документна база, яка приймає JSON/BSON як є. Це прямо такий об’єкт, без трансформацій, зберігається як документ. Масиви, вкладення, різні типи ну і усе зберігається без втрати структури. це дуже підходить для API-first підходу, де UI/API головні, а база лише бекенд.
Якщо прям Технічно - insertOne({ user: "Іван", items: [...] }), це вже вся операція, як що пошук: db.orders.find({ "items.product": "Чай" }) так кажучи Без JOIN, без схеми, без болю
У тестах зручно перевіряти, що API повертає, і зберігати аналогічну структуру.
як кажуть QA не тільки клік і подивився.
А треба зрозуміти, як і де зберігаються дані, це вже рівень вище.
Бо коли API скаже "500", ти маєш знати, де воно могло впасти.
Обійняв 🤗
(A) Excel ну я думаю тут не будемо сильно зупиняться і так все понятноТак,
Excel топ для таблиця хто що здав, але JSON з вкладеним масивом у Excel виглядає як трагедія.
Пробуєте розтягнути items, зберегти цілісність структури, а потім ще це все парсити... Це не база це костиль)
Чому все ж не (B) хоча так хотілось би, Так?
На перший погляд виглядає як норм: робимо таблицю users, окремо items, через user_id зв'язуємо. Але постійно є це АЛЕ, Структура JSON вимагає нормалізації а масив items це взагалі окрема таблиця ну і потрібні JOIN'и для відновлення повної структури
І якщо у product завтра додасться поле price треба міняти схему.
це ускладнює зберігання гнучких структур.
SQL, дійсно хороший варіант, коли схема стабільна та фіксована.
(D) Google Docs, для копіпасту - тут теж все просто і зрозуміло)
Ніяких індексів, запитів, цілісності, Це не база, а текстовий документ. JSON там зберігається просто як текст.
ну і чому саме (C) NoSQL, правильна відповідь)
Наприклад, MongoDB, документна база, яка приймає JSON/BSON як є. Це прямо такий об’єкт, без трансформацій, зберігається як документ. Масиви, вкладення, різні типи ну і усе зберігається без втрати структури. це дуже підходить для API-first підходу, де UI/API головні, а база лише бекенд.
Якщо прям Технічно - insertOne({ user: "Іван", items: [...] }), це вже вся операція, як що пошук: db.orders.find({ "items.product": "Чай" }) так кажучи Без JOIN, без схеми, без болю
У тестах зручно перевіряти, що API повертає, і зберігати аналогічну структуру.
як кажуть QA не тільки клік і подивився.
А треба зрозуміти, як і де зберігаються дані, це вже рівень вище.
Бо коли API скаже "500", ти маєш знати, де воно могло впасти.
Обійняв 🤗
🔥11❤🔥4🤗3❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Привіт, друзі! Як ранок?
Я вже дві кави навернув і зараз буду вклинуватись у роботу. Сьогодні, схоже, знову тяжкий день, задач купа, вхід у роботу як у лід в ополонці )
але що нам
Пізніше на обіді опишу вам вчорашній фокап, як я читав системні лінуксові логи на Windows, бо моя Linux-машина в ремонті. Квест реально 10 з 10: ssh нема, 80-й порт закритий, а журнал треба глянути.
А поки, бажаю вам гарного і стабільного дня!
На відео, скоріше за все, сьогодні
На Відео ОБЕРЕЖНО мат)
Обняв🤗🤗☀️
Я вже дві кави навернув і зараз буду вклинуватись у роботу. Сьогодні, схоже, знову тяжкий день, задач купа, вхід у роботу як у лід в ополонці )
але що нам
Пізніше на обіді опишу вам вчорашній фокап, як я читав системні лінуксові логи на Windows, бо моя Linux-машина в ремонті. Квест реально 10 з 10: ssh нема, 80-й порт закритий, а журнал треба глянути.
А поки, бажаю вам гарного і стабільного дня!
На відео, скоріше за все, сьогодні
На Відео ОБЕРЕЖНО мат)
Обняв🤗🤗☀️
😁12👍4🤣1🤗1
Ну що всім ще раз привіт)
Обідня Історії QA)
Коротше, моя Linux-машина в ремонті. І виявилось якщо треба почитати системний лог з лінукса на вінді, це та ще пригода.
А ситуація така: приходять до мене і кажуть, апка не працює, REST не відповідає.
Ну і я такий як завжди думати що не так
А Сертифікат живий?
Пішли перевіряти. За пару хвилин повертаються:
Та ні, просрочений. Вже кілька днів.
Ну я в шоці, TLS мав сам автоматом оновити. Значить десь щось пішло не так...
Окей, думаю, стягну логи з сервера, подивимось по acme, шо там і як.
Ну всі і так знають але нагадаю
Команда, щоб скачати лог з лінукса
(або
якщо journald - тут треба дивитись, куди пише система)
Але тут почалось найвеселіше, як його глянути на вінді?
Бо журнал в journalctl-форматі, це не просто текстовий файл. Він у бінарному форматі systemd journal.
Як скачати логи з Linux на Windows (якщо твій комп тимчасово на Windows)?
вроді все легко, але коли ти це знаєшь, коротше робиться це через scp,
але треба або:
WSL (якщо в тебе встановлений), або OpenSSH client в PowerShell.
Якщо ще не встановлено то треба качать WSL
Після ребуту (або через Microsoft Store) постав Ubuntu. І тільки тепер можна юзати scp прямо з PowerShell або Ubuntu консолі у WSL.
Команда для завантаження логів з Linux-сервера
або якщо файл з journal:
Ну якщо пароль не питає або каже "permission denied" можно зробити і додати ключ -i для ssh-ключа або зробити ssh-copy-id на Linux перед цим
Після того, як скачав лог (наприклад syslog або system.journal), треба подивитися, що там взагалі писалось про acme, certbot, або letsencrypt.
Якщо це простий .log файл (наприклад syslog,
:
То можно просто юзати
або на вінді (через PowerShell):
можете побачити такий лог умовно,
Тобто видно:
чи взагалі намагався оновлювати, чи пройшла валідація яка була помилка (80 закритий, DNS не той, або ще щось) або коли останній раз проходило успішно
Якщо у вас systemd journal (system.journal, journalctl), то фільтруєте так:
або без grep:
Можна ще по часу:
Якщо проблеми скоріше покаже щось типо того - вони типо за часту стандартні
одразу зрозуміло: серт пробував оновити, але 80-й порт був закритий зовні. Сертифікат не зміг зробити HTTP-челендж.
Як результат, автоматичне оновлення впало, і ніхто не побачив. Сертифікат протух.
Ну і да Якщо у вас certbot з логами
там теж все видно, навіть без journal. Можна просто відкрити й шукати ERROR, challenge, timeout, renewal.
Ось Тепер ви знаєте, як викачати і прочитати логи, навіть якщо ти тимчасово на Windows.
І ще раз переконався, що журнал це твій друг.
Може ви знаєте якісь другий спосіб або свидший то пишіть - мені це буде цікаво і актуально)
Обідня Історії QA)
Коротше, моя Linux-машина в ремонті. І виявилось якщо треба почитати системний лог з лінукса на вінді, це та ще пригода.
А ситуація така: приходять до мене і кажуть, апка не працює, REST не відповідає.
Ну і я такий як завжди думати що не так
А Сертифікат живий?
Пішли перевіряти. За пару хвилин повертаються:
Та ні, просрочений. Вже кілька днів.
Ну я в шоці, TLS мав сам автоматом оновити. Значить десь щось пішло не так...
Окей, думаю, стягну логи з сервера, подивимось по acme, шо там і як.
Ну всі і так знають але нагадаю
Команда, щоб скачати лог з лінукса
scp user@server:/var/log/syslog ./syslog
(або
/var/log/journal/
якщо journald - тут треба дивитись, куди пише система)
Але тут почалось найвеселіше, як його глянути на вінді?
Бо журнал в journalctl-форматі, це не просто текстовий файл. Він у бінарному форматі systemd journal.
Як скачати логи з Linux на Windows (якщо твій комп тимчасово на Windows)?
вроді все легко, але коли ти це знаєшь, коротше робиться це через scp,
але треба або:
WSL (якщо в тебе встановлений), або OpenSSH client в PowerShell.
Якщо ще не встановлено то треба качать WSL
wsl --install
Після ребуту (або через Microsoft Store) постав Ubuntu. І тільки тепер можна юзати scp прямо з PowerShell або Ubuntu консолі у WSL.
Команда для завантаження логів з Linux-сервера
scp user@your-server:/var/log/syslog C:\Users\yourname\Downloads\
або якщо файл з journal:
scp user@your-server:/var/log/journal/remote/system.journal C:\Users\yourname\Downloads\
Ну якщо пароль не питає або каже "permission denied" можно зробити і додати ключ -i для ssh-ключа або зробити ssh-copy-id на Linux перед цим
Після того, як скачав лог (наприклад syslog або system.journal), треба подивитися, що там взагалі писалось про acme, certbot, або letsencrypt.
Якщо це простий .log файл (наприклад syslog,
/var/log/syslog, /var/log/letsencrypt/letsencrypt.log)
:
То можно просто юзати
cat syslog | grep acme
cat syslog | grep certbot
cat syslog | grep letsencrypt
або на вінді (через PowerShell):
Select-String -Path .\syslog -Pattern "acme"
можете побачити такий лог умовно,
acme: Attempting to renew cert...
acme: Renewal failed: Could not connect to http://yourdomain/.well-known/acme-challenge/...
або
certbot[12345]: Successfully received certificate.
certbot[12345]: Cert is not due for renewal
Тобто видно:
чи взагалі намагався оновлювати, чи пройшла валідація яка була помилка (80 закритий, DNS не той, або ще щось) або коли останній раз проходило успішно
Якщо у вас systemd journal (system.journal, journalctl), то фільтруєте так:
journalctl --file=./system.journal | grep acme
journalctl --file=./system.journal | grep certbot
або без grep:
journalctl --file=./system.journal -u certbot
Можна ще по часу:
journalctl --file=./system.journal --since "3 days ago" | grep acme
Якщо проблеми скоріше покаже щось типо того - вони типо за часту стандартні
acme: Renewing an existing certificate
acme: Could not connect to http://mydomain.com/.well-known/acme-challenge/
одразу зрозуміло: серт пробував оновити, але 80-й порт був закритий зовні. Сертифікат не зміг зробити HTTP-челендж.
Як результат, автоматичне оновлення впало, і ніхто не побачив. Сертифікат протух.
Ну і да Якщо у вас certbot з логами
/var/log/letsencrypt/letsencrypt.log
там теж все видно, навіть без journal. Можна просто відкрити й шукати ERROR, challenge, timeout, renewal.
Ось Тепер ви знаєте, як викачати і прочитати логи, навіть якщо ти тимчасово на Windows.
І ще раз переконався, що журнал це твій друг.
Може ви знаєте якісь другий спосіб або свидший то пишіть - мені це буде цікаво і актуально)
❤7❤🔥4⚡3🔥2👍1
Завдання дня для QA:
Апка на стейджі не відповідає. Фронт шле запит умовно на https://backend.internal/api, але 500 або взагалі тиша. API нібито підняте, все має працювати, але не працює: Що перевіриш у першу чергу?
Апка на стейджі не відповідає. Фронт шле запит умовно на https://backend.internal/api, але 500 або взагалі тиша. API нібито підняте, все має працювати, але не працює: Що перевіриш у першу чергу?
Anonymous Quiz
36%
(A) ping backend.internal
45%
(B) curl -v https://backend.internal/api
10%
(C) nc -zv backend.internal 443
10%
(D) telnet backend.internal 443
👀14👍3❤1🔥1😁1
Всім доброго вечора колеги, як ваш день)
Сьогодні трохи про SQL. Але не з позиції "от вам SELECT, INSERT і біжіть".
Багато хто з QA знає базові запити, але цього недостатньо, коли починається реальна робота з проєктом. Особливо, якщо це мікросервіси, складна логіка чи просто бажання перевірити, що дані справді коректно записались після форми чи API-запиту.
SQL це не лише про "уміти писати SELECT", це про "розуміти, як поводяться дані всередині". Чому запит не повертає результат? Чому після UI-дії в базі дірка? Чому UPDATE без WHERE може все зламати?
Тема сьогодні: топові SQL-команди, які повинен знати кожен QA, це не строго але вам буде великий +++
Ось вам зручна шпаргалка по всьому
Який поін від мене)
SQL, це не про бази, це про контроль.
Іноді саме SELECT покаже більше, ніж будь-який UI.
Всім гарного вечора друзі)
Обняв 🤗🤗🤗💛
Буду вдячний за репост группи якщо вам заходить мої дописи 🫣
Сьогодні трохи про SQL. Але не з позиції "от вам SELECT, INSERT і біжіть".
Багато хто з QA знає базові запити, але цього недостатньо, коли починається реальна робота з проєктом. Особливо, якщо це мікросервіси, складна логіка чи просто бажання перевірити, що дані справді коректно записались після форми чи API-запиту.
SQL це не лише про "уміти писати SELECT", це про "розуміти, як поводяться дані всередині". Чому запит не повертає результат? Чому після UI-дії в базі дірка? Чому UPDATE без WHERE може все зламати?
Тема сьогодні: топові SQL-команди, які повинен знати кожен QA, це не строго але вам буде великий +++
Ось вам зручна шпаргалка по всьому
Який поін від мене)
SQL, це не про бази, це про контроль.
Іноді саме SELECT покаже більше, ніж будь-який UI.
Всім гарного вечора друзі)
Обняв 🤗🤗🤗💛
Буду вдячний за репост группи якщо вам заходить мої дописи 🫣
1👍19❤7🔥3⚡2🤗2