2010-04-01 21 views
9

Wie testet man eine Site strengstens auf Sicherheit und Geschwindigkeit?Wie man eine Site rigoros testet?

Was sind die Wege und Werkzeuge dafür?

Können wir Hunderte von virtuellen Benutzern nachahmen, die die Website besuchen, um die Lastbehandlung zu sehen?

+1

Dies ist wahrscheinlich als Stresstest bekannt ... – Sarfraz

+0

Überprüfen Sie diese dann .. http://jakarta.apache.org/jmeter/ – ant

+0

* (verwandt) * http://stackoverflow.com/questions/7492/ how-do-you-Stress-Test-eine-Web-Anwendung – Gordon

Antwort

5

Wenn dies nur soll ein Stresstest sein, versuchen http://freshmeat.net/projects/siege/

Siege ist ein Regressionstest und Benchmark-Programm. Es kann eine einzelne URL mit einer benutzerdefinierten Anzahl von simulierten Benutzern testen oder es können viele URLs in den Speicher gelesen und gleichzeitig belastet werden. Das Programm meldet die Gesamtzahl der aufgezeichneten Treffer, übertragenen Byte, Antwortzeit, Nebenläufigkeit und Rückgabestatus. Siege unterstützt HTTP/1.0- und 1.1-Protokolle, GET- und POST-Anweisungen, Cookies, Transaktionsprotokollierung und Standardauthentifizierung. Seine Funktionen sind für jeden Benutzer konfigurierbar.

oder http://httpd.apache.org/docs/1.3/programs/ab.html

ab ist ein Werkzeug für das Benchmarking der Leistung Ihres Apache Hypertext Transfer Protocol (HTTP) Server. Es tut dies durch geben Sie eine Angabe, wie viele Anfragen pro Sekunde Ihre Apache-Installation dienen kann.

Um Ihren PHP-Code zu testen, verwenden Sie PHPUnit. Verwenden Sie Selenium, um Ihr Frontend zu testen.

Für Sicherheitstests, empfehle ich dringend, ein Audit zu kaufen und überlassen Sie dies engagierten Experten. Es gibt einfach zu viele mögliche Angriffsvektoren, die über Ihren App-Code hinausgehen.

+0

@Gordon: +1, danke es ist toll, über solche Werkzeuge zu wissen, danke – Sarfraz

+1

Statt Selen tendiere ich dazu, Celerity zu bevorzugen. Es erfordert, dass Sie wissen, wie man Ruby schreibt, aber sobald Sie das tun, ist es ein großartiges Front-End-Testframework. –

+0

neue Siege-URL - https://www.joedog.org/siege-home/ –

1

Sie könnten Googles Skipfish ausprobieren. Es handelt sich um einen Sicherheitsscanner, der jedoch auf Ihrer Site eine Menge Anfragen generiert.

1

auf Slashdots Titelseite Get

+0

Könntest du bitte näher darauf eingehen? – Sarfraz

+0

Es ist etwas namens Slashdot-Effekt – ariefbayu

+0

Websites, die slashdotted sind bekannt, um unter dem ganzen Verkehr aufgrund der riesigen Horden von Geeks völlig umkippen auf den Servern Tore, ängstlich, um den Inhalt zu bekommen. Seien Sie jedoch vorsichtig, Sie können Ihren Hosting-Provider damit ernsthaft abhaken;) –

6

Ich schlage vor, Sie diesen Artikel lesen, es ist sehr nützlich, ich meine dynamischen Websites überprüfe jedes Mal, wenn ich eine bauen.

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 ist Open-Source-Software, eine 100% pure Java-Desktop-Anwendung konzipiert Testfunktionsverhalten zu laden und die Leistung zu messen. It was originally designed for testing Web Applications but has since expanded to other test functions.

1

http://seleniumhq.org/ ist die Technologie zu suchen.

Zitate aus ihrer Website:

Selen eine robuste Reihe von Werkzeugen, die schnelle Entwicklung von Test Automatisierung für Web-basierten Anwendungen unterstützt. Selen bietet eine reiche Reihe von Testfunktionen speziell auf die Bedürfnisse der Prüfung einer Web Anwendung ausgerichtet.Diese Operationen sind hochflexibel, so dass viele Optionen für das Auffinden von UI-Elementen und den Vergleich von erwarteten Testergebnissen mit dem aktuellen Anwendungsverhalten möglich sind.

Eines der wichtigsten Merkmale von Selenium ist die Unterstützung für die Durchführung von Tests auf mehrere Browser-Plattformen.

Der wichtigste Teil ist wahrscheinlich: Selenium-RC (Remote Control)

Selenium-RC die Testautomatisierung Entwickler ermöglicht eine Programmierung Sprache für maximale Flexibilität und Erweiterbarkeit zu verwenden in Entwicklungstest Logik. Zum Beispiel, wenn die zu testende Anwendung liefert eine Ergebnismenge, und wenn das automatisierte Test Programm benötigt Tests auf jedes Element in der Ergebnismenge laufen, die Programmiersprache der Iteration Unterstützung verwendet werden kann, durch die iterieren Ergebnismenge, ruft Selenium Befehle auf, um Tests für jedes Element auszuführen.

Selenium-RC eine API (Application Programming Interface) bietet und Bibliothek für jeden seiner unterstützten Sprachen: HTML, Java, C#, Perl, PHP, Python und Ruby. Diese Fähigkeit, Selenium-RC mit einer High-Level- Programmiersprache zu verwenden, um Test Fälle zu entwickeln, ermöglicht auch die automatisierte Tests mit einem Projekt automatisierten Build-Umgebung integriert werden.

2

können Sie WEBLOAD verwenden. Es ist ein Werkzeug für den Belastungstest. gehen www.webload.com

3

Auch würde ich Tsung erwähnen.

Reding von ihrer Einführung:

Tsung ist ein Open-Source-Multiprotokoll verteilte Last Prüfwerkzeug

es verwendet werden kann HTTP betonen, WebDAV, SOAP, PostgreSQL, MySQL, LDAP und Jabber/XMPP-Server. Tsung (früher bekannt als IDX-Tsunami) ist eine kostenlose Software, die unter der GPLv2 Lizenz veröffentlicht wurde. die Skalierbarkeit und Performance von IP zu testen, basierend Client/Server-Anwendungen

Der Zweck Tsung ist Benutzer, um zu simulieren. Sie können verwenden, um Belastung und Belastungstest Ihrer Server zu tun. Viele Protokolle haben implementiert und getestet, und es kann leicht erweitert werden. WebDAV, LDAP und MySQL-Unterstützung wurden kürzlich (experimentell) hinzugefügt.

Es kann auf mehrere Client-Rechnern verteilt werden und ist in der Lage gleichzeitig Hunderttausende von virtuellen Benutzern zu simulieren (oder sogar Millionen, wenn Sie genug Hardware haben ...).

Tsung in Erlang entwickelt wird, eine Open-Source-Sprache, hergestellt von Ericsson für den Aufbau robuste fehlertoleranten verteilten Anwendungen.

Tsung wird von Process-One unterstützt

4

Ich mag würde nur auf ein paar Vorschläge zu erweitern, da ich diese viel zu tun.

Belagerung ist eine große Vernunftüberprüfung und es hat eine wirkliche niedrige Sperre für den Eintritt. Es ist ein Standardpaket in Ubuntu und anderen und erfordert nur die Ausführung von Befehlszeilenparametern. So können Sie Ihre Website so hart knallen, wie Sie wollen (oder wagen), um zu sehen, wo der Bruchpunkt liegt. Ich habe die Erfahrung gemacht, dass wenige Webserver sich linear verschlechtern. Wenn die Last steigt, werden sie ein wenig langsamer, dann ein bisschen langsamer, dann BAM Ihre Ladezeit springt auf 20 Sekunden. Zu wissen, wann das passiert, gibt Ihnen eine Vorstellung davon, wie viel Sie sich Sorgen machen müssen und ob Dinge erledigt werden müssen. Wenn Sie nicht bis 500+ gleichzeitige Benutzer die Wand schlagen, dann haben Sie etwas Spielraum.

Aber beachten Sie, dass Belagerung ist wirklich mehr über das Testen Ihres Web-Servers als Ihre Web-Site.

Da das selbe Plakat bereits erwähnte Selenium ein großartiges Werkzeug dafür ist, erwarten Sie jedoch, etwas Zeit zu investieren. Sie können sogar einige Tests durchführen, indem Sie nur die Selenium IDE verwenden und sie entweder in Ihrem Browser unter Selenium RC als HTTP-Suite ausführen, ohne in Skripting zu gehen (obwohl Sie dies tun möchten). Der Nachteil dieses Ansatzes besteht darin, dass dies einen echten Browser antreibt. Wenn Sie also den Test nur auf einer Maschine durchführen, werden Sie keine echten Weltergebnisse erhalten, weil Ihre Maschine einfach nicht mithalten kann. Sie müssen SRC laufen lassen und einrichten, und Selenium Grid kann eine entmutigende Aufgabe sein, aber es lohnt sich, wenn Sie das immer wieder tun, besonders wenn Sie ein wenig VM-Kenntnisse haben.

Die Leute, die Selenium erstellt haben, bieten jetzt eine kommerzielle cloudbasierte RC, die alle Standardbrowser ausführt und Videos der Sitzung aufnimmt (die Sie für einen Leistungstest ausschalten können). Es ist http://saucelabs.com und für entweder Belastungstests oder Sorglos-Schnelltests auf allen Browsern ist es großartig. (Ich führe immer noch Funktionstests lokal). Wieder kostet es, aber es ist vernünftig.

Ich buchstabiere dies mehr, weil Ihr erster Punkt Ihre Website "kräftig" testet, und ich nehme an, dass das bedeutet, alle Funktionalität zu testen, nicht nur mit viel Energie zu testen.

Ich kenne kein Wundermittel dafür, außer für das Schreiben von gründlichen Tests (wo Sie normalerweise in Skripting kommen, da viele Dinge wiederverwendet werden können, zum Beispiel das Ausfüllen eines Formulars).

Letzte Sache ist, bevor Sie es starten, wenn Sie kein Usability-Programm an Ort und Stelle haben, lassen Sie einige Nicht-Programmierer/Web-Leute verwenden und beobachten sie und bitten sie, verschiedene "Aufgaben" zu tun (sign nach oben, finde etwas, kein "Klick auf" s) Das klingt nach Usability-Tests, aber dafür ist es zu spät, aber du wirst erstaunt sein, wie schnell Leute, die nicht wie du denken, Fehler in deinem Code finden. Dies sollte hoffentlich neue Horizonte von Bereichen eröffnen, die Sie nicht getestet haben.

Ich habe kein "Coverage" Tool für Web-Anwendungen gefunden. Wenn es einen gibt, aber ich würde gerne davon hören.