Test Engineering Notes
описание
Канал про технічні аспекти тестування, розподілені системи, блокчейн, ШІ та перфоманс. Консультації з автоматизації, менторинг, тестові співбесіди - @al8xr
3 988
подписчиков
Охват к подписчикам
38,2%
ERR
Реакции к просмотрам
1,59%
1 364 на 50 постов
Пересылки к просмотрам
1,06%
912
Постов в день
0,1
всего 70
Где отзываются чаще
доля реакций к просмотрам- 13 авг.У четвер, 13.08, на каналі qa семпай відбудеться великий стрім (думаю 3 години мінімум...). Будемо розбиратися, як тестувальникам адаптуватися та зростати в нових реаліях. Як не поїхати кукухою від всього що несеться і встигати розвиватись 📱https://youtube.com/live/ZSWIYsnqcks?feature=share Гості: Олександр Хотемський Рома Марінський Олександр Романов Михайло Чуб Це люди з глибоким досвідом в інженерії, менеджерстві і керуванні відділами тестування. Основні теми для обговорення: Як ми вчилися раніше та що взагалі сьогодні означає "вміти програмувати/тестувати". Як змінюється світова освіта під впливом ШІ Чому "робити все руками" зараз - це працювати так, ніби на дворі 2021 рік, а "делегувати все AI" - прямий шлях до деградації Що це таке AI-навички, як їх свідомо розвивати та як переконливо "продавати" на співбесідах. Як знайти золоту середину між ефективністю ШІ та збереженням глибини технічних знань. Як ефективно вчитися інженеру прямо зараз. Як не поїхати кукухою в такому шаленому темпі розвитку технологій. Як мінімально деградувати, коли використовуєш ШІ в нескінченному потоці робочих задач і не маєш часу докорінно розібратися у фічі. 👉які ще теми або питання щодо ШІ у роботі вас турбують? Докидайте свої ідеї сюди, якщо щось є, і ми додамо їх до обговорення.8,37%
- 3 июн.Консультації, менторинг та підготовка до співбесід #services В ІТ я вже понад 14 років. Автоматизував різні проєкти - від вебу до мобільних застосунків, від ігор до блокчейну. Зараз мій стек - Python / Rust. Також мав справу з Java, Scala та C#. Крім того, час від часу я залучений як технічний інтервʼюер у різних компаніях. Давайте розповім, із чим саме я можу вам допомогти. Підготовка до співбесіди Коли це може бути потрібно: * ви не впевнені, які теми вчити перед співбесідою * маєте страх технічних запитань чи live-coding задач * вам складно презентувати свій досвід * ви думаєте, що нічого не знаєте - спойлер: це зовсім не так! * у вас були невдалі співбесіди, але незрозуміло, чому ви отримали відмову З чим я можу допомогти: проведемо розбір вашого резюме, потренуємося на мок-інтервʼю, розберемо типові запитання для різних компаній. Індивідуальний план розвитку карʼєри Коли це може бути потрібно: * незрозуміло, який у вас зараз рівень і що потрібно знати на позиціях Middle / Senior / Lead * хочеться вивчити багато тем, але немає часу та системи * складно пріоритезувати теми для навчання й тримати фокус * незрозуміло, як практикувати отримані навички З чим я можу допомогти: зробимо аналіз ваших поточних навичок, а також пробілів у знаннях і вміннях; створимо індивідуальний план розвитку вас як спеціаліста під вашу конкретну ціль, як-от отримати нову цікавішу роботу або підвищення всередині компанії. Подальший шлях ви обираєте самі: самостійний розвиток або індивідуальний менторинг зі мною. Консультації з автоматизації тестування та інших аспектів тестування Коли це може бути потрібно: * немає розуміння, з чого почати автоматизацію на проєкті * тести є, але вони нестабільні, на них ніхто не дивиться й вони нікому не потрібні * складно обрати інструменти та стек для автоматизації * користі від автоматизації мало, але часу вона займає дуже багато * не знаєте, як краще організувати процес тестування на складних проєктах із багатьма підсистемами З чим я можу допомогти: зробимо аналіз системи, команди та інструментів; продумаємо найкращу стратегію автоматизації, яка працюватиме саме у вашому контексті. Якщо маєте питання або хочете домовитися про дзвінок — пишіть у директ чи @al8xr. Завжди радий допомогти.3,16%
- 15 маябез подписи2,89%
- 3 авг.Різниця між Testing та Checking #testing В своїй книзі "Taking Testing Seriously" James Bach та Michael Bolton розповідають чим тестування (testing) відрізняється від перевірки (checking). Тестування - це процес оцінки продукту шляхом його вивчення через досвід, дослідження та проведенням експериментів з ним. Перевірка – це механістичний процес перевірки тверджень про продукт. Перевірки - треба автоматизувати. Тестування автоматизувати дуже складно.2,87%
- 25 маябез подписи2,82%
- 5 янв.🔬Фантастичні “інженери якості” та де їх знайти #testing Спочатку були тестери, що із часом зросли в QA. Потім - автоматизатори тестування. Згодом вони трансформувались в СДЕТів (software developer in test). В межах України виникли окремі цікаві “мутації” - такі як General QA. В західних спільнотах, таких як Ministry of Testing, ви не знайдете генералів. Але десь з 2024 - 2025 років почали згадуватись нові “фантастичні звірі” - Quality Engineer. Здається … “це ж було вже!” Люди почали писати цілі статті чи виступати з доповідями про те, хто такі ці інженери якості та як вони відрізняються від того, що ми мали. (Й міксувати все з ШІ, як же без цього). Я вирішив трохи покопатись в цих матеріалах й зʼясувати, хто ж такі ці інженери якості. Хто такі інженери якості? Дехто вважає, що інженери якості виникли, коли тестери стали “погано продаватись”. Software Engineer звучить гордо, а tester … це взагалі прилад. То ж в деяких компаніях вирішили змінити назву на Quality Engineer. Що самі тестувальники говорять? 👉 Komal Chowdhary вважає, що у тестера вузький фокус саме не тестуванні окремої фічі чи окремого продукту. Інженер з якості має ширший фокус на всьому процесі розробки й відповідальний за якість усієї системи: включно з процесами, стандартами та інструментами. 👉Cassandra H. Leung вважає, що тестер зосереджується на виявленні корисної інформації, коли інженер з якості не просто виявляє, й рухає інформацію нагору й використовує її для покращення. 👉Nick Baynham навпаки каже, що інженер з якості ніяк не відрізняється від тестера. Це просто назва позиції в конкретній компанії. Stefan Papusoi також згоден з ним та зазначає, що в деяких місцях інженер з якості - це просто автоматизатор. Але усі погоджуються, що щоб бути хорошим інженером з якості, треба насамперед бути хорошим тестувальником. Що ми маємо по факту? Коли я почув про інженерів якості, то одразу згадав, що саме так називали людей із тайтлом Quality Assurance. Вони якраз були відповідальні не просто за тестування, а за щось глобальніше. Але QA стало немодно, то ж вигадали щось інше. Можливо саме через те, що software engineer - це “справжні” інженери, що приносять результат, а QA - не зрозуміло хто такі (для менеджменту). Можливо ще й тому, що забезпечення якості це вкрай великий пласт роботи - в більшості випадків на рівні QA Management та й вище. Особисто мені, позиція Quality Engineer подобається більше ніж General QA. Бо інженер - це людина, яка робить свою роботу за допомогою цілого набору інструментів. Автоматизація - лише один з інструментів. Але як із будь-яким тайтлом - кожна компанія має свої власні очікувані та бачення Quality Engineer. А інколи - немає ніяких очікувань … Чи є серед вас люди із тайтлом “Quality Engineer”? Чим ви займаєтесь, крім тестування?2,76%
- 4 авг.Огляд книги: "Taking Testing Seriously: The Rapid Software Testing Approach" #books #testing Сьогодні вівторок, а значить час для нового огляду книжки з тестування. Цього разу - книга від "дідів" в тестуванні - Джеймса Баха та Майкла Болтона. В книзі можна знайти майже все - від філософії тестування, до ШІ, автоматизації та signal-based testing.2,70%
- 12 нояб.📖 Taking Testing Seriously - Огляд 2 #testing #books #takingtestingseriously Попередні огляди: 1 Продовжуємо огляд книги Джеймса Баха та Майкла Болтона. Сьогодні я коротко розповім про вам про розділ 2 під назвою "Foundation" 💡Що таке тестування (згідно з авторами книги)? Тестування - процес оцінки продукту шляхом вивчення його через досвід, дослідження та експериментування з ним. Ключове тут саме "оцінка .. через вивчення". Тестувальник збирає докази під час тестування, фільтрує їх та конструює історію про те, що сталося та що це означає. Тестування включає в себе багато процесів: моделювання, опитування, вивчення, вибірка, спостереження, розуміння та розповідь історій. В методології "Rapid Software Testing" існує різниця між тестуванням (testing) та перевіркою (checking). Тестування може зробити тільки досвідчена людина. Перевірку - може зробити машина. Можна провести паралель із програмуванням та компілюванням. Програмують люди, а машина потім компілює код. Доречі - не існує ручного чи автоматизованого програмування. Є програмування (із застосуванням інструментів). Як тільки інструмент працює достатньо надійно - це не називають програмуванням. Називають компіляцією, статичним аналізатором коду, тощо. Так само є тестування із застосуванням інструментів. А є - автоматизовані перевірки. Автори розділяють тестування та перевірку тому, що не існує "автоматизованого тестування". Чи значить що з ШІ програмісти стануть не потрібні? Відповідь - ні, бо ШІ не несе відповідальності за код, який згенерувало. Це задача програміста інтегрувати та перевірити код, що написаний машиною. 🎭 Різниця між тестуванням та виконанням тесту Автори відмічають, що тест - це зустріч із продуктом, що становить тільки один з епізодів тестування. А також: Тест - це наче сценарій пʼєси, що написав драматург. Тестування - це те, що роблять актори на сцені. Виконати тест означає налаштувати систему, керувати нею, спостерігати та оцінювати продукт певним чином, в певний час. Тестування ж включає ще підготовку до тестів, комунікацію з людьми. На цьому все. До зустрічі в наступному пості.2,59%
- 10 апр.😱 Як ми пропускаємо баги через наші припущення #testing #criticalthinking Тестування здається дуже простим заняттям. Ось тобі специфікація, ось продукт - просто перевір відповідність одного до іншого! Але коли інженер проводить тестування, він чи вона працює не лише з оракулами та тест-кейсами. Тестування багато в чому залежить від ваших припущень щодо продукту. Що це таке та як це може вплинути на процес тестування - поговоримо сьогодні. 🤔 Що таке припущення та нащо їх аналізувати? Припущення - це неперевірене переконання, що впливає на те, як ви тестуєте. Аналіз припущень - це процес визначення, тестування та поставлення під сумнів всього, від чого система може залежати - явно чи неявно. Кожна система, кожен продукт побудовані на купі припущень - про дані, середовище, час, користувачів, інші системи. У момент, коли припущення порушується, з’являються ті самі помилки й баги. Припущення небезпечні, бо вони часто неявні, невидимі й перебувають поза зоною специфікацій. Ваше завдання при роботі із ними - перетворити твердження “Ця фіча працює” у щось, типу “Це працює тоді й тільки тоді, коли ось такі припущення виконуються”. У голові розробника, який пише код, вирує багато питань. Одне з них: “Ця функція повинна завжди повертати таке значення”. Тестувальник же повинен починати з питання: “А що, якщо … не завжди?” 📔 Які бувають припущення • Припущення щодо даних. У роботі часто можна почути: “Вхідні дані завжди будуть типу Х чи формату У”. У реальності ж дані можуть бути порожніми (NULL, порожній масив) чи навіть неочікуваного типу. • Припущення щодо середовища. Продукт не працює у вакуумі. Саме тому ніколи не можна сказати, що середовище буде “нормальним”. Мережа завжди може бути нестабільною; пакети та підключення можуть втрачатися; трапляються збої. Тож потрібно тестувати поведінку системи в таких умовах. • Припущення щодо часу та порядку. “За івентом покупки завжди прилітає івент оплати”. В реальності події можуть приходити одночасно, або в зовсім іншому порядку. Системи працюють асинхронно. Деякі функції потребують часу для виконання. Що тестувати? Паралельні івенти, затримки у отриманні, повторні спроби обробки. • Припущення щодо інших систем. Інші системи поза зоною нашого контролю. Вони можуть відповідати частково або ж зовсім не відповідати. Вони можуть змінювати формати та версії. Треба бути до цього готовими (та, можливо, додавати контрактні тести) • Припущення щодо поведінки користувачів. Користувачі не завжди поводяться логічно. Користувачі можуть робити речі навмисно. Тож треба тестувати неочікувані сценарії та безпеку • Припущення щодо масштабування. У реальності сплески в навантаженні можуть траплятися не лише на свята. Вихід нових фіч, голосування на Євробачення, збір лимонів - все це вимагає тестування перформансу вашого продукту. • Припущення щодо ШІ. Ми припускаємо, що ШІ завжди буде працювати правильно, деградації якості відповідей не виникне ніколи. Але в реальності - нові версії LLM виходять майже кожного дня. А те, як вони будуть працювати саме із вашими даними - окреме велике питання. Можливо краще, а можливо - навпаки. 🛠 Як працювати із припущеннями Як тестувати припущення? Знайдіть припущення та сформулюйте його. Далі - спробуйте порушити припущення. Додайте тестів, які перевірять поведінку системи при такому порушенні. Можна застосувати такі техніки: • Storming. Що завжди має бути дійсним? Що ми усвідомлено НЕ перевіряємо? Що ми сприймаємо як належне? • “What If”. (Що якщо). Що якщо цей компонент не буде доступний? Що якщо респонс прийде пустий? Що якщо база буде відповідати повільно? • Замість “Як це працює” замисліться про те “Як це може зламатись” 💡 Завжди памʼятайте • Всі системи можуть зламатись, коли припущення порушені • Будь-який happy path сценарій - сповнений купи припущень. Вам тільки треба їх знайти • Тестовання edge cases - це і є перевірка припущень2,37%
- 13 нояб.🧰Проблеми з ШІ інструментами з точки зору інженера - Частина 1 #testing #engineering #ai ШІ повсюди. ШІ вже тут. Стережися ШІ! Останній рік (чи може трохи більше) помічаю ажіотаж з використання ШІ. ⚡️ Лідери думок говорять на конференціях, що ШІ вже тут та забере наші робочі місця ⚡️ Менеджмент давить на лідів, щоб вони скоріш впроваджували ШІ де тільки можна ⚡️ Курси пропонують “чарівні” таблетки для тестувальників у вигляді підбірки промтів на всі випадки життя ⚡️ Деякі блогери пропагують вайб кодинг - як майбутнє програмування й тестування ❓Але постає питання - а чи дійсно ШІ є тією чарівною пігулкою, що зробить вашу роботи тестувальника чи автоматизатора набагато легше? Чи дійсно ШІ допоможе стати більш ефективним? 🎓Чому мені то цікаво? Мої колеги та знайомі користуються ШІ кожного дня. Я сам користуюся ChatGPT, Claude, Perplexity, Gemini, Cursor. Пробував також Github Copilot. Але я відношуся до цих інструментів з долею скептицизму. Бо будь-яка технічна магія, яку ми, як тест інженери, не розуміємо, може призвести до великих проблем в продукті. До того ж - треба вміти користуватися тими інструментами ефективно. 💡 Що таке вайб кодинг? Вайб кодинг — це дослідницький підхід до розробки програмного забезпечення, що орієнтований на підказки, де розробники швидко генерують підказки, отримують код та виконують ітерації. Гарно вайб кодити - це як вміти правильно просити побажання у лепрекона, де як би точно ви не намагалися описати та виправити прохання, результат ніколи не буває зовсім правильним. Але чим більше розробник вайбкодить - тим більше зростає ризик, що він не перевірить результать ШІ та й зафігачить купу “наче працюючого” коду в мастер гілку. 🕶Проблеми з вайб кодингом та сучасними ШІ (LLM-ками) Але сила вайб кодингу приходить із відповідальність (а точніше із проблемами ШІ): 👉 Галюцинації. ШІ генерує купу коду, який гарно виглядає, але не факт, що правильно працює. ШІ доволі легко може згенерувати тести на неіснуючі ендпоінти. Або ж зробити ці тести “зеленими” просто прибравши assertʼи. 👉 Надмірна впевненість. Девелопер з часом сприймає будь-які результати ШІ як правильні. Цим грішать навіть досвідчені інженери. 👉 Цикли перефразування. Коли інженер модифікує промт для досягнення кращого результату від ШІ. А ШІ генерує одні й тіж шматки коду та рішення (можливо виражені іншим чином) Крім того, коли ШІ генерує багато коду, а менш досвідчена людина додає цей код в проєкт - виростають ризики появи дублікатів, поганої інтеграції та абстракції без міри. Але це ще не всі проблеми. Бо є парадокс когнітивного спрощення. Що це таке - вже в наступному пості.2,34%
- 9 апр.🤔 Наскільки надійні ваші очікування? #testing #criticalthinking Отже, вам треба тестувати, а значить, треба порівняти очікуваний результат з поточним. Зазвичай очікуваний результат прописаний в самому тесті (чи в чеклисті). Але коли ми створюємо тести самостійно - треба визначити цей очікуваний результат. Але як? Допоможуть оракули. Оракул - це джерело, завдяки якому ми можемо визначити, чи коректна поведінка системи, чи ні. Окей, я відкрию специфікацію та візьму очікуваний результат звідти! Якби ж то було так просто! Не такі прості, як здається Дуже невелика кількість тестувальників сьогодні тестує прості й тривіальні проєкти на одну сторінку. Як правило, ми тестуємо великі й складні системи. Подекуди - розподілені. В складних системах часто дуже складно однозначно визначити коректний очікуваний результат. Чому? 👉 Система може включати компоненти с AI / ML, які мають ймовірнісну природу (не дають одної правильної відповіді) 👉 Коректна відповідь може залежати від рішення більшості учасників, як-от в блокчейнах 👉 Система може мати остаточну узгодженість (eventual consistency) - тож зміни в базі даних можуть бути недоступні усім користувачам одразу (але, можливо, колись, у майбутньому будуть доступні). Головна проблема оракулів - що не існує ідеального оракула. Треба їх комбінувати (разом із здоровим глуздом). Що комбінувати? Які бувають оракули? 🧪 Оракулів може й не бути. Тестування й розробка ведуться в стилі "виглядає нічо так, деплой!" Як результат - може бути купа схованих багів та проблем. А може й не бути. 🧪 Вимоги. Священна книга усіх тестувальників. Єдина й неповторна. Як там сказано - то є правда. Але справжні тестувальники знають, що вимоги можуть бути неповними, неправильними та й взагалі застарілими. В такому випадку не забуваємо задавати собі питання: "А ця специфікація взагалі коректна?" 🧪 Консистентність (узгодженість). Можна порівняти поточні результати із подібними в інших компонентах. Або ж замість вимог можна мати інваріанти - тобто опис властивостей системи, які повинні завжди виконуватися. Наприклад - "Баланс не може бути негативним" або "Користувач завжди має імʼя та прізвище". 🧪 Статистичні оракули. Базуються на статистиці вашого домену чи типу аплікації. Окей, оракулів багато, вони ненадійні. Що робити? Питання для підозрілого тестувальника Коли ви визначаєте очікуваний результат, можна задати собі (й команді) наступні питання: 💡Що означає коректний результат в контексті вашої системи? Числовий, логічний, ймовірний? 💡На яких припущеннях побудований оракул? Наприклад - "за правильними даними йдіть у базу даних". Але якщо база даних - застаріла чи пошкоджена? 💡Які властивості системи чи атрибути якості непокриті оракулом? Може, ви забули про безпеку, перформанс, доступність? 💡Наскільки надійний сам оракул? Яка ймовірність? На чому будується ваша довіра? Завжди памʼятайте: оракули ненадійні, ба більше - коректність оракулів може залежати від контексту. Обґрунтовано сумніватися - це робота тестувальника.2,28%
- 11 нояб.📹 Як обрати собі школу тестування #testing #video 🏫 Вчора, в огляді на книгу Баха й Болтона, я згадав такі штуки, як школи тестування. То ж сьогодні хочу поділитись відео своєї доповіді з конференції QADay, де я розповідаю саме про цю тему. ❗️І так, ЦЕ НЕ ПРО КУРСИ 😀2,27%