Проду что это значит
QA на проде. Почему это круто
Многие считают тестирование на production окружении вредной практикой: оно не помогает предотвратить попадание проблем к конечным пользователям, а больше констатирует их наличие. Кроме этого, тестировщик отрывается от стандартного рабочего процесса и методик, применяемых на тестовом окружении. Меня зовут Оля Михальчук, я QA-инженер в финтех-компании ID Finance. В этом посте я расскажу почему тестирование на проде может существенно помочь вашему проекту.
Зачем нужно QA на проде, если есть пре-продакшн окружение
В процессе разработки ПО всегда есть несколько окружений, на которых развёрнуто приложение. Среда, которой пользуются конечные пользователи, как вы знаете, называется production. Обычно предполагается, что тестирование нужно проводить на отдельном окружении, чаще на QA environment или Staging (пре-прод), чтобы предотвратить попадание ошибок к пользователям. Но есть такая методика, как QA на проде, которая отлично помогает решить задачи, которые на тестовом окружении решить физически невозможно.
В каких задачах помогает QA на проде
1. Проблема различия Staging и Production окружений.
Например, на нашем проекте пре-прод используется больше для функционального тестирования на сделанных вручную тестовых сценариях. Он не обладает техническими ресурсами, сравнимыми с продакшн средой. Также мы обычно не делаем полную синхронизацию конфигураций и БД с продакшн средой, что никак не мешает проводить функциональные тесты. Почему мы не копируем прод среду? Представьте, сколько ресурсов бы ушло, чтобы создать копию, допустим, Facebook, с такими же супермощными серверами, сервисами, базой данных и конфигурациями как на production. Это фактически как развернуть ещё одно такое же приложение.
Кроме того, при интеграции со сторонними сервисами вы всегда имеете разные настройки для тестового и боевого окружения (то же самое API). Я не утверждаю, что тестовая и staging среды бессмысленны. Просто нельзя на 100% гарантировать, что при успешном прохождении определённых тестов на одной среде сервисы не упадут на другой. Помочь в решении этой проблемы как раз и может дополнительное тестирование на production.
2. Реальные уровни многозадачности и нагрузки.
Некоторые ошибки можно обнаружить только под продолжительным и реальным уровнем многозадачности и нагрузки. Это касается утечек памяти, стабильности, быстродействия и устойчивости системы. Например, у нас была ситуация, когда возникла проблема быстродействия системы из-за того, что две ресурсоемкие задачи выполнялись в один промежуток времени. Разработчики оптимизировали работу задач, команда сделала тесты на пре-прод окружении, изменения доставили, затем сделали проверку на production.
3. Ошибки развёртывания
Из определения развёртывание (deployment) — это установка рабочей группой новой версии программного кода сервиса в инфраструктуру продакшна. Соответственно лучший способ увидеть ошибки развёртывания — это тестирование в процессе самого развёртывания.
4. Недостаток мониторинга на пре-проде
Один из лучших и незаменимых способов контроля того, что приложение работает так, как мы ожидаем – это ведение мониторинга по определённым метрикам. Например, из простых и наиболее критичных примеров: ведение мониторинга на количество регистраций новых пользователей в час, на конверсию от одного целевого действия к другому, на количество выданных кредитов. Конечно, такой мониторинг имеет смысл только на боевом окружении.
5. Возможность анализа сценариев использования системы, которые осуществляют конечные пользователи
Продакшн – кладезь тест-кейсов для тестировщика. При возможности у тестировщика видеть и обрабатывать сценарии, которыми пользуются конечные пользователи, тестировщик может выявить наиболее критичные сценарии, или выяснить причину появившегося дефекта, или обратить внимание на нетривиальные кейсы при тестировании на пре-проде.
6. Возможность ведения более достоверной статистики и метрик качества ПО.
Например, количество ошибок в логах приложения или компонента, баг-репорты и другая отчётность, которую может делать прод-тестировщик, более реально демонстрирует качество ПО по сравнению с теми же отчётами из тестового окружения.
7. Всегда лучше, если ошибку на проде заметит «свой» тестировщик, чем конечный пользователь.
Обычно после доставки задачи тестировщик делает базовые проверки новой или изменившейся функциональности на проде. Кроме того у нас в компании есть отдельно выделенный человек – тестировщик на проде. Хочу ещё раз отметить, что я не позиционирую QA на проде как замену тестированию на пре-продакшне, и, конечно предотвращать появление багов и проводить превентивные меры обязательно нужно. Но такое тестирование может стать отличной дополнительной техникой в процессе обеспечения качества на вашем проекте.
Полезные практики QA на production, которые эффективно работают у нас на проекте
1. Проверка доставленных задач с целью убедиться, что они хорошо задеплоились и работают на новом окружении.
Например, когда мы вводим интеграцию с новым партнёром, кроме тестов на пре-проде мы обязательно проверяем интеграцию после доставки, т.к существуют очень много настроек, зависящих от среды (API, урлы, компоненты). Также имеют место 3rd party issues – ошибки не на нашей стороне, а на стороне интегрируемых сервисов.
2. Логирование и аудит.
Хорошее логирование помогает разработчикам и тестировщикам заметить проблему ещё до того, как о ней догадается конечный пользователь, а также заметить места, нуждающиеся в оптимизации. Аудит действий и изменений позволяет всегда без проблем выяснить причины того или иного поведения. Например, если компонент кредитной политики не может выдать решение по кредиту, для анализа, почему это произошло, мы в первую очередь обращаемся к логам. Этот пункт касается как prodcution, так и pre-production сред.
3. Мониторинг и система оповещений
Как я упоминала выше, ведение мониторинга по определённым метрикам — один из лучших способов контроля того, что с нашим приложением всё «ok». Причём при возникновении какой-либо проблемы, надо обязательно слать об этом оповещение заинтересованным лицам (например, количество заявок по кредиту на 20% меньше ожидаемого – шлём оповещение IT и бизнес-отделам, нагрузка на CPU выше нормы – оповещение админам и девам). Нужно следить, чтобы оповещения о проблемах были своевременными и актуальными, а также реально указывали на проблему.
4. Регрессия и проверка стабильности
Классной практикой является периодическое прохождение регрессионных тестов, с целью убедиться, что нигде ничего не вышло из строя. Может помочь в каких-то узких и специфичных случаях, когда мониторинг не видит проблем.
5. Отчётность и ведение статистики
Как и в любом тестировании, отчётность и ведение статистики о результатах прод-тестирования делает процесс прозрачнее, качество ПО и причины возникновения дефектов более обозримыми.
Все ошибки невозможно выявить на пре-проде, поэтому они будут попадать в боевую среду. Если их обнаружат пользователи, это скажется на репутации компании и, в конечном счете, на потере денег. Тестирование на проде поможет это предотвратить.
«Не баг, а фича» — учимся понимать язык программистов
Понять смысл IT-терминов можно, только узнав, как они употребляются
Программисты говорят на особом языке, в котором полно терминов и сленга. Эта речь не всегда понятна не только обычным людям, далёким от компьютеров, но и начинающим айтишникам — новичкам в разработке.
Есть куча статей, объясняющих смысл терминов, но неподготовленному человеку от них мало пользы. И если вы общаетесь с программистами или собираетесь стать одним из них, то, скорее всего, во всём придётся разбираться самостоятельно. Иначе можете оказаться в ситуации, похожей на ту, что в клипе:
Пишет о программировании, в свободное время создает игры. Мечтает открыть свою студию и выпускать ламповые RPG.
Гораздо проще понять, что значит «пичупидо», если знать контекст, в котором употребляются все эти слова. Поэтому попробую объяснить некоторые термины и сленг на примере истории одного программиста (вымышленного).
Дисклеймер. Все совпадения случайны, а персонажи и ситуации вымышлены. В художественных целях они наделены негативными качествами, поэтому не берите с них пример: это касается как профессиональных качеств, так и отношения к алкоголю, курению и энергетическим напиткам. Также некоторые слова используются и в других сферах.
Новая задача
Ваня — обычный джун в веб-студии. Его работа — поддержка бэкенда сайтов старых клиентов студии.
Джуниор ( англ. junior — младший) в данном случае — младший разработчик в веб-студии. Также бывают мидл- ( англ. middle — средний) и сеньор-разработчики ( англ. senior — старший).
Бэкенд или бэк ( англ. back end — задний край) — серверная часть сайта или приложения, которая нужна для обработки и хранения данных. Его противоположность — фронтенд или фронт ( англ. front end — передний край) — видимая часть приложения или сайта. Если же разработчик занимается сразу фронтендом и бэкендом, его называют фуллстек-разработчиком ( англ. full stack — полная куча / полный набор).
Рабочая неделя Вани начинается с митингов, потому что спринт в его компании длится всего неделю.
Митинг — собрание, на котором обсуждается, что успели или не успели сделать сотрудники, а также чем они будут заниматься в новом спринте.
Спринт — период от одной до четырёх недель, за который сотрудники должны успеть выполнить задачу или задачи. Спринты являются частью Скрам.
Скрам ( англ. scrum) — метод управления проектами. Относится к гибкой методологии разработки эджайл ( англ. agile — гибкий).
На этот раз он получил задачу по добавлению валидации в один из интернет-магазинов. До этого вся валидация была на стороне пользователя.
Валидация — проверка данных, которые вводит пользователь.
До пятницы ещё целая неделя, поэтому с митинга Ваня пошёл сразу в курилку. Достав сигарету, он стал слушать разговор мидла и сеньора:
— Недавно залез в репозиторий, а там одни foobar’ы. Целый час голову ломал, а потом махнул рукой и заново переписал.
— Как наберут новых джунов, так всегда говнокод появляется. Как он вообще код ревью проходит?
— Надо проверить в гитхабе историю коммитов.
Тут Ваня поперхнулся, затушил сигарету и заторопился на рабочее место — от греха подальше.
Репозиторий — хранилище исходных файлов проекта.
Foo и Bar — имена функций или переменных, по которым невозможно понять, зачем они нужны. Использование таких имён допускают в учебниках и документации, но не в реальных проектах, потому что они замедляют чтение и понимание кода другими программистами.
Говнокод — очень плохой код.
Код ревью — проверка кода.
Гитхаб — сервис для хранения репозиториев IT-проектов и совместной работы над ними.
Коммит — запись изменений в репозиторий. Коммит содержит в себе данные об изменениях, комментарий и имя автора коммита.
У стола его уже ждал тимлид:
— Ваня, после того как ты добавил функцию загрузки фотографии в личном кабинете, появился баг. Теперь всё ломается, если ввести промокод.
— Вы уверены, что это из-за меня? Мой код вообще промокодов не касался.
— Уверен. Откати сайт и исправь всё до конца недели — нельзя ждать, пока клиент заметит, что одна из фич пропала.
— Но у меня уже есть задача на эту неделю, я не успею всё исправить.
— Это далеко не первый твой факап, поэтому, если не успеешь, мы поставим новый рекорд — так быстро мы джунов ещё не увольняли.
Тимлид ( англ. team leader — лидер команды) в данном случае — программист, который выполняет роль менеджера. Тимлид редко пишет код, вместо этого он следит, чтобы его команда хорошо справлялась с задачами.
Баг ( англ. bug — жук) — неожиданный результат или неожиданное поведение программы, ошибка.
Откатить ( англ. rollback) — отменить изменения, вернуться к прошлой версии.
Фича ( англ. feature — особенность) — полезная (а иногда забавная) функция / особенность программы.
Исправление багов
Дебажить было сложно, но Ваня не мог облажаться и в этот раз. За год его уже успели уволить из трёх компаний, после четвёртого увольнения его резюме будет испорчено окончательно.
Дебаг (англ. debug — устранение багов) — исправление ошибок в коде программы.
Три дня и три ночи Ваня корпел над кодом, но ничего не выходило. В отчаянии он обратился к коллеге, который проводил код ревью для его коммита в прошлый раз.
— Прости, но если бы я знал, что не так в твоём коде, я бы твой пул реквест не заапрувил.
— Но ты же написал lgtm в комментарии!
— И теперь мне за это прилетело. Слушай, я уже сто раз пожалел, что помог тебе сюда устроиться. Тимлид просёк, что я сквозь пальцы смотрю на твой код, поэтому сейчас проблемы у нас обоих. В случае чего я найду новую работу, а ты — вряд ли. Так что сейчас у тебя отличный повод подтянуть знания.
— Ладно, разберусь как-нибудь.
Апрув ( англ. approve) — подтвердить что-нибудь.
Пул реквест ( англ. pull request) — запрос на подтверждение коммита.
LGTM ( англ. looks good to me — На мой взгляд, хорошо) — сокращение, которое часто встречается на гитхаб в комментариях к подтверждению коммитов. Обычно его используют, когда не получается сказать ничего конструктивного по поводу кода.
Осталось всего два дня, чтобы исправить баг и добавить новую фичу, а у Вани не было почти никаких продвижений. После работы он, как обычно, зашёл в магазин, но вместо энергетиков решил взять пиво, потому что вспомнил о Пике Балмера.
Пик Балмера — шуточная теория, что при содержании алкоголя в крови между 0,129 и 0,138% (примерно 2 бутылки пива) программист получает сверхспособности к написанию кода. Теорию выдвинул Стив Балмер, CEO Microsoft с 2000 по 2014 год.
Бессонные ночи и пиво сделали своё дело, поэтому Ваня заснул прямо за компьютером.
Наутро он не сразу понял, что проснулся, и, лёжа лицом на клавиатуре, продолжал слушать разрывающийся будильник. Прошло всего несколько минут, но Ване они показались вечностью.
Ненавидя себя, он поплёлся на работу. Сев за рабочий стол и посмотрев в код, внезапно понял, в чём была ошибка (известно, что многие проблемы в разработке приложений решаются, когда программист спит). Исправив всё за пару минут, он пошёл к тимлиду.
— Я разобрался с багом.
— Отлично, но странно, что у тебя ушло так много времени. Давай протестируем твой код и выгрузим на прод.
Прод или продакшн ( англ. production environment — рабочее окружение) — компьютер (чаще всего сервер), на котором запускается готовое к работе приложение.
Тестирование прошло успешно. И хотя Ване стало спокойнее, он не спешил радоваться — за полтора дня нужно было успеть выполнить задачу, на которую требовалась как минимум неделя.
К счастью, недавно он начал изучать JavaScript, поэтому мог просто скопировать код валидации с фронта и переделать его для бэкенда.
JavaScript — язык фронтенд-разработки.
Помучившись день, он всё-таки закончил. Тимлид оценил усилия:
— Ну вот, можешь же, когда захочешь. Тебе повезло, что мы не деплоим на прод по пятницам, поэтому у тебя ещё есть время до середины понедельника, чтобы ещё раз всё проверить и поправить.
Деплой ( англ. to deploy) — процесс перевода кода в рабочее приложение, чтобы запустить его на каком-нибудь компьютере.
Воодушевлённый успехом, Ваня ещё раз всё протестировал, поэтому к следующему митингу он был спокоен — больше исправлять старые баги ему не придётся.
По крайней мере на этот спринт.
Заключение
Научила ли чему-нибудь Ваню эта история? Возможно. Но вы наверняка стали на один шаг ближе к пониманию программистов. Или даже к тому, чтобы стать одним из них.
Тесты на проде
Люблю такое, сразу возвращается вера, что не только у меня в конторе тесты на продуктивной среде кому-то кажутся хорошей идеей)
Нашли друг друга
Родители
Огромная мигающая надпись СКАЧАТЬ БЕСПЛАТНО а над ней скопированный текст запроса в гугле, слово в слово. Ниже комментарии:
— Искал по всему интернету, нашёл только здесь! СПАСИБО
— Качайте все! Всё работает.
— Уважуха ваще, всем качать!
Гранитная крошка
Сила воли против алкоголя
Дык тут все просто, тут загнул, там отрезал.
Яндекс читает ваши пуш сообщения на Android. Поймал с поличным!
Расскажу как так вышло, пруфы прикладываю. Пост вышел объемный.
Небольшая предистория: Лежу, смотрю юутб, друг пишет сообщения в телеграмме, слышу уведомления на телефоне, к телефону не притрагиваюсь. Спустя пару минут открыл телеграмм на ноутбуке и прочитал сообщения которые прислал друг.
Все сообщения от друга про кондей, на дворе 19 декабря. Запомним это. Двигаемся дальше:
Продолжаем общаться, он уточняет какие цены в моём городе, и за какую цену установил этим летом. В этот момент я ничего не гуглил, фоном продолжил смотреть ютуб. Когда вёл диалог пушы на телефон не приходили.
На ютубе нашел интересный зарубежный ролик, решил воспользоваться переводчиком видео яндекс браузера. Яндекс браузер использую только для просмотров зарубежных видеороликов, ну и проверять у кого тупит сервис по обходу блокировок. В браузере не логинился, данные с хрома не переносил, никаких разрешений не выдавал.
«Похвалил яндекс браузер за новую фишку»
Закрываю вкладку, собираюсь выходить из браузера и тут внезапно увидел рекламу кондиционеров.
Э, как? В системе macos убрал разрешения на все следилки и аналитику, антивирус и подобный софт не установлен, VPN тоже. Павел Дуров решил сливать переписку яндексу? Маловероятно и не хочется в это верить. Может яндекс браузер висит в фоне и читает всё что происходит? Вполне вероятно, но на макоси с дикой паранойей? Это уже на грани фантастики. Я точно помню что ничего не разрешал яндекс браузеру, решил проверить на всякий случай разрешения и фоновые процессы. Как видим процесс мертвый ибо закрыл браузер, разрешений на захват экрана не имеется. Прикладываю скриншоты аналитики итд.
Начал подозревать телеграмм, погуглив выяснил что он белый и пушистый, но все равно в поле подозрения. Может эппл сливает? Гугл пишет что сливает, но совсем не те данные.
Мой взгляд падает на телефон, много историй как он прослушивает и выдает рекламу, но как именно не пишут. Тут меня осенило, ведь на телефоне huawei яндекс установлен как помощник.
Решил провести эксперимент, воссоздать те же условия и посмотреть откуда растут корни.
Друг прислал сообщения где сильно выражены ключевые слова.
В это время телега на ноутбуке была закрытой а не свернутой. На телефон приходили уведомления.
Не стал дожидаться 10 минут, решил запустить браузер и что мы видим? Рекламу киа.
Решил перезапустить браузер, открываю снова, и что мы видим? Рекламу хендая!!
Вот полноразмерные скриншоты:
Вывод? Со 100% уверенностью яндекс читает пуш сообщения, анализирует ключевые фразы чтобы показать рекламу. Общаетесь в телеге в надежде что вас никто не «слушает», но вас «слушает» приложение яндекса, конфиденциальность, приватность? Не, не слышали. А что если яндекс хранит все текстовые пуш сообщения и в один момент могут оказаться не в тех руках? Например утечка, сбор компромата против вас.
Политика яндекса такая, греби бабки насколько это возможно, пока не запретили.
Старое фото
У нас с мужем сегодня сорокалетний юбилей свадьбы.И давно,и как бы недавно.Это наше первое,немного предсвадебное фото.Мне 18,ему 22.
Ну как так!
Создаем амбиграмму
Круто, очень современно, модно и прогрессивно. А теперь давайте Мухаммеда, а я засеку секундомер, сколько вы проживете.
Печальное.
Это будет весело, думал ты.
Девушка позирует в квартире, 1998 год.
Бомж, нашедший на свалке игровую приставку к телевизору.
Россия. Московская область. Ногинск. 5 марта 1998 год.
Андрей Губин со своими поклонницами. Челябинск, 1999 год.
Свадьба Юрия Стыцковского («Каламбур» и «Маски-шоу») и Эвелины Блёданс («Маски-шоу»), 1993 год.
Непередаваемые эмоции от встречи с кумирами.
На концерте «Rammstein» в Питере, 19 ноября 2001 год.
Пара отдыхает в пригороде Москвы, 1992 год.
Сотрудник ГАИ фотографируется с легендой советского кино Юрием Никулиным, позади улыбается Марк Рудинштейн. Россия, середина 1990-х.
Реклама радиотелефонов от «Билайн», 1998 год.
Артистка в гримёрке перед выступлением в гостинице «Интурист». Москва, 1990 год.
Певица Натали со своей мамой Людмилой Павловной, 1990-е годы.
Девушки торгуют матрёшками На Арбате. Москва, 1990 год.
В пути на гастроли.
Участники группы Hi-Fi проходят зону таможенного контроля, 1990-е годы.
Москвичи выстраиваются в очередь перед ящиками с фруктами и овощами, а молодая девушка несет новогоднюю елку. 24 декабря 1990 год.
Молодые люди танцуют на дискотеке «У ЛИС’Са». Москва, 1992 год.
На съёмочной площадке передачи О.С.П. – студия в гостях Сева Новгородцев, 1997 год.
14 декабря 1996 года на телеканале «ТВ-6» вышел первый выпуск юмористической программы «О.С.П.-студия».
Концепция «О.С.П.» возникла в рамках передачи «Раз в неделю», выходившей в 1995—1996 годах на «ТВ-6», как «Отдел сумасшедших проектов» (начальник — Александр Толоконников). При этом относительно расшифровки первых трёх букв названия единого мнения среди коллектива не было, упоминались варианты «Очень смешное представление», «Очень смешная передача», «Опять стакан полный», «Опасные сумасшедшие приехали», «Они спасли программу», «Очень смышлёные подростки», «Очень смелые парни» (что звучало не совсем корректно в связи с присутствием в программе Татьяны Лазаревой).
Программа включала пародии на различные телепередачи и песни. Задумка была одобрена Иваном Демидовым (который на тот момент был заместителем генерального директора «ТВ-6»).
После раскола коллектива «Раз в неделю» ряд сотрудников «Отдела» продолжил сотрудничество с «ТВ-6», выпуская спортивно-юмористическую программу «Назло рекордам!?».
Пик популярности передачи пришёлся на 1998 год, когда создатели шоу выпустили юмористический телесериал «33 квадратных метра», имевший ряд продолжений — «Дачные истории», «Снова 33 квадратных метра», «Вне родных квадратных метров» и др. Тогда же произошёл конфликт, связанный с финансовыми и творческими разногласиями. Коллектив передачи месяцами не получал зарплату.
В период существования программы на канале «ТВ-6» случаев цензуры сюжетов передачи практически не было, преимуществом данного телеканала авторы передачи называли то, что он давал им «полную свободу». Одним из немногих примеров был случай, когда в период сексуального скандала, связанного с показом по государственному телевидению компрометирующей видеозаписи генпрокурора Скуратова, было принято решение не показывать сюжет с Обществом Тупых, обсуждавшим его личность, но когда шумиха вокруг его имени утихла, авторы всё равно показали этот сюжет про него. После 2002 года ситуация несколько изменилась. По словам Лазаревой и Шаца, на «СТС» творческая группа программы сталкивалась с цензурой. В частности, один раз запретили показывать пародийную песню на мотив «Меня зовут Вова» в исполнении Сергея Белоголовцева.
Сами же авторы позиционировали «О.С.П.-студию» как программу мягкого, доброго, лёгкого и неагрессивного юмора.
Участник группы «Агата Кристи» Глеб Самойлов со своей поклонницей. Екатеринбург, 1997 год.