sr

Поуздана аутоматизација привремене сандучетке API

Изградите детерминистичке тестове за регистрацију и ресетовање лозинке са јединственим адресама, ограниченим полингом, прецизним подударањем порука, безбедним руковањем кључем и корисним доказима о грешкама.

17. 7. 2026.

Компаактан аутоматски циклус за генерисање, примање, проверу и чишћење сандучетке

Непоуздана верзија теста е‑поште је кратка: направите адресу, успавате пет секунди, прочитате прву поруку и надајете се да припада овом покретању.

Поуздана верзија је и даље једноставна, али третира испоруку као асинхрону. Креира јединствену адресу, бележи време почетка, полингује унутар рокa, упоређује жељену поруку, верификује радњу производа и извештава довољно контекста када нешто не успе.

Држите API кључ ван URL‑а

Пошаљите GPTMail кључ у заглављу X-API-Key. Немојте га стављати у параметре упита ?api_key=. URL‑ови се редовно чувају у историји прегледача, записима приступа, системима за надгледање и референтним подацима.

X-API-Key: YOUR_API_KEY

Сачувајте кључ у вашем CI менаџеру тајни и маскирајте га у записима. Јавни дневни кључ је згодан за истраживање; контролисани аутоматизовани скупови треба да користе кључ чији квоту и употребу можете пратити.

Тренутни крајњи тачке и примери одговора се одржавају на страници GPTMail API документације.

Једна адреса по покретању

Генеришите нову адресу за сваки независно извршив тест. Не закључујте исправност на основу сандучетке коју дели цео тест скуп.

Запишите адресу, ID сценарија, окружење и време почетка теста. Ове вредности вам омогућавају да одбаците застареле поруке и дијагностикујете колизије без бележења тајних података порука.

Полинг у складу са роком, а не фиксним спавањем

Време испоруке е‑поште варира. Фиксно спавање од пет секунди је и непотребно када је испорука брза и нестабилно када је спора.

Користите ограничени циклус:

deadline = now + 90 seconds
delay = 2 seconds

while now < deadline:
  messages = list inbox
  candidate = newest message matching sender, subject, and start time
  if candidate exists:
    read candidate and continue the product test
  wait delay with a small random jitter
  delay = min(delay * 1.5, 10 seconds)

Рок припада уговору теста. Ток ресетовања лозинке може захтевати другачији лимит од прегледа масовног билтена. Држите лимит експлицитним како споре зависности не би тихо продужавале цео CI посао.

Прецизно упоређивање

„Прва порука у сандучетци“ није корисан селектор. Упоредите неколико сигнала:

  • прималац је једнак адреси креираној за ово покретање;
  • време креирања је касније од времена покретања;
  • пошиљалац припада очекиваној услузи;
  • предмет или тип поруке одговара током;
  • ID поруке још није искоришћен.

Када пошиљалац може послати неколико кодова, изаберите најновију поруку која одговара. Сачувајте њен ID у излазу теста како поновни покушаји не би случајно искористили исти.

Читајте само након подударања листе

Листање сандучетке треба да буде јефтин корак откривања. Пуна порука се преузима само за изабраног кандидата. Ово смањује непотребан рад и избегава парсирање неповезане промотивне поште.

Верификујте пословни резултат, а не само присуство шестцифреног низа. Пошаљите код или отворите очекивану везу, затим тврдо утврдите да налог стиже у исправно стање.

Третирајте ограничења брзине као сигнал

Ако API врати одговор о квоти или ограничењу брзине, зауставите текући покушај и прикажите информације о ресету. Агресивни поновни покушаји претварају јасан сигнал капацитета у шум и могу одложити неповезане тестове.

Ограничите конкурентност у тест рањеру, посебно када скуп тестова креира много адреса одједном. Мали пул радника је лакши за отклањање грешака него стотине истовремених полинг циклуса.

Чишћење без скривања грешака

Чишћење треба да се изврши након што се докази прикупе. При успеху, уклоните поруке или дозволите кратко задржавање. При неуспеху, задржите адресу и ID поруке у заштићеним CI артефактима довољно дуго за истраживање, затим их избришите.

Никада не исписујте верификационе кодове, приватне везе или целе HTML садржаје у јавне дневнике изградње.

Учини поновне покушаје идемпотентним

Поновите тест као ново покретање са новом адресом. Не претпостављајте да понављање истог захтева према истом налогу и сандучетци почиње од чистог стања. Пољалац може неважећи старе кодове, ограничити понављајуће захтеве или одбити дупле позиве.

Ако мрежни захтев истекне, разликујте „није примљен одговор“ од „операција се није догодила“. Проверите видљиво стање пре него што извршите деструктивни поновни покушај.

Пријавите тачку неуспеха

Корисни неуспех аутоматизације идентификује једну од следећих фаза:

  1. генерисање адресе није успело;
  2. радња производа није успела пре стављања е‑поште у ред;
  3. ниједна одговарајућа порука није стигла пре рока;
  4. порука је стигла, али садржај се не поклапа;
  5. радња верификације није успела;
  6. чишћење није успело.

Та класификација претвара интермитентно „тест е‑поште није успео“ у задатак који тим може преузети.

За већи тест матрикс, прочитајте Прави план тестирања е‑поште. За дијагнозу испоруке, користите Верификациона е‑пошта не стиже: пронађите неисправан корак.

GPTMail