Yazılım Testinde Eşzamanlılık Testi Nedir?

⚡ Akıllı Özet

Eşzamanlılık testi, birden fazla kullanıcının aynı anda aynı uygulama üzerinde işlem yapması durumunda ortaya çıkan hataları tespit eder ve sıralı işlevsel kontrollerin asla ortaya çıkaramadığı kilitlenmeleri, kayıp güncellemeleri ve kilitleme sorunlarını ortaya çıkarır.

  • 👥 Olarak da adlandırılır: Çoklu kullanıcı testi, çünkü tetikleyici unsur yalnızca yüksek hacim değil, eş zamanlı erişimdir.
  • 🎯 Hedeflediği şeyler: Birden fazla oturum tarafından erişilen paylaşılan veritabanı kayıtları, paylaşılan modüller ve paylaşılan uygulama kodu.
  • 🔒 Neyi ölçer: Kilitlenme, tek iş parçacıklı kod ve paylaşılan kaynaklara kısıtlı erişim gibi kilitlenme düzeyleri.
  • 🧭 Nasıl çalışır: Eşzamanlılık riski yüksek akışları belirleyin, eşzamanlılık hedefi belirleyin, gerçek eylemleri betikleyin ve ardından kullanıcıları kademeli olarak sisteme dahil edin.
  • ???? Hata sınıfları: Yarış koşulları, kilitlenmeler, kayıp güncellemeler, veri bozulması ve iş parçacığı yetersizliği.
  • ⚠️ Dürüst sınırlar: Belirsizlik, eşzamansız geri çağırmalar ve bilgilendirici olmayan çağrı yığını, hataların yeniden üretilmesini zorlaştırır.

Yazılım testinde birden fazla eş zamanlı kullanıcının katılımıyla gerçekleştirilen eşzamanlılık testi nedir?

Eşzamanlılık Testi Nedir?

Eşzamanlılık testi Bu, birden fazla kullanıcının aynı anda oturum açtığı durumlarda bir uygulamadaki hataları tespit etmek için kullanılan bir test tekniğidir. Başka bir deyişle, birden fazla kullanıcının aynı anda aynı işlemi gerçekleştirmesinin etkisini izler.

Eşzamanlılık testi aynı zamanda şu şekilde de adlandırılır: çok kullanıcılı testEş zamanlı bir programı test etmek, sıralı bir programı test etmekten daha zordur; bunun nedeni belirsizlik ve senkronizasyon sorunlarıdır: aynı test bir çalıştırmada başarılı olurken, bir sonraki çalıştırmada tek bir satır kod değişikliği olmadan başarısız olabilir.

Aşağıdaki diyagram bu fikri göstermektedir: Birkaç kullanıcı aynı anda aynı uygulama kaynağına erişir ve test, uygulamanın bu örtüşme durumunda ne yaptığını gözlemler.

Birden fazla kullanıcının aynı uygulama kaynağına eş zamanlı olarak erişmesini gösteren eşzamanlılık testi diyagramı.

Eşzamanlılık Testi Neden Önemli?

Bu çabayı haklı çıkaran iki soru var ve her ikisi de tek kullanıcılı işlevsel çalıştırmalarda görünmezdir.

  • Aynı veritabanı kayıtlarına, modüllere veya uygulama koduna aynı anda erişmenin etkilerini belirler.
  • Bu araç, kilitlenme, tek iş parçacıklı kod kullanımı ve paylaşılan kaynaklara kısıtlı erişim düzeyini belirler ve ölçer.

Bir özellik bir kullanıcı için tamamen doğru olabilirken, bir milisaniye sonra gelen ikinci kullanıcı için veri kaybına yol açabilir; bu nedenle bu teknik, diğer özelliklerin yanında yer alır. performans testi Fonksiyonel testlerin içinden ziyade.

Eşzamanlılık Testi Nasıl Yapılır?

Eşzamanlılık testi tekrarlanabilir bir sıra izler. Aşağıdaki adımlar, eşzamanlılık testinden başlayarak ilerler.ping çözüme kavuşturmak için.

  • Adım 1) Eşzamanlılık riski yüksek akışları belirleyin. Paylaşılan durumları arayın: eş zamanlı oturum açmalar, koltuk veya hisse senedi rezervasyonu, bakiye güncellemeleri, aynı tabloya yazan toplu işler ve yol üzerindeki tek iş parçacıklı herhangi bir bileşen.
  • Adım 2) Eşzamanlılık hedefi belirleyin. Gerçek kullanım zirvelerinden yola çıkarak, yuvarlak bir sayı yerine aynı anda kaç kullanıcının işlem yapması gerektiğine karar verin.
  • 3. Adım) Test senaryolarını tasarlayın. Her test durumu Paylaşılan kaynağı, rekabet eden eylemleri ve beklenen son durumu eşleştirir; örneğin, bir hesaptan para çekmeye çalışan iki oturumun ikisinin de başarılı olması gerekmez.
  • Adım 4) Komut dosyasını oluşturun ve aracı seçin. Yapılandırılabilir sanal kullanıcılar oluşturan bir yük oluşturucuya ihtiyaç duyulmaktadır; JMeter Genellikle tercih edilen açık kaynaklı yazılımdır ve iş parçacığı grubu ayarları eşzamanlılık senaryolarına doğrudan uyar.
  • ) 5 Adım Ramp aşamalı olarak. Eş zamanlı kullanıcı sayısını aniden değil, aşamalı olarak artırın.ping Hedefe doğru, böylece çekişmenin başladığı seviye görünür hale gelir.
  • Adım 6) İzleyin ve analiz edin. Kilit bekleme sürelerini, yanıt süresi dağılımını, hata oranlarını ve veritabanı engellemelerini birlikte izleyin; eşzamanlılık kusuru genellikle hata olarak ortaya çıkmadan önce zamanlama anormalliği olarak kendini gösterir.
  • Adım 7) Çözümleyin ve yeniden çalıştırın. Senkronizasyon, indeksleme veya kilitleme sorununu düzeltin, ardından davranışın değişip değişmediğini doğrulamak için aynı işlemi tekrarlayın.

Sık Görülen Eşzamanlılık Hataları

Eşzamanlılık hataları, az sayıda tanınabilir sınıfa ayrılır ve sınıfı doğru adlandırmak genellikle doğrudan çözüme işaret eder.

kusur Ne oluyor Tipik semptom
Yarış durumu Sonuç, hangi oturumun önce bittiğine bağlıdır. Bazı hesaplamalarda toplamlar doğru, bazılarında yanlış.
çıkmaz İki oturumun her birinde diğerinin ihtiyaç duyduğu bir kilit bulunur. İşlemler hata döndürmek yerine takılıp kalıyor.
Kayıp güncelleme İkinci yazma işlemi, ilkini okumadan üzerine yazıyor. Kaydedilen para üstü sessizce kayboluyor.
Veri bozulması Paylaşılan yapı yalnızca kısmen yazılmıştır. Geçerli bir işlemin oluşturulamadığı bir durumdaki kayıtlar.
Açlık Bir oturum, beklediği kaynağı asla elde edemiyor. Sistem sağlıklı görünürken tek bir kullanıcı yolu zaman aşımına uğruyor.

Bu arızalar aralıklı olduğundan, her çalıştırmanın kayıtları ve zaman damgaları yakalanmalıdır; aksi takdirde, hata güvenilir bir şekilde ortaya konamaz. kusur yönetimi süreci.

Eşzamanlılık Testi Örneği

Bir çevrimiçi mağazanın stoklarında bir ürünün son adetini bulundurduğunu düşünün. İki müşteri aynı anda ürünü açıyor ve ikisi de düğmeye basıyor. satın almak.

  • Senaryo: İki oturumda da stok değeri 1 olarak okundu, her ikisi de stok durumu kontrolünden geçti ve her ikisinde de stok değeri 0 olarak yazıldı.
  • Beklenen Sonuç: Bir sipariş onaylanıyor, diğerine stokta yok mesajı geliyor ve stok hiçbir zaman eksiye düşmüyor.
  • Arıza göstergesi: Her iki sipariş de onaylanır veya stok -1'e düşer; bu da stok kontrolü ve azaltma işleminin tek bir atomik adımda gerçekleştirilmediğini gösterir.
  • Denemeye değer varyasyonlar: Aynı iki oturumda tek bir profil kaydı düzenleniyor, aynı istek iki kez onaylanıyor ve kullanıcı kaydederken toplu işlemle tablo güncelleniyor.

Aynı model genelleştirilebilir: bir kaynak, iki yazıcı ve sıralama garantisi yok. Senaryoyu çalıştırırken sistem testiYük eklenmeden önce, teşhisin temiz kalmasını sağlar.

Eşzamanlılık Testinin Avantajları

  • Bu yöntem, eşzamanlı etkileşimlerin kapsamını yaygın olarak kullanılan ve iyi test edilmiş birkaç bileşenle sınırlandırarak, bir uygulamanın test edilmesi için gereken çaba miktarını nispeten azaltır.
  • Kapsülleme, bir programın belirli bir bölümünün davranışının, tüm kod tabanını incelemeye gerek kalmadan analiz edilmesini sağlar.
  • Bu, eş zamanlı programların güvenilirliğini ve sağlamlığını artırmaya yardımcı olur.
  • Kilitleme ve engelleme sınırlarını erken aşamada ortaya çıkararak, kapasite kararlarının tahminlere değil, ölçülen rekabete dayanmasını sağlar.

Eşzamanlılık Testinin Dezavantajları

Aşağıda belirtilen dezavantajlar, test uzmanlarının eşzamanlılık testi yaparken sıklıkla karşılaştığı durumlardır.

  • Uygulamanın birden fazla platformda test edilmesi gerekiyor.
  • Eşzamanlılık senaryoları, sıralı senaryolara göre daha yoğun testler gerektirir.
  • Fonksiyonlar sonuçlarını çağırana hemen döndürmez; bunun yerine sonuç daha sonra bildirimler, bloklar, geri çağırma fonksiyonları veya benzer mekanizmalar aracılığıyla iletilebilir, bu da test etmeyi zorlaştırır.
  • Bilgi veya program akışı çağrı yığınına yansıtılmaz.
  • Eşzamanlı bir sistemde süreçler yürütülürken birbirleriyle etkileşimde bulunduklarından, sistemdeki yürütme yollarının sayısı son derece büyük olabilir.
  • Eş zamanlı programların başarısızlık oranı, sıralı programlara göre daha yüksektir.
  • Eş zamanlı çalışan programlarda hata ayıklama zordur, çünkü bir hata ayıklayıcı eklemek, hataya neden olan zamanlamayı değiştirir.

SSS

Hayır. Yük testi Zaman içinde beklenen hacim altında davranışı ölçer. Eşzamanlılık testi aynı anı hedef alır, bu nedenle bir hata yalnızca iki kullanıcıda da ortaya çıkabilir, eğer her iki kullanıcı da paylaşılan bir kayda dokunursa.

Çoklu iş parçacığının yarısı iş parçacığı testi Bununla örtüşüyor. İş parçacığı testi, bir iş yolunun entegrasyondan sonra çalışmaya devam edip etmeyeceğini sorgular; eşzamanlılık testi ise bu yol zaten çalıştıktan sonra eşzamanlı erişimin ne yapacağını sorgular.

Sayıyı yuvarlak bir rakamdan değil, gözlemlenen en yüksek kullanım değerinden türetin. Mantığın atomik olduğunu kanıtlamak için iki oturumla başlayın, ardından ölçülen en yüksek değere ve bunun üzerinde bir marja doğru kademeli olarak artırın.

Makine öğrenimi modelleri, modülleri geçmiş hata geçmişine ve paylaşılan durum karmaşıklığına göre sıralayarak test uzmanlarını örtüşme altında bozulma olasılığı en yüksek olan akışlara yönlendirir. Tekrarlanan çalıştırmalar boyunca yapılan günlük kümelemesi, her hatadan önce gelen iç içe geçmeyi izole eder.

GitHub Yardımcı Pilotu Sanal kullanıcı komut dosyaları, engeller ve doğrulama yardımcıları taslaklarını hızla oluşturur. Test eden kişi yine de hangi kaynağın paylaşıldığını ve doğru son durumun ne olduğunu tanımlar, çünkü oluşturulan testler nadiren gerçek bir örtüşmeyi zorlar.

İzolasyon seviyesi, kilit zaman aşımı, bağlantı havuzu boyutu ve indeksleme, çekişmenin nasıl görüneceğini değiştirir. Her çalıştırmada bunları kaydedin, çünkü bir izolasyon seviyesinde elde edilen sonuç, diğer bir izolasyon seviyesi hakkında hiçbir şey söylemez.

Aynı senaryoyu temiz bir veri durumundan başlayarak birçok kez tekrarlayın, zaman damgalı kayıtlar tutun ve iki rakip işlem arasındaki zaman aralığını daraltın. Hata ayıklayıcı eklemek, zamanlamayı değiştirerek hatayı genellikle gizler.

Hacme duyarlı çekişmeler için evet. Küçük tablolar, veritabanının her şeyi bellekte tutmasına ve kısa süreliğine kilitlemesine olanak tanır, böylece üretimde görünen engelleme görünmez kalır. Ortamın izin verdiği ölçüde satır sayılarını ve indeks boyutlarını mümkün olduğunca eşleştirin.

Bu yazıyı şu şekilde özetleyin: