10 Weeks of Quality: челендж для розробників і автоматизаторів. Пиши тести і вигравай призи!

💡 Усі статті, обговорення, новини про тестування — в одному місці. Приєднуйтесь до QA спільноти!

Привіт! Мене звати Олексій Лакович, я Head of Quality & Automation в Solidgate.

Спільно з DOU ми запускаємо 10 Weeks of Quality — челендж для розробників і автоматизаторів тестування, спрямований на зміцнення культури регулярного написання тестів. Він натхненний челенджем 100daysofcode.

Задача цієї ініціативи — довести, що швидкість і якість — не протилежні властивості. Вони гармонійно доповнюють одна одну і створюють основу для ефективної розробки надійної системи.

Судячи з щорічних репортів DORA (dora.dev), автоматизація тестування — невід’ємна складова команд, які створюють якісні продукти. Ігнорувати окремі рівні тестування або взагалі не залучати команду розробки до тестування — величезна помилка.

Ми в Solidgate фокусуємось на покритті тестами на кожному рівні — це сильно пришвидшує нас і робить релізи зовсім не нервовими. До речі, ми релізимо і в пʼятницю. Ми бачимо, як це працює та впливає на ефективність нашої команди інженерів. Проводимо близько 1000 релізів в місяць та генеруємо 168 тисяч результатів тестів щоденно.

Що я пропоную

Упродовж наступних десяти тижнів ви щотижня пишете тести будь-якого рівня (юніт, компонентні чи системні) і щоп’ятниці звітуєте про виконану роботу.

Кожен тиждень — пишете не менше п’яти тестів, можна і більше! Головне — регулярний комітмент у написанні тестів для вашого продукту.

Звітувати ви можете в коментарях в цьому розділі на ДОУ, або Linkedin в такому форматі:

Не забувайте додавати хештег #10WeeksOfQuality 😉

Від себе додам декілька рекомендацій по тестам для отримання результату якнайшвидше:

Хочу зазначити — залежно від архітектури вашого продукту вибір рівня тестів може варіюватися, але я гарантую, що вам точно потрібні системі (тобто End 2 End), а також — Unit або Component.

  • Системний — писати Хелсчеки на основні флоу вашого продукту і регулярно проганяти їх у продакшені та стейджі. UI або API вашої системи — без моків — реальні дані. — ви будете здивовані наскільки корисні такі прості тести, якщо вони регулярно моніторять оточення.
  • Компонентний — покривати різними кейсами критичні роути та логіки ваших сервісів, від яких залежить життєздатність продукту. (Сервіс — БД, Сервіс — Черга, etc.) — підняті окремо в контейнері без підключення в оточення.
  • Юніт — покривати найважливіші компоненти системи або використовуються найчастіше, наприклад, валідатори.

🎁 Десятьом найактивнішим учасникам подаруємо набори мерчу від DOU і Solidgate, а також розіграємо серед усіх три книги, які будуть корисними для кожного інженера. Але головна винагорода — ефективна розробка вашого продукту!

Ми розуміємо, що тести Системного рівня писати довше, ніж інші — тому найактивніших розробників та автоматизаторів визначимо окремими категоріями.

Фактично, ви просто виконуєте свою щоденну роботу, робите скріншот нових тестів в IDE — і отримуєте мерч, книги, лайки та корисну звичку (якщо ви ще не пишете тести регулярно).

Перші звіти надсилайте вже цієї п’ятниці!

Як залити скриншот в коментар на DOU: просто вставте або перетягніть файл в текстове поле коментаря.

👍ПодобаєтьсяСподобалось16
До обраногоВ обраному5
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

2 weeks out of 10!

🟩🟩⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️

На цьому тижні написав 6 e2e автотестів за допомогою Playwright та Python, робив це наживо на своєму каналі: www.youtube.com/watch?v=y_hLqRrLJ64

Тестував власну LMS: first.institute/edu функції повʼязані з виконанням коду в онлайн-редакторі.

$ pytest test_ui --verbose --headed
collected 6 items                                                                                                                                                                                                                           

test_ui/test_course.py::test_open_course[chromium] PASSED
test_ui/test_course.py::test_open_task[chromium] PASSED
test_ui/test_courses.py::test_courses[chromium] PASSED
test_ui/test_task.py::test_first_run[chromium] PASSED
test_ui/test_task.py::test_change_code_twice_and_run[chromium] PASSED
test_ui/test_task.py::test_clear[chromium] PASSED

Крінжшот: res.cloudinary.com/...​/vijomqgwwneas7mhcuvb.png

Попередній звіт: dou.ua/...​rums/topic/52089/#2929106

Запрошую доєднатися сьогодні у пʼятницю 07.02 о 15:00 до мого струму, де у реальному часі я пишу тести на Playwright та Python для цього челенджу.

youtube.com/live/y_hLqRrLJ64

Що буду тестувати? Власну LMS: first.institute/edu

📅 Дата: 07.02.2025 (пʼятниця)
🕑 Час: 15:00.
🌐 Місце: YouTube: youtube.com/live/y_hLqRrLJ64 (натиснути «Підписатися» та «Повідомити мене»)

Ооо, є коментарі!) Красавчікі Хлопці!)

На попередньому тижні також додав трохи тестів для дебагу інтеграції з репортером testomat.io

Частина тестів спеціально не проходять щоб подивитися як фейли в репорті відображаються)

res.cloudinary.com/...​/bhac8ynmgmx61tjnzyjk.png

Чудова ініціатива.
Разом із Copilot покрили функціональними тестами 64% внутрішнього інфраструктурного застосунку та додали 58 тест-кейси:
prnt.sc/ES7pqjgJ2NA3

Ох... Я теж, були часи, захоплювався написанням тестів з копайлотом, а потім став думати. От коли ти пишеш код, а потім пишеш тести, то у тебе в голові є якась картина того, як код має працювати. І ти пишеш тести, які якимось іншим способом перевіряють що код працює так, як ото картинка в голові складена. Але... у копайлота немає картинки саме *вашої* голови. У нього є лише код і він пише тести, ну, от так щоб тести довели, що написаний код правильний. Як оті дослідження проплачених вчених, які для виробників шоколаду і шипучки доводили, що цукор корисний для організму. Чи як лабораторка в універі, де відомо що має вийти і ми зараз намалюємо як у нас це «вийшло».

Виходить, що написані копайлотом тести не доводять, що код працює так, як повинен. Вони доводять, що код працює так, як працює. Що він дорівнює сам собі.

З тих пір я копайлот ганяю лише для найпростіших там крудів, парсерів, геттерів/сеттерів тощо, а бізнес-логіку пишу сам.

Challenge accepted!

🟩⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️

На цьому тижні я написав 6 автотестів для свого open-source проєкту Selenium Python Template. Це проєкт-шаблон, с деякими корисними налаштуваннями, щоб спростити старт нового проєкту автоматизації з нуля. Запрошую вас поставити зірочки на GitHub: github.com/...​/selenium_python_template та подивитися презентацію цього проєкту на YouTube: www.youtube.com/watch?v=L22g-XZORR8

Ці 6 тестів стосувалися перевірки функції autowaiting як в Playwright, proof of concept якої я переніс до Selenium на цьому тижні. Так, тепер autowaiting є в Selenium’і для click(), send_keys() та clear().

$ pytest utils/test_autowait.py -v
collected 6 items

utils/test_autowait.py::test_click PASSED
utils/test_autowait.py::test_send_keys PASSED
utils/test_autowait.py::test_click_auto_wait PASSED
utils/test_autowait.py::test_send_keys_auto_wait PASSED
utils/test_autowait.py::test_clear PASSED
utils/test_autowait.py::test_clear_autowait PASSED
Скріншот:

res.cloudinary.com/...​/bscmsuhgfr7yoallp5vq.png

Сьогодні я робив доповідь, що це таке, навіщо воно потрібно та як працює:

www.youtube.com/watch?v=pMjBDu7ju1k

Іноді я роблю лівстріми, де також пишу тести, тому запрошу підписатися на мій канал «Надійне програмування»: www.youtube.com/@1IRS-reliable

Підписатись на коментарі