fa
Feedback
Test Engineering Notes

Test Engineering Notes

رفتن به کانال در Telegram

Канал про технічні аспекти тестування, розподілені системи, блокчейн, ШІ та перфоманс. Консультації з автоматизації, менторинг, тестові співбесіди - @al8xr

نمایش بیشتر
3 913
مشترکین
+224 ساعت
-37 روز
-1130 روز
آرشیو پست ها
Доступність (в розподілених системах) #distsys Що таке доступність? Доступність - це міра того, як надійно система відповідає
Доступність (в розподілених системах) #distsys Що таке доступність? Доступність - це міра того, як надійно система відповідає на запити, коли потрібно (навіть за наявності помилок чи вузлів, що не відповідають) Види доступності - Повна доступність: кожен справний вузол може виконувати будь-яку операцію. Операції виконуються навіть тоді, коли інші вузли або мережа між ними виходять з ладу - Системи з доступною більшістю: якщо більшість невідмовних вузлів можуть спілкуватися один з одним, ці вузли можуть виконувати операції. Більшість може бути як 50% + 1 або 2/3 + 1 вузли - Фіксована (sticky) доступність: якщо клієнт виконує операцію зі станом бази даних, який відображає всі попередні транзакції клієнта, він зрештою отримує відповідь – навіть за наявності невизначеної кількості збоїв вузлів або мережі Важливо! Система може бути доступною, але це не означає, що вона буде відповідати найбільш актуальними даними.

Repost from Testing Minutes
⚡️ Епізод 53: Куди можна рости в тестуванні? Куди можна рости в тестуванні? Це питання задає собі як починаючий інженер, так
⚡️ Епізод 53: Куди можна рости в тестуванні? Куди можна рости в тестуванні? Це питання задає собі як починаючий інженер, так і досвідчений спеціаліст. Чи всім треба йти в автоматизацію? Чи лідерство - то єдиний можливий варіант розвитку? Разом із ведучими подкасту, Артемом та Олександром, ми будемо розбиратися які варіанти карʼєрного розвитку існують. Дивитись та слухати: 🔸 Youtube 🔹 Spotify 🔸 Apple Ваша підтримка важлива! Ми постійно розвиваємося і рухаємося вперед, але це неможливо без вашої підтримки. Тому будемо вдячні за лайки, коментарі та будь-яку іншу форму підтримки. Це допоможе нам просувати наші подкасти в рекомендаціях. Також ви можете підтримати нас донатом — це дійсно важливо для нас і є нашим рушієм. Дякуємо вам! Підтримати подкаст можна через: 🏦 База від Монобанку #testingminutes | @a_grygorenko | Test Engineering Notes

🤖20+ книг з автоматизації тестування 📖 #automation #books Знайшов я тут декілька підбірок книжок з автоматизації тестування: один, два. Там є хороші книжки, є й не дуже. Деякі - вже застарілі або ж якісь невідомі. То ж хочу поділитись списком хороших книжок з автоматизації, які я читав сам. Тут не буде книжок з Selenium, базвичай я не включаю в топи книжки з конкретних інструментів (бо вони швидко втрачають актуальність). 🪄Що почитати з автоматизації тестування? 📚 Contract Testing in Action: With Pact, PactFlow, and GitHub Actions (2025) 📚 Software Testing with Generative AI (2024) 📚 Software Testing Strategies: A testing guide for the 2020s (2023) 📚 Automation Awesomeness: 260 actionable affirmations to improve your QA and automation testing skills (2023) 📚 Test Automation Engineering Handbook (2023) 📚 Effective Software Testing: A developer's guide (2022) 📚 Testing Web APIs (2022) 📚 Full Stack Testing: A Practical Guide for Delivering High Quality Software (2022) 📚 Test Automation Fundamentals (2022) 📚 Software Testing: A Craftsman’s Approach, Fifth Edition (2021) 📚 Team Guide to Software Testability (2021) 📚 Test Automation: A manager's guide (2021) 📚 Software Engineering at Google (2020) 📚 Complete Guide to Test Automation: Techniques, Practices, and Patterns for Building and Maintaining Effective Software Projects (2018) 📚 Testing Java Microservices: Using Arquillian, Hoverfly, AssertJ, JUnit, Selenium, and Mockito (2018) 📚 Developer Testing: Building Quality into Software (2016) 📚 The "A" Word. Under the Covers of Test Automation (2013) 📚 Experiences of Test Automation: Case Studies of Software Test Automation (2012) 📚 How Google Tests Software (2012) 📚 Implementing Automated Software Testing: How to Save Time and Lower Costs While Raising Quality (2009) 📚 xUnit Test Patterns: Refactoring Test Code (2007) 📚 Lessons Learned in Software Testing: A Context-Driven Approach (2001) P.S. Чи цікаві вам будуть огляди на ці книжки? На які саме?

⛓ Види залежностей в розподілених системах #distributedsystems 👉 Процесна залежність. Якщо процес P виконує операцію А, а по
Види залежностей в розподілених системах #distributedsystems 👉 Процесна залежність. Якщо процес P виконує операцію А, а потім - B, то операція B процесно залежить від А. 👉 Залежність сесій. Сессія, то є послідовність операцій, які виконується по порядку. Залежність в контексті сесії означає, що операція В залежить від операції А - коли операція А виконується строго перед операцією В. 👉 Залежність реального часу. Якщо операція А закінчується перед операцією В, то В залежить від А в реальному часі. 👉 Залежність читання - запис. Залежність такого роду виникає, коли операція А читає якусь версію v1 обʼєкту, а операція В записує наступну версію цього ж обʼєкта. 👉 Залежність запис - читання. Операція А записує версію обʼєкту, а операція В повинна успішно прочитати нову версію. 👉 Залежність запис-запис. Операція А записує свою версію обʼєкту, а операція В перезаписує обʼєкт. 🤷Чому це важливо? Знання залежностей допоможуть надалі розібратися із моделями узгодженості.

Crawling a billion web pages in just over 24 hours, in 2025 #engineering Цікава стаття про те, як розробник побудував crawler
Crawling a billion web pages in just over 24 hours, in 2025 #engineering Цікава стаття про те, як розробник побудував crawler, що просканував мільярд сторінок трохи більше ніж за 24 години. Вартість ресурсів - $462 Кластер складався із 12 i7i.4xlarge машин, кожна з 128 Gb RAM та 3750 Gb жорсткого диску. Пропускна здатність при цьому була 10 Gbps.

Repost from Testing Minutes
⚡️ Епізод 52: про Upwork та фриланс в QA разом із Інною Двойніковою Чи чули ви про фриланс? Чи, можливо, думали спробувати? Ч
⚡️ Епізод 52: про Upwork та фриланс в QA разом із Інною Двойніковою Чи чули ви про фриланс? Чи, можливо, думали спробувати? Чи справді фриланс - то про свободу та "вільне плавання" для спеціаліста? Якими повинні бути перші кроки на Upwork? Як шукати клієнтів та які спеціалісти зараз "в тренді"? Чи реально на фрилансі отримувати гідну компенсацію? Про все це, Артем та Олександр, будуть дізнаватись у Інни Двойнікової в новому епізоду подкасту! Дивитись та слухати: 🔸 Youtube 🔹 Spotify 🔸 Apple Ваша підтримка важлива! Ми постійно розвиваємося і рухаємося вперед, але це неможливо без вашої підтримки. Тому будемо вдячні за лайки, коментарі та будь-яку іншу форму підтримки. Це допоможе нам просувати наші подкасти в рекомендаціях. Також ви можете підтримати нас донатом — це дійсно важливо для нас і є нашим рушієм. Дякуємо вам! Підтримати подкаст можна через: 🏦 База від Монобанку #testingminutes | @a_grygorenko | Test Engineering Notes

🚀Що робити, коли ШІ хайп навкруги #ai Компанії масово впроваджують ШІ там де треба й не треба. Люди все більше використовуют
🚀Що робити, коли ШІ хайп навкруги #ai Компанії масово впроваджують ШІ там де треба й не треба. Люди все більше використовують та пропагують vibe coding - як єдиний шлях розробки. А потім відбуваються такі ситуації, як на картинці. 😱Що сталося? Інструмент Replit проігнорував усі промпти та ... видалив продакшен базу даних. Більше того - ШІ збрехав, що не робив цього. Плюс - ШІ також сказав, що усі юніт тести зелені (збрехав вдруге). Цікаво. а як часто тестувальники говорять менеджерам, що усі тести зелені перед релізом? 😀 🔮Що ж робити? Користуватися будь-якими ШІ інструментами у форматі "VIBE BUT VERIFY". Та ніколи не давай доступів до продакшену. Думаю, таких помилок буде ще багато - бо ШІ зараз використують у багатьох місцях. 🕶А можливо, треба ставати "AI Fixer" - тобто людиною, яка за багато грошей буде допомагати розгрібати весь бедлам, що накоїв ШІ та люди без досвіду. То ж професійний досвід все ще в ціні.

The Problem with Time & Timezones #engineering Уявіть. Прилітає задача "напишіть фічу, яка дозволяє порахувати час між двома обраними датами". Але треба порахувати точно, до секунди. Наче задача виглядає просто. Чи не так? У цьому короткому відео дуже гарно пояснюють, чому програмувати (та й тестувати) задачі звʼязані із часом та часовими зонами - то вельми складна задача.

📚 Несподівана знахідка зі світу тестування #testing #books Не так давно я розповідав про навчання. Хоча зараз я не так тісно
📚 Несподівана знахідка зі світу тестування #testing #books Не так давно я розповідав про навчання. Хоча зараз я не так тісно повʼязаний із тестуванням, мені завжди цікаво шукати цікаві теми та підходи у світі якості. То ж я читаю й проглядаю книжки з тестування. Деякі книжки хороші для новачків. Деякі - безнадійно застарілі й містять мало нового. Наприклад, "Mobile Testing" Рекса Блека хоч й цінна його коментарями підходів та інструментів, але нічого кардинально нового не дає. Книга від Daniel Knott більш практична. 😱Але деякі книжки виявляються справжньою несподіванкою (в хорошому сенсі). Яскравий приклад - це "Foundations of Software Testing" від Aditya P. Mathur. Наче книга - з основ тестування. Але глибина матеріалу мене приємно вразила. Теми й приклади книги більш хардкорні, ніж у відомій "Advanced Software Testing - Vol. 1" (не ту книгу назвали Advanced 😀). 🕶 Як дочитаю - з мене огляд! P.S. Для тих, хто не любить читати, можна подивитись архів слайдів на основі книги. (Всього 722 слайди!)

🧪Про науковий метод й дослідницьке тестування #testing Побачив я якось пояснення наукового методу в книжці. Мені одразу спал
🧪Про науковий метод й дослідницьке тестування #testing Побачив я якось пояснення наукового методу в книжці. Мені одразу спало на думку, що цей метод має багато спільного із тестуванням (особливо exploratory). 👉 Question. В тестуванні ми також вирішуємо ЩО САМЕ тестувати. 👉 Hypothesis. Ми формуємо гіпотези про поведінку продукту, які перевіряємо. 👉 Experiment and analyze data. Ми тестуємо та аналізуємо отримані результати. 👉 Refine. Ми робимо retesting, якщо треба перевірити нову гіпотезу чи білд. 👉 Peer-review. Ревʼю тестів, багів та код-ревʼю від колег. Додаткова вимога, як до тестування так і до наукових дослідів - це відтворюваність результатів експерименту (тесту). 🚀То ж коли ми тестуємо, ми, як науковці, ставимо експерименти та доводимо правдивість (чи хибність) наших гіпотез.

Testability and Cost of Change #testability #bugs Знайшов доволі стару, але цікаву статтю про те, як в різний час в різних ко
Testability and Cost of Change #testability #bugs Знайшов доволі стару, але цікаву статтю про те, як в різний час в різних компаніях й процесах комунікують ціну виправлення помилок. Все починається аж в 1976 році в журналі IEEE, коли Barry Boehm вперше задав питання про важливість фіксу помилок. Свою думку він згодом закріпив у книзі "Software Engineering Economics" (1981). Цікаве питання: якщо з часом виправляти помилки стає дорожче, то й відповідно робити зміни у функціоналі стає так само складно й дорого? Як думаєте?

The most mysterious bug I solved at work #bug Пропоную до вашої уваги історію про вельми цікавий баг. Історію в своєму блозі розповів Cadence Ember. Про систему Одного разу Cadence працював кимось між розробником, тестувальником та сапортом. Продукт, над яким він працював був типу Patient Management Software. В цьому софті лікар міг створити електронне направлення до іншого лікаря. Частину даних про паціента отримували зі сторонніх систем - то ж лікарю треба було тільки заповнити декілька полів у формі, згенерувати у форматах HL7, XML чи PDF та відправити. Про баг Раз на два - чотири тижні, система кидала помилку на етапі відправки електронного відправлення: Illegal Character entity: expansion character (code 0x2) not a valid XML character Зазвичай, фіксити таку помилку можна було SQL скриптом, що видаляв "\u0002" із бази даних. Але Cadence вирішив знайти першопричину проблеми. У пошуках відповідей Що значить символ 0х2? Як ви знаєте, кожна літера тексту представлена числом у компʼютері. Числа нижче 31 використовуються для невидимих "керуючих символів". Керуючі символи були важливі в часи телетайпів - коли символи передавались одним потоком й треба було розрізняти розмітку тексту. Символ 0х2 - це початок тексту, а 0х3 - кінець тексту. Провівши свої дослідження ще більше, Cadence зрозумів, що символ 0х2 чомусь виникає в кінці першого рядка тексту:
development. Physically, his well-
being is healthy, so likely needs
Тобто дефіс чомусь перетворюється на символ 0х2! В чому була проблема Виявляється, браузери та програми працюють з PDF текстами по різному. Автор спробував працювати з PDF з текстом з дефісами в Google Chrome, Mozilla Firefox, Microsoft Edge та Acrobat Reader. Й саме браузер Edge перетворював дефіс на символ 0х2 ... коли скопіювати текст з PDF файлу відкритого в браузері в систему створення лікарських направлень. Як пофіксили? Помилку виправили на стороні продукту самого розробника - шляхом автоматичної заміни символу 0х2 на дефіс.

Repost from Testing Minutes
⚡️ Епізод 51: Що таке тестування? Вже 50 випусків ми говоримо про тестування, в тому чи іншому вигляді. Але що таке тестуванн
⚡️ Епізод 51: Що таке тестування? Вже 50 випусків ми говоримо про тестування, в тому чи іншому вигляді. Але що таке тестування? Чи дійсно тестування це тільки перевірка софту за тест кейсами? Чи це щось ... більше? Як визначають тестування різні організації та люди? Саме на ці питання будуть шукати відповіді ведучі подкасту - Артем та Олександр. Дивитись та слухати: 🔸 Youtube 🔹 Spotify 🔸 Apple Ваша підтримка важлива! Ми постійно розвиваємося і рухаємося вперед, але це неможливо без вашої підтримки. Тому будемо вдячні за лайки, коментарі та будь-яку іншу форму підтримки. Це допоможе нам просувати наші подкасти в рекомендаціях. Також ви можете підтримати нас донатом — це дійсно важливо для нас і є нашим рушієм. Дякуємо вам! Підтримати подкаст можна через 🏦 База від Монобанку або стати спонсором на Youtube #testingminutes | @a_grygorenko | Test Engineering Notes

Practical advice for engineers in these troubled times #engineering #career Невеликий пост з порадами про те, як виживати інженерам в сучасному світі. 1. "Забий на роботу, туси на мітингах, качай тільки софт-скілли, харди нікому не потрібні!". Так працювало в 2010х. Але зараз таких людей звільняють дуже швидко 2. Краще працювати над тими компонентами та продуктами, що реально приносять компанії гроші 3. Вчіть фундаментальну базу - вона залишиться з вами надовше. Бо компанії можуть змінити правила найму дуже швидко. Наприклад - перейти від задачок на LeetCode до розглядання ваших власних проєктів чи open-source активності 4. Концентруйтеся на корисній роботі та зробіть її видимою для команди, для менеджера, для компанії

Augmented Coding: Beyond the Vibes #ai #engineering Kent Beck написав статтю про свій досвід використання AI агентів для написання коду. Якщо більш точно, то він вирішив написати свою версію B+ Tree на Rust 🦀 та на Python🐍. Й порівняти їх потім з нативними реалізаціями. Цікаві результати: 👉 Kent називає свій відхід augmented (змінений) coding на противагу відомому vibe coding. В чому різниця? З vibe кодінгом розробнику важливий тільки результат, а не код. То ж такий розробник просто кидає помилки знову в LLM й сподівається на коректні фікси. З augmented coding розробнику важливий результат та код як такий (його якість, покриття, читабельність). То ж він постійно контролює процес написання коду. 👉 LLM спочатку заплуталася та не змогла реалізувати алгоритм на Rust. Чому? Бо мова програмування непроста та компілятор вельми прискіпливий. Тоді Kent зробив наступне - він виконав задачу на Python, а потім ... попросив LLM транслювати код з Python в Rust. Тоді LLM справився із задачею краще. 👉 LLM також зміг згенерувати порівняльні тести для написаного коду та нативної структури даних. Висновок. Програмування з LLM - все ще програмування. Навички та знання все ще мають цінність. Особливо, коли ви працюєте з нетривіальними проєктами чи мовами програмування.

🚀Важливість технічного знання системи для тест інженера Я вважаю, що сучасний тест інженер повинен мати гарні технічні знання системи. Що таке технічне знання системи? Це архітектура, технології та інтеграції системи. Це не про написання коду, як такого. Якщо точніше, то технічні знання системи це: - технології, на яких написана ваша система - архітектура системи, починаючи з фронта до бекенду разом із базами даних - як комунікують між собою компоненти системи - які дані циркулюють в системі та де вони зберігаються - з якими сторонніми системами ви взаємодієте та яким чином - які варіанти конфігурації існують в системі
Перевірка: якщо ви можете намалювати архітектурну діаграму вашої системи на листку паперу - це вже дуже круто!
Чому треба це все знати? Як ж тестер (автоматизатор), в мене інші задачі! Знання внутрішньої роботи дозволить вам: - розуміти на якому рівні (UI, API) писати ті чи інші тести - писати більш стабільні тести - писати більше реалістичні тести, які перевіряють те, що треба

Важлива навичка при використанні ШІ #ai #books Сьогодні я хочу розповісти про "нову" навичку, яка стає вкрай важливою в сучасному світі. А саме - про вміння ставити запитання. Виявляється, навичка не така вже й нова. Письменники-фантасти задавалися цим питанням ще ... 69 років тому назад! Наведу приклад - оповідання "Дотепник", Айзек Азімов, 1956 рік. Для контексту: в далекому майбутньому винайшли Мультивак - такий собі суперкомпʼютер з ШІ. Він, звичайно, продукував результат на перфокартах - то ж для розшифрування результатів потрібні були аналітики. Але окремо стояли Гроссмейстери - люди, які могли ставити правильні запитання цьому ШІ. Таких людей було дуже й дуже мало. Ось цитата з твору:
"На зорі історії Мультиваку з'ясувалося, що найвідповідальніша ділянка – це постановка питань. Мультивак вирішує проблеми для людства, він може вирішити всі проблеми, якщо... якщо йому ставлять осмислені питання. Але в міру накопичення знань, що відбувалося все інтенсивніше, ставити осмислені питання ставало дедалі важчим. Одного розуму тут мало. Потрібна рідкісна інтуїція; той самий талант (тільки куди яскравіше виражений), яким наділений шаховий гросмейстер. Потрібен розум, який здатний з квадрильйонів шахових ходів відібрати найкращий, причому зробити це за кілька хвилин."
Як думаєте, чи зріс попит на вміння ставити питання з появою усіх цих Chat GPT / Claude / etc ?

🎱Швидкість навчання vs. Новизна інформації #learning Розгляньмо графік. Червоним кольором показано швидкість навчання, а син
🎱Швидкість навчання vs. Новизна інформації #learning Розгляньмо графік. Червоним кольором показано швидкість навчання, а синім - кількість нової для нас інформації. Цей графік показує, що коли ми тільки починаємо свій шлях в новій спеціалізації - ми вчимося повільно. Разом із тим - кількість всього нового та цікавого дуже велика. Хочеться вивчити і те і інше. Навчання повне відкриттів. З часом ми набираємось досвіду- то ж швидкість навчання тепер зростає. Разом із тим зменшується фільтр нової інформації. Ми відкриваємо курс чи книгу й розуміємо, що на 300 сторінок маємо тільки 10-20 сторінок з дійсно свіжою або цікавою для нас інформацією. Решту - можна спокійно пропустити. 🪄Абсолютно нормально вчитися повільніше на початку. Та ще більше нормально - читати й вчити тільки те, що для вас нове.Й пропускати решту. Бо це - про ефективність та розумне використання часу. P.S. А ще з досвідом треба більше часу витрачати на пошук звʼязків між тим, що ти вже знаєш та дрібками нового.

🚀Хто такі Expert Generalists та чому варто ставити такими? #engineering #career Як завжди, Мартін Фаулер задає тренди (як було з мікросервісами) та пише цікаві речі. В свіжій статті він пише про те, куди буде розвиватися інженерна індустрія. 🕶Хто такі Експерти Універсали? Колись було правильно розвиватись виключно в одній спеціалізації та домені. Потім - виникли T-shape спеціалісти, які знали одну річ глибоко, а інші - поверхнево. Фаулер говорить про те, що сучасний розвиток ШІ та технологій в цілому надто швидкий, що обмежувати свою спеціалізацію. То ж потрібно ставати експертами універсалами. З одного боку треба мати глибокі фундаментальні знання. А з іншого - треба вміти вчитися новому дуже швидко (за допомогою вже наявного досвіду). То ж замість однієї спеціалізації, інженер повинен мати декілька (на різному рівні) й вміти помічати базові паттерни роботи систем - незалежно від технології. 💫Характеристики експертів-універсалів 👉 ФУНДАМЕНТАЛЬНІ ЗНАННЯ. Самі ці знання допомагають швидше переходити між доменами, швидше розбиратись в технологіях. Самі ці знання старішають повільніше. 👉 Допитливість. Базова реакція на новий інструмент та технологію в такого інженера - розібратися ЯК ВОНО ПРАЦЮЄ та як цим користуватись ефективно. 👉 Вміння працювати в команді. Вміння вчитися в інших експертів; задавати правильні питання; не боятися визнати, що ти чогось не знаєш 👉 Скромність. Вміння прийняти той факт, що кожен новий домен має відмінності та свої "цікавинки". Та те, що контекст має значення. 👉 Фокус на користувачеві. Кожен новий домен чи технологія оцінюються через призму користі для продукту та користувача. А для цього - треба вивчати своїх користувачів 👉 Вміння дивитись за межі своєї спеціалізації. Працювати над різними задачами, а не тільки тестування, чи бекенд, чи фронтенд. 💼 Для менеджерів Для менеджерів важливо вміти оцінювати таких експертів універсалів на інтервʼю. Замість того, щоб питати всі пункти меню конкретного інструменту - треба дізнатись які проблеми та яким чином вирішував кандидат. Треба дивитися наскільки швидко людина розбирається в чомусь новому та як застосовує вже наявні накопичені знання. Так само треба ставитись до промоушенів. Треба підтримувати людей, які хочуть перейти з однієї спеціалізації в іншу. Чи тих, хто прагне розширити свої навички. 🪄Висновок Звичайно, думки Мартіна Фаулера можуть бути викривлені через специфіку роботи їх компанії. ThoughtWorks це по факту великий аутстаффер з купою замовників. Таким компаніям може бути вкрай вигідно мати людей - універсалів, яких можна швидко перекинути з проєкту на проєкт. Але думка в цілому мені подобається. Вона до того ж переклікається з підходом Modern Testing від Alan Page. А що думаєте ви? Чи варто ставати експертом - універсалом? Чи, може, треба розслабитись - бо нас усіх захопить ШІ?

Найшвидший спосіб знайти голосні в реченні #python Задача: написати функцію, яку перевіряє чи є голосні в рядку.

def has_vowels(s: str) -> bool:
    ...
Можна це зробити багатьма способами. Спосіб 1

def loop_in(s):
    for c in s:
        if c in "aeiouAEIOU":
            return True 
    return False 
Спосіб 2

def set_intersection(s):
    return set(s) & set("aeiouAEIOU")
Спосіб 3

def map_lambda(s):
    return any(map(lambda x: x in "aeiouAEIOU", s))
Але виявляється, що найшвидший спосіб це - регулярні вирази!

import re
def regex(s):
    return bool(re.search(r'[aeiouAEIOU]', s))
Чому? Бо механізм регулярних виразів в Python дуже оптимізований. Більше можна почитати в оригінальній статті.