Global Parameters
Testlerinizin can damarı. URL'ler, credentials, dinamik veriler - her şeyi tek yerden yönetin, her yerde kullanın.
Global Parameters Nedir?
Global Parameters, testlerinizde kullanacağınız değişkenleri merkezi olarak tanımlamanızı sağlar. Bir kez tanımla, her yerde {{param_name}} syntax'ı ile kullan.
Tek Noktadan Değişim
URL değişti? Tek yerden güncelle
Environment Desteği
Dev, Staging, Prod ayrı config
Step'ler Arası Paylaşım
Bir step'in output'u diğerinin input'u
Kullanım Alanları
URL & Endpoint'ler
Base URL, API endpoint'leri, CDN adresleri
{{base_url}}, {{api_url}}, {{cdn_url}}
Credentials
Test kullanıcı bilgileri, API key'ler
{{test_email}}, {{test_password}}, {{api_key}}
Test Data
Ürün ID'leri, kategori kodları, sabit değerler
{{product_id}}, {{category_code}}, {{country}}
Dinamik Değerler
Timestamp, random string, unique ID
{{$timestamp}}, {{$randomEmail}}, {{$uuid}}
Step Çıktıları
API response, JS result, extracted values
{{order_id}}, {{auth_token}}, {{user_name}}
Config & Flags
Feature flag'ler, timeout değerleri
{{timeout}}, {{retry_count}}, {{is_premium}}
Syntax & Kullanım
Temel Syntax
{{parameter_name}}
Nerede Kullanabilirsin?
✓ Action'larda
Type: {{username}}
✓ URL'lerde
{{base_url}}/products/{{product_id}}
✓ API Body'de
{"token": "{{auth_token}}"}
✓ Assertion'larda
Text Equals: {{expected_title}}
✓ Selector'larda
#product-{{product_id}}
✓ Script'lerde
const id = "{{user_id}}";
Dikkat!
Parameter isimleri case-sensitive'dir. {{UserName}} ile {{username}} farklı değişkenlerdir.
Gerçek Senaryo Örnekleri
Senaryo 1: Multi-Environment Test
Aynı test, farklı ortamlarda çalışsın
🎯 Kullanım Durumu: Login testini hem staging hem production'da çalıştırmak istiyorsun. URL ve credentials farklı.
Global Parameters (Environment: Staging)
base_url = https://staging.myapp.com
api_url = https://api-staging.myapp.com
test_email = test@staging.myapp.com
test_password = Staging123!
Global Parameters (Environment: Production)
base_url = https://www.myapp.com
api_url = https://api.myapp.com
test_email = smoketest@myapp.com
test_password = Prod456!
Testlerde {{base_url}} kullan, çalıştırırken environment seç. Kod değişikliği yok!
Senaryo 2: Sipariş Akışı (Data Chain)
Bir step'in çıktısı, diğerinin girdisi
🎯 Kullanım Durumu: Sipariş ver → Sipariş ID al → Detay sayfasına git → Siparişi iptal et. Her adım önceki adımın verisini kullanıyor.
API: Create Order
Response'dan $.data.orderId → order_id'ye kaydet
Navigate
{{base_url}}/orders/{{order_id}}
Assertion
Order ID visible: {{order_id}}
API: Cancel Order
DELETE /api/orders/{{order_id}}
Senaryo 3: Her Çalışmada Unique Data
Kayıt testinde email conflict olmasın
🎯 Kullanım Durumu: Kullanıcı kayıt testi. Her çalışmada farklı email lazım, yoksa "Email already exists" hatası.
Global Parameters
// Built-in fonksiyonlar ile
unique_email = test_{{$timestamp}}@myapp.com
unique_username = user_{{$randomString(8)}}
// Örnek çıktılar:
// test_1704825600000@myapp.com
// user_xK9mPq2w
Her test çalışmasında benzersiz değerler oluşur. Paralel testlerde bile conflict yok!
Senaryo 4: Ortak Credentials Yönetimi
Şifre değişti, 100 testi güncelleme
🎯 Kullanım Durumu: Test kullanıcısının şifresi değişti. 100 testte hardcoded şifre var. Hepsini tek tek mi güncelleyeceksin?
❌ YANLIŞ
// Her testte hardcoded
Type: admin@test.com
Type: OldPassword123
Şifre değişince 100 test FAIL!
✓ DOĞRU
// Global Parameter kullan
Type: {{admin_email}}
Type: {{admin_password}}
Tek yerden güncelle, bitti!
Senaryo 5: Dynamic Selector
Farklı ürünler için aynı test
🎯 Kullanım Durumu: "Sepete Ekle" testini farklı ürünler için çalıştırmak istiyorsun. Ürün ID'sini parametre yap.
Global Parameters
product_id = 12345
product_name = iPhone 15 Pro
Test Steps
1. Navigate: {{base_url}}/products/{{product_id}}
2. Click: #add-to-cart-{{product_id}}
3. Assertion: Cart contains "{{product_name}}"
Data-Driven Testing: Aynı testi CSV/Excel'den farklı product_id'lerle çalıştır!
Built-in Fonksiyonlar
| Fonksiyon | Açıklama | Örnek Çıktı |
|---|---|---|
{{$timestamp}} |
Unix timestamp (ms) | 1704825600000 |
{{$isoDate}} |
ISO 8601 tarih | 2025-01-09T14:30:00Z |
{{$uuid}} |
UUID v4 | a1b2c3d4-e5f6-... |
{{$randomString(n)}} |
n karakterli random string | xK9mPq2w |
{{$randomInt(min,max)}} |
min-max arası random sayı | 42 |
{{$randomEmail}} |
Random email adresi | user_x9k2@test.com |
{{$randomPhone}} |
Random telefon numarası | +905551234567 |
{{$today(format)}} |
Bugünün tarihi (format) | 2025-01-09 |
Scope & Öncelik
Aynı isimli parametre birden fazla yerde tanımlıysa, öncelik sırası:
Step Level (En Yüksek)
Step içinde set edilen değer
Testcase Level
Testcase'e özgü parametreler
Environment Level
Seçili environment'ın parametreleri
Project Level (En Düşük)
Proje genelinde varsayılan değerler
Örnek: Project'te timeout=30, Environment'ta timeout=60 tanımlıysa, test 60 değerini kullanır.
Sık Sorulan Sorular
Parametre değerinde özel karakter kullanabilir miyim?
Evet! JSON, URL, HTML içerik gibi kompleks değerler saklayabilirsin. Ancak {{ ve }} karakterlerinden kaçın.
Şifreleri güvenli saklamak için ne yapmalıyım?
Hassas veriler için "Secret" tipinde parametre oluştur. Bu değerler loglarda ve raporlarda maskelenir (*****).
Parametre tanımlı değilse ne olur?
Test çalışmadan önce validation yapılır. Undefined parametre varsa test başlamaz ve hata mesajı gösterilir.
Runtime'da parametre değerini değiştirebilir miyim?
Evet! "Set Global Parameter" step'i veya API/Python/JS step'lerinde "Save to Parameter" özelliği ile runtime'da değer atayabilirsin.