Нагрузим IT!
315 subscribers
364 photos
15 videos
207 links
📊 Тестирование без душноты

QA-инженер Ozon и преподаватель объясняет нагрузку, инструменты и собесы простым языком

Чат: @lets_load_chat
Автор: @Slabodenyuk_Anatoly
Download Telegram
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡3
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡2
Начал учить английский 🇺🇸

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

Раньше я уже писал в канале о своём пути к сертификации ISTQB и разбирал главы силлабуса (можете найти по тегу #ISTQB). Теперь хочу также документировать ещё одну историю: как внедряю английский в жизнь.

💜 Мои цели:
• говорить о своей работе в QA и в целом поддерживать разговор об IT;
• подготовиться и сдать ISTQB на английском, так как русскую попытку я не сдал, перекладываю ответственность на не очень качественный перевод вопросов на экзамене, а не потому что я тупенький 🙈

🛠 Что делаю сейчас:
• занимаюсь с репетитором два раза в неделю;
• каждый день иду по грамматике с самого начала по вот такому плейлисту на Ютубе «Английскому язык за 20 уроков», чтобы структурировать базу (рекомендую)
• использую ChatGPT в голосовом режиме как тренажёр «24/7»: поговорить о работе, прокрутить диалог, разобрать фразу между занятиями.
• Смотрю Свинку Пеппу в оригинале 🐷

Если интересно, как я настроил ChatGPT под такую разговорную практику, поставьте ⚡️. В одном из следующих постов покажу
схему

И поделитесь своим опытом изучения иностранных языков в комментариях

#ИнглишВериВелл
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡5
🤔 Что за переменные среды такие?

Переменная среды это пара ИМЯ=ЗНАЧЕНИЕ, которую программа получает при запуске.

Например:
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 не обязан писать приложения на каждом языке.  Достаточно понимать, зачем этот язык обычно используют и как в нём выглядят базовые вещи. 🤔

Тогда увиденный кусок кода уже не выглядит как заклинание.

Можно хотя бы найти запрос, проверку, условие, цикл или ошибку. А потом уже задать разработчику конкретный вопрос

Собрал пять языков программирования в виде супергероев, чтобы у вас сформировались сильные ассоциации. У каждого своя миссия, сильная сторона и слабость - всё, как у супермена 🦸‍♂

Листайте карточки. Какой язык вам сейчас кажется самым непонятным?

#Термин
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-собеседования (обсудим ручное тестирование, бэкенд и базу по нагрузке)
• разберём не только ответ, но и ход мысли;
• после встречи я подсвечу сильные стороны, пробелы и план подготовки

Подойдёт тем, кто только входит в тестирование или уже ходит на собеседования, но хочет перестать учить ответы, а чувствовать себя как рыба в воде 💧

Возьму двух человек БЕСПЛАТНО в бета-формате. Взамен попрошу честный отзыв и разрешение анонимно описать результат, без личных деталей 🫰

Трудоустройство не обещаю 😭 Но после такой репетиции станет понятнее, что подтянуть перед настоящим собесом.

Хотите попасть? Напишите мне в личку. Я уточню вашу цель и предложу время :)

#Собес
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡1
👀 gRPC глазами тестировщика: почему 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
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡1
Компилятор и интерпретатор: в чём разница? 👀

Компилятор и интерпретатор оба стоят между исходным кодом и его выполнением. Но задачи у них разные.

Компилятор переводит исходный код (который вы написали своими ручками) в другое представление, например, в машинный код или байткод. В классической схеме это происходит до запуска программы, а результат можно сохранить отдельно (например, JAR файл в Java) 📁

Как переводчик, который заранее перевёл всю книгу. Готовый перевод можно читать снова и снова.

Интерпретатор выполняет исходный код или промежуточные инструкции прямо во время работы программы. 👨‍💻

Это уже синхронный переводчик: человек говорит, а перевод появляется по ходу разговора.

Эти подходы также могут сочетаться. Например, Python-код сначала компилируется в байткод, а затем этот байткод выполняет интерпретатор.

И давайте ещё раз:
• компилятор переводит код в другое представление; 
• интерпретатор выполняет инструкции по ходу выполнения программы

#Термин
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡1
Свой учебный API. С блэкджеком и… тестами 😗

Про блэкджек шутка. А 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. На ней выше лимиты и шире доступ к голосовым функциям. Но саму схему можно повторить и без подписки: проекты доступны и на бесплатных аккаунтах, хотя набор инструментов и лимиты отличаются.

Для английского я создал отдельный Проект. Это рабочее пространство внутри ChatGPT, где в одном месте лежат диалоги, файлы и отдельная инструкция. Новые чаты внутри проекта могут использовать этот контекст, поэтому не приходится каждый раз заново объяснять, кто ты такой и что хочешь, ИИшке 🔄

В настройках проекта я добавил Глобальную инструкцию для проекта. По сути, это системная инструкция только для моего английского пространства. В ней указал:
• текущий уровень;
• какие темы хочу закрепить сначала;
• как объяснять грамматику;
• сколько ошибок исправлять за раз;
• как проводить обычный урок;
• итд

Свою инструкцию я превратил в шаблон. В нём значения вроде уровня, профессии, целей и слабых мест отмечены как {{параметры}}. Полный шаблон и оставлю в комментариях. 📎

Для разговорной практики открываю Голосовой режим прямо внутри проекта. Я слышу ответ ИИшки и отвечаю голосом, поэтому одновременно тренирую аудирование и разговор.

Вариант для тех, кто хочет заморочиться ещё сильнее: 💪
Вести отдельный документ прогресса в Google диске.

Если Google диск подключён к ChatGPT и для аккаунта доступны действия записи, чат может создать и обновлять документ, например, перед новым уроком я прошу прочитать его, а после занятия сохранить изученные темы, повторяющиеся ошибки и следующий шаг.

Есть нюанс: подключённые приложения сейчас не работают прямо внутри голосового чата. Поэтому документ лучше читать в текстовом режиме перед голосовым занятием, а обновлять его после выхода из голосового чата 🧠

В итоге новый диалог начинается с того места, где остановился прошлый урок.
Забирайте шаблон из комментариев и подставляйте свои параметры.

#ИнглишВериВелл
Please open Telegram to view this post
VIEW IN TELEGRAM
JSON вырос из XML? Не совсем. 😟

Есть устойчивое заблуждение, что 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
Инстанс: экземпляр чего именно?

«Поднимите ещё один инстанс» звучит как проведение обряда в фильме про экзорцизм 😅

На деле
instance

не отдельная технология. Это конкретный экземпляр чего-то.

В коде класс
User

можно представить как чертёж.

Объект
user_42

будет одним созданным по нему экземпляром (инстансом).

В инфраструктуре так могут назвать отдельный запущенный экземпляр сервиса. Например, приложение может работать параллельно в нескольких копиях себя же.

В облаке
instance

часто означает виртуальный сервер. В базах данных смысл зависит от СУБД. Например, в Oracle это память и процессы, которые обслуживают файлы базы.

Для QA важно уметь понимать, что это. Если ошибка есть только на одном инстансе, сравните его версию, конфигурацию и логи с остальными.

Услышали
instance

❓ Уточните: экземпляр чего именно?

#Термин
Please open Telegram to view this post
VIEW IN TELEGRAM