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.
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.
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.

