2010-04-01 36 views
9

Làm cách nào để kiểm tra nghiêm ngặt một trang web cho cả bảo mật và tốc độ?Làm cách nào để kiểm tra nghiêm ngặt một trang web?

Các cách và công cụ cho điều đó là gì?

Chúng tôi có thể bắt chước hàng trăm người dùng ảo truy cập trang web để xem việc xử lý tải của nó không?

+1

Điều này có thể được gọi là kiểm tra căng thẳng ... – Sarfraz

+0

Kiểm tra điều này sau đó .. http://jakarta.apache.org/jmeter/ – ant

+0

* (liên quan) * http://stackoverflow.com/questions/7492/ làm thế nào-do-bạn-căng thẳng-test-a-web-ứng dụng – Gordon

Trả lời

5

Nếu đây chỉ là nghĩa vụ phải được thử nghiệm gắng sức, hãy thử http://freshmeat.net/projects/siege/

Siege là một thử nghiệm hồi quy và benchmark tiện ích. Nó có thể căng thẳng kiểm tra một URL duy nhất với một người dùng xác định số lượng người dùng mô phỏng, hoặc nó có thể đọc nhiều URL vào bộ nhớ và nhấn mạnh chúng cùng một lúc. Chương trình báo cáo tổng số lần truy cập được ghi lại, số byte được chuyển, thời gian phản hồi, đồng thời và trạng thái trả về. Siege hỗ trợ giao thức HTTP/1.0 và 1.1, chỉ thị GET và POST, cookie, ghi nhật ký giao dịch và xác thực cơ bản. Các tính năng của nó được cấu hình trên cơ sở mỗi người dùng.

hoặc http://httpd.apache.org/docs/1.3/programs/ab.html

ab là một công cụ cho điểm chuẩn hiệu suất của bạn Apache HyperText Transfer Protocol server (HTTP). Việc này thực hiện điều này bằng cách cho bạn biết số lượng yêu cầu mỗi giây cài đặt Apache của bạn có thể phân phối.

Để kiểm tra mã PHP của bạn, hãy sử dụng PHPUnit. Để kiểm tra giao diện người dùng của bạn, hãy sử dụng Selenium.

Để kiểm tra bảo mật, tôi đặc biệt khuyên bạn nên mua kiểm toán và để lại cho các chuyên gia chuyên dụng. Chỉ có quá nhiều vectơ tấn công có thể vượt quá mã ứng dụng của bạn.

+0

@Gordon: +1, cảm ơn nó là tuyệt vời để biết về các công cụ như vậy, cảm ơn – Sarfraz

+1

Thay vì Selenium, tôi có xu hướng thích Celerity. Nó đòi hỏi bạn phải biết cách viết Ruby, nhưng một khi bạn làm được, nó là một khuôn khổ kiểm thử front-end tuyệt vời. –

+0

URL vây hãm mới - https://www.joedog.org/siege-home/ –

1

Bạn có thể thử số điện thoại Skipfish của Google. Đó là một máy quét bảo mật nhưng nó sẽ vô tình tạo ra khá nhiều yêu cầu đến trang web của bạn.

1

Nhận trên trang trước của slashdot

+0

bạn có thể giải thích thêm về điều đó không? – Sarfraz

+0

Đó là một cái gì đó gọi là hiệu ứng slashdot – ariefbayu

+0

Các trang web bị gạch chéo được biết là hoàn toàn sụp đổ dưới tất cả lưu lượng truy cập do số lượng lớn các geeks gõ xuống các cổng máy chủ, lo lắng để có được nội dung bên trong. Hãy cẩn thận, bạn có thể nghiêm túc đánh dấu nhà cung cấp dịch vụ lưu trữ của bạn với điều này;) –

6

Tôi khuyên bạn nên đọc bài đăng này, tôi rất hữu ích khi tôi kiểm tra trang web động của mình mỗi lần tôi tạo trang web đó.

https://stackoverflow.com/questions/72394/what-should-a-developer-know-before-building-a-public-web-site#answer-305381

Edit:

http://jmeter.apache.org/

Apache JMeter là một phần mềm mã nguồn mở, một Java thuần túy ứng dụng desktop 100% thiết kế để tải hành vi chức năng kiểm tra và đo lường hiệu suất. It was originally designed for testing Web Applications but has since expanded to other test functions.

1

http://seleniumhq.org/ là công nghệ cần tìm.

Quotes từ trang web của họ:

Selenium là một tập hợp mạnh mẽ của các công cụ mà hỗ trợ phát triển nhanh chóng của thử nghiệm tự động hóa cho các ứng dụng dựa trên web. Selenium cung cấp một bộ phong phú các chức năng kiểm tra đặc biệt hướng tới cho nhu cầu thử nghiệm ứng dụng web .Các hoạt động này là rất linh hoạt, cho phép nhiều tùy chọn để định vị các phần tử giao diện người dùng và so sánh kết quả thử nghiệm mong đợi với hành vi ứng dụng thực tế .

Một trong những tính năng chính của Selenium là hỗ trợ để thực hiện kiểm tra của một người trên nhiều nền tảng trình duyệt.

Phần quan trọng nhất có lẽ là: Selenium-RC (Remote Control)

Selenium-RC cho phép tự động hóa kiểm tra nhà phát triển để sử dụng một ngôn ngữ lập trình cho sự linh hoạt tối đa và mở rộng trong việc phát triển thử nghiệm logic . Ví dụ, nếu ứng dụng thử trả về một tập kết quả, và nếu chương trình thử nghiệm tự động cần phải chạy thử nghiệm trên mỗi phần tử trong tập hợp kết quả, hỗ trợ các ngôn ngữ lập trình của lặp có thể được sử dụng để lặp qua sự tập hợp kết quả, gọi các lệnh Selenium để chạy thử nghiệm trên mỗi mục.

Selenium RC-cung cấp một API (Application Programming Interface) và thư viện cho mỗi phần tử được hỗ trợ ngôn ngữ: HTML, Java, C#, Perl, PHP, Python , và Ruby. Khả năng sử dụng Selenium-RC với ngôn ngữ lập trình cao cấp để phát triển thử nghiệm trường hợp cũng cho phép thử nghiệm tự động được tích hợp với môi trường xây dựng tự động của dự án .

2

bạn có thể sử dụng WEBLOAD. Công cụ kiểm tra tải của nó .. goto www.webload.com

3

Ngoài ra, tôi sẽ đề cập đến Tsung.

Reding từ giới thiệu của họ:

Tsung là một đa giao thức phân phối công cụ kiểm tra tải mã nguồn mở

Nó có thể được sử dụng để nhấn mạnh HTTP, WebDAV, SOAP, PostgreSQL, MySQL, Máy chủ LDAP và Jabber/XMPP. Tsung (trước đây là được gọi là IDX-Tsunami) là một phần mềm miễn phí được phát hành theo giấy phép GPLv2 .

Mục đích của Tsung là mô phỏng người dùng để kiểm tra khả năng mở rộng và hiệu suất của các ứng dụng khách/máy chủ dựa trên IP . Bạn có thể sử dụng nó để thực hiện kiểm tra tải và căng thẳng trong số các máy chủ của bạn. Nhiều giao thức có được triển khai và thử nghiệm, và có thể dễ dàng mở rộng . WebDAV, LDAP và hỗ trợ MySQL đã được thêm gần đây (thử nghiệm).

Nó có thể được phân phối trên nhiều máy client và có thể mô phỏng hàng trăm ngàn người dùng ảo đồng thời (hoặc thậm chí triệu nếu bạn có đủ phần cứng ...).

Tsung được phát triển ở Erlang, một ngôn ngữ mã nguồn mở được thực hiện bởi Ericsson để xây dựng các ứng dụng phân tán có khả năng chịu lỗi mạnh mẽ .

Tsung được hỗ trợ bởi Process-One

4

Tôi muốn chỉ mở rộng trên một vài gợi ý kể từ khi tôi làm điều này rất nhiều.

Cuộc vây hãm là công cụ kiểm tra độ chính xác tuyệt vời và nó có rào cản thực sự thấp để tham gia. Đó là một gói tiêu chuẩn trong Ubuntu và các gói khác và chỉ yêu cầu tham số dòng lệnh để chạy. Vì vậy, bạn có thể slam trang web của bạn cứng như bạn muốn (hoặc dám) để xem nơi phá vỡ điểm. Kinh nghiệm của tôi là vài máy chủ web bị suy giảm theo kiểu tuyến tính. Khi tải tăng, chúng chậm hơn một chút, sau đó chậm hơn một chút, sau đó BAM thời gian tải của bạn nhảy lên 20 giây. Biết khi nào điều đó xảy ra cho bạn một ý tưởng về việc phải lo lắng bao nhiêu và nếu cần phải làm gì. Nếu bạn không nhấn vào tường cho đến 500+ người dùng đồng thời, thì bạn sẽ mất nhiều thời gian.

Nhưng lưu ý rằng cuộc bao vây thực sự là nhiều hơn về kiểm tra máy chủ web của bạn so với SITE web của bạn.

Vì cùng một áp phích được đề cập trước đó, Selenium là một công cụ tuyệt vời cho điều đó, tuy nhiên, mong đợi đầu tư một thời gian. Bạn có thể thực sự bật ra một vài thử nghiệm chỉ bằng cách sử dụng IDE Selenium và chạy chúng trong trình duyệt của bạn dưới Selenium RC như một bộ HTTP mà không nhận được vào kịch bản (mặc dù bạn sẽ muốn làm điều đó). Cả hai phương thức tiếp cận này đều là sức mạnh của một trình duyệt thực, vì vậy việc chạy thử nghiệm trên một máy sẽ không mang lại cho bạn kết quả thế giới thực bởi vì máy của bạn không thể theo kịp. Bạn cần phải chạy và thiết lập SRC và Selenium Grid có thể là một nhiệm vụ khó khăn, nhưng hoàn toàn có giá trị nếu đây là một cái gì đó bạn sẽ được làm một lần nữa và một lần nữa, đặc biệt là nếu bạn có một chút kiến ​​thức VM.

Những người tạo Selen bây giờ cung cấp một RC dựa trên đám mây thương mại chạy tất cả trình duyệt chuẩn và quay video phiên (bạn có thể tắt để kiểm tra hiệu suất). Đó là tại http://saucelabs.com và cho một trong hai thử nghiệm tải, hoặc chăm sóc miễn phí kiểm tra nhanh chóng trên tất cả các trình duyệt nó tuyệt vời. (Tôi vẫn chạy thử nghiệm chức năng cục bộ). Một lần nữa, nó chi phí, nhưng nó là hợp lý.

Tôi giải thích điều này nhiều hơn vì điểm đầu tiên của bạn đang kiểm tra trang web của bạn "mạnh mẽ" và tôi giả định rằng có nghĩa là kiểm tra tất cả chức năng, chứ không chỉ thử nghiệm nó với nhiều năng lượng.

Tôi không biết bất kỳ viên đạn ma thuật nào cho việc này ngoại trừ việc viết các bài kiểm tra kỹ lưỡng (đây là nơi bạn thường dùng để viết kịch bản vì rất nhiều thứ có thể được sử dụng lại, ví dụ: điền vào biểu mẫu).Điều cuối cùng là, trước khi bạn khởi động nó, nếu bạn không có một chương trình khả năng sử dụng tại chỗ, hãy để một số người không lập trình/web-người sử dụng nó và xem chúng và yêu cầu họ làm nhiều "nhiệm vụ" khác nhau (ký tên). Điều này nghe có vẻ như khả năng sử dụng thử nghiệm nhưng nó quá muộn cho điều đó, nhưng bạn sẽ ngạc nhiên như thế nào một cách nhanh chóng những người không nghĩ như bạn tìm thấy lỗi trong mã của bạn. Điều này hy vọng sẽ mở ra những chân trời mới của các khu vực bạn chưa thử nghiệm.

Tôi chưa tìm thấy công cụ "phủ sóng" trên ứng dụng web. Nếu có một, nhưng tôi rất thích nghe về nó.

Các vấn đề liên quan