El Testi (IT)Kıdemli Manuel QA Mühendisi - Mainframe Modernizasyonu

Bir **mainframe CICS** (Müşteri Bilgileri Kontrol Sistemi) çevrimiçi işlem işleme geçidini manuel olarak doğrularken, miras **COBOL** programlarını **RESTful** web hizmetleri olarak **z/OS Connect** aracılığıyla sergilerken, **COMMAREA** tampon sınır ihlallerini tespit etmek, dağıtılmış kaynak kurtarma sırasında **EXEC CICS SYNCPOINT** geri alma bütünlüğünü doğrulamak ve birden fazla **CICS** bölgesi **VSAM** kümelerini **RLS** (Kayıt Düzeyi Paylaşımı) erişim modunda paylaştığında **TDQ** (Geçici Veri Kuyruğu) tetikleyici işlemesini doğrulamak için hangi sistematik manuel test metodolojisini kullanırsınız?

Hintsage yapay zeka asistanı ile mülakatları geçin

Sorunun Cevabı

Soru Geçmişi

Bu soru, on yıllık eski CICS işlemlerinin, çekirdek bankacılık veya sigorta sistemlerini destekleyen, modern REST API'ler olarak z/OS Connect veya benzeri ara yazılımlar aracılığıyla sergilendiği kurumsal modernizasyon girişimlerinden kaynaklanmaktadır. Karmaşıklık, durumsuz HTTP protokolleri ile durumlu CICS işlem bağlamları arasındaki uyumsuzluktan doğar, özellikle de JSON ile COBOL kopya kitapları arasındaki veri haritalama süreçlerinde. Tarihsel olarak, saf ana çerçeve yeşil ekran testleri veya modern mikro servisler için tasarlanmış manuel QA yaklaşımları, bu karma hibrit sınır için yetersiz kalmış, belirli yük koşulları veya veri kenar durumları altında yalnızca üretimde hatalara yol açmıştır.

Problem

Manuel QA, bu ortamda benzersiz zorluklarla karşılaşır. Çünkü hatalar, dağıtılmış sistem davranışı ile miras ana çerçeve kısıtlamalarının kesişiminde ortaya çıkar. COMMAREA olan tamponların, COBOL kopya kitaplarında tanımlanan sabit uzunlukları vardır, ancak JSON yükleri değişken uzunluktadır ve bu, z/OS Connect veri eşleme işlemi yaparken belirgin hatalar yerine sessiz kesilmelere neden olur. Ayrıca, veritabanı tutarlılığı için EXEC CICS SYNCPOINT kullanan CICS işlemleri, ana çerçevenin taahhütü öncesinde REST istemcisi zaman aşımına uğrarsa yetim kayıtlar bırakabilir, ancak HTTP yanıtı yanlış bir şekilde başarıyı gösterebilir. Son olarak, aynı anda birden fazla CICS bölgesinin RLS kayıt kilitlenme anlaşmazlıkları nedeniyle TDQ tetikleyicileri birden fazla kez tetiklenebilir, bu da otomatik API testlerinin algılayamayacağı yinelenen iş akışı başlatmalarına yol açar.

Çözüm

Sistematik bir metodoloji, üç doğrulama katmanı gerektirir.

İlk olarak, Sınır Analizi Testi, kopya kitaplardan türetilmiş eşdeğerlik bölümlendirmesini kullanarak tam olarak COMMAREA uzunluk sınırlarında yükleri enjekte eder, EIBCALEN'in (Yürütme Arabirimi Blok İletişim Alanı Uzunluğu) değeriyle beklenen değerlerin eşleştiğini doğrular.

İkinci olarak, İşlem Bütünlüğü Doğrulaması, giden SYNCPOINT operasyonları sırasında kasıtlı zaman aşımını uygulamak için ağ proxy'lerini yapılandırmayı, ardından CICS bölgesi durumlarını incelemek için CEMT (Master Terminal) komutlarını kullanmayı ve UR (Kurtarma Birimi) sonuçlarını denetlemek için z/OS Sistem Günlüğü'nü kullanmayı içerir.

Üçüncü olarak, Eşzamanlılık Stres Testi, RLS içeriğini simüle etmek için birden çok REST istemcisi kullanarak, TDQ'nın idempotansını doğrulamak için CEBR (Gözat İşlemi) kuyruk denetimi ve dosya bütünlüğü doğrulaması için VSAM İNCELE yardımcı programlarını kullanır.

Hayattan Bir Durum

Büyük bir sigorta şirketi, poliçe sorgulama CICS işlemini bir müşteri yüzlü mobil uygulamaya geçirdi. Dağıtım sonrasında, ara sıra veri bozulması görüldü; poliçe sahiplerinin adresleri sokak adının ortasında kesildi ve yüksek değerli müşterilere yinelenen poliçe onay mektupları gönderildi, bu da düzenleyici uyum riskleri ve itibar zararı yarattı.

Problem Açıklaması

COBOL kopya kitabı, adres alanını PIC X(30) olarak tanımlamıştı, ancak mobil uygulama çok baytlı aksanlı karakterler de içeren Unicode UTF-8 karakterlerini gönderdi. z/OS Connect, bunu EBCDIC'e haritaladığında, bayt sayısı kesildi ve istisnalar yükseltilmediği için kesilme mantığı nedeniyle sorun yaşandı. Aynı zamanda, üretim yükü altında, RLS kilitlerinin ilk tetikleyici onayını gecikmesi nedeniyle TDQ tetikleyicileri iki kez tetiklendi, bu da mektupların aynı isteklere iki kez işlem görmesine neden oldu.

Düşünülen Çözümler

Çözüm 1: Çıtlatılmış Ana Çerçeve İle Otomatik API Testi

Ekip, CICS yanıtlarını gerçek ana çerçeveyi vurmadan simüle etmek için WireMock kullanmayı düşündü, bu da hızlı regresyon testine izin verdi.

Artılar: Hızlı yürütme döngüleri, pahalı ana çerçeve MIPS'lerinden tasarruf ve ana çerçeve bağlantısı olmadan CI/CD pipelinelerinde çalıştırma yeteneği.

Eksiler: COMMAREA kesilme davranışını, VSAM kilitleme anlaşmazlıklarını veya gerçek EBCDIC kodlama dönüşüm hatalarını tespit edemez, test kapsamı konusunda yanlış bir güven sağlar.

Çözüm 2: Doğrudan CICS Bölgesi Hatası Ayıklama

Her EXEC CICS çağrısını izlemek ve COMMAREA içeriklerini gerçek zamanlı olarak incelemek için CEDX'i takmak.

Artılar: Kesin komut hatalarını belirlemeye ve COBOL yapıların raw bellek düzenlerini görmeye olanak tanır.

Eksiler: QA ekibinin yetersiz olduğu uzmanlaşmış ana çerçeve bilgisi gerektirir, CICS bölgesi performansı üzerinde önemli bir etki yaratır ve dağıtımlı REST istemcileri ile ana çerçeve arasında gerçekçi ağ gecikmelerini simüle edemez.

Çözüm 3: CEBR İncelemesi ile Sistematik Manuel Sınır Testi

Postman veya cURL kullanarak 29, 30 ve 31 karakterde yük uzunluklarıyla elle REST istekleri oluşturarak, ardından TDQ içeriklerini incelemek için CEBR kullanarak ve VSAM RLS kilit durumlarını kontrol etmek için CEMT INQUIRE FILE kullanmak.

Artılar: COMMAREA sınırının uygulanması, karakter kodlama dönüşümü ve birden fazla CICS bölgesi arasındaki RLS kilitleme davranışını içeren gerçek üretim kod yolunu doğrular.

Eksiler: Ana çerçeve TSO erişim kimlik bilgileri ve CICS terminal etkileşim becerileri gerektiren zaman alıcı manuel bir süreç.

Seçilen Çözüm

Çözüm 3, yalnızca doğrudan doğrulamanın sessiz COMMAREA taşma ve RLS içerme koşulundaki TDQ yinelenen ateşleme koşulunu ortaya çıkarabileceği için seçildi. Ekip, yük uzunluklarını (sınır değerlerini), karakter setlerini (ASCII vs EBCDIC vs UTF-8), ve eşzamanlı kullanıcı yüklerini (5, 10 ve 20 eş zamanlı istek) değiştirerek kapsamlı bir test matrisi oluşturdu.

CEDF kullanarak COBOL programının yürütülmesi aşamalarını doğruladı ve EIBCALEN değerlerini doğruladı, program mantığının gelen tampon uzunluklarını işlemden önce doğrulamadığını doğruladı. TDQ sorunu için, birbirini izleyen erişim senaryoları sırasında tetikleme sayısını izlemek için CEMT INQUIRE TDQUEUE kullandılar.

Sonuç

Test, 30 bayttan (karakterlerden değil) fazla olan UTF-8 karakterlerinin kesilmeye neden olduğunu ortaya çıkardı, özellikle müşterilerin çoklu aksanlı karakterler içeren adresler yazdığı durumlarda. COBOL programı, beklenen COMMAREA uzunluklarına karşı EIBCALEN'i kontrol etmek ve fazla büyük yükleri belirli HTTP 400 hata kodlarıyla reddetmek için değiştirildi.

TDQ sorununa yönelik testler, RLS kilit bekleme süresi 2 saniyeyi aştığında, REST geçidinin yeniden deneme mantığının yinelenen TDQ girişleri oluşturduğunu ortaya çıkardı. Mimari, benzersiz ilişkilendirme ID'leri kullanarak idempotent işleme uygulanacak şekilde değiştirildi ve DFHCOMMAREA aracılığıyla iletildi, böylece yinelenen tetiklemeler, toplu işlemci tarafından algılanıp iptal edildi. Dağıtım sonrası izleme, hiç kesilme hatası gösterdi ve yinelenen yazışmaları ortadan kaldırdı.

Adayların Genellikle Gözden Kaçırdıkları


CICS işlem geri alma davranışını, REST istemcisi isteği gönderdikten sonra ancak yanıtı almadan önce bağlantıyı kestiğinde nasıl doğruluyorsunuz?**

Çoğu aday, yalnızca bağlantı kesildikten sonra veritabanı durumunu kontrol etmeyi önerir. Ancak doğru yaklaşım, CEMT INQUIRE TASK kullanarak işlemin CICS bölgesinden arındırıldığını doğrulamak, ardından z/OS Sistem Günlüğü LOGSTREAM'ini kontrol ederek UR (Kurtarma Birimi) geri almanın yapılmış olduğunu onaylamaktır. Ayrıca, yetim kayıtların olmamasını sağlamak için VSAM RBA (Göreli Bayt Adresi) tutarlılığını IDCAMS VERIFY kullanarak doğrulamak gerekir. Adayların gözden kaçırdığı ince nokta, CICS'in yerel olarak taahhütte bulunmuş olabileceğidir, ancak REST geçidi yanıtı göndermemiş olabilir; bu nedenle HCON (HTTP Bağlantısı) zaman aşımı ile CICS abend kodları gibi hata günlüklerini incelemek gereklidir. AEXZ (zaman aşımı).


TDQ işlemlerini test ederken, aynı CICS bölgesinde işlenen intra-partition TDQ tetikleyicileri ile z/OS veri kümelerine yazılan ve toplu işler tarafından işlenen ekstra-partition TDQ tetikleyicileri arasında nasıl ayrım yaparsınız?**

Adaylar sık sık unutuyor ki, TDQ davranışı, DCT (Hedef Kontrol Tablosu) içindeki DESTID tanımlarına bağlı olarak temelde değişir. İntra-partition TDQ'lar (bellek tabanlı) için, kuyruk derinliklerini incelemek için CEBR kullanın ve işlemi manuel olarak tetiklemek için CEMT SET TDQUEUE kullanarak, anında CICS işlem başlatmayı doğrulayın. Ekstra-partition TDQ'lar için, tetikleme kayıtlarını izlemek amacıyla fiziksel z/OS veri kümesini ISPF 3.4 veya SDSF kullanarak izleyin ve ardından başlatıcı İŞ sınıfı yürütmesini doğrulayın. Kritik ayrım, intra-partition TDQ'ların, SYNCPOINT aracılığıyla CICS işlem bütünlüğünü sürdürdüğüdür, oysa ekstra-partition TDQ'lar, aynı DESTID'yi erişen CICS ve toplu işler arasındaki kayıt silme yarış durumlarını önlemek için ayrı VSAM RLS kilitleme stratejileri gerektirir.


OCCURS DEPENDING ON (ODO) koşuluyla değişken uzunlukta dizilere sahip olan kopya kitabı ile JSON'un eşleştirilmesini nasıl doğruluyorsunuz?**

Birçok testçi yalnızca sabit uzunluklu yapıları kontrol eder ve ODO karmaşıklığını gözden kaçırır. ODO koşulları için, z/OS Connect'in, COMMAREA içindeki dizi verisinden önce bağımlılık sayacı alanını doğru bir şekilde doldurduğunu doğrulamalısınız. Test durumları şunları içermelidir: (1) Sıfır oluşum (boş dizi), (2) Tek oluşum, (3) Belirlenen maksimum oluşumlar, ve (4) Maksimum oluşumları aşmak için reddetme işlemlerini doğrulamak için. CEBR veya CEDF kullanarak COMMAREA düzenini onaltılık olarak inceleyin ve JSON sayısal dönüşümü sonrası ikili COMP alanlarının doğru Big-Endian bayt sırasını koruduğunu doğrulayın. Karmaşıklık, JSON dizilerinin açık bir uzunluk göstergesi olmadığı için, eşleyicinin, eleman sayılarından ODO değerlerini hesaplamasını gerektirir; bu, JSON yükünde null değerleri varsa yanlış sayılmasına neden olabilir ve bu da COBOL tablosunda taşma veya kesilmelere yol açabilir.