Yazılım performans testi - Software performance testing

İçinde Yazılım kalite güvencesi, performans testi genel olarak bir test yapmak nasıl olduğunu belirlemek için yapılan pratik sistemi belirli bir iş yükü altında duyarlılık ve istikrar açısından performans gösterir. Ayrıca diğerlerini araştırmak, ölçmek, doğrulamak veya doğrulamak için de kullanılabilir. kalite Öznitellikler sistemin, örneğin ölçeklenebilirlik, güvenilirlik ve kaynak kullanımı.

Performans testi, bir alt kümesi performans mühendisliği, bir bilgisayar Bilimi Bir sistemin uygulanmasına, tasarımına ve mimarisine performans standartlarını yerleştirmeye çalışan uygulama.

Test türleri

Yük testi

Yük testi performans testinin en basit şeklidir. Sistemin belirli bir beklenen yük altındaki davranışını anlamak için genellikle bir yük testi yapılır. Bu yük, üzerinde beklenen eşzamanlı kullanıcı sayısı olabilir. uygulama belirli sayıda yapmak işlemler belirlenen süre içinde. Bu test, tüm önemli ticari kritik işlemlerin yanıt sürelerini verecektir. veri tabanı, uygulama sunucusu vb. test sırasında da izlenir, bu, darboğazlar uygulama yazılımında ve yazılımın yüklü olduğu donanımda.

Stres testi

Stres testi normalde sistemdeki üst kapasite sınırlarını anlamak için kullanılır. Bu tür bir test, sistemin aşırı yük açısından sağlamlığını belirlemek için yapılır ve uygulama yöneticilerinin, mevcut yük beklenen maksimumun çok üstüne çıkarsa sistemin yeterince performans gösterip göstermeyeceğini belirlemelerine yardımcı olur.

Islatma testi

Islatma testi Dayanıklılık testi olarak da bilinen, genellikle sistemin sürekli beklenen yükü taşıyıp kaldıramayacağını belirlemek için yapılır. Bekletme testleri sırasında, potansiyel sızıntıları tespit etmek için bellek kullanımı izlenir. Ayrıca önemli olan, ancak çoğu zaman gözden kaçan performans düşüşüdür, yani bazı uzun süreli sürekli faaliyetlerden sonra çıktı ve / veya yanıt sürelerinin testin başlangıcındaki kadar iyi veya daha iyi olmasını sağlamak için. Esasen, bir sisteme uzun ve önemli bir süre boyunca önemli bir yük uygulamayı içerir. Amaç, sistemin sürekli kullanım altında nasıl davrandığını keşfetmektir.

Spike testi

Spike testi, çok sayıda kullanıcının oluşturduğu yükün aniden artırılması veya azaltılması ve sistemin davranışının gözlenmesiyle yapılır. Amaç, performansın düşüp düşmeyeceğini, sistemin başarısız olup olmayacağını veya yükteki dramatik değişiklikleri idare edip edemeyeceğini belirlemektir.

Kesme noktası testi

Kesme noktası testi, stres testine benzer. Sistem önceden belirlenmiş arıza durumları için izlenirken zamanla artan bir yük uygulanır. Kesme noktası testi bazen Kapasite Testi olarak adlandırılır, çünkü altında sistemin gerekli spesifikasyonlarına veya Hizmet Seviyesi Anlaşmalarına göre gerçekleştireceği maksimum kapasiteyi belirlediği söylenebilir. Sabit bir ortama uygulanan kesme noktası analizinin sonuçları, bir bulut ortamında ölçeklendirme olaylarını tetiklemesi gereken gerekli donanım veya koşullar açısından en uygun ölçeklendirme stratejisini belirlemek için kullanılabilir.

Yapılandırma testi

Performansı bir yük perspektifinden test etmek yerine, sistem bileşenlerinde yapılan konfigürasyon değişikliklerinin sistemin performansı ve davranışı üzerindeki etkilerini belirlemek için testler oluşturulur. Yaygın bir örnek, farklı yöntemlerle deney yapmaktır. yük dengeleme.

İzolasyon testi

İzolasyon testi, performans testine özgü değildir, ancak bir sistem sorunuyla sonuçlanan bir test yürütmesinin tekrarlanmasını içerir. Bu tür testler genellikle arıza alanını izole edebilir ve onaylayabilir.

İnternet testi

Bu, Facebook, Google ve Wikipedia gibi küresel uygulamalar fiziksel makineler veya bulut sanal makineleri olsun, gerçek hedef kıtaya yerleştirilen yük oluşturuculardan performans testine tabi tutulduğunda nispeten yeni bir performans testi biçimidir. Bu testler, genellikle başarılı bir şekilde yürütülmesi için muazzam miktarda hazırlık ve izleme gerektirir.

Performans hedefleri belirleme

Performans testi farklı amaçlara hizmet edebilir:

  • Sistemin performans kriterlerini karşıladığını gösterebilir.
  • Hangisinin daha iyi performans gösterdiğini bulmak için iki sistemi karşılaştırabilir.
  • Sistemin hangi bölümlerinin veya iş yükünün sistemin kötü performans göstermesine neden olduğunu ölçebilir.

Pek çok performans testi, yeterince gerçekçi, hedefe yönelik performans hedefleri belirlenmeden gerçekleştirilir. İş açısından ilk soru her zaman "neden performans testi yapıyoruz?" Olmalıdır. Bu hususlar, iş durumu Performans hedefleri, sistemin teknolojisine ve amacına bağlı olarak farklılık gösterecektir, ancak her zaman aşağıdakilerden bazılarını içermelidir:

Eşzamanlılık ve verim

Bir sistem, son kullanıcıları bir tür oturum açma prosedürü ile tanımlıyorsa, eşzamanlılık hedefi oldukça arzu edilir. Tanım gereği bu, sistemin herhangi bir anda desteklemesi beklenen en yüksek eşzamanlı sistem kullanıcısı sayısıdır. Komut dosyası yazılmış bir işlemin iş akışı, doğru eşzamanlılık özellikle yinelemeli kısım oturum açma ve oturum kapatma etkinliğini içeriyorsa.

Sistemin son kullanıcı kavramı yoksa, performans hedefi büyük olasılıkla maksimum iş hacmine veya işlem oranına dayalı olacaktır.

Sunucu yanıt süresi

Bu, bir sistem düğümünün diğerinin isteğine yanıt vermesi için geçen süreyi ifade eder. Basit bir örnek, tarayıcı istemcisinden web sunucusuna bir HTTP 'GET' isteği olabilir. Yanıt süresi açısından, hepsi bu yük testi Sistemin tüm düğümleri arasında sunucu yanıt süresi hedeflerini belirlemek uygun olabilir.

Yanıt süresini işle

Yük testi araçları, oluşturma yanıt süresini ölçmekte güçlük çekmektedir, çünkü genellikle bir düğüm "tel üzerinde" hiçbir faaliyetin olmadığı bir zaman dilimini tanımanın dışında. Oluşturma yanıt süresini ölçmek için genellikle işlevselliği dahil etmek gerekir test komut dosyaları performans testi senaryosunun bir parçası olarak. Çoğu yük testi aracı bu özelliği sunmaz.

Performans özellikleri

Performans özelliklerini (gereksinimleri) detaylandırmak ve bunları herhangi bir performans testi planında belgelemek çok önemlidir. İdeal olarak, bu, herhangi bir tasarım çabasından önce, herhangi bir sistem geliştirme projesinin gereksinim geliştirme aşamasında yapılır. Görmek Performans Mühendisliği daha fazla ayrıntı için.

Bununla birlikte, performans testi genellikle bir spesifikasyona göre yapılmaz; Örneğin, belirli bir kullanıcı popülasyonu için kabul edilebilir maksimum yanıt süresinin ne olması gerektiğini hiç kimse açıklamamış olacaktır. Performans testi, performans profili ayarlama sürecinin bir parçası olarak sıklıkla kullanılır. Buradaki fikir, "en zayıf bağlantıyı" belirlemektir - kaçınılmaz olarak sistemin bir parçası vardır ve bu, daha hızlı yanıt verecek şekilde yapılırsa, genel sistemin daha hızlı çalışmasına neden olur. Bazen sistemin hangi bölümünün bu kritik yolu temsil ettiğini belirlemek zor bir görevdir ve bazı test araçları sunucu (aracılar) üzerinde çalışan ve işlem sürelerini, veritabanı erişim zamanlarını raporlayan araçları içerir (veya sağlayan eklentilere sahip olabilir) , ağ ek yükü ve ham performans istatistikleriyle birlikte analiz edilebilen diğer sunucu monitörleri. Böyle bir enstrümantasyon olmadan birinin üzerine çömelmesi gerekebilir. Windows Görev Yöneticisi performans testlerinin ne kadar CPU yükü ürettiğini görmek için sunucuda (bir Windows sisteminin test altında olduğu varsayılarak).

İnternetin yanıt sürelerinin bölgesel olarak değiştiği bilindiğinden, performans testleri web üzerinde ve hatta ülkenin farklı yerlerinde yapılabilir. Şirket içinde de yapılabilir, ancak yönlendiriciler daha sonra, genel ağlarda tipik olarak meydana gelen gecikmeyi tanıtacak şekilde yapılandırılması gerekir. Yükler gerçekçi noktalardan sisteme tanıtılmalıdır. Örneğin, bir sistemin kullanıcı tabanının% 50'si sisteme 56K modem bağlantısıyla erişecek ve diğer yarısı bir T1, bu durumda yük enjektörleri (gerçek kullanıcıları simüle eden bilgisayarlar) ya aynı bağlantı karışımı üzerinden (ideal) yük enjekte etmeli ya da aynı kullanıcı profilini izleyerek bu tür bağlantıların ağ gecikmesini simüle etmelidir.

Sistemi en yoğun zamanlarda kullanması beklenebilecek olası en yüksek kullanıcı sayısının bir ifadesine sahip olmak her zaman yararlıdır. İzin verilen maksimum 95 yüzdelik yanıt süresini neyin oluşturduğuna dair bir açıklama da varsa, önerilen sistemin bu spesifikasyonu karşılayıp karşılamadığını test etmek için bir enjektör konfigürasyonu kullanılabilir.

Sorulacak sorular

Performans özellikleri asgari olarak aşağıdaki soruları sormalıdır:

  • Ayrıntılı olarak, performans testi kapsamı nedir? Bu test için hangi alt sistemler, arayüzler, bileşenler vb. Kapsam içinde ve dışında?
  • İlgili kullanıcı arayüzleri (UI'ler) için, her biri için kaç eşzamanlı kullanıcı bekleniyor (tepe ve nominal değeri belirtin)?
  • Hedef sistem (donanım) neye benziyor (tüm sunucu ve ağ cihazı yapılandırmalarını belirtin)?
  • Her bir sistem bileşeninin Uygulama İş Yükü Karması nedir? (örneğin:% 20 oturum açma,% 40 arama,% 30 öğe seçme,% 10 ödeme).
  • Sistem İş Yükü Karması nedir? [Tek bir performans testinde birden çok iş yükü simüle edilebilir] (örneğin:% 30 İş Yükü A,% 20 İş Yükü B,% 50 İş Yükü C).
  • Herhangi bir / tüm arka uç parti süreçleri için zaman gereksinimleri nelerdir (tepe ve nominal değeri belirtin)?

Önkoşullar

Üretim ortamına olabildiğince yakından benzemesi gereken kararlı bir sistem yapısı.

Tutarlı sonuçları garantilemek için performans testi ortamı diğer ortamlardan izole edilmelidir. kullanıcı Kabul Testi (UAT) veya geliştirme. En iyi uygulama olarak, her zaman mümkün olduğunca üretim ortamına benzeyen ayrı bir performans test ortamına sahip olunması önerilir.

Test koşulları

Performans testinde, test koşullarının beklenen gerçek kullanıma benzer olması genellikle çok önemlidir. Ancak pratikte bunu düzenlemek zordur ve üretim sistemleri öngörülemeyen iş yüklerine maruz kaldığından tamamen mümkün değildir. Test iş yükleri, üretim ortamındaki olayları olabildiğince taklit edebilir, ancak yalnızca en basit sistemlerde bu iş yükü değişkenliği tam olarak çoğaltılabilir.

Gevşek bağlı mimari uygulamalar (ör .: SOA ) performans testi ile ek karmaşıklıklar yaratmıştır. Üretim benzeri durumları, kurumsal hizmetleri veya ortak bir şeyi paylaşan varlıkları gerçekten çoğaltmak için altyapı veya platform, tüm tüketicilerin üretim benzeri işlem hacimleri oluşturduğu ve paylaşılan altyapı veya platformlara yüklendiği koordine edilmiş performans testi gerektirir. Bu faaliyet çok karmaşık ve para ve zaman açısından çok maliyetli olduğundan, bazı kuruluşlar artık performans testi ortamlarında ("gürültü" olarak da adlandırılır) üretim benzeri koşulları izlemek ve simüle etmek için araçlar kullanıyor (PTE ) kapasite ve kaynak gereksinimlerini anlamak ve kalite özelliklerini doğrulamak / onaylamak.

Zamanlama

Performans testi çabalarının geliştirme projesinin başlangıcında başlayıp dağıtıma kadar genişlemesi, yeni bir sistemin maliyet performansı açısından kritiktir. Bir performans kusuru ne kadar geç tespit edilirse, iyileştirme maliyeti o kadar yüksek olur. Bu, işlevsel test durumunda doğrudur, ancak kapsamının uçtan uca doğası nedeniyle performans testinde daha da fazlasıdır. Bir performans testi ekibinin olabildiğince erken dahil edilmesi çok önemlidir, çünkü test ortamını ve diğer önemli performans gereksinimlerini edinmek ve hazırlamak zaman alıcıdır.

Araçlar

Performans testi esas olarak iki ana kategoriye ayrılır

Performans komut dosyası oluşturma

Performans testinin bu kısmı, temel olarak tanımlanmış temel iş süreçlerinin iş akışlarının oluşturulması / yazılmasıyla ilgilidir. Bu, çok çeşitli araçlar kullanılarak yapılabilir.

Yukarıdaki listede bahsedilen araçların her biri (kapsamlı veya eksiksiz değildir), son kullanıcı iş akışlarını oluşturmak ve simüle etmek için bir komut dosyası dili (C, Java, JS) veya bir tür görsel temsil (sürükle ve bırak) kullanır. Araçların çoğu, "Kaydet ve Tekrar Oynat" adı verilen bir şeye izin verir; burada performans test cihazı, test aracını çalıştırır, bir tarayıcıya veya kalın istemciye bağlar ve istemci ile sunucu arasında gerçekleşen tüm ağ işlemlerini yakalar. Bunu yaparken, çeşitli iş senaryolarını taklit etmek için geliştirilebilen / değiştirilebilen bir komut dosyası geliştirilir.

Performans izleme

Bu, performans testinin diğer yüzünü oluşturur. Performans izleme ile test edilen uygulamanın davranış ve tepki özellikleri gözlemlenir. Aşağıdaki parametreler genellikle bir performans testi yürütmesi sırasında izlenir

Sunucu donanımı Parametreleri

  • CPU kullanımı
  • Bellek Kullanımı
  • Disk kullanımı
  • Ağ kullanımı

İlk adım olarak, bu 4 parametre tarafından üretilen modeller, darboğazın nerede olduğuna dair iyi bir gösterge sağlar. Sorunun kesin temel nedenini belirlemek için, Yazılım mühendisleri gibi araçlar kullanın profil oluşturanlar bir aygıtın veya yazılımın hangi bölümlerinin zayıf performansa en çok katkıda bulunduğunu ölçmek veya kabul edilebilir yanıt süresinin sürdürülmesi için çıktı düzeyleri (ve eşikler) oluşturmak.

Teknoloji

Performans testi teknolojisi, enjektör görevi gören bir veya daha fazla PC veya Unix sunucusu kullanır, her biri kullanıcı sayısının varlığını taklit eder ve her biri otomatik bir etkileşim dizisi çalıştırır (bir komut dosyası olarak veya farklı kullanıcı türlerini taklit etmek için bir dizi komut dosyası olarak kaydedilir) etkileşim) performansı test edilen ana bilgisayarla. Genellikle, ayrı bir bilgisayar, her enjektörden ölçümleri koordine edip toplayan ve raporlama amacıyla performans verilerini bir araya getiren bir test iletkeni görevi görür. Genel sıra, yükü artırmaktır: birkaç sanal kullanıcıyla başlamak ve sayıyı zaman içinde önceden belirlenmiş bir maksimuma çıkarmak. Test sonucu, kullanıcı sayısı ve yanıt süresi olarak verilen performansın yüke göre nasıl değiştiğini gösterir. Bu tür testleri gerçekleştirmek için çeşitli araçlar mevcuttur. Bu kategorideki araçlar genellikle sisteme karşı gerçek kullanıcıları taklit eden bir dizi test yürütür. Bazen sonuçlar tuhaflıkları ortaya çıkarabilir, örneğin, ortalama yanıt süresi kabul edilebilir olsa da, tamamlanması çok daha uzun süren birkaç önemli işlemin aykırı değerleri vardır - bu, yetersiz veritabanı sorguları, resimler vb. Neden olabilir.

Performans testi aşağıdakilerle birleştirilebilir: stres testi, kabul edilebilir bir yük aşıldığında ne olacağını görmek için. Sistem çöküyor mu? Büyük bir yük azaldığında kurtarmak ne kadar sürer? Başarısızlığı ikincil hasara neden olur mu?

Analitik Performans Modellemesi bir elektronik tablodaki bir sistemin davranışını modellemek için bir yöntemdir. Model, işlem kaynağı taleplerinin ölçümleriyle beslenir (İşlemci disk G / Ç LAN, BİTİK ), işlem karması ile ağırlıklandırılır (saatlik ticari işlemler). Ağırlıklı işlem kaynak talepleri, saatlik kaynak taleplerini elde etmek için toplanır ve kaynak yüklerini elde etmek için saatlik kaynak kapasitesine bölünür. Yanıt süresi formülünü kullanarak (R = S / (1-U), R = yanıt süresi, S = hizmet süresi, U = yük), yanıt süreleri hesaplanabilir ve performans testlerinin sonuçlarıyla kalibre edilebilir. Analitik performans modellemesi, gerçek veya beklenen iş kullanımına dayalı olarak tasarım seçeneklerinin ve sistem boyutlandırmasının değerlendirilmesine olanak tanır. Bu nedenle, donanım platformlarının tam olarak anlaşılmasını gerektirmesine rağmen, performans testinden çok daha hızlı ve ucuzdur.

Üstlenilecek görevler

Böyle bir testi gerçekleştirmek için gereken görevler şunları içerir:

  • Şirket içi uzmanlığa (veya eksikliğine) bağlı olarak, testleri gerçekleştirmek için dahili veya harici kaynakları kullanıp kullanmayacağınıza karar verin
  • Kullanıcılardan ve / veya iş analistlerinden performans gereksinimlerini (spesifikasyonları) toplayın veya ortaya çıkarın
  • Yüksek seviye geliştirin plan (veya proje tüzüğü), gereksinimler, kaynaklar, zaman çizelgeleri ve kilometre taşları dahil
  • Ayrıntılı bir performans geliştirin test planı (ayrıntılı senaryolar dahil ve test durumları, iş yükleri, ortam bilgileri vb.)
  • Seç test aracı (s)
  • Gereken test verilerini ve kiralama çabasını belirtin (genellikle göz ardı edilir, ancak geçerli bir performans testi yapmak için çok önemlidir)
  • Geliştirmek kavramın ispatı Seçilen test araçlarını ve stratejilerini kullanarak test edilen her uygulama / bileşen için komut dosyaları
  • Tüm bağımlılıklar ve ilişkili zaman çizelgeleri dahil olmak üzere ayrıntılı performans testi proje planı geliştirin
  • Enjektörleri / kontrolörü kurun ve yapılandırın
  • Test ortamını (ideal olarak üretim platformuyla aynı donanım), yönlendirici yapılandırmasını, sessiz ağı (sonuçların diğer kullanıcılar tarafından bozulmasını istemiyoruz), sunucu araçlarının dağıtımını, geliştirilen veritabanı test setlerini vb. Yapılandırın.
  • Testleri kuru çalıştırın - önceden tanımlanmış kullanıcılarla yük testini fiilen yürütmeden önce, komut dosyasının doğruluğunu kontrol etmek için bir prova çalıştırma gerçekleştirilir.
  • Hesaplanmayan faktörlerin sonuçları etkileyip etkilemeyeceğini görmek için muhtemelen tekrar tekrar (yinelemeli) testler yapın
  • Sonuçları analiz edin - geçti / kaldı ya da kritik yol araştırması ve düzeltici eylem önerisi

Metodoloji

Web uygulamalarının performans testi

Microsoft Developer Network'e göre Performans Testi Metodolojisi aşağıdaki faaliyetlerden oluşur:

  1. Test Ortamını belirleyin. Fiziksel tanımlayın test ortamı ve üretim ortamının yanı sıra test ekibinin kullanabileceği araçlar ve kaynaklar. Fiziksel ortam, donanım, yazılım ve ağ yapılandırmalarını içerir. Başlangıçta tüm test ortamını tam olarak anlamak daha verimli olmasını sağlar test tasarımı ve planlama ve projenin erken aşamalarında test zorluklarını belirlemenize yardımcı olur. Bazı durumlarda, bu süreç proje süresince periyodik olarak yeniden gözden geçirilmelidir. yaşam döngüsü.
  2. Performans Kabul Kriterlerini belirleyin. Yanıt süresini, iş hacmini ve kaynak kullanım hedeflerini ve kısıtlamalarını belirleyin. Genel olarak, yanıt süresi bir kullanıcı sorunudur, çıktı işle ilgili bir konudur ve kaynak kullanımı bir sistem sorunudur. Ek olarak, bu hedefler ve kısıtlamalar tarafından yakalanamayan proje başarı kriterlerini belirleyin; örneğin, konfigürasyon ayarlarının hangi kombinasyonunun en çok istenen performans özellikleriyle sonuçlanacağını değerlendirmek için performans testlerinin kullanılması.
  3. Plan ve Tasarım Testleri. Anahtarı tanımlayın senaryolar temsili kullanıcılar arasındaki değişkenliği ve nasıl yapılacağını belirlemek benzetmek bu değişkenlik, test verilerini tanımlama ve toplanacak ölçümleri belirleme. Bu bilgileri, uygulanacak, yürütülecek ve analiz edilecek bir veya daha fazla sistem kullanımı modelinde birleştirin.
  4. Test Ortamını Yapılandırın. Özellikler ve bileşenler test için kullanılabilir hale geldikçe, her stratejiyi yürütmek için gerekli test ortamını, araçları ve kaynakları hazırlayın. Test ortamının gerektiği şekilde kaynak izleme için araçlara sahip olduğundan emin olun.
  5. Test Tasarımını uygulayın. Performans testlerini test tasarımına uygun olarak geliştirin.
  6. Testi yürütün. Testlerinizi çalıştırın ve izleyin. Testleri, test verilerini ve sonuç koleksiyonu. Testi ve test ortamını izlerken analiz için doğrulanmış testleri yürütün.
  7. Sonuçları Analiz Edin, Ayarlayın ve Tekrar Test Edin. Sonuç verilerini analiz edin, birleştirin ve paylaşın. Bir ayar değişikliği yapın ve yeniden test edin. Her iki testin sonuçlarını karşılaştırın. Yapılan her iyileştirme, önceki geliştirmeye göre daha küçük iyileştirme sağlayacaktır. Ne zaman duruyorsun Bir CPU darboğazına ulaştığınızda, seçenekler ya kodu iyileştirmek ya da daha fazla CPU eklemektir.

Ayrıca bakınız

Dış bağlantılar