2013-08-05 19 views
5

Bir PHP/MySQL REST API'sine istekleri proxies eden bir NGinx/Node/Express3/Socket.io/Redis/Backbone/Backbone.Marionette uygulamasına sahibim. Bütün yığını bir bütün olarak test etmem gerekiyor.Yükleme testi bir Backbone Uygulaması

Uygulamam NGinx ile statik varlık önbelleğe alma işleminden yararlanıyor, düğüm/ifade ile kümeleme ve soket Redis kullanılarak çok çekirdekli etkin. Tüm söylemek gerekirse, yüke karşı durabildiğinden emin olmak için çok fazla sorun yaşadım.

Blitz.io'yu kullanarak 10 saniyede 50.000 kullanıcıyla vurdum ve gözlerini bile kırpmadı ... Bana endişelenmek istedim çünkü çökmek istedim, ya da en azından biraz ağır nefes aldım; ama 50k, o aletle ona atabileceğin maksimaydı, bu da bana göre daha fazlasını yapamayacağına ya da ondan daha fazlasına ihtiyaç duymayacağına inandığını gösteriyordu. yük yüklendikten sonra yük yüklendiğinden ve Backbone uygulaması başlatıldığından ve soket bağlantısından başladığından ve doğru REST API bitiş noktasından (farklı sunucudan) veri talep ettiğinden dolayı beklediğim yük. Bir bütün olarak tüm app test yükleyebilir nasıl

:

Yani, benim sorum? Ben aynı şekilde sunucuyu vergi yükleme testi gerektiği anlamına gelmektedir müşteriler aslında irade,:

  1. Talep benim nginx/Düğüm/Ekspres sunucusundan tek sayfa Omurga uygulaması
  2. Kick off istekleri için nginx statik varlıklar Kick off
  3. Socket.io hizmetine bağlantısı oluşturma (PHP/MySQL farklı bir sunucuda çalışan) REST API istekleri
  4. (tarayıcı yapabileceklerini simule) (nginx üzerinde çalışan/Düğüm/Ekspres, çok çekirdekli çöpleri işlemek için Redis'i kullanır.

Test aracı, sayfayı yüklemek, JS'yi ayrıştırmak ve çalıştırmak için tarayıcı benzeri bir ortam kullanıyorsa, her şey copasetic olacak (NGinx/Node/Express sunucusu isabet alacak ve böylece PHP/MySQL sunucusu olacak) . Aksi takdirde, test aracının, neredeyse eşzamanlı olarak en az bir düzine farklı türden talebi keserek bunu simüle etmesi gerekecektir. Aksi takdirde, bir kapıyı 10,000 kez inceleyerek (yani anlamsızdır) bir sınava test etmek gibi bir şeydir.

Uygulamamın, aynı sayfayı yükleyen bir dakikadan kısa bir süre içinde isabet eden 1000 kullanıcıyı işleyebileceğinden emin olmalıyım.

+2

Öncelikle - ilginç bir soru. Şimdi, eğer sorabilirsem - ne test ediyorsunuz? Test edilen ortam, üretim ortamı ile aynı özelliklere sahip midir? Apache bankı gibi bir şeyle test etmek pek iyi olmaz. En iyi önerim, bir grup kullanıcıdan gelen gerçek müşteri trafiğini yakalamak ve bunu bir VM'de artık uygulamaya koymadıkça uygulamaya geçirmektir.Darboğazları bulmak için bunu yapıyoruz ve çok yararlı. –

+0

eheh ... Öyleyse, utanç bana, ama, eşya çevre * de * test ortamıdır. Site henüz canlı değil (canlı bir konferans için bir destek panosu olarak işlev gören bir kerelik kullanım uygulamasıdır) ve yalnızca yılda 3 gün yaşayacaktır. Bu nedenle, bu üç gün dışında, prod QA/DEV olduğunu ve bu üç gün boyunca eşya üreticisi ... – cmcculloh

+0

İstemci uygulamalarını ayarlama sadece sunucu (lar) ı test etmek için çok fazla iş gibi görünüyor. Neden tek bir (elle yürütülen) oturum tarafından oluşturulan tüm http isteklerini (html, komut dosyası ve css yükleme çağrıları dahil) kaydedemiyorsunuz ve bu sıralamayı paralel olarak bin kez tekrarlıyorsunuz? –

cevap

1
Sen Dediğiniz gibi ben aynı şekilde sunucuyu vergi yükü testine ihtiyacımız", bu öğretici https://www.youtube.com/watch?v=8NLeq-QxkSw

bkz Sen, onunla stres testleri gerçekleştirebilir Apache JMeter http://jmeter.apache.org/ kullanmayı öğrenmelisin

İstemciler "

Bu, testlerin kullandığınız teknolojiye agnostik olduğunu gösterir.

Jmeter'ı şiddetle tavsiye ediyorum, yaygın olarak kullanılır ve bunu Jenkins ile entegre edebilir ve onunla çok güzel şeyler yapabilirsiniz.

İlgili konular