Переменная среды это пара
ИМЯ=ЗНАЧЕНИЕ, которую программа получает при запуске.Например:
BASE_URL=https://test-api.example
LOG_LEVEL=debug
FEATURE_NEW_CHECKOUT=true
Код остаётся тем же, а настройка меняется под окружение. На тестовом стенде
BASE_URL ведёт в test API, на продовом в production API. Не нужно переписывать адрес прямо в каждом запросе.Для QA это встречается постоянно: базовый URL, тестовый пользователь, режим логирования. Когда «у меня работает, а на стенде нет», часто проблема именно в том, какое значение подхватилось.
.env и переменные среды. .env - обычный текстовый файл с парами ИМЯ=ЗНАЧЕНИЕ. Сам по себе он ничего не передаёт программе: нужен инструмент, который прочитает файл и добавит значения в окружение запуска.
Поэтому .env - источник настроек на диске, а переменная среды - значение, которое уже получила запущенная программа.
Если в .env есть пароль или токен, такой файл не коммитят. Для шаблона можно хранить .env.example без секретных значений; в проде секреты берут из согласованного хранилища.
В следующий раз перед запуском посмотрите, чему равны
BASE_URL . Иногда это экономит часы дебага.#Термин
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡1
Нужно ли QA знать все языки программирования? 👀
Когда в проекте встречаешься сразу с несколькими языками программирования, легко подумать, что тестировщику нужно знать всё о всех языках
Но нет👍
QA не обязан писать приложения на каждом языке. Достаточно понимать, зачем этот язык обычно используют и как в нём выглядят базовые вещи.🤔
Тогда увиденный кусок кода уже не выглядит как заклинание.
Можно хотя бы найти запрос, проверку, условие, цикл или ошибку. А потом уже задать разработчику конкретный вопрос
Собрал пять языков программирования в виде супергероев, чтобы у вас сформировались сильные ассоциации. У каждого своя миссия, сильная сторона и слабость - всё, как у супермена 🦸♂
Листайте карточки. Какой язык вам сейчас кажется самым непонятным?
#Термин
Когда в проекте встречаешься сразу с несколькими языками программирования, легко подумать, что тестировщику нужно знать всё о всех языках
Но нет
QA не обязан писать приложения на каждом языке. Достаточно понимать, зачем этот язык обычно используют и как в нём выглядят базовые вещи.
Тогда увиденный кусок кода уже не выглядит как заклинание.
Можно хотя бы найти запрос, проверку, условие, цикл или ошибку. А потом уже задать разработчику конкретный вопрос
Собрал пять языков программирования в виде супергероев, чтобы у вас сформировались сильные ассоциации. У каждого своя миссия, сильная сторона и слабость - всё, как у супермена 🦸♂
Листайте карточки. Какой язык вам сейчас кажется самым непонятным?
#Термин
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡1
Запустили нагрузочный тест второй раз? И после нового прогона выросло время ответа системы?
Логичная мысль:
система стала медленнее.
Если между прогонами одновременно поменялось несколько вещей: версия сборки, сценарий, RPS, тестовые данные или окружение и прочее, то понять, почему результаты изменились, уже почти невозможно. Это два разных эксперимента.
• версию сборки и сценария;
• профиль нагрузки;
• окружение и набор тестовых данных.
А между сравниваемыми прогонами по возможности меняйте один главный фактор. Тогда результаты будут осевидны
#НагрузочнаяМелочь
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡1
Ищу двух человек на БЕСПЛАТНЫЙ МОК-собес по QA 🎯
Бывает так:
Вроде шаришь за АЙТИ, пилишь свои пет-проекты, твой эй-ай ассистент делает тебе капучинку на кокосовом каждое утро, но на собеседовании мысли вдруг уходят в режим перезагрузки😅
Хочу проверить формат такого пробного собеса. Это генеральная репетиция: можно запнуться, переспросить и увидеть слабые места, мы для этого и соберемся :)
⏳ За 60 минут:
• проведём полноценную имитацию QA-собеседования (обсудим ручное тестирование, бэкенд и базу по нагрузке)
• разберём не только ответ, но и ход мысли;
• после встречи я подсвечу сильные стороны, пробелы и план подготовки
Подойдёт тем, кто только входит в тестирование или уже ходит на собеседования, но хочет перестать учить ответы, а чувствовать себя как рыба в воде💧
Возьму двух человек БЕСПЛАТНО в бета-формате. Взамен попрошу честный отзыв и разрешение анонимно описать результат, без личных деталей🫰
Трудоустройство не обещаю😭 Но после такой репетиции станет понятнее, что подтянуть перед настоящим собесом.
Хотите попасть? Напишите мне в личку. Я уточню вашу цель и предложу время :)
#Собес
Бывает так:
Вроде шаришь за АЙТИ, пилишь свои пет-проекты, твой эй-ай ассистент делает тебе капучинку на кокосовом каждое утро, но на собеседовании мысли вдруг уходят в режим перезагрузки
Хочу проверить формат такого пробного собеса. Это генеральная репетиция: можно запнуться, переспросить и увидеть слабые места, мы для этого и соберемся :)
• проведём полноценную имитацию QA-собеседования (обсудим ручное тестирование, бэкенд и базу по нагрузке)
• разберём не только ответ, но и ход мысли;
• после встречи я подсвечу сильные стороны, пробелы и план подготовки
Подойдёт тем, кто только входит в тестирование или уже ходит на собеседования, но хочет перестать учить ответы, а чувствовать себя как рыба в воде
Возьму двух человек БЕСПЛАТНО в бета-формате. Взамен попрошу честный отзыв и разрешение анонимно описать результат, без личных деталей
Трудоустройство не обещаю
Хотите попасть? Напишите мне в личку. Я уточню вашу цель и предложу время :)
#Собес
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡1
200 Ок ещё ничего не доказываетВ HTTP всё привычно:
дергаем
GET /users/42, JSON в ответе, статус 404, значит такого пользователя нет - все просто Открываете gRPC, а там
UserService/GetUserИ какой-то файл
.proto и ещё статусы вроде
OK или NOT_FOUND. Первые пять минут хочется переехать на HTTP обратно gRPC позволяет клиенту вызвать метод другого сервиса почти как обычную функцию. Контракт обычно описан в том самом файле
.proto: какие методы доступны, какие сообщения они принимают и возвращают. Данные чаще всего кодируются и передаются поверх HTTP/2.Результат нужно смотреть по
grpc-status: -
0 означает OK, остальные значения обозначают ошибки. - Вместо привычных
4xx и 5xx здесь встречаются INVALID_ARGUMENT, NOT_FOUND, DEADLINE_EXCEEDED и другие статусы.Поэтому при проверке смотрим не только на транспорт:
• соответствует ли вызов контракту из
.proto; • верный ли gRPC-статус вернулся для конкретной ситуации;
• совпадают ли поля ответа и изменилось ли состояние системы как ожидалось;
• если метод потоковый, в каком порядке приходят сообщения и как закрывается поток.
Привычных URL и JSON может не быть. Но задача QA та же: понять, что вызвали, что получили и что реально изменилось в системе
#Термин
Please open Telegram to view this post
VIEW IN TELEGRAM
Компилятор и интерпретатор: в чём разница? 👀
Компилятор и интерпретатор оба стоят между исходным кодом и его выполнением. Но задачи у них разные.
Компилятор переводит исходный код (который вы написали своими ручками) в другое представление, например, в машинный код или байткод. В классической схеме это происходит до запуска программы, а результат можно сохранить отдельно (например, JAR файл в Java)📁
Как переводчик, который заранее перевёл всю книгу. Готовый перевод можно читать снова и снова.
Интерпретатор выполняет исходный код или промежуточные инструкции прямо во время работы программы.👨💻
Это уже синхронный переводчик: человек говорит, а перевод появляется по ходу разговора.
Эти подходы также могут сочетаться. Например, Python-код сначала компилируется в байткод, а затем этот байткод выполняет интерпретатор.
И давайте ещё раз:
• компилятор переводит код в другое представление;
• интерпретатор выполняет инструкции по ходу выполнения программы
#Термин
Компилятор и интерпретатор оба стоят между исходным кодом и его выполнением. Но задачи у них разные.
Компилятор переводит исходный код (который вы написали своими ручками) в другое представление, например, в машинный код или байткод. В классической схеме это происходит до запуска программы, а результат можно сохранить отдельно (например, JAR файл в Java)
Как переводчик, который заранее перевёл всю книгу. Готовый перевод можно читать снова и снова.
Интерпретатор выполняет исходный код или промежуточные инструкции прямо во время работы программы.
Это уже синхронный переводчик: человек говорит, а перевод появляется по ходу разговора.
Эти подходы также могут сочетаться. Например, Python-код сначала компилируется в байткод, а затем этот байткод выполняет интерпретатор.
И давайте ещё раз:
• компилятор переводит код в другое представление;
• интерпретатор выполняет инструкции по ходу выполнения программы
#Термин
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡1
Свой учебный API. С блэкджеком и… тестами 😗
Про блэкджек шутка. А API хочу сделать настоящий.
В своё время я очень долго пытался понять, что такое API. Вообще все просто: одна программа отправляет запрос другой и получает ответ. Но пока сам не нажмёшь
, не посмотришь JSON и не поймаешь первую ошибку, в голове обезьянка с музыкальными тарелками🙈
Поэтому хочу сделать учебный API для тех, кто сейчас разбирается с этой темой.
Представляю его как небольшой интерактивный мир с оригинальными персонажами и отсылками к поп-культуре. Там можно будет:
• получать персонажей, предметы и задания;
• создавать, менять и удалять их;
• специально ломать запросы и разбираться в ответах;
• тренировать:
,
,
,
, параметры, JSON и статус-коды.
Возможно, рядом будет простой UI: отправили запрос и сразу увидели, что изменилось в мире. Если проект окажется полезным, позже подумаю об отдельной gRPC-версии.
Но сначала хочу понять, нужен ли такой учебный проект кому-то кроме меня. Строить целую вселенную ведьмака для трёх человек немного обидно😁
Накидайте реакций, если нужен такой проект⚡️
Про блэкджек шутка. А API хочу сделать настоящий.
В своё время я очень долго пытался понять, что такое API. Вообще все просто: одна программа отправляет запрос другой и получает ответ. Но пока сам не нажмёшь
Send
, не посмотришь JSON и не поймаешь первую ошибку, в голове обезьянка с музыкальными тарелками
Поэтому хочу сделать учебный API для тех, кто сейчас разбирается с этой темой.
Представляю его как небольшой интерактивный мир с оригинальными персонажами и отсылками к поп-культуре. Там можно будет:
• получать персонажей, предметы и задания;
• создавать, менять и удалять их;
• специально ломать запросы и разбираться в ответах;
• тренировать:
GET
,
POST
,
PATCH
,
DELETE
, параметры, JSON и статус-коды.
Возможно, рядом будет простой UI: отправили запрос и сразу увидели, что изменилось в мире. Если проект окажется полезным, позже подумаю об отдельной gRPC-версии.
Но сначала хочу понять, нужен ли такой учебный проект кому-то кроме меня. Строить целую вселенную ведьмака для трёх человек немного обидно
Накидайте реакций, если нужен такой проект
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡15
Как я настроил ChatGPT для английского 😮
В прошлом посте я обещал показать свою схему. Выполняю.
У меня есть подписка ChatGPT Plus. На ней выше лимиты и шире доступ к голосовым функциям. Но саму схему можно повторить и без подписки: проекты доступны и на бесплатных аккаунтах, хотя набор инструментов и лимиты отличаются.
Для английского я создал отдельный🔄
В настройках проекта я добавил
• текущий уровень;
• какие темы хочу закрепить сначала;
• как объяснять грамматику;
• сколько ошибок исправлять за раз;
• как проводить обычный урок;
• итд
Свою инструкцию я превратил в шаблон. В нём значения вроде уровня, профессии, целей и слабых мест отмечены как📎
Для разговорной практики открываю
Вариант для тех, кто хочет заморочиться ещё сильнее:💪
Вести отдельный документ прогресса в Google диске.
Если Google диск подключён к ChatGPT и для аккаунта доступны действия записи, чат может создать и обновлять документ, например, перед новым уроком я прошу прочитать его, а после занятия сохранить изученные темы, повторяющиеся ошибки и следующий шаг.
Есть нюанс: подключённые приложения сейчас не работают прямо внутри голосового чата. Поэтому документ лучше читать в текстовом режиме перед голосовым занятием, а обновлять его после выхода из голосового чата 🧠
В итоге новый диалог начинается с того места, где остановился прошлый урок.
Забирайте шаблон из комментариев и подставляйте свои параметры.
#ИнглишВериВелл
В прошлом посте я обещал показать свою схему. Выполняю.
У меня есть подписка ChatGPT Plus. На ней выше лимиты и шире доступ к голосовым функциям. Но саму схему можно повторить и без подписки: проекты доступны и на бесплатных аккаунтах, хотя набор инструментов и лимиты отличаются.
Для английского я создал отдельный
Проект. Это рабочее пространство внутри ChatGPT, где в одном месте лежат диалоги, файлы и отдельная инструкция. Новые чаты внутри проекта могут использовать этот контекст, поэтому не приходится каждый раз заново объяснять, кто ты такой и что хочешь, ИИшке В настройках проекта я добавил
Глобальную инструкцию для проекта. По сути, это системная инструкция только для моего английского пространства. В ней указал:• текущий уровень;
• какие темы хочу закрепить сначала;
• как объяснять грамматику;
• сколько ошибок исправлять за раз;
• как проводить обычный урок;
• итд
Свою инструкцию я превратил в шаблон. В нём значения вроде уровня, профессии, целей и слабых мест отмечены как
{{параметры}}. Полный шаблон и оставлю в комментариях. Для разговорной практики открываю
Голосовой режим прямо внутри проекта. Я слышу ответ ИИшки и отвечаю голосом, поэтому одновременно тренирую аудирование и разговор. Вариант для тех, кто хочет заморочиться ещё сильнее:
Вести отдельный документ прогресса в Google диске.
Если Google диск подключён к ChatGPT и для аккаунта доступны действия записи, чат может создать и обновлять документ, например, перед новым уроком я прошу прочитать его, а после занятия сохранить изученные темы, повторяющиеся ошибки и следующий шаг.
Есть нюанс: подключённые приложения сейчас не работают прямо внутри голосового чата. Поэтому документ лучше читать в текстовом режиме перед голосовым занятием, а обновлять его после выхода из голосового чата 🧠
В итоге новый диалог начинается с того места, где остановился прошлый урок.
Забирайте шаблон из комментариев и подставляйте свои параметры.
#ИнглишВериВелл
Please open Telegram to view this post
VIEW IN TELEGRAM
JSON вырос из XML? Не совсем. 😟
Есть устойчивое заблуждение, что Json пришел на замену XML, но это не так, ребята
В 1998 году был опубликован XML 1.0.
Формат умел хранить структурированные данные в обычном тексте и хорошо подходил не только для данных, но и для документов с разметкой.
Например, пользователя можно описать так:
Для обмена простыми объектами это работало, но требовало много тегов. В начале 2000-х один умный дяденька - Дуглас Крокфорд - начал продвигать другой вариант:
JSON не сделали из XML и не выпустили как «XML 2.0».
Его синтаксис вырос из объектных литералов JavaScript. Объекты, массивы, строки, числа,
и
Небольшой набор правил, который легко сопоставить со структурами в разных языках.😋
Поэтому лучше сказать так:
XML при этом никуда не исчез. Он до сих пор встречается в SOAP, документах, конфигурациях и старых интеграциях. JSON чаще встречается в современных HTTP API.
Нужно уметь прочитать оба формата и понимать, какой контракт перед вами.🤓
#Факт
Есть устойчивое заблуждение, что Json пришел на замену XML, но это не так, ребята
В 1998 году был опубликован XML 1.0.
Формат умел хранить структурированные данные в обычном тексте и хорошо подходил не только для данных, но и для документов с разметкой.
Например, пользователя можно описать так:
<user>
<id>42</id>
<active>true</active>
</user>
Для обмена простыми объектами это работало, но требовало много тегов. В начале 2000-х один умный дяденька - Дуглас Крокфорд - начал продвигать другой вариант:
{
"id": 42,
"active": true
}JSON не сделали из XML и не выпустили как «XML 2.0».
Его синтаксис вырос из объектных литералов JavaScript. Объекты, массивы, строки, числа,
true
false
и
null
Небольшой набор правил, который легко сопоставить со структурами в разных языках.
Поэтому лучше сказать так:
JSON появился в мире, где XML уже показал ценность текстового обмена данными, и предложил более простую модель для многих веб-задач.
XML при этом никуда не исчез. Он до сих пор встречается в SOAP, документах, конфигурациях и старых интеграциях. JSON чаще встречается в современных HTTP API.
Нужно уметь прочитать оба формата и понимать, какой контракт перед вами.
#Факт
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡1
Инстанс: экземпляр чего именно?
«Поднимите ещё один инстанс» звучит как проведение обряда в фильме про экзорцизм😅
На деле
не отдельная технология. Это конкретный экземпляр чего-то.
В коде класс
можно представить как чертёж.
Объект
будет одним созданным по нему экземпляром (инстансом).
В инфраструктуре так могут назвать отдельный запущенный экземпляр сервиса. Например, приложение может работать параллельно в нескольких копиях себя же.
В облаке
часто означает виртуальный сервер. В базах данных смысл зависит от СУБД. Например, в Oracle это память и процессы, которые обслуживают файлы базы.
Для QA важно уметь понимать, что это. Если ошибка есть только на одном инстансе, сравните его версию, конфигурацию и логи с остальными.
Услышали
❓ Уточните: экземпляр чего именно?
#Термин
«Поднимите ещё один инстанс» звучит как проведение обряда в фильме про экзорцизм
На деле
instance
не отдельная технология. Это конкретный экземпляр чего-то.
В коде класс
User
можно представить как чертёж.
Объект
user_42
будет одним созданным по нему экземпляром (инстансом).
В инфраструктуре так могут назвать отдельный запущенный экземпляр сервиса. Например, приложение может работать параллельно в нескольких копиях себя же.
В облаке
instance
часто означает виртуальный сервер. В базах данных смысл зависит от СУБД. Например, в Oracle это память и процессы, которые обслуживают файлы базы.
Для QA важно уметь понимать, что это. Если ошибка есть только на одном инстансе, сравните его версию, конфигурацию и логи с остальными.
Услышали
instance
#Термин
Please open Telegram to view this post
VIEW IN TELEGRAM