yoklateknik mülakat

QA / Test Otomasyonu Senior Mülakat Soruları

394 doğrulanmış QA / Test Otomasyonu Senior mülakat sorusu — cevaplarıyla çöz, açıklamalarıyla öğren, gerçek simülasyonda kendini test et.

Gerçek simülasyonu dene →

Örnek sorular

Qa Api TestingZorluk 3
Bir test, geçersiz bir e-posta formatıyla POST /accounts gönderiyor ve şunu alıyor:
{"status": 200, "body": {"id": null, "error": "invalid email"}}

Bu response, API testi açısından neden kötü tasarlanmış?
  • a200 status, önce status'e bakan her istemciye başarı der; hata body'nin içinde gizli kalır
  • bGerçekte ne yanlış gittiğinden bağımsız olarak, response body'sinde asla "error" kelimesi geçmemelidir
  • cOluşturma başarısız olduğunda id alanı null yerine rastgele üretilmiş bir placeholder değer içermelidir
  • dJSON response'lar validation hatalarını tanımlayamaz; hata bilgisi yalnızca HTTP header'larında taşınabilir
Açıklama:Birçok istemci (ve basit monitoring) önce status code'a göre dallanır; 200 "bu işe yaradı" der, body'ye inmeyen bir istemci reddedilmiş, geçersiz bir isteği başarı sanır. Çözüm, gerçekte olanla eşleşen bir 4xx status'tür (örn. 400/422), üzerine body'deki detay eklenir. "error" kelimesinden kaçınmak (b) kozmetiktir ve alakasızdır, sahte bir placeholder id (c) başarısızlığı başarıya daha da çok benzetir, hata detayının body'de olması header'lardan bağımsız olarak doğaldır (d).
Qa Api TestingZorluk 3
Bir test, yalnızca bir bildirim servisinin başarı döndürdüğünü değil, gerçekten doğru alıcıyla tam olarak bir kez çağrıldığını da doğrulamak istiyor. Hangi test double türü buna uygundur ve neden?
  • aStub — çünkü stub'lar yanıt döndürmenin bir yan etkisi olarak her çağrıyı otomatik olarak kaydeder
  • bGerçek servis — çünkü alıcı değerinin doğru olduğunu yalnızca gerçek bağımlılık kanıtlayabilir
  • cMock — çünkü mock, testin etkileşimin kendisini (bir kez, beklenen alıcıyla çağrıldı mı) iddia etmesine izin verir
  • dBurada hiçbir test double uygun değildir; bu tür bir kontrol yalnızca production log'larının manuel incelemesiyle yapılabilir
Açıklama:Bu gereksinim, yalnızca hazır bir sonuç sağlamak değil davranış doğrulamasıdır (çağrı yapıldı mı, kaç kez, hangi argümanlarla) — mock'un tam olarak var olduğu yer burasıdır. Düz bir stub (a) yanıt döndürür ama çağrı-sayısı ve argüman kontrollerini testin iddialarının parçası yapmak için tasarlanmamıştır. Gerçek servis (b), kendi kodunuzun ona hangi argümanları geçtiğini doğrulamak için gerekli değildir, manuel log kontrolü (d) aynı şey otomatik ve tekrarlanabilir şekilde iddia edilebiliyorken gereksizdir.
Qa Api TestingZorluk 3
Bir test bir kaynak oluşturuyor, kontrol ediyor ve hiç silmiyor. Paylaşımlı test ortamında yüz kez çalıştırılınca kaynak listesi binlerce kayda çıkıyor ve alakasız bir GET /resources testi timeout vermeye başlıyor. Altta yatan sorun nedir?
  • aGET /resources endpoint'inde bug var; gerçekte kaç kaynak olduğunu yok sayacak şekilde yeniden yazılmalı
  • bTest ortamının sunucusunun daha fazla belleğe ihtiyacı var — veri büyüdükçe her endpoint eninde sonunda yavaşlar
  • cHiçbir sorun yok; büyüyen kaynak sayısı testlerin tekrar tekrar çalıştırılmasının normal ve beklenen bir yan etkisidir
  • dOluşturan test temizlik yapmadan veri bırakıyor; kalan veri paylaşımlı ortamı diğer testler için kirletiyor
Açıklama:Veri oluşturan ama hiç kaldırmayan bir test, paylaşımlı ortamda kalıcı bir kalıntı bırakır; çok sayıda çalıştırmada bu kalıntı birikir ve orijinal testle hiçbir ilgisi olmayan testleri etkilemeye başlar — testlerin düzgün izole ve kendi kendini temizleyen olmamasının bir belirtisi. Çözüm, her çalıştırma sonrası oluşturulanı kaldırmak (ya da özel, tek kullanımlık veri kullanmak)tır. Listeleme endpoint'i gerçekten daha büyük bir veri kümesi altında yavaşladığı için mutlaka hatalı değildir (a), daha fazla bellek (b) aynı birikimi yalnızca erteler, buna göz yummak (c) tam olarak kaçınılması gereken pratiktir.
Qa Api TestingZorluk 3
Bir response'un şu kuralları sağlaması bekleniyor: id bir integer, name boş olmayan bir string, price sıfırdan büyük bir sayı. Şu response verildiğinde:
{"id": "7", "name": "", "price": 12.5}

Bu response'un schema validation'ı hakkında hangi ifade doğrudur?
  • aResponse geçer, çünkü "7" her schema validator'da otomatik olarak integer 7'ye dönüştürülebilir
  • bResponse geçer, çünkü price'ın pozitif olması schema validation'ın kontrol edebildiği tek kuraldır
  • cResponse başarısız olur, çünkü id integer yerine string ve name boş-olmayan yerine boş
  • dResponse yalnızca id'nin tipi yüzünden başarısız olur; boş bir string yine de geçerli, boş-olmayan bir string sayılır
Açıklama:Belirtilen kurallara göre aynı anda iki şey yanlıştır: id, integer yerine "7" string'i olarak geliyor, ve name boş bir string — "boş olmayan"ı sağlamıyor. Bir schema validator varsayılan olarak sessizce tip dönüştürmez (a) — bu gerçek bir tip uyumsuzluğunu gizlerdi — ve schema validation genel olarak yapı ve tip kısıtlarını kontrol eder, yalnızca sayısal aralıkları değil (b); listelenen ihlallerin ikisi de gerçektir, yalnızca biri değil (d).
Qa Api TestingZorluk 3
Bir backend, mevcut bir response'a yeni bir opsiyonel alan (discountCode) ekliyor. Consumer'ın testleri, bilinmeyen alanları geçersiz sayan bir schema ile yazılmış (additionalProperties: false ya da eşdeğeri). Ne olur ve bu ne ortaya koyar?
  • aConsumer'ın testleri tamamen katkısal bir değişiklikte başarısız olur; schema'nın amaçlanandan daha katı olduğunu ortaya koyar
  • bHiçbir şey olmaz, çünkü schema validation yalnızca eksik alanları kontrol eder, beklenmedik şekilde var olan alanları asla kontrol etmez
  • cProvider'ın kendi testleri hemen başarısız olur, çünkü bir response'a herhangi bir alan eklemek her zaman breaking bir API değişikliğidir
  • dConsumer otomatik olarak discountCode'u kendi mantığında kullanmaya başlar, çünkü schema'lar yeni alanları doğrudan consumer'lara yayar
Açıklama:Zaten bilmediği herhangi bir alanı reddeden bir schema, zararsız, katkısal bir değişikliği kırılma gibi ele alır — buradaki versiyon uyumluluğu sorunu API değişikliğinde değil, testin kendi katılığındadır. Schema'yı bilinmeyen ekstra alanlara izin verecek (ve onları basitçe yok sayacak) şekilde gevşetmek, gerçekten uyumlu değişikliklerin geçmesini sağlarken eksik ya da yanlış tipte zorunlu bir alan gibi gerçek sözleşme ihlallerini yakalamaya devam eder. Schema validation, öyle yapılandırıldığında beklenmedik ekstra alanları kesinlikle işaretleyebilir (b), opsiyonel bir alan eklemek katkısaldır, doğası gereği breaking değildir (c), bir schema consumer'ın bir alanı kendiliğinden tüketmeye başlamasına yol açmaz (d).
Qa Automation FundamentalsZorluk 3
Bir test suite'i testler sabit alfabetik sırada çalıştığında geçiyor ama birçok CI aracının flaky testleri ortaya çıkarmak için kullandığı rastgele sırada çalıştığında başarısız oluyor. Her test tek başına sorunsuz geçiyor. Bu en güçlü şekilde neyi işaret eder?
  • aCI aracının rastgeleleştirme özelliğinin kendisi arızalı
  • bTestler sadece ağ zamanlamasından dolayı flaky, sırayla ilgisi yok
  • cBazı testler, alfabetik olarak önce çalışan testlerden kalan state'e bağımlı
  • dSuite'te güvenle çalıştırılamayacak kadar çok test var
Açıklama:Sabit bir sırada geçip rastgeleleştirmede başarısız olmak, her test tek başına sorunsuzken, araç arızasından çok bir sıra-bağımlılığı bug'ının imzasıdır. a aracın bozuk olduğunu varsayıyor ki bu gerçek bir bağımlılıktan çok daha az olası; b ve d neden özellikle sıranın önemli olduğunu açıklamıyor.

600 soruluk QA / Test Otomasyonu bankasında kendini sına.

Mülakata başla