QAжется, работает! – Telegram
QAжется, работает!
641 subscribers
110 photos
13 videos
2 files
95 links
Канал про качество ПО и всего, что влияет на качество продукта
Download Telegram
Forwarded from Dodo Engineering
Новый праздник — новый рекорд! 🏆

По праздникам количество заказов увеличивается в разы. Это и проверка на прочность для Dodo IS, и возможность для нашей команды поставить новый рекорд, преодолев очередной майлстоун по нагрузке на систему.

8 марта мы принимали 847 заказов в минуту в России, а по всей сети в 24 странах — 1047 заказов в минуту. Dodo IS отработала штатно, никаких проблем со стабильностью системы мы не испытали. 🔥

Прошлый рекорд мы поставили 1 сентября 2024 года. Тогда мы обрабатывали в России 741 заказ в минуту.

Спасибо всей команде Додо и сотрудникам пиццерий, нашим коллегам, которые ходили в гембу, и партнёрам. Отдельная благодарочка улетает нашей IT-команде! 😌
🔥8
Недавно наткнулся на термин Progression testing в блоге BrowserStack и решил посмотреть что это. В статье определение Functional Testing + Regression Testing + User Acceptance Testing = Progression Testing

До этого не встречал такого названия ни в одном стандарте, ни в одном репорте, ни в одной книге (я не утверждаю, что я прочитал все что можно, но кое-что читал). Я даже попробовал поискать первоисточник, где и когда появился этот термин.

Максимум что нашлось - несколько упоминаний этого термина в 2002 году в книге Software Testing. A Craftsman`s Approach, Paul Jorgensen. По книге, progression testing это следующий этап после regression testing (в треде будет картинка из книги). Вот как сам автор объясняет это понятие:
The goal of regression testing is to ensure that things that worked correctly in the previous build still work with the newly added code. Regression testing can either precede or follow integration testing, or possibly occur in both places. Progression testing assumes that regression testing was successful and that the new functionality can be tested. (We like to think that the addition of new code represents progress, not a regression.)

Кто нашел расхождения в определении копирайтеров с BrowserStack и определении автора книги, тот молодец.

В самом начале статьи еще пишут такое: Progression Testing, often called Incremental Testing и дают ссылку на статью Incremental Testing, но в ней про progression testing и близко ничего нет. А вот что уже пишут в этой статье про Incremental Testing (как мы помним, в исходной статье эти термины практически приравнены)
Incremental testing is a method for evaluating individual modules using stubs and drivers. It is performed during Integration testing and helps identify errors or defects within each module. After completing unit testing, integration testing ensures that the modules interact with each other correctly. Incremental testing is key in this process, as it integrates modules with stubs and drivers.

Следите за руками, progression testing по книге выполняется через шаг после integration testing (напоминаю что картинка в треде), но progression testing часто называют incremental testing по статье с BrowserStack что в свою очередь является часть integration testing по другой статье в BrowserStack 🤯

Короче, я не полез дальше в эти дебри, потому что подумал что измажусь в этом еще больше. Какой вывод стоит сделать? Не читайте корпоративные блоги инструментов для тестирования. С вероятностью в 97% вы в чем-то измажетесь. (я сам не читал, просто с пацанами рядом стоял которые читали)
Please open Telegram to view this post
VIEW IN TELEGRAM
😁65🤯1
Пока писал предыдущий пост, ходил по инетрнетам, смотрел на картинку в книге и везде видел, что UAT (приемочное тестирование пользователем) последний этап при разработке задачи (если не считать доставку до пользователя). Для меня это выглядит контринтуитивно.
Например, в книге Software Testing. A Craftsman`s Approach из предыдущего поста автор пишет, что при регрессионном тестировании допустимо находить только 5% багов (не знаю что значит 5% багов и откуда он это взял, но допустим что он опирается на какие-то данные и он прав), а на приемочном тестировании допустимо 20% - в 4 раза больше. Затем мы вспоминаем тезис, что чем раньше мы найдем ошибку, тем дешевле ее исправить. В этом случае для меня логичным выглядит проводить приемочное тестирование до регрессионного, а не после. А если мы нашли ошибки во время приемочного тестирования их же нужно исправить, а после исправления по хорошему нужно снова сделать регрессионное тестирование. Но если мы будем делать так, тогда и lead time/t2m увеличится. В общем для меня это выглядит нелогичным.
Как вы считаете приемочное тестирование как последний этап всех видов тестирований это хорошо?
😁2🤔2
Под вечер пятницы принес вам пример багфикса на проде от компании Midea 😏 см раздел Кнопки дополнительных функций
Спасибо @DanilBabich за картинку ❤️
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣114
Пришло время подвести итоги по целям на предыдущий квартал - в итоге мы выполнили почти все что планировали. Теперь в нескольких проектах тестовая документация ведется в едином стиле.
Что значит в едином стиле? У нас одинаковый воркфлоу, одинаковые деревья тест-кейсов (Epic-Feature-Story), актуализированы тест-кейсы, добавлены шаги в ручные и автоматизированые кейсы, а также одинаковые дашборды с метриками.

А также мы начали собирать статистику по багам в командах.

Кроме этого важной вехой прошлого квартала стал переезд в двух проектах со Specflow на LightBDD. Теперь у нас в стеке нет Specflow совсем.

Чем же мы займемся во втором квартале?

Основной задачей мы взяли внедрение сбора покрытия автотестами наших API по Open Api документации и внедрение правил не допускающих снижение покрытия (планируем фейлить пайплайн если покрытие снизилось).

А также продолжим подключать другие команды к сбору статистики по багам и унифицировать тестовую документацию в оставшихся проектах.

Рассказывайте чем вы сейчас занимаетесь в своих проектах?
В треде будут картинки артефактов
👍4🔥21
Верните мой 2011
🍓1
Forwarded from Dodo Engineering
С днём рождения, Додо! 🤩

Нам — 14 лет! 22 апреля 2011 года в Сыктывкаре открылась первая Додо пицца... Ну, это вы знаете. А давайте вспомним, каким был мир, особенно мир технологий, в 2011 году?📱

✔️ В продажу поступает iPhone 4S, первый с голосовым помощником Siri!
✔️ Популярны C, Java, C++, PHP и Visual Basic. C# — в топ-10, а на волне — .NET 4.0, но не доминирует.
✔️ Входят в моду облака: AWS набирает популярность, но в основном у стартапов.
✔️ Ещё никто не знает про GitHub Actions, а самим GitHub пользуется первый миллион человек.
✔️ Люди сидят во ВКонтакте, не зная, сколько кубиков на прессе Дурова, в Snapchat и Pinterest!
✔️ В наушниках — Adele, трек Rolling in the Deep, по MTV — клип «Party Rock Anthem» (это которая «Every day I’m shufflin’»).
✔️ В кино «Первый мститель» и «Гарри Поттер и Дары смерти: часть 2».
✔️ Бестселлер среди бизнесовой литературы — «И ботаники делают бизнес» Фёдора Овчинникова и Макса Котина.

А мы? Dodo IS была мозгом всего одной пиццерии, работающей на самовывоз... А в 2025 году это масштабная облачная система, которая поддерживает более 1250 точек в 23 странах и 20 миллионов пользователей. Додо Пицца в топе «Еды и напитков» в Google Play, а додстер можно заказать голосом через Telegram.

Время идёт, мир меняется, и мы рады меняться вместе с ним! Но .NET в сердце ещё надолго. Должен же быть какой-то островок стабильности 😉

Читаем в ваших глазах вопрос: «Как нас поздравить?». Лучший наш подарочек — это вы и ваши голоса! Бустаните наш канал, чтобы мы могли чаще радовать вас разнообразным контентом и кастомными эмодзи: https://news.1rj.ru/str/boost/dododev 😎
Please open Telegram to view this post
VIEW IN TELEGRAM
11🔥5
Сегодня вышел из майского отпуска, пока не вошел в рабочий ритм, держите вакансии которые у нас открыты в Додо Инжиниринге.
Сейчас открыты вакансия в юнит FAP (Franchise as a Product) и вакансия в Core Team.
Если подходите под описание или знаете людей, которые подходят под описание или знаете людей, которые знают людей, которые подходят под описание, вы знаете что делать ❤️
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Как вам такие подсказки на киоске? 😏
Please open Telegram to view this post
VIEW IN TELEGRAM
😁8🔥2🤩2
Нужно ли тестировать ML прогнозы?

Моя команда разрабатывает фичу - группировщик заказов. Мы используем инструмент ORTools от гугла, который, в том числе, разработан для решения задач оптимизации маршрутов.

У нас есть заказы, курьеры и различные ограничения на доставку (время за которое нужно успеть отвезти заказ, максимальная вместимость курьера, время через которое курьер вернется в пиццерию, время приготовления заказа, тип курьера и т.д.). Некоторые из этих ограничений предсказываются с помощью ML. Недавно мне задали вопрос "А как вы тестируете ML прогнозы?"

Мы не тестируем, но я призадумался, а нужно ли нам тестировать прогнозы? С одной стороны можно рассмотреть прогнозы как обращение к стороннему сервису и ожидать что разработчики сервиса его протестировали прежде чем отдавать нам. Мы же не тестируем браузер перед тем как выкатить фичу.
А с другой стороны, если они этого не сделали, мы будем получать невалидные результаты и наш оптимизатор будет работать плохо.
Как вы думаете, стоит ли тестировать качество прогнозов или это не наша забота?
Наконец-то это случилось, ушла эпоха Selenium из Додо пиццы, пришла эпоха Playwright.
Если читают те кто участвовал в этом, спасибо всем❤️
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥253🎉1
Media is too big
VIEW IN TELEGRAM
Пока готовлю пост про преимущества которые мы получили от внедрения Playwright вместо Selenium, решил поделиться с вами видео.
На видео два бага в одном😬(один связан с локалью, а второй с не понятным сообщением об ошибке)
Мне кажется любой тестировщик рано или поздно сталкивается с багами связанными с мультиязычностью. Я не исключение.
Мы в приложении пиццы долго боролись с тем, чтобы привести все переводы, тексты на картинках и т.д. к отображению на одном языке. На самом деле не до конца еще победили. До сих пор, у нас в приложении такое проскакивает, но в основном не в самых популярных категориях (скину скрин в тред).
Казалось бы, ну должен быть текст кнопки на одном языке, а показывается на другом, вообще не проблема. Но иногда это может влиять на бизнес.
Я помню времена, когда мы в режиме хотфикса (или просто баг с высоким приоритетом, точно уже не помню) чинили переводы в бэкофисе Dodo IS одной из европейских стран, потому что сотрудники негодовали от того, что русский язык просочился в инетрфейс.
Поэтому у меня к вам просьба, если вдруг вы обнаружите в приложении Додо пиццы или Дринкита некорректные переводы - напишите баг репорт, чтобы мы это увидели и починили.
Coverage

Нарушаю долгое молчание небольшим подведением итогов того, чем занимался на работе.

В прошлом квартале сфокусировались на внедрение сбора метрики покрытия: code coverage и покрытие API методов автотестами по Swagger документации (назовем его Swagger-coverage, для простоты).
Мы планировали внедрить сбор и code coverage и Swagger-coverage во всех сервисах критического пути. Но удалось сделать только добавить Swagger-coverage во все сервисы.

Как это работает:
1. берем актуальное описание API в Swagger документации;
2. в http-клиент для API-тестов добавляем handler, который логирует, какие эндпоинты вызываются в тестах, с какими параметрами и какие статус коды приходят;
3. сравниваем фактически вызванные эндпоинты с исходной схемой и строим отчет, в котором видно что покрыто, а что не покрыто (скрин 1).

Текущие показатели этой метрики видно на графике. Разброс от 22 до 92%

После вендрения хотели добавлять Quality Gates и фейлить билд если покрытие стало ниже чем было до этого. Но в результате обсуждение с архитекторами и разработчиками решили, что сделаем пока уведомление в корпоративный мессенджер в канал команды-владельца сервиса о том, что покрытие снизилось.

Как считаете приемлемо, что у сервиса крит пути в API-тестах хоть как-то вызывается 22% эндпоинтов, а остальные не вызываются? Или надо наращивать покрытие?
👍1
Преимущества Playwright

Как и обещал (хоть и с опозданием и после лёгких пинков от читателя), делюсь преимуществами, которые мы получили после перехода с Selenium на Playwright.

Итак, напомню контекст: у нас автотесты монолита запускаются в изоляции (почти).
Сначала собираются все компоненты, затем создаются и загружаются их Docker-образы.
Затем в тестах запускается docker-compose со всеми сервисами монолита, скачивается и запускается БД — и только после этого стартуют автотесты.
Тесты разделены на два уровня: API и UI.
В каждом уровне есть по 1–3 тест-сьюта, которые запускаются параллельно. Для каждого сьюта поднимается своё окружение, БД и запускаются тесты.
API-тесты в этом улучшении мы не трогали, поэтому оставим их за скобками.

Ещё важная ремарка: перед анализом я очистил данные от аномалий (несколько прогонов длились по 800+ и 1000+ минут), а также взял только успешные запуски на main — нашей основной интеграционной ветке, куда попадает уже проверенный и зарелизенный код.

Что мы получили:
1. Сокращение времени прохождения пайплайна.
Раньше среднее время составляло 22.88 минут, теперь — 20.46.
На графике 1 (который, конечно, нарисовал Perplexity) видно ситуацию "до" и "после".
Левый и правый "усы" показывают минимальное и максимальное время прохождений, цветная область — 25–75 персентили, а чёрточка внутри — медиану.
После внедрения Playwright медианное значение снизилось примерно на 3 минуты. То, что в Selenium было ниже 25-го перцентиля, теперь стало 75-м в Playwright.
Экономия выглядит умеренной, но если учесть что мы запускаем пайплайн около 30 000 раз в год (в 2024 году было так) — это примерно 60 000 минут, или 1000 часов экономии времени разработчиков ежегодно. Конечно, обратная связь о коде через 20 минут вместо 22 — совсем не радикальное сокращение, но в масштабе года результат приемлемый.

2. Снижение затрат на GitHub Actions.
Раньше у нас было два сьюта UI-тестов — каждый проходил около 10 минут (примерно 4,5 минуты на поднятие окружения и 6 минут на выполнение тестов). Итого — 20 оплачиваемых минут.
После перехода на Playwright остался один сьют с тем же количеством тестов, выполняющийся за 10-11 минут.
На втором графике — видно насколько сократилось потребление времени для выполнения этих тестов (и, соответственно, денег).
Максимальное значение в Playwright теперь ниже медианы Selenium.
Если взять стоимость минуты в 0.008 $, то:
30 000 запусков × 9 минут × 0.008 $ = 2160 $ экономии в год.
Неплохой результат за счёт одной только замены фреймворка.

3. Единый технологический стек.
Приведение всех тестов к единому инструменту и экосистеме — бесценно, особенно для поддержки и найма новых сотрудников.

И всё это — при 60 UI‑тестах.
А представьте, сколько бы мы сэкономили, если бы тестов было 600 😅
🔥71👍1
Media is too big
VIEW IN TELEGRAM
Напоминание тестировщикам: Тестируйте так, чтобы ваше приложение не заloopилось😏
Please open Telegram to view this post
VIEW IN TELEGRAM
😁7
Решил поныть рассказать о том, над чем сейчас работаю и с какими сложностями столкнулся.

Моя команда взяла в разработку проект по батчингу (группировке) заказов на доставку.
Есть курьеры и есть заказы, которые нужно развезти как можно быстрее, но при этом не очень долго (в рамках 60 минут чтобы не отдать сертификат) при доступном наборе курьеров. А от меня как тестировщика этого функционала ждут, что я протестирую качество группировки до того как мы выйдем на реальную пиццерию.

Казалось бы задача не сложная, подавай на вход курьеров и заказы с адресами, получай на выходе батчи и назначай на курьеров. Но есть нюансы бизнес-ограничения, нельзя возить заказ в разные стороны (хотя я считаю это плохим ограничением), у заказов есть разные статусы, от которых тоже зависит возможность объединения. Например готовый заказ не долежн ждать не готовый. Но не всегда, иногда должен подождать. А кроме этого мы можем придержать заказ и не показывать его если нет свободных курьеров, которые его повезут. Есть прогнозное время приготовления заказов (со своими приколами), которое тоже влияет на то, можно ли применить получившуюся группу.

У курьеров тоже не все так гладко, есть курьеры которые находятся в пиццерии, а есть курьеры которые едут с заказами и вернутся в пиццерию через Х минут. А этот Х минут - это прогноз, который не всегда точен. А еще есть максимальная вместимость курьера, когда он не может взять больше 3 заказов (хотя возможно справедливее тут считать в коробках, но не суть). А еще ест разные типы курьеров, пеший, вело, авто. А еще есть настройки пиццерии, которые у каждой уникальные, например сервисное вермя, которое курьер тратит на каждую поездку - дойти от пиццерии до машины и обратно, а также сервисное время на каждый заказ - дойти от машины до клиента и обратно.

Все осложняется тем, что прямо сейчас разработаны и проверяются 3 разных инструмента для группировки заказов. Все они принимают отличающийся набор данных и в итоге по разному группируют 🤯

Изменение любого из этих параметров-ограничений на минимальное значение может кардинально изменить группировку.

И мне нужно протестировать это и написать интеграционные автотесты, которые проверяют качество группировки. Тесты то написать не проблема (на самом деле некоторый набор уже написан), но нужно написать тесты которые отражают реальное поведение, а не синтетические кейсы, которых на проде практически не встречается (такие тоже написаны) и еще желательно не раздувать сьют, чтобы он проходил за вменяемое время, если мы хотим это встроить в пайплайн.

В общем как-то так, ничего не понятно, но очень интересно.
😱10🔥3👍2
Media is too big
VIEW IN TELEGRAM
Кто-то забыл протестить карусель с изображениями 😏
А что творится в горзонтальной ориентации, лучше вообще не видеть 🩸 (закину видос в комменты)
Please open Telegram to view this post
VIEW IN TELEGRAM
😁6👍1
Традиционные итоги года канала. Можно сравнить с предыдущим годом
Если коротко, то текущий год не такой успешный как предыдущий.
Самый популярный пост про вакансию🤷‍♂️
В следующем году буду исправлять ситуацию.
Предлагаю сделать упражнение - накидывайте в комменты свои итоги года, чтобы осознать какие вы молодцы❤️
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4