Wie kann ich meinen Code richtig validieren?

8

Ich habe ungefähr 4000 Codezeilen für eine Webanwendung in JavaScript / PHP / CSS / HTML. Wie kann ich es richtig testen?

Ich unterstütze nur die neueste Version von IE und Safari. Ich habe alle Fehler behoben. Gibt es eine gute Möglichkeit, es zu testen, damit ich den Code als robust bezeichnen kann?

Ich habe überlegt, Perl Mechanize zu verwenden, um Formulare automatisch auszufüllen oder etwas Ähnliches zu tun.

Ich habe auch eine PHP-Testklasse, um das Innenleben meiner PHP-Klassen zu testen. Gibt es jedoch eine Art von Standard- oder Konformitätsrichtlinien, die eingehalten werden müssen? Gibt es eine Möglichkeit zu sagen, dass dieser Code die IEEE xxx foo-Standards für Code-Robustheit usw. erfüllt?

Ich habe mein HTML mit W3-Validatoren validiert und mein JavaScript mit jslint.com validiert.

Hier ist eine Liste von Dilligence-Artikeln:

  1. HTML / CSS besteht die W3-Validierung
  2. JavaScript übergibt jslint
  3. PHP besteht die interne PHP-Testklasse

Benutzertests

  1. Erstellen Sie eine Reihe von Benutzeraktionen und implementieren Sie sie mit Perl Mechanize oder ähnlichem.

Gibt es Standards oder Verfahren zum Freigeben von Code im Web?


quelle
PHPUnit wird als Methode zum Testen Ihrer PHP-Klassen wahrscheinlich viel besser angesehen als eine benutzerdefinierte Lösung, da es der De-facto-Standard zum Testen von PHP-Code ist.
Der einzige "Standard" da draußen ist die private Beta + die öffentliche Beta mit viel Zeit für genügend Zeit. Ihre Vermutung ist so gut wie meine, welche Werte dort stehen.
Itay Moav-Malimovka

Antworten:

2

Die Software-Validierung ist ein riesiger Bereich, auf Ihre Frage gibt es keine eindeutige Antwort. Darüber hinaus ist der Software-Validierungsingenieur normalerweise eine spezielle Position, die viel mehr Wissen als Entwicklung und viele Fähigkeiten (wie zum Beispiel "Debugging-Spezifikation", die wirklich nicht trivial ist) erfordert, die heute in der Entwicklergemeinschaft üblich sind.

Zweitens wird die Softwarevalidierung (und die Codevalidierung als wesentlicher Bestandteil davon) nicht getestet. Es gibt ein berühmtes Zitat von Dijkstra:

Tests zeigen das Vorhandensein und nicht das Fehlen von Fehlern

Dies ist also der Hauptunterschied zwischen der Softwareüberprüfung (dh der Angabe, dass Ihre Software gültig ist, keine Fehler enthält) und dem Testen (auf potenzielle Fehler oder Bugs).

Wenn wir Ihre Frage auf "Wie kann eine PHP-basierte Webanwendung ordnungsgemäß validiert werden?" Reduzieren. Ich kann folgende Antwort geben:

Verschmutzungsanalyse.

Es gibt einige nette Tools ( 1 , 2 ), um eine Verschmutzungsanalyse unter PHP durchzuführen . Dies ist eine statische Analyse (dh, es wird ohne Ausführen Ihres Codes durchgeführt), die mögliche Senken (Lecks) vertraulicher Informationen identifiziert.

Ich habe einige dieser Tools ( Pixy ) in meiner eigenen Praxis verwendet und festgestellt, dass sie wie alle anderen Tools in der statischen Analyse die potenzielle Gefahr zu überschätzen scheinen. Sie können Ihnen jedoch dabei helfen, einige Sicherheitsprobleme zu identifizieren, die Sie möglicherweise nicht kennen. Dies ist besonders wichtig für Webanwendungen, die mit vertraulichen Daten arbeiten.

Dies schließt nicht alle möglichen Schwachstellen wie XSS aus, deckt jedoch viele häufig auftretende Schwachstellen wie PHP-Code und SQL-Injektionen usw. ab.

Konformitätsvalidierung.

Diesen Schritt haben Sie bereits ausgeführt, indem Sie JSLint- und CSS / HTML-Validatoren für Ihre gesamte Website ausgeführt haben.

Lasttests.

Wenn die Verfügbarkeit Ihrer Webanwendung ein Problem darstellt (oder sogar Teil Ihres SLA ist), würde ich auch einige Auslastungstests durchführen. Diese können von einigen IDEs wie Visual Studio generiert werden, oder Sie können für diese Zwecke auch das Open-Source- JMeter- Framework verwenden.

Alexander Galkin
quelle
Vielen Dank. Ich wusste nicht, dass es statische Analysewerkzeuge für PHP gibt, wie es sie für Javascript gibt ... Ich werde dies zuerst untersuchen.
Amen, Dijkstra Ger
Geremia
1

Standards sind nur so gut wie die Menschen, die sie durchsetzen. (besonders bei ISO-Qualitätsstandards ...)

Wenn Sie Ihre Software vollständig testen möchten, benötigen Sie eine gute Anforderungsspezifikation, mit der überprüft werden kann, ob Sie alle Aufgaben / Funktionen / usw. so ausgeführt / implementiert haben, wie sie implementiert werden sollten. Es ist auch hilfreich, wenn jemand anderes das Projekt nur aus der Perspektive der Qualitätssicherung / Softwaretests betrachtet (von Codeüberprüfungen bis hin zu explorativen Benutzertests).

Ein weiterer Hinweis, den Sie möglicherweise berücksichtigen sollten, ist die Tatsache, dass Sie ohne eine klare Anforderungsspezifikation als Entwickler wahrscheinlich häufig Dinge als "Features" anstelle von "Bugs" annehmen werden :)

Es gibt IEEE-Standards für Anforderungsspezifikationen (IEEE 830) und Testpläne (IEEE 829). Ich denke jedoch, dass sie für viele Projekte ein bisschen OTT sind.

(Ich bin auch etwas überrascht, dass Sie keine Datenbank haben?)

rks
quelle
Ich habe eine Datenbank. Ich habe überlegt, sie im Rahmen des PHP-Tests zu testen. Nur so kann ich darauf zugreifen. Vielen Dank für Ihre Eingabe. Ich werde mir IEEE 830 und IEEE 829 nur für zusätzliche laterale Kenntnisse ansehen. Vielen Dank für Ihre Eingabe.
1

Die Antwort ist nicht beliebt.

Sie müssen Benutzer haben, die die lebendige Hölle daraus schlagen. Nachdem Sie die Liste der nach vielen Testiterationen gemeldeten Fehler erschöpft haben, können Sie Ihren Code nur noch als robust bezeichnen.

Wenn Sie es alleine testen, ist dies von geringem Nutzen, da Sie sich in der Baumcodierung befinden und den Wald nicht sehen können.

Wissen Sie nicht, dass Entwickler die schlechtesten Tester aller Zeiten sind? Ich bin ein Entwickler und ich weiß das erst, nachdem ich viele Jahre lang auf mein Gesicht gefallen bin, nachdem ich stolz gesagt habe: "Das funktioniert perfekt auf meinem Laptop."

Jason Sebring
quelle
Es ist auch das einfachste, weil Sie nur testen, was verwendet wird. Ein anderer Benutzer bezeichnete dies als Beta und Private Beta, da öffentliche Benutzer keine Fehler entdecken sollen, da sie in diesem Fall das Produkt eines anderen Benutzers verwenden.