Eski ERP sistemleri, SAP ECC ve Oracle E-Business Suite gibi, Fortune 500 şirketleri için kritik iş operasyonlarını sürdürmeye devam ederken, bu monolitik mimarlar modern API-öncelikli tasarım kalıplarını on yıllar öncesinden önceki dönemde ortaya çıkmıştır. Soru, işletmelerin konteynerleştirmeye ve mikro hizmet ayrıştırmasına direnen eski alanlarda DevOps dönüşüm stratejilerini uygulamaya çalışmasıyla doğal olarak ortaya çıkmıştır. Geleneksel otomasyon yaklaşımları burada başarısız olur çünkü bu sistemler, özel ABAP veya PL/SQL kod havuzlarında sunum mantığını iş kurallarıyla sıkı bir şekilde birleştirir. Kuruluşlar, kalın istemci SAPGUI arayüzlerine basit bir şekilde Selenium tabanlı web otomasyonunu uygulamanın felaket derecesinde bakım yükü ve yanlış pozitifler oluşturduğunu keşfettiler.
Temel engel, ERP sistemlerinin, ağır istemci tarafı oturum yönetimi ve herhangi bir açık REST arayüzü olmadan durumsal GUI çerçevelerine dayanmasından kaynaklanmaktadır. Doğrudan veritabanı doğrulamaları, eski tetikleyici kodlarının binlerce satırına yerleştirilmiş iş kurallarına zarar verme riski taşır ve test sonuçlarında yanlış negatifler oluşturur. Paylaşılan kum havuzları, ABAP işlemlerinin genellikle veritabanı düzeyindeki geri alma mekanizmalarını atlayarak bağımsız taahhütler kullandığı için bu zorlukları artırmaktadır, bu da standart işlemsel düzenekler aracılığıyla test izolasyonunu engeller. Ayrıca, gerçek zamanlı doğrulama, durum değişikliklerini tespit etmeyi gerektirir; bu değişiklikler, UI onaylarını izleyen asenkron RFC (Uzaktan Fonksiyon Çağrısı) işleme kuyruklarına veya gece iş bitimleri programlarına bağlı olarak gecikme gösterebilir.
Olay Tabanlı Veritabanı Doğrulaması ile RPA tarzı ekran otomasyonunu birleştiren Hibrit Otomasyon Mimarisi uygulayın. Her paralel test iş parçacığı için tam terabayt ölçekli ortamları çoğaltmadan yazılabilir, izole veritabanı alt kümeleri sağlamak üzere Delphix veya Redgate SQL Clone gibi Veri Sanallaştırma araçlarını dağıtın. Dinamik Dynpro kontrol tanımlayıcılarını ele almak için Selenium etrafında SAP CBTA veya SapShell gibi özel otomasyon adaptörlerini kullanın. SAP Change Pointers veya veritabanı işlem günlüklerini tüketmek için Apache Kafka kullanarak bir Olay Otobüsü kurun, böylece UI ve veritabanı durumu tutarlılığını doğrularken anında doğrulamaları sağlayan asenkron doğrulamalar gerçekleştirin.
Küresel bir üretim konglomerasyonu, satın alma isteği, tedarikçi onayı, mal kabulü ve fatura doğrulamasını kapsayan SAP ECC 6.0 modüllerinden oluşan Satın Alma-Tahsilat iş akışının otomasyonunu gerektirdi. Hedef ortam, manuel test uzmanları, toplu iş zamanlamaları ve farklı coğrafi ekipler arasında on iki paralel otomasyon akışı tarafından eşzamanlı olarak kullanılan bir paylaşılan KUM HAVUZU örneğiydi. İş akışı, bir satın alma emri oluşturmanın, ayrı bir SAP BW sistemine RFC çağrılarıyla kredi limitlerini kontrol ettirdiği ve ardından asenkron envanter güncellemelerini tetiklediği karmaşık durum geçişlerini içeriyordu.
Testler, veritabanı çatışması nedeniyle aşırı dalgalanma gösteriyordu—otomasyon, ID 450001 ile bir satın alma emri oluşturmuştu, ancak doğrulama çalıştırılmadan önce, rakip bir test aynı tedarikçi ana verisini değiştirmiş veya maliyet merkezindeki mevcut bütçeyi tüketmişti. SAPGUI ekranları, geliştirme sırasında küçük yapılandırma değişiklikleri olduğunda standart Selenium yerleştiricilerini kıran çalışma zamanı ABAP ekran dizileri temelinde dinamik olarak oluşturulan kontrol kimliklerini kullanıyordu. Ayrıca, kritik iş doğrulamaları yalnızca gece ABAP toplu işlerinin işlenmesinden sonra tamamlanıyordu, bu da basit UI tabanlı yaklaşımlarla aynı gün test geri bildirimini imkansız hale getiriyordu.
Uzun Beklemeler ile Saf UI Otomasyonu, düşünülen ilk çözümü temsil etti. Bu strateji, UI durum değişikliklerini tespit etmek için açık senkronizasyon noktaları ve agresif anket döngüleri ile birlikte SAP CBTA'ya tamamen dayanıyordu. Avantajları arasında minimal altyapı ayak izi ve SAP'nin resmi olarak desteklenen otomasyon araçlarıyla uyum bulunuyordu, ek olarak standart test modülleri dışında hiçbir ek lisans gerektirmiyordu. Dezavantajları, sabit anket aralıkları nedeniyle test başına 50 dakikadan fazla çıkabilen yürütme süreleri, arka uç IDoc (Ara Belge) işleminin başarıyla tamamlandığını doğrulamak için tam bir yetenek eksikliği ve toplu işlerin belirsiz bir şekilde maksimum bekleme eşiklerinin ötesinde gecikmesi durumunda sürekli yanlış pozitifler oluşmasıydı.
Doğrudan Veritabanı Manipülasyonu, ikinci alternatif olarak hizmet etti. Bu yaklaşım, UI'nin tamamını atlayarak doğrulamalar için JDBC bağlantılarını kullanarak, GUI eylemlerinin hemen ardından EKKO (Satın Alma Belgesi Başlığı) ve EKPO (Satın Alma Belgesi Kalemi) tablolarındaki tablo girişlerini doğruladı. Avantajları arasında alt saniye doğrulama hızı ve ön uç işleme değişikliklerine teorik bağışıklık bulunuyordu, bu da testlerin SAPGUI istemci kurulumu olmaksızın çalışmasına izin veriyordu. Dezavantajları ise, ABAP doğrulama mantığı değiştiğinde bakım sorunlarına yol açması, testin uygulama detaylarını kullanıcıya görünür iş süreçleri yerine test etme riski ve doğrudan güncellemelerin uygulama düzeyindeki yetkilendirme kontrollerini atlatması durumunda veri bütünlüğü kısıtlamalarını ihlal etmesiydi.
Sanal Test Verisi ile Hibrit Mimari, uygulanan üçüncü seçeneği temsil etti. Çözüm, paylaşım havuzunun içinde belirli istemciye özgü veri cepleri oluşturmak için SAP TDMS (Test Data Migration Server)'ı kullandı ve her otomasyon iş parçacığına benzersiz şirket kodları atadı. UI etkileşimleri için Selenium'u SapShell otomasyon sargıları ile birlikte kullandık ve gerçek zamanlı durum değişikliği bildirimleri için izleme yapan CDPOS (Değişiklik Belgesi Kalemleri) tablolarını izlemek üzere Kafka dinleyicileri kullandık. Avantajları arasında çapraz kontaminasyonsuz gerçek paralel yürütme, anket yerine olay hedefli doğrulamalar sayesinde %80 daha hızlı doğrulama ve AI tabanlı nesne tanıma araçları gibi TestPlant veya Micro Focus UFT'nin AI motoru sayesinde UI yerleştirici değişikliklerine karşı dayanıklılık yer alıyordu. Dezavantajları, TDMS yapılandırması için önemli bir ön altyapı yatırımı gerektirmesi ve veri yaşlanmasını ve yenileme döngülerini yönetmek için karmaşık test verisi düzenleme mantığı gerektirmesiydi.
Hibrit Mimari, yalnızca belirtilen semptomları zamanlama ayarlamalarıyla maskelemek yerine kök neden—test verisi izolasyonu—üzerine odaklandığı için seçildi. Başlangıç kurulumu için Basis yöneticisi işbirliğiyle üç haftalık bir süreç gerekiyordu, ancak bu, kalıntı sistemi için gerçek CI/CD entegrasyonu sağladı ve geri bildirim döngüsünü üç günden iki saatin altına düşürdü. Bu yaklaşım, saf UI otomasyonunun sunamadığı belirleyici yürütme garantileri sağlarken, doğrudan veritabanı sorgularının feda ettiği kullanıcı merkezli doğrulama perspektifini korudu.
Artık çerçeve, sekiz bölgesel ekip arasında günde 250'den fazla paralel test yürütmesini desteklemekte ve sıfır çapraz kontaminasyon olayı yaşanmaktadır. Test dalgalanması %42'den %1.8'e düştü ve Sipariş-Tahsilat kritik yol yürütme süresi 6 saatten 28 dakikaya indirildi. Mimari, diğer eski modüllerin otomasyonu için kurumsal standart haline geldi ve ana çerçeve çağında sistemlerin, riskli rip-and-replace modernizasyon stratejileri olmadan modern otomasyon hızına erişebileceğini göstermiştir.
Otomasyon hatlarındaki test izolasyonunu nasıl sağlarsınız, ABAP kodundaki bağımsız taahhütleri kullanarak, testler arasındaki standart veritabanı işlem geri alma işlemlerini engelleyen işlemler?
Adaylar sıkça testleri veritabanı işlemleri içine almak önerisinde bulunurlar, ancak ABAP'ın COMMIT WORK komutu, JDBC işlem sınırlarını göz ardı eden bağımsız taahhütler yürütür. Doğru yaklaşım, belirli organizasyon yapılarının—şirket kodları, üretim tesisleri veya satın alma organizasyonları gibi—otomasyon hatları için özel olarak ayrılmasını sağlayarak Mantıksal Kiracı İzolasyonu oluşturmayı gerektirir. Bunu, otomasyonun altı ay ileride tarihli iş belgeleri oluşturmasını sağlayan Zamansal İzolasyon stratejileri ile birleştirin, böylece bunlar manuel test uzmanları ve mevcut tarihli işlemleri işleyen toplu işler tarafından görünmez kalır. Temizlik için, uygulama katmanı referans bütünlüğü ve yetkilendirme kontrollerine saygı göstermek için doğrudan SQL silmeleri yerine BAPI_PO_DELETE gibi BAPI (Business Application Programming Interface) çağrıları kullanın.
Yük dengeleme ortamında SAP Mesaj Sunucusu dinamik olarak bağlantıları farklı uygulama sunucularına yönlendirdiğinde SAPGUI otomasyonunu başarısız olmaktan nasıl korursunuz?
Birçok aday, yük dengeleyici düzeyinde yapışkan oturumları yapılandırmayı önermektedir, ancak bu genellikle kurumsal ortamlarda QA ekiplerine sıkça verilmediği için ağ yönetimi ayrıcalıkları gerektirir. Doğru çözüm, girişten hemen sonra SAPGUI bağlantı dizgisinden belirli uygulama sunucusu örnek numarasını yakalamak, ardından tüm sonraki otomasyon adımlarını bu belirli düğüme yönlendirmek için açık SAP Yönlendirici dizgeleri kullanmaktır. Test bağlamınız içinde, iş parçacığı kimliklerini belirli sunucu örneklerine eşleyen bir Oturum Sadakat Kaydı uygulamak, SAP'nin TH_SERVER_LIST işlev modülünü proaktif olarak kullanılabilir düğümleri tanımlamak için kullanmak. Bu, durumsal ABAP oturum değişkenlerinin çoklu ekran geçişleri boyunca korunmasını sağlar ve altyapı değişiklikleri gerektirmeden veya yük dengelemenin devre dışı bırakılmasını sağlamadan sağlanabilir.
Asenkron SAP toplu işinin tamamlanmasıyla otomasyonu nasıl senkronize edersiniz, SM37 işleminin kırılgan ekran taramasına başvurmak yerine?
Çoğu aday, İş Genel Görünümü ekranını sorgulamayı veya sabit gecikmeler uygulamayı öneriyor; her iki durumda da kırılganlık ve tahmin edilemeyen yürütme süreleri getirmektedir. Gelişmiş çözüm, otomasyonun BP_JOB_STATUS_GETi programlı olarak çağırmasına olanak tanıyan SAP'nin XBP (Dış Toplu İş İşleme) arayüzünü RFC (Uzaktan Fonksiyon Çağrısı) hedefleri aracılığıyla kullanır. Aşağıda, PyRFC kullanarak bir Python uygulaması bulunmaktadır:
from pyrfc import Connection def wait_for_batch_job(conn, job_name, timeout=300): """SAP toplu iş tamamlanmasını beklemek için olay odaklı""" import time start = time.time() while time.time() - start < timeout: result = conn.call('BP_JOB_STATUS_GET', JOBNAME=job_name, EXTERNAL_USER_NAME='AUTOMATION_USER') status = result['STATUS'] if status == 'F': # Tamamlandı return True elif status == 'A': # İptal Edildi raise Exception(f"İş {job_name} iptal edildi") time.sleep(2) # Kısa anket, ancak webhook ile değiştirilebilir return False
Bu, doğrulamayı GUI zamanlamasından koparır, SAP'nin Olay Ağı webhook'ları ile birleştirildiğinde senkronizasyon yükünü dakikalardan milisaniyelere indirir ve ek doğrulama analizine yönelik yapısal iş günlükleri ayrıştırma yetenekleri sağlar.