SmartestQADocs
public VERİ YÖNETİMİ

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.

{{base_url}}
https://staging.myapp.com

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.

1

API: Create Order

Response'dan $.data.orderIdorder_id'ye kaydet

2

Navigate

{{base_url}}/orders/{{order_id}}

3

Assertion

Order ID visible: {{order_id}}

4

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ı:

1

Step Level (En Yüksek)

Step içinde set edilen değer

2

Testcase Level

Testcase'e özgü parametreler

3

Environment Level

Seçili environment'ın parametreleri

4

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.