ทำการทดสอบความเครียดในเว็บแอปพลิเคชันหรือไม่


244

ก่อนหน้านี้ฉันใช้ Microsoft Web Application Stress Tool และ Pylot เพื่อทดสอบโปรแกรมเว็บ ฉันได้เขียนโฮมเพจง่ายๆสคริปต์เข้าสู่ระบบและคำแนะนำแบบไซต์ (ในไซต์อีคอมเมิร์ซที่เพิ่มรายการสองสามรายการลงในตะกร้าและชำระเงิน)

เพียงกดปุ่มหน้าแรกอย่างหนักด้วยนักพัฒนาจำนวนหนึ่งซึ่งมักจะพบปัญหาใหญ่ ปัญหาความสามารถในการขยายเพิ่มเติมจะปรากฏขึ้นในระยะที่สองและมากขึ้น - หลังการเปิดตัว

URL ของเครื่องมือที่ผมใช้คือไมโครซอฟท์โฮเมอร์ (aka แอพลิเคชันเว็บของ Microsoft ความเครียดเครื่องมือ ) และPylot

รายงานที่สร้างโดยเครื่องมือเหล่านี้ไม่สมเหตุสมผลกับฉันมากและฉันจะใช้เวลาหลายชั่วโมงในการคิดออกว่าการโหลดไซต์พร้อมกันชนิดใดที่จะสามารถสนับสนุน มันคุ้มค่าเสมอเพราะข้อบกพร่องและคอขวดที่โง่เง่าจะเกิดขึ้นเสมอ (ตัวอย่างเช่นเว็บเซิร์ฟเวอร์การกำหนดค่าผิดพลาด)

คุณทำอะไรไปแล้วมีเครื่องมืออะไรที่คุณใช้และคุณประสบความสำเร็จในด้านใดบ้าง? ส่วนที่น่าสนใจที่สุดสำหรับฉันคือสูตรคำนวณที่มีความหมายสำหรับการคำนวณจำนวนผู้ใช้ที่ใช้งานพร้อมกันที่แอพสามารถรองรับได้จากตัวเลขที่รายงานโดยแอปพลิเคชันทดสอบความเครียด

คำตอบ:


110

นี่คือการลงคะแนนเสียงอีกJMeter

JMeter เป็นเครื่องมือทดสอบโหลดซอร์สซึ่งเขียนด้วยภาษาจาวา สามารถทดสอบเซิร์ฟเวอร์ประเภทต่าง ๆ ได้หลายประเภท (เช่นเว็บบริการบนเว็บฐานข้อมูลทุกอย่างที่ใช้คำขอโดยทั่วไป)

อย่างไรก็ตามมันมีช่วงการเรียนรู้ที่สูงชันเมื่อคุณเริ่มการทดสอบที่ซับซ้อน แต่ก็คุ้มค่า คุณสามารถเริ่มต้นและทำงานได้อย่างรวดเร็วและขึ้นอยู่กับประเภทของการทดสอบความเครียดที่คุณต้องการซึ่งอาจจะใช้ได้

ข้อดี:

  • เครื่องมือโอเพ่นซอร์ส / ฟรีจากโครงการ Apache (ช่วยในการซื้อ)
  • เริ่มต้นใช้งานง่ายและใช้งานง่ายเมื่อคุณเข้าใจแนวคิดหลัก (เช่นวิธีการสร้างการร้องขอวิธีการสร้างการยืนยันวิธีการทำงานกับตัวแปร ฯลฯ )
  • ปรับขนาดได้มาก ฉันใช้การทดสอบกับ 11 เครื่องที่สร้างภาระบนเซิร์ฟเวอร์เพื่อปรับแต่งเพลงฮิตเกือบล้านครั้ง / ชั่วโมง มันเป็นมากง่ายต่อการติดตั้งกว่าที่ผมคาดหวังว่า
  • มีชุมชนที่ใช้งานอยู่และแหล่งข้อมูลที่ดีที่จะช่วยให้คุณเริ่มต้นใช้งานได้ อ่านบทเรียนก่อนและเล่นไปสักพัก

จุดด้อย:

  • UI ถูกเขียนใน Swing (ฮึ!)
  • JMeter ทำงานโดยแยกวิเคราะห์ข้อความตอบกลับที่ส่งคืนโดยเซิร์ฟเวอร์ ดังนั้นหากคุณต้องการตรวจสอบพฤติกรรมจาวาสคริปต์ทุกประเภทคุณไม่มีโชค
  • โค้งการเรียนรู้สูงชันสำหรับผู้ที่ไม่ใช่โปรแกรมเมอร์ หากคุณคุ้นเคยกับนิพจน์ทั่วไปแสดงว่าคุณนำหน้าเกมแล้ว
  • มีคนโง่จำนวนมาก ( แทรกคำซ้อนทับ ) ในฟอรัมการสนับสนุนที่ถามคำถามงี่เง่าที่สามารถแก้ไขได้อย่างง่ายดายหากพวกเขาต้องการให้เอกสารแม้แต่ภาพคร่าวๆคร่าวๆ ('ฉันจะใช้ JMeter เพื่อทดสอบ Windows GUI ของฉันได้อย่างไร' ปรากฏขึ้นบ่อยครั้ง)
  • การรายงาน 'ออกนอกกรอบ' เป็นสิ่งที่ต้องการเป็นอย่างมากโดยเฉพาะอย่างยิ่งสำหรับการทดสอบขนาดใหญ่ ในการทดสอบที่ฉันกล่าวถึงข้างต้นฉันต้องเขียนแอพคอนโซลอย่างรวดเร็วเพื่อทำการแปลง 'xml-logfile' เป็น 'html' แม้ว่าจะเป็นไม่กี่ปีที่ผ่านมาดังนั้นจึงเป็นไปได้ที่จะไม่ต้องใช้อีกต่อไป

โปรดอธิบายว่าถ้า JMeter สามารถช่วยคุณทดสอบแอปพลิเคชันที่ติดตั้งใน VPS ระยะไกลได้หรือไม่ ฉันไม่แน่ใจเหมือนเป็นรุ่นเดสก์ท็อป
Rajat Gupta

1
ตัวเลือกอื่นที่เกี่ยวข้องกับ JMeter ที่ต้องระวังคือ JMeter เป็นบริการ SaaS ประเภทนี้นำเสนอ JMeter ที่ปรับขนาดได้พร้อมกับการรายงานที่ดีขึ้นมาก
Ophir Prusak

5
ฉันไม่เห็นด้วยที่ JMeter สามารถปรับขนาดได้มาก หนึ่งล้านคำร้องขอต่อชั่วโมงมีเพียง 278 คำร้องขอ / วินาทีซึ่งสำหรับการรันบนเครื่อง 11 เครื่องนั้นต่ำมากเมื่อเทียบกับเครื่องมืออื่น ฉันจะใส่ความยืดหยุ่นของ JMeter ลงบนฝั่ง Cons
heyman

JMeter ไม่ใช่เบราว์เซอร์ แต่ทำงานในระดับโปรโตคอล เท่าที่เกี่ยวข้องกับบริการเว็บและบริการระยะไกล JMeter ดูเหมือนเบราว์เซอร์ (หรือมากกว่าเบราว์เซอร์หลาย ๆ ); อย่างไรก็ตาม JMeter จะไม่ทำการกระทำทั้งหมดที่เบราว์เซอร์รองรับ เว็บแอปพลิเคชั่นควรจะ "ถูกดำเนินการ" ที่จะดำเนินการ
LeonanCarvalho

36

ผมเคยใช้บด มันเป็นโอเพ่นซอร์สใช้งานง่ายและสามารถกำหนดค่าได้มาก มันใช้ Java และใช้ Jython สำหรับสคริปต์ เรารันกับแอปพลิเคชั่นเว็บ. NET ดังนั้นอย่าคิดว่าเป็นเครื่องมือเดียวของ Java (โดยปกติแล้วเครื่องมือที่มีความเครียดจากเว็บใด ๆ ไม่ควรผูกติดกับแพลตฟอร์มที่ใช้)

เราทำบางสิ่งที่เรียบร้อยด้วย ... เราเป็นแอปพลิเคชันโทรคมนาคมที่ใช้เว็บดังนั้นการใช้งานที่ยอดเยี่ยมอย่างหนึ่งที่ฉันตั้งไว้คือการกดหมายเลขผ่านแอปพลิเคชันเว็บของเราจากนั้นใช้เครื่องมือตอบรับอัตโนมัติที่เรามี แอพจาก Microsoft เพื่อเชื่อมต่อกับเซิร์ฟเวอร์ RTC LCS ของพวกเขา ... ซึ่งเป็นสิ่งที่ Microsoft Office Communicator เชื่อมต่อกับเครือข่ายท้องถิ่น ... จากนั้นแก้ไขเพื่อรับสายโดยอัตโนมัติ) สิ่งนี้ทำให้เราสามารถใช้สิ่งนี้แทนเครื่องมือโทรศัพท์ที่มีราคาแพงที่เรียกว่าเดอะแฮมเมอร์ (หรืออะไรทำนองนั้น)

อย่างไรก็ตามเรายังใช้เครื่องมือเพื่อดูว่าแอปพลิเคชันของเรามีการโหลดสูงและมีประสิทธิภาพมากในการค้นหาคอขวด เครื่องมือได้สร้างขึ้นเพื่อรายงานว่าคำขอใช้เวลานานเท่าใด แต่เราไม่เคยใช้ บันทึกยังสามารถจัดเก็บการตอบสนองและ whatnot หรือการบันทึกที่กำหนดเองทั้งหมด

ฉันขอแนะนำเครื่องมือนี้มีประโยชน์มากสำหรับราคา ... แต่คาดว่าจะทำการตั้งค่าแบบกำหนดเองด้วย (มีพร็อกซีในตัวเพื่อบันทึกสคริปต์ แต่อาจต้องปรับแต่งเพื่อจับภาพบางอย่างเช่นเซสชัน ... ฉันรู้ ฉันต้องปรับแต่งมันเพื่อใช้เซสชั่นที่ไม่ซ้ำกันต่อเธรด)


1
+1 สำหรับเครื่องบด ฉันชอบตัวเลือกสคริปต์พร็อกซีมากขึ้น
davek

โอกาสใด ๆ นี้สามารถใช้ในการจำลองเบราว์เซอร์ที่ไม่ได้ใช้งาน คำขอเซิร์ฟเวอร์ทำจากเบราว์เซอร์ที่ไม่ได้ใช้งานทุกสองวินาทีสำหรับแอพของเรา ฉันต้องการทราบว่าจะเกิดอะไรขึ้นเมื่อเรามีเบราว์เซอร์ที่ไม่ทำงานพร้อมกันสามสิบรายการ
Ramy

1
+1 สำหรับเครื่องบด จับคู่กับ EC2 เราใช้มันสำเร็จในการหมุนผู้ใช้งานพร้อมกัน 100k
nategood

23

สายไปงานเลี้ยงเล็ก ๆ น้อย ๆ นี้ ฉันยอมรับว่าPylotเป็นเครื่องมือโอเพนซอร์สที่ดีที่สุดที่มาถึงแล้ว มันใช้งานง่ายและทำงานโดยคนที่เก่ง ( Corey Goldberg ) ในฐานะผู้ก่อตั้งOpenQAฉันมีความสุขที่ Pylot อยู่ในรายการในหน้าแรกของเราและใช้โครงสร้างพื้นฐานบางอย่างของเรา (เช่นฟอรัม)

อย่างไรก็ตามฉันเพิ่งตัดสินใจเมื่อเร็ว ๆ นี้ว่าแนวคิดทั้งหมดของการทดสอบโหลดมีข้อบกพร่อง: เลียนแบบการรับส่งข้อมูล HTTP ด้วยแอปพลิเคชันที่ซับซ้อนเท่าที่เคยเป็นมา นั่นเป็นเหตุผลที่ฉันสร้างเครื่องมือทางการค้า BrowserMob เป็นบริการทดสอบโหลดภายนอกที่ใช้Seleniumเพื่อควบคุมเว็บเบราว์เซอร์จริงเมื่อเล่นโหลด

วิธีการที่เห็นได้ชัดว่าต้องมีตันฮาร์ดแวร์มากกว่าเทคนิคการทดสอบความเร็วในการโหลดปกติ แต่ฮาร์ดแวร์เป็นจริงสวยราคาถูกเมื่อคุณกำลังใช้คอมพิวเตอร์เมฆ และผลข้างเคียงที่ดีของเรื่องนี้ก็คือสคริปต์นั้นมีมากง่ายกว่าการทดสอบโหลดปกติ คุณไม่จำเป็นต้องทำการจับคู่ regex ขั้นสูง (เช่น JMeter ต้องการ) เพื่อแยกคุกกี้สถานะเซสชัน. NET, พารามิเตอร์คำขอ Ajax และอื่น ๆ เนื่องจากคุณใช้เบราว์เซอร์จริงพวกเขาเพียงแค่ทำสิ่งที่ควรทำ

ขออภัยที่เห็นได้ชัดว่าทำผลิตภัณฑ์เชิงพาณิชย์ แต่หวังว่าแนวคิดนี้น่าสนใจสำหรับบางคนและอย่างน้อยก็ทำให้พวกเขาคิดเกี่ยวกับวิธีการใหม่ ๆ ในการจัดการกับการทดสอบโหลดเมื่อคุณเข้าถึงฮาร์ดแวร์เพิ่มเติม!


2
ผู้เขียน Pylot ได้สร้างเครื่องมือทดสอบเว็บอีกอันหนึ่งขึ้นมา: code.google.com/p/multi-mechanize
codeape

2
ลิงก์ไปยัง pylot.org เปลี่ยนเส้นทางไปยังเว็บไซต์ที่น่าสงสัย
mpiktas

15

ผมเคยใช้JMeter นอกเหนือจากการทดสอบเว็บเซิร์ฟเวอร์คุณยังสามารถทดสอบแบ็กเอนด์ฐานข้อมูลบริการส่งข้อความและเซิร์ฟเวอร์อีเมล


12

1
เมื่อเร็ว ๆ นี้ผมทำงานกับ Tsung มันเป็นเครื่องมือที่ดี (สำหรับการทดสอบความเครียดจริงๆ) ที่นี่วิธีการกำหนดค่าprogrnotes.blogspot.com/2011/11/...หรือเอกสารทางการtsung.erlang-projects.org/user_manual.html
Sergey

ฉันพบว่า openload มีประโยชน์เช่นกัน: linuxpoison.blogspot.com/2010/12/…
wael34218

9

สำหรับการใช้งานง่ายฉันใช้ ab (benchmark apache) และ siege ต่อมาจำเป็นต้องใช้หนึ่งเนื่องจาก ab ไม่สนับสนุนคุกกี้และจะสร้างเซสชันที่ไม่มีที่สิ้นสุดจากไซต์ไดนามิก

ทั้งง่ายต่อการเริ่มต้น:

ab -c n -t 30 url

siege -b -c n -t 30s url

การล้อมสามารถวิ่งด้วย URL ที่มากขึ้น

รุ่นล้อมล่าสุดเปิด verbose ใน siegerc ซึ่งเป็นที่น่ารำคาญ คุณสามารถปิดการใช้งานได้โดยแก้ไขไฟล์นั้น ( /usr/local/etc/siegerc)


9

สำหรับบริการตามเว็บตรวจสอบloader.io

สรุป:

loader.io เป็นบริการทดสอบโหลดฟรีที่ช่วยให้คุณสามารถทดสอบเว็บ - แอพ / apis ด้วยการเชื่อมต่อพร้อมกันหลายพันครั้ง

พวกเขายังมีAPI


2
นี่เป็นทางเลือกที่ดีในการทดสอบเครื่องของคุณด้วยเครื่องของคุณเอง
nurettin

9

เมื่อคำถามนี้ยังเปิดอยู่ฉันอาจชั่งน้ำหนักด้วย

ข่าวดีก็คือว่าในช่วง 5 ปีที่ผ่านมาเครื่องมือโอเพนซอร์ซได้เติบโตเต็มที่แล้วและถูกนำออกไปในอวกาศข่าวร้ายก็คือพวกมันมีอยู่มากมาย

นี่คือความคิดของฉัน: -

Jmeter vs เครื่องบด

Jmeter มาจากสเปคสไตล์ XML ที่สร้างผ่าน GUI

Grinder ใช้สคริปต์ Jython ภายในกรอบงาน Java แบบ muti-threaded ดังนั้นจึงมุ่งเน้นไปที่โปรแกรมเมอร์

เครื่องมือทั้งสองจะจัดการกับ HTTP และ HTTPS และมีพร็อกซีเรคคอร์ดเพื่อเริ่มต้นใช้งาน เครื่องมือทั้งสองใช้รูปแบบคอนโทรลเลอร์เพื่อผลักดันเอเจนต์ทดสอบหลาย ๆ ตัวดังนั้นความสามารถในการปรับขยายจึงไม่ใช่ปัญหา (ให้สิทธิ์การเข้าถึงคลาวด์)

ไหนดีกว่า: -

การโทรอย่างหนักในช่วงโค้งการเรียนรู้นั้นมีเครื่องมือมากมายทั้งสองอย่างเมื่อคุณเข้าสู่ข้อกำหนดการเขียนสคริปต์ที่ซับซ้อนยิ่งขึ้นสำหรับการเขียน url, สหสัมพันธ์, ให้ข้อมูลที่ไม่ซ้ำกันต่อผู้ใช้เสมือนจริงและจำลองผู้ใช้ครั้งแรก

ที่กล่าวว่าฉันจะเริ่มต้นด้วย Jmeter เนื่องจากเครื่องมือนี้มีการติดตามขนาดใหญ่และมีตัวอย่างมากมายและแบบฝึกหัดบนเว็บสำหรับการใช้เครื่องมือนี้ ถ้าและเมื่อคุณมาที่ 'Roadblock' นั่นเป็นสิ่งที่คุณไม่สามารถ 'ทำได้อย่างง่ายดาย' กับ Jmeter แล้วดูที่ Grinder ข่าวดีก็คือเครื่องมือทั้งสองนี้มีข้อกำหนดเกี่ยวกับ Java แบบเดียวกันและวิธีการ 'ผสมและจับคู่' ไม่ใช่คำถาม

มีอะไรใหม่ให้เพิ่ม - เบราว์เซอร์ที่ไม่มีส่วนหัวที่ใช้งาน Selenium WebDriver หลายอินสแตนซ์

นี่เป็นวิธีการที่ค่อนข้างใหม่เพราะขึ้นอยู่กับความพร้อมของทรัพยากรที่ตอนนี้สามารถจัดเตรียมได้จากคลาวด์ ด้วยวิธีการนี้จะมีการใช้สคริปต์ Selenium (WebDriver) และเรียกใช้ภายในเบราว์เซอร์ที่ไม่มีส่วนหัว (เช่น WebDriver = New HtmlUnitDriver ()) ไดรเวอร์ในหลายเธรด

จากประสบการณ์ประมาณ 25 อินสแตนซ์ของ 'เบราว์เซอร์หัวขาด' สามารถเรียกใช้จาก Amazon M1 Small Instance

สิ่งนี้หมายความว่าความสัมพันธ์ทั้งหมดปัญหาการเขียน url ใหม่จะหายไปเมื่อคุณเปลี่ยนสคริปต์การทดสอบการทำงานของคุณให้กลายเป็นสคริปต์การทดสอบประสิทธิภาพ

ความยืดหยุ่นในการปรับขยายนั้นลดลงเนื่องจาก VM จำเป็นต้องใช้จำนวนมากในการขับเคลื่อนโหลดเมื่อเปรียบเทียบกับไดรเวอร์ HTTP เช่น Grinder หรือ Jmeter ที่กล่าวว่าหากคุณต้องการที่จะผลักดันผู้ใช้เสมือนจริง 500 คนด้วย Amazon Small Instances 20 อัน (ละ 6 เซนต์ต่อชั่วโมง) ในราคาเพียง $ 1.20 ต่อชั่วโมงให้คุณโหลดที่ใกล้เคียงกับประสบการณ์ผู้ใช้จริง


เครื่องบดสามารถใช้สคริปต์ Clojure ได้
user100464

7

นอกจากนี้ยังมีที่น่ากลัวมาเปิดบริสุทธิ์หลามกระจายและปรับขนาดได้ตั๊กแตนกรอบที่ใช้greenlets มันยอดเยี่ยมในการจำลองผู้ใช้พร้อมกันจำนวนมหาศาล


7

เราเพิ่งเริ่มใช้ Gatling สำหรับการทดสอบโหลด ฉันขอแนะนำอย่างยิ่งให้ลองใช้เครื่องมือนี้สำหรับการทดสอบโหลด เราเคยใช้ SOASTA และ JMETER มาก่อน เหตุผลหลักที่เราควรพิจารณา Gatling มีดังต่อไปนี้:

  • เครื่องบันทึกเพื่อบันทึกสถานการณ์
  • การใช้ Akka และ Netty ซึ่งให้ประสิทธิภาพที่ดีกว่าเมื่อเทียบกับรุ่น Jmeter Threading
  • DSL Scala ซึ่งบำรุงรักษาได้ดีมากเมื่อเปรียบเทียบกับ Jmeter XML
  • ง่ายต่อการเขียนแบบทดสอบอย่าตกใจถ้ามันเป็นแบบสกาล่า
  • รายงาน

ให้ฉันเป็นตัวอย่างง่ายๆในการเขียนรหัสโดยใช้รหัส Gatling:

// your code starts here  
val scn = scenario("Scenario")  
     .exec(http("Page")
     .get("http://example.com")) 
// injecting 100 user enter code here's on above scenario.   
setUp(scn.inject(atOnceUsers(100)))       

อย่างไรก็ตามคุณสามารถทำให้มันซับซ้อนที่สุดเท่าที่จะทำได้ หนึ่งในคุณสมบัติที่โดดเด่นสำหรับ Gatling คือการรายงานซึ่งมีรายละเอียดมาก

นี่คือลิงค์บางส่วน:
Gatling
Gatling Tutorial

เมื่อเร็ว ๆ นี้ฉันได้พูดคุยเกี่ยวกับเรื่องนี้คุณสามารถผ่านการพูดคุยที่นี่:
https://docs.google.com/viewer?url=http%3A%2F%2Ffiles.meetup.com%2F3872152%2FExploring-Load-Testing-with -Gatling.pdf


6

นี่เป็นคำถามเก่า แต่ฉันคิดว่าวิธีแก้ปัญหาที่ใหม่กว่านั้นควรค่าแก่การกล่าวถึง กร้า LoadImpact: http://www.loadimpact.com


ใช่. ฉันเพิ่งดูที่นี้ พบได้บน Google ก่อนที่จะพบคำถาม / คำตอบนี้ ฉันคิดว่าแอปพลิเคชันที่ทำงานบนเว็บเป็นวิธีการที่ดี แต่ฉันไม่แน่ใจว่าเป็นการผลักเซิร์ฟเวอร์ของฉันจริงๆ มันคุ้มค่าที่จะลองแม้ว่าไม่ต้องสงสัยเลย Tbh ฉันถูกล่อลวงให้ลงทะเบียนเต็มบัญชี
Charlie

4

ฉันลองWebLoadมันเป็นเครื่องมือที่ค่อนข้างดี มันมาพร้อมกับสคริปต์ทดสอบ IDE ที่ให้คุณบันทึกการกระทำของผู้ใช้บนเว็บไซต์ นอกจากนี้ยังวาดกราฟในขณะที่ทำการทดสอบความเครียดบนเว็บเซิร์ฟเวอร์ของคุณ ลองฉันขอแนะนำ


1
ฉันแนะนำ WebLoad ด้วย มันเป็นเครื่องมือที่ยอดเยี่ยมใช้งานง่ายและรายงานมีประโยชน์มาก ฉันสมมติว่าคุณอยู่บนแพลตฟอร์ม Windows ดังนั้นผลลัพธ์เหล่านี้รวมกับ perfmon จะแจ้งให้คุณทราบทุกสิ่งที่คุณจำเป็นต้องรู้
Babak Naffas

2
โปรดทราบว่าขณะนี้ WebLoad เป็นการค้าอย่างแท้จริง พวกเขาส่งอีเมลบอกว่าอ้าง: -------- - ดาวน์โหลด Open Source ได้รับการประกาศ End of life (EOL) - หากคุณยังมีรุ่นของผลิตภัณฑ์เราเตือนคุณว่าภายใต้ EULA การแจกจ่ายใด ๆ ผลิตภัณฑ์หรือการใช้เพื่อบริการบุคคลที่สามเป็นสิ่งต้องห้ามอย่างเคร่งครัด ------- การแจกจ่ายเวอร์ชั่นโอเพ่นซอร์สนั้นเป็นสิ่งต้องห้ามหรือไม่? แม้แต่การใช้ในแบบที่พวกเขาไม่ชอบถูกแบน? ไม่ใช่พฤติกรรมที่ฉันต้องการจะทำ
Joshdan

1
ตอนนี้ลิงก์ไปยังโดเมนเป็นเพียงการโฆษณา - โดเมนดั้งเดิมหมดอายุแล้ว
dodgy_coder

@Joshdan นี่คือเหตุผลที่ GPL มีความสำคัญ
Thorbjørn Ravn Andersen

3

ลองทั้งหมดที่กล่าวถึงที่นี่ฉันพบ curl-loaderที่ดีที่สุดสำหรับวัตถุประสงค์ของฉัน อินเทอร์เฟซที่ง่ายมากการตรวจสอบตามเวลาจริงสถิติที่มีประโยชน์ซึ่งฉันสร้างกราฟของประสิทธิภาพ คุณสมบัติทั้งหมดของ libcurl รวมอยู่ด้วย


3

Blaze meter มีส่วนขยายของโครเมี่ยมสำหรับการบันทึกการประชุมและส่งออกไปยัง JMeter (ปัจจุบันต้องเข้าสู่ระบบ) คุณยังมีตัวเลือกในการจ่ายเงินเพื่อเรียกใช้บนคลัสเตอร์ของเซิร์ฟเวอร์ JMeter (ราคาของพวกเขาดูเหมือนจะดีกว่า LoadImpact ที่ฉันเพิ่งหยุดใช้):

ฉันไม่มีความสัมพันธ์ใด ๆ กับพวกเขาฉันชอบรูปลักษณ์ของบริการของพวกเขาแม้ว่าฉันจะยังไม่ได้ใช้รุ่นที่จำหน่ายได้แล้ว


2

คุณถามคำถามนี้เมื่อเกือบหนึ่งปีก่อนและฉันไม่รู้ว่าคุณยังคงมองหาวิธีการเปรียบเทียบเว็บไซต์ของคุณอยู่หรือไม่ อย่างไรก็ตามเนื่องจากคำถามนี้ยังไม่ได้ทำเครื่องหมายว่าแก้ไขแล้วฉันอยากจะแนะนำLoadImpactเว็บเซอร์ฟรี(btw. ไม่มีส่วนเกี่ยวข้อง) เพิ่งได้รับลิงค์นี้ผ่านทางทวิตเตอร์และต้องการแชร์การค้นหานี้ พวกเขาสร้างภาพรวมที่ดีพอสมควรและอีกไม่กี่ขั้นตอนคุณจะได้รับ "โหมดการกระแทกแบบเต็ม" นี่อาจฟังดูแปลก แต่โชคดีที่ผลักดันและหยุดให้บริการ :)



1

ผมเคยใช้OpenSTA

สิ่งนี้ช่วยให้เซสชันที่มีเว็บไซต์ถูกบันทึกและเล่นผ่านภาษาสคริปต์ที่ค่อนข้างง่าย

คุณสามารถทดสอบบริการเว็บและเขียนสคริปต์ของคุณเองได้อย่างง่ายดาย

อนุญาตให้คุณรวมสคริปต์เข้าด้วยกันในการทดสอบในแบบที่คุณต้องการและกำหนดค่าจำนวนการวนซ้ำจำนวนผู้ใช้ในการวนซ้ำแต่ละครั้งระยะเวลาในการไล่เรียงเพื่อแนะนำผู้ใช้ใหม่แต่ละรายและการหน่วงเวลาระหว่างการทำซ้ำแต่ละครั้ง การทดสอบสามารถกำหนดในอนาคต

มันเป็นโอเพนซอร์สและฟรี

มันสร้างรายงานจำนวนหนึ่งซึ่งสามารถบันทึกลงในสเปรดชีตได้ จากนั้นเราใช้ตารางสาระสำคัญเพื่อวิเคราะห์และสร้างกราฟผลลัพธ์


1

เราใช้เครื่องมือของ Microsoft ที่กล่าวถึง - Microsoft Web Application Stress Tool มันเป็นเครื่องมือที่ง่ายที่สุดที่ฉันเคยใช้ มันมีข้อ จำกัด ในหลาย ๆ ทางรวมถึงความสามารถในการเข้าถึงพอร์ต 80 ในการทดสอบที่สร้างขึ้นด้วยตนเองเท่านั้น แต่การใช้งานที่ง่ายหมายถึงการใช้งานจริง

เราเสริมการโหลดจากเครื่องมือนี้ด้วยเครื่องมืออื่น ๆ รวมถึง OpenSTA และสไปเดอร์ตรวจสอบลิงก์

JMeter ดูดีจากการประเมินเบื้องต้นของฉันฉันหวังว่าจะรวมไว้ในการรวมระบบอย่างต่อเนื่องของเราในอนาคต แต่ JMeter มีความซับซ้อนและไม่น่าสนใจ

ฉันขอแนะนำให้เปิดคำถามอื่นเกี่ยวกับการตีความผลลัพธ์เครื่องมือความเครียด MS


1

Visual Studio Test Edition 2010 (2008 ก็ดีเหมือนกัน) นี่เป็นเครื่องมือที่ง่ายและมีประสิทธิภาพในการสร้างการทดสอบเว็บ / โหลดด้วย

โบนัสด้วยเครื่องมือนี้เมื่อใช้กับเซิร์ฟเวอร์ Windows คือคุณได้รับการเข้าถึงแบบบูรณาการกับสถิติเซิร์ฟเวอร์ perfmon ทั้งหมดในรายงานของคุณ มีประโยชน์จริงๆ

โบนัสอื่น ๆ ก็คือโครงการ Visual Studio คุณสามารถรวม "เซสชันประสิทธิภาพ" ซึ่งจะทำการกำหนดรหัสให้กับเว็บไซต์ของคุณ

หากคุณให้บริการหน้าเว็บจากเซิร์ฟเวอร์ windows นี่เป็นเครื่องมือที่ดีที่สุด

มีใบอนุญาตแยกต่างหากและมีราคาแพงจำเป็นต้องใช้หลายเครื่องในการโหลดการทดสอบแอปพลิเคชัน


1

เราได้พัฒนากระบวนการที่ถือว่าการวัดโหลดและประสิทธิภาพเป็นข้อกังวลชั้นหนึ่ง - อย่างที่คุณพูดปล่อยให้มันจบโครงการมีแนวโน้มที่จะนำไปสู่ความผิดหวัง ...

ดังนั้นในระหว่างการพัฒนาเรารวมการทดสอบผู้ใช้หลายคนขั้นพื้นฐาน (โดยใช้ซีลีเนียม) ซึ่งจะตรวจสอบความบ้าคลั่งขั้นพื้นฐานเช่นการจัดการเซสชันที่ใช้งานไม่ได้ปัญหาการทำงานพร้อมกันที่เห็นได้ชัดและปัญหาการขัดแย้งของทรัพยากรที่ชัดเจน โครงการที่ไม่น่าสนใจรวมถึงสิ่งนี้ในกระบวนการรวมอย่างต่อเนื่องดังนั้นเราจึงได้รับข้อเสนอแนะอย่างสม่ำเสมอ

สำหรับโครงการที่ไม่มีความต้องการด้านประสิทธิภาพเรามีการทดสอบประสิทธิภาพขั้นพื้นฐานในการทดสอบของเรา โดยปกติแล้วเราจะทดสอบการใช้ BadBoy และนำเข้าสู่ JMeter แทนที่รายละเอียดการเข้าสู่ระบบและสิ่งอื่น ๆ ที่เฉพาะเจาะจงสำหรับเธรด จากนั้นเราจะเพิ่มระดับไปจนถึงระดับที่เซิร์ฟเวอร์ร้องขอ 100 ครั้งต่อวินาที ถ้าเวลาตอบสนองน้อยกว่า 1 วินาทีนั่นก็เพียงพอแล้ว เราเปิดตัวและก้าวต่อไปกับชีวิตของเรา

สำหรับโครงการที่มีความต้องการประสิทธิภาพสูงเรายังคงใช้ BadBoy และ JMeter แต่ให้พลังงานจำนวนมากเพื่อทำความเข้าใจกับปัญหาคอขวดบนเซิร์ฟเวอร์ในอุปกรณ์ทดสอบของเรา (โดยปกติคือเว็บและเซิร์ฟเวอร์ฐานข้อมูล) มีเครื่องมือที่ดีสำหรับการวิเคราะห์บันทึกเหตุการณ์ของ Microsoftซึ่งช่วยได้มากในเรื่องนี้ โดยทั่วไปเราพบคอขวดที่ไม่คาดคิดซึ่งเราจะปรับให้เหมาะสมถ้าเป็นไปได้ ที่ทำให้เรามีแอปพลิเคชันที่เร็วที่สุดเท่าที่จะทำได้บน "1 เว็บเซิร์ฟเวอร์, เซิร์ฟเวอร์ฐานข้อมูล 1" จากนั้นเรามักจะปรับใช้กับโครงสร้างพื้นฐานเป้าหมายของเราและใช้บริการ "Jmeter in the cloud" เพื่อทำการทดสอบอีกครั้ง

รายงาน PAL อีกครั้งช่วยในการวิเคราะห์สิ่งที่เกิดขึ้นในระหว่างการทดสอบคุณมักจะเห็นคอขวดที่แตกต่างกันมากในสภาพแวดล้อมการผลิต

กุญแจสำคัญคือการทำให้แน่ใจว่าคุณไม่เพียง แต่ทำการทดสอบความเครียด แต่ยังรวมถึงการรวบรวมข้อมูลที่คุณต้องเข้าใจประสิทธิภาพของแอปพลิเคชันของคุณ


1

มีเครื่องมือที่ดีมากมายที่กล่าวถึงที่นี่ ฉันสงสัยว่าเครื่องมือเป็นคำตอบของคำถามหรือไม่: "คุณจะทดสอบเว็บแอปพลิเคชันอย่างไร?" เครื่องมือไม่ได้มีวิธีในการเน้นเว็บแอป นี่คือสิ่งที่ฉันรู้:

การทดสอบความเครียดแสดงให้เห็นว่าแอปพลิเคชันเว็บล้มเหลวอย่างไรในขณะที่ตอบสนองต่อจำนวนผู้ใช้ที่เพิ่มขึ้น การทดสอบความเครียดแสดงให้เห็นว่าแอปพลิเคชันเว็บทำงานอย่างไรในขณะที่มันล้มเหลว แอพพลิเคชั่นเว็บส่วนใหญ่ในวันนี้ - โดยเฉพาะแอปโซเชียล / มือถือบนเว็บ - เป็นการรวมบริการ ตัวอย่างเช่นเมื่อ Facebook มีปัญหาในเดือนพฤษภาคม 2554 คุณไม่สามารถลงชื่อเข้าใช้เว็บแอปของ Pepsi.com ได้ แอปไม่ได้ล้มเหลวทั้งหมดเพียงแค่ผู้ใช้ส่วนใหญ่ฟังก์ชั่นปกติไม่สามารถใช้งานได้

การทดสอบประสิทธิภาพแสดงความสามารถของเว็บแอปในการรักษาเวลาตอบสนองโดยไม่ขึ้นกับจำนวนผู้ใช้ที่ใช้แอพพร้อมกัน ตัวอย่างเช่นแอปที่จัดการ 10 ธุรกรรมต่อวินาทีโดยมีผู้ใช้งานพร้อมกัน 10 คนควรจัดการ 20 ธุรกรรมต่อวินาทีที่ 20 ผู้ใช้ หากแอปจัดการธุรกรรมน้อยกว่า 20 รายการต่อวินาทีเวลาตอบสนองจะเพิ่มขึ้นอีกต่อไปและแอปจะไม่สามารถขยายขีดความสามารถเชิงเส้นได้

นอกจากนี้ในตัวอย่างข้างต้นการนับจำนวนธุรกรรมต่อวินาทีควรเป็นเพียงการดำเนินการที่ประสบความสำเร็จของกรณีทดสอบ / เวิร์กโฟลว์การใช้งานที่ประสบความสำเร็จ ความล้มเหลวมักเกิดขึ้นในช่วงเวลาที่สั้นกว่าและจะทำให้การวัด TPS ในแง่ดีเกินไป ความล้มเหลวมีความสำคัญต่อการทดสอบความเครียดและประสิทธิภาพเนื่องจากมันสร้างภาระให้กับแอพด้วย

ผมเขียนถึงวิธีการ PushToTest ในคู่มือผู้ใช้ TestMaker ที่http://www.pushtotest.com/pushtotest-testmaker-6-methodology TestMaker มีสองรสชาติ: เวอร์ชั่นชุมชน Open Source (GPL) และ TestMaker Enterprise (เชิงพาณิชย์พร้อมการสนับสนุนระดับมืออาชีพที่ยอดเยี่ยม)

-Frank


1
นี่ไม่ได้ตอบคำถามของ OP ใด ๆ
Corey Goldberg

1

ดูที่ LoadBooster ( https://www.loadbooster.com ) มันใช้เบราว์เซอร์หัวขาดสคริปต์ PhantomJS / CasperJs เพื่อทดสอบเว็บไซต์ Phantomjs จะแยกวิเคราะห์และแสดงผลทุกหน้าเรียกใช้สคริปต์ฝั่งไคลเอ็นต์ วิธีเบราว์เซอร์ที่ไม่มีส่วนหัวนั้นง่ายกว่าในการเขียนสถานการณ์การทดสอบเพื่อรองรับการนำทางเบราว์เซอร์ AJAX หนาเว็บ 2.0 แอปที่ซับซ้อนคลิกเมาส์และกดแป้นเข้าไปในเบราว์เซอร์หรือรอจนกว่าองค์ประกอบจะอยู่ใน DOM LoadBooster รองรับสคริปต์ HTML ของซีลีเนียมด้วย

คำเตือน: ฉันทำงานให้กับ LoadBooster


1

ลองใช้ZebraTesterซึ่งง่ายต่อการใช้งานมากกว่า jMeter ฉันใช้ jMeter มานาน แต่การตั้งค่าทั้งหมดสำหรับการทดสอบโหลดมักเป็นปัญหาเสมอ ถึงแม้ว่า ZebraTester จะไม่ใช่โอเพ่นซอร์ส แต่เวลาที่ฉันบันทึกไว้ในช่วงหกเดือนที่ผ่านมาก็เป็นไปได้ พวกเขายังมีพอร์ทัล SaaS ซึ่งสามารถใช้สำหรับการทดสอบที่รวดเร็วโดยใช้ตัวสร้างโหลด


0

อีกหนึ่งข้อสังเกตสำหรับเว็บแอปพลิเคชันของเราฉันพบว่าเรามีปัญหาด้านประสิทธิภาพอย่างมากเนื่องจากความขัดแย้งระหว่างเธรดมากกว่าล็อก ... ดังนั้นศีลธรรมจึงต้องคำนึงถึงแผนการล็อกอย่างระมัดระวัง เราลงเอยด้วยการมีเธรดของผู้ปฏิบัติงานเพื่อเร่งคำขอมากเกินไปโดยใช้ตัวจัดการ http แบบอะซิงโครนัสมิฉะนั้นแอปพลิเคชันจะได้รับความล้มเหลวและล้มเหลวและเบิร์น นั่นหมายความว่ามีงานในมือจำนวนมากที่กองพะเนิน แต่อย่างน้อยเว็บไซต์ก็จะอยู่ต่อ


นี่ไม่ได้ตอบคำถามของ OP ใด ๆ
Corey Goldberg


0

ฉันสองคำแนะนำ opensta ฉันแค่เพิ่มว่ามันช่วยให้คุณทำสิ่งต่าง ๆ เพื่อตรวจสอบเซิร์ฟเวอร์ที่คุณกำลังทดสอบโดยใช้ SMTP เราติดตามการโหลดโปรเซสเซอร์, หน่วยความจำที่ใช้, ส่งไปที่อื่น ๆ , ข้อเสียเพียงอย่างเดียวคือถ้าคุณพบบางสิ่งที่โบเก้และต้องการแก้ไขมันต้องอาศัยไลบรารีโอเพ่นซอร์สหลายแห่งที่ไม่ได้เก็บไว้อีกต่อไปดังนั้นการรวบรวม แหล่งที่มาเวอร์ชั่นนั้นยุ่งยากกว่า OSS ส่วนใหญ่


0

ฉันเล่นกับ JMeter หนึ่งคิดว่าไม่สามารถทดสอบได้คือ ASP.NET Webforms วิววิสแตกการทดสอบของฉัน ฉันไม่ได้เป็นเหตุผลว่าทำไม แต่มีเครื่องมือสองสามอย่างที่ไม่สามารถจัดการกับมุมมองด้านขวาได้ โครงการปัจจุบันของฉันคือ ASP.NET MVC และ JMeter ทำงานได้ดีกับมัน


0

ฉันได้ผลลัพธ์ที่ดีด้วยFunkLoad :

  • ง่ายต่อการโต้ตอบกับผู้ใช้สคริปต์
  • รายงานที่ชัดเจน
  • สามารถตรวจสอบโหลดเซิร์ฟเวอร์

0

ความเสี่ยงที่จะถูกกล่าวหาว่าส่งเสริมตนเองไร้ยางอายฉันต้องการชี้ให้เห็นว่าในการแสวงหาเครื่องมือทดสอบโหลดฟรีฉันไปที่บทความนี้: http://www.devcurry.com/2010/07/10-free- เครื่องมือการ loadstress-ทดสอบ your.html

ฉันไม่สามารถรับปริมาณงานที่ต้องการหรือไม่สามารถรับความยืดหยุ่นที่ต้องการได้ และฉันต้องการรวบรวมผลลัพธ์ของโฮสต์การสร้างการทดสอบโหลดหลายตัวอย่างง่ายดายในการวิเคราะห์หลังการทดสอบ

ฉันลองใช้เครื่องมือทุกรายการในรายการและจากความหงุดหงิดของฉันพบว่าไม่มีใครทำสิ่งที่ฉันอยากจะทำ ดังนั้นฉันจึงสร้างและแชร์มัน

นี่คือ: http://sourceforge.net/projects/loadmonger

ป.ล. : ไม่แสดงความคิดเห็นเกี่ยวกับชื่อจากคนที่คุ้นเคยกับคำแสลงในเมือง ตอนนี้ฉันไม่ได้เป็น แต่โลกนี้อีกแล้ว


0

ฉันลงคะแนนให้jMeterด้วยและฉันต้องการเพิ่มราคาบางส่วนให้กับ @PeterBernier คำตอบ

คำถามหลักที่คำตอบการทดสอบโหลดคือจำนวนผู้ใช้งานพร้อมกันที่เว็บแอปพลิเคชันของฉันสามารถรองรับได้? เพื่อให้ได้คำตอบที่เหมาะสม ทดสอบโหลดควรแสดงถึงการใช้งานแอพลิเคชันจริงใกล้เคียงที่สุด

เก็บดังกล่าวข้างต้นในใจJMeterมีการก่อสร้างตึกหลายตัวควบคุมตรรกะ , การกำหนดค่าองค์ประกอบ , Pre โปรเซสเซอร์ , ฟัง ... ซึ่งสามารถช่วยคุณในเรื่องนี้

คุณสามารถเลียนแบบสถานการณ์ในโลกแห่งความเป็นจริงด้วย jMeter เช่นคุณสามารถ:

  1. กำหนดค่า JMeter เพื่อทำหน้าที่เป็นเบราว์เซอร์ที่แท้จริงโดยการกำหนดค่า ( concurrent resource download, browser cache, http headers, setting request time out, cookie management, https support, encoding, ajax support, ... )
  2. กำหนดค่า JMeter เพื่อสร้างคำขอของผู้ใช้ (โดยการกำหนดnumber of users per second, ramp-up time, scheduling, ... )
  3. กำหนดค่าไคลเอ็นต์จำนวนมากด้วย jMeter เพื่อทำการทดสอบโหลดแบบกระจาย
  4. กระบวนการตอบสนองเพื่อค้นหาว่าเซิร์ฟเวอร์ตอบสนองอย่างถูกต้องระหว่างการทดสอบหรือไม่ (ตัวอย่างเช่นassertการตอบสนองเพื่อค้นหาข้อความในนั้น)

โปรดพิจารณา:

  • มันง่ายในการเริ่มการทดสอบเว็บแอพพลิเคชั่นจริงด้วย jMeter ในไม่กี่นาที jMeter มีเครื่องมือที่ง่ายมากที่จะบันทึกสถานการณ์การทดสอบของคุณ (รู้ว่าHTTP(S) Test Script Recorder)
  • JMeter มีจำนวนมากของปลั๊กอินที่http://jmeter-plugins.org
  • jMeter UI นั้นมีการแกว่งและมีการเปลี่ยนแปลงที่ดีใน jMeter 3.2 โปรดพิจารณาว่า JMeter GUI ควรใช้สำหรับการทดสอบและการดีบักเท่านั้น ไม่ใช่วิธีปฏิบัติที่ดีที่จะใช้ในโหมด GUI สำหรับการทดสอบจริง https://www.blazemeter.com/blog/5-ways-launch-jmeter-test-without-using-jmeter-gui กำหนดค่าและทดสอบสถานการณ์ของคุณและเรียกใช้ในโหมดที่ไม่ใช่กุย
  • มีรายงานจำนวนมากแสดงเครื่องมือใน jMeter (รู้จักกันในนามlisteners) แต่ไม่ได้มีไว้สำหรับการทดสอบ คุณต้องทำการทดสอบและสร้างรายงาน ( .jtlไฟล์) จากนั้นคุณต้องใช้เครื่องมือเหล่านี้เพื่อวิเคราะห์ผลลัพธ์ กรุณาดูได้ที่https://www.blazemeter.com/blog/jmeter-listeners-part-1-basic-display-formatsหรือhttps://www.tutorialspoint.com/jmeter/jmeter_listeners.htm

https://www.blazemeter.com/jmeterมีข้อมูลที่ดีมากและการปฏิบัติเพื่อช่วยให้คุณกำหนดค่าสภาพแวดล้อมการทดสอบของคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.