Важлива навичка при використанні ШІ
#ai #books
Сьогодні я хочу розповісти про "нову" навичку, яка стає вкрай важливою в сучасному світі. А саме - про вміння ставити запитання.
Виявляється, навичка не така вже й нова. Письменники-фантасти задавалися цим питанням ще ... 69 років тому назад! Наведу приклад - оповідання "Дотепник", Айзек Азімов, 1956 рік.
Для контексту: в далекому майбутньому винайшли Мультивак - такий собі суперкомпʼютер з ШІ. Він, звичайно, продукував результат на перфокартах - то ж для розшифрування результатів потрібні були аналітики. Але окремо стояли Гроссмейстери - люди, які могли ставити правильні запитання цьому ШІ. Таких людей було дуже й дуже мало.
Ось цитата з твору:
Як думаєте, чи зріс попит на вміння ставити питання з появою усіх цих Chat GPT / Claude / etc ?
#ai #books
Сьогодні я хочу розповісти про "нову" навичку, яка стає вкрай важливою в сучасному світі. А саме - про вміння ставити запитання.
Виявляється, навичка не така вже й нова. Письменники-фантасти задавалися цим питанням ще ... 69 років тому назад! Наведу приклад - оповідання "Дотепник", Айзек Азімов, 1956 рік.
Для контексту: в далекому майбутньому винайшли Мультивак - такий собі суперкомпʼютер з ШІ. Він, звичайно, продукував результат на перфокартах - то ж для розшифрування результатів потрібні були аналітики. Але окремо стояли Гроссмейстери - люди, які могли ставити правильні запитання цьому ШІ. Таких людей було дуже й дуже мало.
Ось цитата з твору:
"На зорі історії Мультиваку з'ясувалося, що найвідповідальніша ділянка – це постановка питань. Мультивак вирішує проблеми для людства, він може вирішити всі проблеми, якщо... якщо йому ставлять осмислені питання. Але в міру накопичення знань, що відбувалося все інтенсивніше, ставити осмислені питання ставало дедалі важчим.
Одного розуму тут мало. Потрібна рідкісна інтуїція; той самий талант (тільки куди яскравіше виражений), яким наділений шаховий гросмейстер. Потрібен розум, який здатний з квадрильйонів шахових ходів відібрати найкращий, причому зробити це за кілька хвилин."
Як думаєте, чи зріс попит на вміння ставити питання з появою усіх цих Chat GPT / Claude / etc ?
👍34
🚀Важливість технічного знання системи для тест інженера
Я вважаю, що сучасний тест інженер повинен мати гарні технічні знання системи.
Що таке технічне знання системи? Це архітектура, технології та інтеграції системи. Це не про написання коду, як такого.
Якщо точніше, то технічні знання системи це:
- технології, на яких написана ваша система
- архітектура системи, починаючи з фронта до бекенду разом із базами даних
- як комунікують між собою компоненти системи
- які дані циркулюють в системі та де вони зберігаються
- з якими сторонніми системами ви взаємодієте та яким чином
- які варіанти конфігурації існують в системі
Чому треба це все знати? Як ж тестер (автоматизатор), в мене інші задачі!
Знання внутрішньої роботи дозволить вам:
- розуміти на якому рівні (UI, API) писати ті чи інші тести
- писати більш стабільні тести
- писати більше реалістичні тести, які перевіряють те, що треба
Я вважаю, що сучасний тест інженер повинен мати гарні технічні знання системи.
Що таке технічне знання системи? Це архітектура, технології та інтеграції системи. Це не про написання коду, як такого.
Якщо точніше, то технічні знання системи це:
- технології, на яких написана ваша система
- архітектура системи, починаючи з фронта до бекенду разом із базами даних
- як комунікують між собою компоненти системи
- які дані циркулюють в системі та де вони зберігаються
- з якими сторонніми системами ви взаємодієте та яким чином
- які варіанти конфігурації існують в системі
Перевірка: якщо ви можете намалювати архітектурну діаграму вашої системи на листку паперу - це вже дуже круто!
Чому треба це все знати? Як ж тестер (автоматизатор), в мене інші задачі!
Знання внутрішньої роботи дозволить вам:
- розуміти на якому рівні (UI, API) писати ті чи інші тести
- писати більш стабільні тести
- писати більше реалістичні тести, які перевіряють те, що треба
👍24❤2💯1
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 - все ще програмування. Навички та знання все ще мають цінність. Особливо, коли ви працюєте з нетривіальними проєктами чи мовами програмування.
#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 - все ще програмування. Навички та знання все ще мають цінність. Особливо, коли ви працюєте з нетривіальними проєктами чи мовами програмування.
Substack
Augmented Coding: Beyond the Vibes
Notes from a technically challenging project
👍24🍓1
Practical advice for engineers in these troubled times
#engineering #career
Невеликий пост з порадами про те, як виживати інженерам в сучасному світі.
1. "Забий на роботу, туси на мітингах, качай тільки софт-скілли, харди нікому не потрібні!". Так працювало в 2010х. Але зараз таких людей звільняють дуже швидко
2. Краще працювати над тими компонентами та продуктами, що реально приносять компанії гроші
3. Вчіть фундаментальну базу - вона залишиться з вами надовше. Бо компанії можуть змінити правила найму дуже швидко. Наприклад - перейти від задачок на LeetCode до розглядання ваших власних проєктів чи open-source активності
4. Концентруйтеся на корисній роботі та зробіть її видимою для команди, для менеджера, для компанії
#engineering #career
Невеликий пост з порадами про те, як виживати інженерам в сучасному світі.
1. "Забий на роботу, туси на мітингах, качай тільки софт-скілли, харди нікому не потрібні!". Так працювало в 2010х. Але зараз таких людей звільняють дуже швидко
2. Краще працювати над тими компонентами та продуктами, що реально приносять компанії гроші
3. Вчіть фундаментальну базу - вона залишиться з вами надовше. Бо компанії можуть змінити правила найму дуже швидко. Наприклад - перейти від задачок на LeetCode до розглядання ваших власних проєктів чи open-source активності
4. Концентруйтеся на корисній роботі та зробіть її видимою для команди, для менеджера, для компанії
Seangoedecke
Practical advice for engineers in these troubled times
Since 2023, the rise of interest rates has caused a sea change in how software companies relate to their engineers. It’s harder to be a software engineer now…
👏13👍5❤2
Forwarded from Testing Minutes (Oleksandr Romanov)
⚡️ Епізод 51: Що таке тестування?
Вже 50 випусків ми говоримо про тестування, в тому чи іншому вигляді. Але що таке тестування? Чи дійсно тестування це тільки перевірка софту за тест кейсами? Чи це щось ... більше? Як визначають тестування різні організації та люди? Саме на ці питання будуть шукати відповіді ведучі подкасту - Артем та Олександр.
Дивитись та слухати:
🔸 Youtube
🔹 Spotify
🔸 Apple
Ваша підтримка важлива!
Ми постійно розвиваємося і рухаємося вперед, але це неможливо без вашої підтримки. Тому будемо вдячні за лайки, коментарі та будь-яку іншу форму підтримки. Це допоможе нам просувати наші подкасти в рекомендаціях. Також ви можете підтримати нас донатом — це дійсно важливо для нас і є нашим рушієм.
Дякуємо вам!
Підтримати подкаст можна через 🏦 База від Монобанку або стати спонсором на Youtube
#testingminutes | @a_grygorenko | Test Engineering Notes
Вже 50 випусків ми говоримо про тестування, в тому чи іншому вигляді. Але що таке тестування? Чи дійсно тестування це тільки перевірка софту за тест кейсами? Чи це щось ... більше? Як визначають тестування різні організації та люди? Саме на ці питання будуть шукати відповіді ведучі подкасту - Артем та Олександр.
Дивитись та слухати:
🔸 Youtube
🔹 Spotify
🔸 Apple
Ваша підтримка важлива!
Ми постійно розвиваємося і рухаємося вперед, але це неможливо без вашої підтримки. Тому будемо вдячні за лайки, коментарі та будь-яку іншу форму підтримки. Це допоможе нам просувати наші подкасти в рекомендаціях. Також ви можете підтримати нас донатом — це дійсно важливо для нас і є нашим рушієм.
Дякуємо вам!
Підтримати подкаст можна через 🏦 База від Монобанку або стати спонсором на Youtube
#testingminutes | @a_grygorenko | Test Engineering Notes
👍11❤7
The most mysterious bug I solved at work
#bug
Пропоную до вашої уваги історію про вельми цікавий баг. Історію в своєму блозі розповів Cadence Ember.
Про систему
Одного разу Cadence працював кимось між розробником, тестувальником та сапортом. Продукт, над яким він працював був типу Patient Management Software. В цьому софті лікар міг створити електронне направлення до іншого лікаря. Частину даних про паціента отримували зі сторонніх систем - то ж лікарю треба було тільки заповнити декілька полів у формі, згенерувати у форматах HL7, XML чи PDF та відправити.
Про баг
Раз на два - чотири тижні, система кидала помилку на етапі відправки електронного відправлення:
Зазвичай, фіксити таку помилку можна було SQL скриптом, що видаляв "\u0002" із бази даних. Але Cadence вирішив знайти першопричину проблеми.
У пошуках відповідей
Що значить символ 0х2? Як ви знаєте, кожна літера тексту представлена числом у компʼютері. Числа нижче 31 використовуються для невидимих "керуючих символів". Керуючі символи були важливі в часи телетайпів - коли символи передавались одним потоком й треба було розрізняти розмітку тексту. Символ 0х2 - це початок тексту, а 0х3 - кінець тексту.
Провівши свої дослідження ще більше, Cadence зрозумів, що символ 0х2 чомусь виникає в кінці першого рядка тексту:
Тобто дефіс чомусь перетворюється на символ 0х2!
В чому була проблема
Виявляється, браузери та програми працюють з PDF текстами по різному. Автор спробував працювати з PDF з текстом з дефісами в Google Chrome, Mozilla Firefox, Microsoft Edge та Acrobat Reader.
Й саме браузер Edge перетворював дефіс на символ 0х2 ... коли скопіювати текст з PDF файлу відкритого в браузері в систему створення лікарських направлень.
Як пофіксили? Помилку виправили на стороні продукту самого розробника - шляхом автоматичної заміни символу 0х2 на дефіс.
#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 на дефіс.
👍23🤯5🔥1
Testability and Cost of Change
#testability #bugs
Знайшов доволі стару, але цікаву статтю про те, як в різний час в різних компаніях й процесах комунікують ціну виправлення помилок.
Все починається аж в 1976 році в журналі IEEE, коли Barry Boehm вперше задав питання про важливість фіксу помилок. Свою думку він згодом закріпив у книзі "Software Engineering Economics" (1981).
Цікаве питання: якщо з часом виправляти помилки стає дорожче, то й відповідно робити зміни у функціоналі стає так само складно й дорого? Як думаєте?
#testability #bugs
Знайшов доволі стару, але цікаву статтю про те, як в різний час в різних компаніях й процесах комунікують ціну виправлення помилок.
Все починається аж в 1976 році в журналі IEEE, коли Barry Boehm вперше задав питання про важливість фіксу помилок. Свою думку він згодом закріпив у книзі "Software Engineering Economics" (1981).
Цікаве питання: якщо з часом виправляти помилки стає дорожче, то й відповідно робити зміни у функціоналі стає так само складно й дорого? Як думаєте?
👍13❤1🤔1
🧪Про науковий метод й дослідницьке тестування
#testing
Побачив я якось пояснення наукового методу в книжці. Мені одразу спало на думку, що цей метод має багато спільного із тестуванням (особливо exploratory).
👉 Question. В тестуванні ми також вирішуємо ЩО САМЕ тестувати.
👉 Hypothesis. Ми формуємо гіпотези про поведінку продукту, які перевіряємо.
👉 Experiment and analyze data. Ми тестуємо та аналізуємо отримані результати.
👉 Refine. Ми робимо retesting, якщо треба перевірити нову гіпотезу чи білд.
👉 Peer-review. Ревʼю тестів, багів та код-ревʼю від колег.
Додаткова вимога, як до тестування так і до наукових дослідів - це відтворюваність результатів експерименту (тесту).
🚀То ж коли ми тестуємо, ми, як науковці, ставимо експерименти та доводимо правдивість (чи хибність) наших гіпотез.
#testing
Побачив я якось пояснення наукового методу в книжці. Мені одразу спало на думку, що цей метод має багато спільного із тестуванням (особливо exploratory).
👉 Question. В тестуванні ми також вирішуємо ЩО САМЕ тестувати.
👉 Hypothesis. Ми формуємо гіпотези про поведінку продукту, які перевіряємо.
👉 Experiment and analyze data. Ми тестуємо та аналізуємо отримані результати.
👉 Refine. Ми робимо retesting, якщо треба перевірити нову гіпотезу чи білд.
👉 Peer-review. Ревʼю тестів, багів та код-ревʼю від колег.
Додаткова вимога, як до тестування так і до наукових дослідів - це відтворюваність результатів експерименту (тесту).
🚀То ж коли ми тестуємо, ми, як науковці, ставимо експерименти та доводимо правдивість (чи хибність) наших гіпотез.
❤18🔥11👍8
📚 Несподівана знахідка зі світу тестування
#testing #books
Не так давно я розповідав про навчання. Хоча зараз я не так тісно повʼязаний із тестуванням, мені завжди цікаво шукати цікаві теми та підходи у світі якості. То ж я читаю й проглядаю книжки з тестування.
Деякі книжки хороші для новачків. Деякі - безнадійно застарілі й містять мало нового. Наприклад, "Mobile Testing" Рекса Блека хоч й цінна його коментарями підходів та інструментів, але нічого кардинально нового не дає. Книга від Daniel Knott більш практична.
😱Але деякі книжки виявляються справжньою несподіванкою (в хорошому сенсі). Яскравий приклад - це "Foundations of Software Testing" від Aditya P. Mathur.
Наче книга - з основ тестування. Але глибина матеріалу мене приємно вразила. Теми й приклади книги більш хардкорні, ніж у відомій "Advanced Software Testing - Vol. 1" (не ту книгу назвали Advanced 😀).
🕶 Як дочитаю - з мене огляд!
P.S. Для тих, хто не любить читати, можна подивитись архів слайдів на основі книги . (Всього 722 слайди!)
#testing #books
Не так давно я розповідав про навчання. Хоча зараз я не так тісно повʼязаний із тестуванням, мені завжди цікаво шукати цікаві теми та підходи у світі якості. То ж я читаю й проглядаю книжки з тестування.
Деякі книжки хороші для новачків. Деякі - безнадійно застарілі й містять мало нового. Наприклад, "Mobile Testing" Рекса Блека хоч й цінна його коментарями підходів та інструментів, але нічого кардинально нового не дає. Книга від Daniel Knott більш практична.
😱Але деякі книжки виявляються справжньою несподіванкою (в хорошому сенсі). Яскравий приклад - це "Foundations of Software Testing" від Aditya P. Mathur.
Наче книга - з основ тестування. Але глибина матеріалу мене приємно вразила. Теми й приклади книги більш хардкорні, ніж у відомій "Advanced Software Testing - Vol. 1" (не ту книгу назвали Advanced 😀).
🕶 Як дочитаю - з мене огляд!
❤🔥24❤11
The Problem with Time & Timezones
#engineering
Уявіть. Прилітає задача "напишіть фічу, яка дозволяє порахувати час між двома обраними датами". Але треба порахувати точно, до секунди.
Наче задача виглядає просто. Чи не так?
У цьому короткому відео дуже гарно пояснюють, чому програмувати (та й тестувати) задачі звʼязані із часом та часовими зонами - то вельми складна задача.
#engineering
Уявіть. Прилітає задача "напишіть фічу, яка дозволяє порахувати час між двома обраними датами". Але треба порахувати точно, до секунди.
Наче задача виглядає просто. Чи не так?
У цьому короткому відео дуже гарно пояснюють, чому програмувати (та й тестувати) задачі звʼязані із часом та часовими зонами - то вельми складна задача.
YouTube
The Problem with Time & Timezones - Computerphile
A web app that works out how many seconds ago something happened. How hard can coding that be? Tom Scott explains how time twists and turns like a twisty-turny thing. It's not to be trifled with!
A Universe of Triangles: http://www.youtube.com/watch?v=KdyvizaygyY…
A Universe of Triangles: http://www.youtube.com/watch?v=KdyvizaygyY…
1👍19
🚀Що робити, коли ШІ хайп навкруги
#ai
Компанії масово впроваджують ШІ там де треба й не треба. Люди все більше використовують та пропагують vibe coding - як єдиний шлях розробки.
А потім відбуваються такі ситуації, як на картинці.
😱Що сталося?
ШІ агент Replit проігнорував усі промпти та ... видалив продакшен базу даних.
Більше того - ШІ збрехав, що не робив цього. Плюс - ШІ також сказав, що усі юніт тести зелені (збрехав вдруге).
Цікаво. а як часто тестувальники говорять менеджерам, що усі тести зелені перед релізом? 😀
🔮Що ж робити?
Користуватися будь-якими ШІ інструментами у форматі "VIBE BUT VERIFY". Та ніколи не давати доступів до продакшену!
Думаю, таких помилок буде ще багато - бо ШІ зараз використують у багатьох місцях.
🕶А можливо, треба ставати "AI Fixer" - тобто людиною, яка за багато грошей буде допомагати розгрібати весь той бедлам, що накоїв ШІ та люди без досвіду.
То ж професійний досвід все ще в ціні.
#ai
Компанії масово впроваджують ШІ там де треба й не треба. Люди все більше використовують та пропагують vibe coding - як єдиний шлях розробки.
А потім відбуваються такі ситуації, як на картинці.
😱Що сталося?
ШІ агент Replit проігнорував усі промпти та ... видалив продакшен базу даних.
Більше того - ШІ збрехав, що не робив цього. Плюс - ШІ також сказав, що усі юніт тести зелені (збрехав вдруге).
Цікаво. а як часто тестувальники говорять менеджерам, що усі тести зелені перед релізом? 😀
🔮Що ж робити?
Користуватися будь-якими ШІ інструментами у форматі "VIBE BUT VERIFY". Та ніколи не давати доступів до продакшену!
Думаю, таких помилок буде ще багато - бо ШІ зараз використують у багатьох місцях.
🕶А можливо, треба ставати "AI Fixer" - тобто людиною, яка за багато грошей буде допомагати розгрібати весь той бедлам, що накоїв ШІ та люди без досвіду.
То ж професійний досвід все ще в ціні.
👍33🔥3
Forwarded from Testing Minutes (Oleksandr Romanov)
⚡️ Епізод 52: про Upwork та фриланс в QA разом із Інною Двойніковою
Чи чули ви про фриланс? Чи, можливо, думали спробувати? Чи справді фриланс - то про свободу та "вільне плавання" для спеціаліста? Якими повинні бути перші кроки на Upwork? Як шукати клієнтів та які спеціалісти зараз "в тренді"? Чи реально на фрилансі отримувати гідну компенсацію? Про все це, Артем та Олександр, будуть дізнаватись у Інни Двойнікової в новому епізоду подкасту!
Дивитись та слухати:
🔸 Youtube
🔹 Spotify
🔸 Apple
Ваша підтримка важлива!
Ми постійно розвиваємося і рухаємося вперед, але це неможливо без вашої підтримки. Тому будемо вдячні за лайки, коментарі та будь-яку іншу форму підтримки. Це допоможе нам просувати наші подкасти в рекомендаціях. Також ви можете підтримати нас донатом — це дійсно важливо для нас і є нашим рушієм.
Дякуємо вам!
Підтримати подкаст можна через: 🏦 База від Монобанку
#testingminutes | @a_grygorenko | Test Engineering Notes
Чи чули ви про фриланс? Чи, можливо, думали спробувати? Чи справді фриланс - то про свободу та "вільне плавання" для спеціаліста? Якими повинні бути перші кроки на Upwork? Як шукати клієнтів та які спеціалісти зараз "в тренді"? Чи реально на фрилансі отримувати гідну компенсацію? Про все це, Артем та Олександр, будуть дізнаватись у Інни Двойнікової в новому епізоду подкасту!
Дивитись та слухати:
🔸 Youtube
🔹 Spotify
🔸 Apple
Ваша підтримка важлива!
Ми постійно розвиваємося і рухаємося вперед, але це неможливо без вашої підтримки. Тому будемо вдячні за лайки, коментарі та будь-яку іншу форму підтримки. Це допоможе нам просувати наші подкасти в рекомендаціях. Також ви можете підтримати нас донатом — це дійсно важливо для нас і є нашим рушієм.
Дякуємо вам!
Підтримати подкаст можна через: 🏦 База від Монобанку
#testingminutes | @a_grygorenko | Test Engineering Notes
👍14❤2
Crawling a billion web pages in just over 24 hours, in 2025
#engineering
Цікава стаття про те, як розробник побудував crawler, що просканував мільярд сторінок трохи більше ніж за 24 години.
Вартість ресурсів - $462
Кластер складався із 12
#engineering
Цікава стаття про те, як розробник побудував crawler, що просканував мільярд сторінок трохи більше ніж за 24 години.
Вартість ресурсів - $462
Кластер складався із 12
i7i.4xlarge машин, кожна з 128 Gb RAM та 3750 Gb жорсткого диску. Пропускна здатність при цьому була 10 Gbps.👍19❤🔥1
⛓ Види залежностей в розподілених системах
#distributedsystems
👉 Процесна залежність. Якщо процес P виконує операцію А, а потім - B, то операція B процесно залежить від А.
👉 Залежність сесій. Сессія, то є послідовність операцій, які виконується по порядку. Залежність в контексті сесії означає, що операція В залежить від операції А - коли операція А виконується строго перед операцією В.
👉 Залежність реального часу. Якщо операція А закінчується перед операцією В, то В залежить від А в реальному часі.
👉 Залежність читання - запис. Залежність такого роду виникає, коли операція А читає якусь версію v1 обʼєкту, а операція В записує наступну версію цього ж обʼєкта.
👉 Залежність запис - читання. Операція А записує версію обʼєкту, а операція В повинна успішно прочитати нову версію.
👉 Залежність запис-запис. Операція А записує свою версію обʼєкту, а операція В перезаписує обʼєкт.
🤷Чому це важливо? Знання залежностей допоможуть надалі розібратися із моделями узгодженості.
#distributedsystems
👉 Процесна залежність. Якщо процес P виконує операцію А, а потім - B, то операція B процесно залежить від А.
👉 Залежність сесій. Сессія, то є послідовність операцій, які виконується по порядку. Залежність в контексті сесії означає, що операція В залежить від операції А - коли операція А виконується строго перед операцією В.
👉 Залежність реального часу. Якщо операція А закінчується перед операцією В, то В залежить від А в реальному часі.
👉 Залежність читання - запис. Залежність такого роду виникає, коли операція А читає якусь версію v1 обʼєкту, а операція В записує наступну версію цього ж обʼєкта.
👉 Залежність запис - читання. Операція А записує версію обʼєкту, а операція В повинна успішно прочитати нову версію.
👉 Залежність запис-запис. Операція А записує свою версію обʼєкту, а операція В перезаписує обʼєкт.
🤷Чому це важливо? Знання залежностей допоможуть надалі розібратися із моделями узгодженості.
👍15🔥2❤1
🤖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. Чи цікаві вам будуть огляди на ці книжки? На які саме?
P.P.S. А які книжки з автоматизації тестування читали ви?
#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. Чи цікаві вам будуть огляди на ці книжки? На які саме?
P.P.S. А які книжки з автоматизації тестування читали ви?
👍37❤9🔥5👏2
Forwarded from Testing Minutes (Oleksandr Romanov)
⚡️ Епізод 53: Куди можна рости в тестуванні?
Куди можна рости в тестуванні? Це питання задає собі як починаючий інженер, так і досвідчений спеціаліст. Чи всім треба йти в автоматизацію? Чи лідерство - то єдиний можливий варіант розвитку? Разом із ведучими подкасту, Артемом та Олександром, ми будемо розбиратися які варіанти карʼєрного розвитку існують.
Дивитись та слухати:
🔸 Youtube
🔹 Spotify
🔸 Apple
Ваша підтримка важлива!
Ми постійно розвиваємося і рухаємося вперед, але це неможливо без вашої підтримки. Тому будемо вдячні за лайки, коментарі та будь-яку іншу форму підтримки. Це допоможе нам просувати наші подкасти в рекомендаціях. Також ви можете підтримати нас донатом — це дійсно важливо для нас і є нашим рушієм.
Дякуємо вам!
Підтримати подкаст можна через: 🏦 База від Монобанку
#testingminutes | @a_grygorenko | Test Engineering Notes
Куди можна рости в тестуванні? Це питання задає собі як починаючий інженер, так і досвідчений спеціаліст. Чи всім треба йти в автоматизацію? Чи лідерство - то єдиний можливий варіант розвитку? Разом із ведучими подкасту, Артемом та Олександром, ми будемо розбиратися які варіанти карʼєрного розвитку існують.
Дивитись та слухати:
🔸 Youtube
🔹 Spotify
🔸 Apple
Ваша підтримка важлива!
Ми постійно розвиваємося і рухаємося вперед, але це неможливо без вашої підтримки. Тому будемо вдячні за лайки, коментарі та будь-яку іншу форму підтримки. Це допоможе нам просувати наші подкасти в рекомендаціях. Також ви можете підтримати нас донатом — це дійсно важливо для нас і є нашим рушієм.
Дякуємо вам!
Підтримати подкаст можна через: 🏦 База від Монобанку
#testingminutes | @a_grygorenko | Test Engineering Notes
❤16
⏰Доступність (в розподілених системах)
#distsys
Що таке доступність?
Доступність - це міра того, як надійно система відповідає на запити, коли потрібно (навіть за наявності помилок чи вузлів, що не відповідають)
Види доступності
👉 Повна доступність: кожен справний вузол може виконувати будь-яку операцію. Операції виконуються навіть тоді, коли інші вузли або мережа між ними виходять з ладу
👉Системи з доступною більшістю: якщо більшість невідмовних вузлів можуть спілкуватися один з одним, ці вузли можуть виконувати операції. Більшість може бути як 50% + 1 або 2/3 + 1 вузли
👉 Фіксована (sticky) доступність: якщо клієнт виконує операцію зі станом бази даних, який відображає всі попередні транзакції клієнта, він зрештою отримує відповідь – навіть за наявності невизначеної кількості збоїв вузлів або мережі
❗️Важливо!
Система може бути доступною, але це не означає, що вона буде відповідати найбільш актуальними даними (наявність узгодженості не гарантується)
#distsys
Що таке доступність?
Доступність - це міра того, як надійно система відповідає на запити, коли потрібно (навіть за наявності помилок чи вузлів, що не відповідають)
Види доступності
👉 Повна доступність: кожен справний вузол може виконувати будь-яку операцію. Операції виконуються навіть тоді, коли інші вузли або мережа між ними виходять з ладу
👉Системи з доступною більшістю: якщо більшість невідмовних вузлів можуть спілкуватися один з одним, ці вузли можуть виконувати операції. Більшість може бути як 50% + 1 або 2/3 + 1 вузли
👉 Фіксована (sticky) доступність: якщо клієнт виконує операцію зі станом бази даних, який відображає всі попередні транзакції клієнта, він зрештою отримує відповідь – навіть за наявності невизначеної кількості збоїв вузлів або мережі
❗️Важливо!
Система може бути доступною, але це не означає, що вона буде відповідати найбільш актуальними даними (наявність узгодженості не гарантується)
👍13❤2
👌Узгодженість (в розподілених системах)
#distsys
❓Що таке узгодженість?
Узгодженість - це коли кожен клієнт отримує від системи одні й ті самі (найбільш актуальні) дані, незалежно від того, з яким вузлом взаємодіє.
Види узгодженості
👉 Сильна узгодженість. Кожне читання видає останню версію запису.
👉 Кінцева узгодженість. Читання може видати не останню версію даних, але згодом усі дані синхронізуються.
👉 Узгодженість читання-запису. Клієнт, що записує, може одразу считати записані дані.
👉 Причинно-наслідкова узгодженість. Дані, що залежать один від одного повинні бути прочитані по порядку.
👉 Монотонна узгодженість. Коли клієнт оновив дані, він не отримає минулу версію даних.
❗️Важливо!
Для узгодженості потрібен час - щоб вузли обмінялись даними між собою. Тому система може бути недоступною, поки узгодженість не буде встановлена.
#distsys
❓Що таке узгодженість?
Узгодженість - це коли кожен клієнт отримує від системи одні й ті самі (найбільш актуальні) дані, незалежно від того, з яким вузлом взаємодіє.
Види узгодженості
👉 Сильна узгодженість. Кожне читання видає останню версію запису.
👉 Кінцева узгодженість. Читання може видати не останню версію даних, але згодом усі дані синхронізуються.
👉 Узгодженість читання-запису. Клієнт, що записує, може одразу считати записані дані.
👉 Причинно-наслідкова узгодженість. Дані, що залежать один від одного повинні бути прочитані по порядку.
👉 Монотонна узгодженість. Коли клієнт оновив дані, він не отримає минулу версію даних.
❗️Важливо!
Для узгодженості потрібен час - щоб вузли обмінялись даними між собою. Тому система може бути недоступною, поки узгодженість не буде встановлена.
👍17❤2
✂️Толерантність до розділення (в розподілених системах)
#distsys
❓Що таке толерантність до розділення?
Розподілені системи складаються з вузлів, що комунікують через мережу. Але мережа - не завжди стабільна. Звʼязок між вузлами може обірватися. Тоді система розпадається на дві або більше групи вузлів.
Толерантність до розділення - це властивість системи продовжити свою роботу навіть тоді, коли деякі частини системи тимчасово недоступні. Клієнт в такому випадку не знає, з якою частиною системи він працює.
Що робити, коли система розділена?
У випадку розділення, розподілена система має два варіанти:
👉Забезпечити доступність. Система відповідає без затримок, але дані можуть відрізнятись у кожній групі вузлів (тимчасово)
👉Забезпечити узгодженість. Система припиняє записи, поки всі вузли (або більшість) не матимуть однакових даних. Доступність буде обмежена в такому випадку.
❗️Тобто, у випадку розділення мережі вузлів система або повністю доступна або обмежено доступна (але гарантує коретність даних)
#distsys
❓Що таке толерантність до розділення?
Розподілені системи складаються з вузлів, що комунікують через мережу. Але мережа - не завжди стабільна. Звʼязок між вузлами може обірватися. Тоді система розпадається на дві або більше групи вузлів.
Толерантність до розділення - це властивість системи продовжити свою роботу навіть тоді, коли деякі частини системи тимчасово недоступні. Клієнт в такому випадку не знає, з якою частиною системи він працює.
Що робити, коли система розділена?
У випадку розділення, розподілена система має два варіанти:
👉Забезпечити доступність. Система відповідає без затримок, але дані можуть відрізнятись у кожній групі вузлів (тимчасово)
👉Забезпечити узгодженість. Система припиняє записи, поки всі вузли (або більшість) не матимуть однакових даних. Доступність буде обмежена в такому випадку.
❗️Тобто, у випадку розділення мережі вузлів система або повністю доступна або обмежено доступна (але гарантує коретність даних)
🔥13👍4
🚀СAP теорема
#distsys
Суть CAP - теореми полягає в тому, що в розподілених системах неможливо ОДНОЧАСНО забезпечити узгодженість (consistency), доступність (availability) та стійкість до розділення (partition tolerance)
Це означає, що під час розділенням мережі треба жертвувати однією з властивостей (тимчасово). Часто також використовують eventual consistency - тобто дані синхронізуються з часом.
Що ж робити при розділенні?
Ризик розділенням мережі завжди високий, тому інженерам треба обирати:
👉 CA (узгодженість та доступність) - рідко буває в реальних умовах. Як приклад - база даних на одному сервері, без кластеризації.
👉 CP (узгодженість та стійкість) - система відмовляє у відповідях поки дані не синхронізовані. Наприклад MongoDB, Redis, HBase
👉 AP (доступність та стійкість) - дані тимчасово відрізняються на різних вузлах, але система доступна. Наприклад Cassandra, DynamoDB, CouchDB
Ну то й що?
Знаючи теорему, можна розуміти, з яким типом системи ми працюємо та як це впливає на тестування.
#distsys
Суть CAP - теореми полягає в тому, що в розподілених системах неможливо ОДНОЧАСНО забезпечити узгодженість (consistency), доступність (availability) та стійкість до розділення (partition tolerance)
Це означає, що під час розділенням мережі треба жертвувати однією з властивостей (тимчасово). Часто також використовують eventual consistency - тобто дані синхронізуються з часом.
Що ж робити при розділенні?
Ризик розділенням мережі завжди високий, тому інженерам треба обирати:
👉 CA (узгодженість та доступність) - рідко буває в реальних умовах. Як приклад - база даних на одному сервері, без кластеризації.
👉 CP (узгодженість та стійкість) - система відмовляє у відповідях поки дані не синхронізовані. Наприклад MongoDB, Redis, HBase
👉 AP (доступність та стійкість) - дані тимчасово відрізняються на різних вузлах, але система доступна. Наприклад Cassandra, DynamoDB, CouchDB
Ну то й що?
Знаючи теорему, можна розуміти, з яким типом системи ми працюємо та як це впливає на тестування.
👍12❤6🔥1
Forwarded from Testing Minutes (Oleksandr Romanov)
⚡️ Епізод 54: Про дослідницьке тестування
Що таке дослідницьке тестування? Чи це просто випадкове клацання без цілі в надії знайти ті чи інші баги? Чим дослідницьке тестування відрізняється від звичного тестування за тест кейсами? Як визначають дослідницьке тестування різні спеціалісти? На всі ці питання будуть шукати відповідь ведучі подкасту - Артем та Олександр
Дивитись та слухати:
🔸 Youtube
🔹 Spotify
🔸 Apple
Ваша підтримка важлива!
Ми постійно розвиваємося і рухаємося вперед, але це неможливо без вашої підтримки. Тому будемо вдячні за лайки, коментарі та будь-яку іншу форму підтримки. Це допоможе нам просувати наші подкасти в рекомендаціях.
Дякуємо вам!
Також ви можете стати спонсором нашого подкасту на YouTube, це допоможе нам покращувати якість нашого контенту!
#testingminutes | @a_grygorenko | Test Engineering Notes
Що таке дослідницьке тестування? Чи це просто випадкове клацання без цілі в надії знайти ті чи інші баги? Чим дослідницьке тестування відрізняється від звичного тестування за тест кейсами? Як визначають дослідницьке тестування різні спеціалісти? На всі ці питання будуть шукати відповідь ведучі подкасту - Артем та Олександр
Дивитись та слухати:
🔸 Youtube
🔹 Spotify
🔸 Apple
Ваша підтримка важлива!
Ми постійно розвиваємося і рухаємося вперед, але це неможливо без вашої підтримки. Тому будемо вдячні за лайки, коментарі та будь-яку іншу форму підтримки. Це допоможе нам просувати наші подкасти в рекомендаціях.
Дякуємо вам!
Також ви можете стати спонсором нашого подкасту на YouTube, це допоможе нам покращувати якість нашого контенту!
#testingminutes | @a_grygorenko | Test Engineering Notes
👍10❤🔥8