Aber wenn wir eine Client-Server-Anwendung haben , kann der Entwickler bei jedem Link Grenzen setzen!
Und der Tester muss sie alle überprüfen. Warum? Denn wenn wir denselben Wert mehrmals an verschiedenen Stellen duplizieren, besteht eine große Wahrscheinlichkeit, dass wir falsch liegen. Darüber hinaus ist die Grenze auf dem Client sehr einfach zu entfernen. Was passiert, wenn der Benutzer die Grenze auf dem Client umgeht? Wird er unsere Seite mit einer großen Linie brechen?
In diesem Artikel werde ich Ihnen zeigen, wie Sie Rahmen für ein Feld in einem Webformular finden. Nehmen Sie zum Beispiel das Benutzerbearbeitungsformular inkostenloses Benutzersystem .
Inhalt
- 1. Grenzen zum Kunden
- 2. Servergrenzen
- 3. Rahmen in der Datenbank
- Gesamt: Checkliste zum Auffinden von Grenzen
1. Grenzen zum Kunden
Maximale Länge
Die Begrenzung der Zeilenlänge auf dem Client ist im Parameter maxlength des Feldes festgelegt.
Um es zu finden, benötigen Sie:
- Öffnen Sie das Entwicklerfenster und drücken Sie f12 .
- Drücken Sie die Taste ganz links und bewegen Sie den Cursor über ein Element auf der Seite.
Voila! Für das Feld "name1" haben wir ein Limit von 10 Zeichen.
Siehe auch:
Was ein Tester über das Entwicklerfenster wissen muss
Überprüfen des Limits - Versuchen Sie, mehr als 10 Zeichen einzugeben. Aber genau 10 wird eingeführt, es gibt nicht mehr. Sie tippen auf der Tastatur und das System reagiert einfach nicht:
Dies ist die Grenze! Die Grenze liegt am Kunden, wir haben sie gefunden, Hurra.
Dies bedeutet jedoch nicht, dass Sie sich dafür beruhigen müssen. Rahmen auf dem Client können sehr einfach entfernt werden, daher ist es wichtig, auch den Server zu überprüfen. Und wir als Tester sollten prüfen, ob der Server geschützt ist.
Deshalb entfernen wir die Grenze. Dazu korrigieren wir direkt im DOM-Modell (dies ist die Struktur unserer Seite, nach der wir mit dem Inspektor gesucht haben) die Zeile mit dem Parameter. Ja, es ändert sich. Doppelklicken Sie auf den Parameter maxlength und ändern Sie den Wert. Voila! Es können jetzt viel mehr Zeichen eingegeben werden als zuvor!
Bitte beachten Sie, dass Zeichen sofort eingegeben werden können, ohne die Seite zu aktualisieren. Wenn Sie die Seite aktualisieren, gehen Ihre Änderungen verloren. Wenn Sie die Seite aktualisieren, wird der HTML-Code vom Server angefordert, und dort sind Ihre Änderungen nicht vorhanden. Spielen Sie also so viel herum, wie Sie möchten, haben Sie keine Angst, etwas zu beschädigen =)
Um den Rand auf dem Server zu überprüfen, können Sie den Wert zunächst von 10 auf 1000 ändern. Wenn Sie jedoch genau nach dem technologischen Rand suchen möchten, ist es besser, einen größeren Wert zu wählen. Oder entfernen Sie den Parameter ganz. Auswählen und löschen!
Wenn Sie im Inspektor ein Element finden, werden andere Zahlen als die maximale Länge angezeigt . Zum Beispiel "data-max" oder "data-jsmax" oder etwas anderes. Können sie als Grenzen betrachtet werden? Nur wenn Sie den Code lesen und seine Bedeutung darin finden können.
Der Entwickler kann HTML nach seinen Wünschen schreiben. Er kann beliebige Attribute für das Tag mit beliebigen Namen angeben. Es ist überhaupt keine Tatsache, dass dies eine Art Grenze sein wird.
Es kann ein "Legacy" -Element sein, das heißt, es wird überhaupt nicht verarbeitet oder verwendet. Nur vergessen zu löschen. Oder es kann für CSS verwendet werden - "Wenn wir so und so einen Wert haben, schreiben wir in Weiß, wenn das, dann in Schwarz."
Und hier ist die maximale LängeIst ein Standardattribut. Und wenn es gesetzt ist, schränkt es den Benutzer ein - der Benutzer kann nicht mehr Zeichen in das Eingabefeld eingeben, als in maxlength angegeben . Das ist also die Grenze.
Und alles andere - es muss überprüft werden, ob es uns irgendwie einschränkt oder nicht. Wie zu überprüfen? Schalten Sie die Konsole ein!
Fehler in der JS-Konsole
Stellen Sie beim Testen des Webs sicher, dass die Konsole aktiviert ist:
F12 → Konsole
Und beobachte sie aus dem Augenwinkel. Andernfalls können Sie den Fehler überspringen!
Es kommt vor, dass das System das Problem in keiner Weise anzeigt - an der Schnittstelle selbst ändert sich nichts. Daten in Felder eingeben? Nichts ist rot hervorgehoben, aber in der Konsole wird ein Fehler angezeigt. Drücken wir den Knopf? Der Bericht wird geladen, alles scheint in Ordnung zu sein, aber es liegt ein Fehler in der Konsole vor.
Wenn in der Konsole ein Fehler angezeigt wird, ist dies nicht normal. Und damit muss umgegangen werden. Der Fehler kann sich verzögert auswirken, oder Sie haben seine Manifestation einfach nicht bemerkt. Beim Laden eines Berichts wurde beispielsweise eine Zelle falsch gezählt, da keine Daten geladen werden konnten, die ich in die Konsole geschrieben habe. Zur gleichen Zeit wurde der Bericht geladen und es scheint, dass sich Daten darin befinden. Es sieht gut aus. Aber es gibt einen Fehler.
Öffnen Sie also die Konsole und füllen Sie die Benutzerfelder aus. Zum Beispiel fahren wir die Daten in das Feld "Hamster". Wir haben den Rand auf dem Client entfernt (maximale Länge) und gedruckt. Und dann bemerken wir, dass ein Fehler in der Konsole aufgetreten ist!
Es stellt sich heraus, dass der Entwickler das Feld zusätzlich geschützt hat. Zusätzlich zur maximalen Länge habe ich eine Einschränkung in den Code geschrieben. Möglicherweise sollte diese Meldung in der Benutzeroberfläche angezeigt werden, damit der Benutzer sehen kann, dass etwas nicht stimmt, aber der Entwickler hat es vermasselt und gibt es an die Konsole aus.
Im Fall von Benutzern hat der Entwickler nichts verwirrt, er musste eine solche Meldung in der Konsole gemäß TK anzeigen =)) Weil unsere Aufgabe einfach darin bestand, die Situation anzuzeigen, in der alles in der Oberfläche in Ordnung ist, aber es Fehler in der Konsole gibt.
Aber wo ist die Grenze? Gemessen an der Fehlermeldung "Maximum - 10". Der Rand besteht also aus 10 Zeichen. Ja? Keine Feige! Die Grenze ist, wenn wir ein Systemverhalten davor haben (keine Fehler) und nach einem anderen.
Denken Sie daran, Fehlermeldungen sind auch Code. Welches muss auch getestet werden. Der Entwickler kann einen Fehler machen und die Nachricht falsch schreiben. Lassen Sie uns also überprüfen, wo sich die Reaktion des Systems auf Eingaben ändert.
Wir beginnen langsam mit der Eingabe von Zeichen und beobachten die Konsole:
- 10 - kein Fehler
- 11 - kein Fehler
- 12 ist ein Fehler!
Ja, das bedeutet, dass der Rand laut JS nicht 10, sondern 11 Zeichen beträgt! Bis 11 ist alles in Ordnung, und danach strömen Fehler herein Und die Fehlermeldung stellte sich als Lüge heraus. Also "vertrauen aber verifizieren" =)
Dies ist auch eine Grenze zum Client. Das Hamsterfeld hat also zwei Grenzen für den Kunden:
- maximale Länge = 10 Zeichen
- js = 11 Zeichen
Aber im Feld "Name 1" ein Rand auf dem Client: maxlength = 10 Zeichen. Es gibt keine Fehler in der Konsole bei der Eingabe von Zeichen.
Verhaltensänderung
Ich möchte noch einmal betonen, dass der Rand nicht nur ist, wenn Fehler in die Konsole gegossen werden. Es kann sich auch um eine Änderung des Systemverhaltens handeln, die für den Benutzer sichtbar ist.
Zum Beispiel entschied ein Analyst, dass ein Name mindestens 3 Buchstaben lang sein sollte. Wenn der Benutzer den Cursor auf das Feld mit dem Namen setzt, wird ein roter Rahmen angezeigt und die Beschriftung "Der Name darf nicht kürzer als 3 Buchstaben sein" wird unten angezeigt. Ich habe 1-2 Buchstaben eingegeben - nichts hat sich geändert. Eingegeben 3 - Der Rahmen mit der Signatur ist verschwunden. Oder der Rahmen hat sich von rot nach grün geändert.
Es gibt keine solchen Grenzen in Benutzern, also habe ich gerade ein Bild aus dem Internet gemacht =)
Dies ist die untere Grenze, die gemäß TOR festgelegt wurde. Und auf dem Kunden gemacht. Ebenso können Sie den oberen Rand anordnen - haben Sie mehr als 10 Zeichen eingegeben? Ein roter Rand erscheint um das Feld. Das ist also auch eine Grenze.
Gesamtgrenze zum Kunden
Der Rand auf dem Client ist der Wert des Attributs "maxlength" im Zeicheneingabefeld. Sie können nicht mehr als diesen Wert eingeben. Das System erlaubt Ihnen dies einfach nicht.
Diese Einschränkung kann einfach über das Entwicklerfenster entfernt werden. So entfernen Sie die maximale Länge aus allen Formularfeldern .
Dies ist möglicherweise nicht die einzige Grenze. Der Entwickler kann den Rand auch in den Code schreiben. Um es zu finden, folgen wir dem System. Wenn sie ihr Verhalten ändert, haben wir die Grenze gefunden:
- Sie geben die Symbole ein und das Feld hat einen roten Rand und die Signatur "zu lang" - den Rand! Zusätzlich zu "maxlength" hat der Entwickler einen Check hinzugefügt
- Sie geben Zeichen ein und Fehler erscheinen in der Konsole - auch ein Rand!
2. Servergrenze
Der Serverrand gibt an, wie viele Zeichen im System gespeichert werden können. Theoretisch sollte es mit der Grenze zum Kunden zusammenfallen =) Aber alles kann passieren. Wenn wir einen Wert an verschiedenen Stellen schreiben müssen, besteht immer die Möglichkeit, einen Fehler zu machen.
Da die Grenze zum Client leicht zu umgehen ist, müssen wir dies auf jeden Fall während des Testens tun. Und prüfen Sie, ob auf dem Server Grenzen vorhanden sind. Und wenn ja, welche.
Entfernen wir die Einschränkung maxlength = 10 in Users aus dem Feld "name1", geben Sie dort eine lange Zeichenfolge ein und versuchen Sie zu speichern. Beim Speichern gibt das System einen Fehler aus:
Dies ist der Rand auf dem Server. Der Client hat die Anfrage an den Server gesendet, der sie bearbeitet und Feedback zurückgegeben hat.
Es bleibt zu verstehen, wo die Grenze ist. Natürlich hilft uns die Fehlermeldung dabei: "Ist: 37, Maximum: 9". Theoretisch ist der Server auf 9 Zeichen begrenzt. Wir wissen aber bereits, dass dies überprüft werden sollte!
Wir überprüfen:
- 9 Zeichen eingeben, speichern - gespeichert!
- Geben Sie 10 Zeichen ein - gespeichert.
- Geben Sie 11 Zeichen ein - Fehler beim Speichern.
Dies bedeutet, dass der reale Rand 10 Zeichen auf dem Server beträgt. Passt zur Grenze des Kunden, das ist gut.
Lassen Sie uns nun das Hamsterfeld überprüfen.
Aha, hier ist die Grenze anders. In Nachricht 19, aber wir erinnern uns, dass es lügt. Wir prüfen - der Rand besteht aus 20 Zeichen. Und auf dem Client war es 10, in maximaler Länge! Die Grenzen sind also unterschiedlich.
Im Allgemeinen ist dies ein Grund, einen Fehler zu veröffentlichen, da die Grenzen übereinstimmen müssen. Es stimmt , es kann als "nicht behoben" geschlossen werden, na ja , ein bisschen mehr gespeichert und okay. Es ist viel schlimmer, wenn der Entwickler andersherum falsch liegt:
- Server - 10 Zeichen
- Client - 20 Zeichen
Infolgedessen können Sie 20 Zeichen auf dem Client eingeben. Beim Speichern wird jedoch eine Fehlermeldung angezeigt. Nicht gut!
Nach Überprüfung der oberen Grenze innerhalb der "angemessenen" Grenzen lohnt es sich, nach der technologischen Grenze zu suchen. Wir haben die Einschränkung für den Client aufgehoben und mehrere Millionen Zeichen eingeführt. Dies ist sehr einfach zu tun. Wir nehmen jedes Werkzeug aus dem Artikel " So generieren Sie eine große Zeichenfolge, Werkzeuge ", ersetzen, speichern.
Wenn das System genau den gleichen Fehler wie zuvor ausgegeben hat, werden ca. Das heißt, es gibt keine technologische Grenze. Das ist aber lieb. Die Hauptsache ist, dass wir versucht haben zu suchen =)
Warum müssen wir das tun? Weil das System Daten nicht nur speichern, sondern irgendwie vorverarbeiten kann. Überprüfen Sie nach Zustand oder etwas anderem. Und dann beherrscht das System eine kleine Linie, aber keine große mehr.
Siehe auch:
Technologische Grenze in den Tipps für juristische Personen - wenn Sie 1000 Zeichen eingeben, passiert nichts, aber wenn "Krieg und Frieden" ...
3. Rahmen in der Datenbank
Der Rand in der Datenbank gibt an, wie viele Zeichen in die Datenbank passen. Beim Erstellen einer Basis geben wir die Dimension jedes Felds an. Hier ist ein Beispiel von den Leuten :
- Nachname - VARCHAR (255)
- Name - VARCHAR (100)
- Stadt - VARCHAR (20)
Dies bedeutet, dass im Feld "Nachname" 255 Zeichen, im Namen 100 und in der Stadt - 20 gespeichert werden können. Wenn versucht wird, eine größere Zeichenfolge dorthin zu verschieben, generiert das System einen Fehler aus der Reihe "ORA-06502: PL / SQL: numerischer oder Wertefehler" : Zeichenkettenpuffer zu klein " .
Es ist wichtig zu verstehen, dass der Datenbankrahmen nur angezeigt wird, wenn auf dem Server kein Rand vorhanden ist. Der Suchpfad für den Rand ändert sich nicht:
- Der Rand auf dem Client wurde entfernt
- Füllte eine große Linie
- Ich versuche zu retten
Wenn der Entwickler einen Rand auf dem Server festgelegt hat, wird ein behandelter Fehler angezeigt - wunderschön (oder nicht so) gerendert, mit ziemlich aussagekräftigem Text. Weil der Entwickler es geschrieben hat und es um unsere Anwendung geht.
Und wenn es keinen Rand auf dem Server gibt, wird ein nicht behandelter Fehler angezeigt. Dies kann ein Fehler wie "ORA-06502: .." oder ein Code-Streamtrace sein - eine Reihe von Zeichen, die für einen normalen Benutzer unverständlich sind.
Natürlich kann es eine andere Situation geben - wenn der Rand auf dem Server größer ist als in der Datenbank:
- Server - 20 Zeichen
- DB - 10 Zeichen
Und dann stellt sich heraus, dass es eine lustige Situation ist. Ja, wir haben uns vor der Einführung von "Krieg und Frieden" geschützt. Wenn Sie 25 Zeichen oder 25 Millionen Zeichen eingeben, wird ein aussagekräftiger Fehler angezeigt. Aber wenn Sie 11 Zeichen eingeben, dann oh! Eine große und beängstigende Stapelspur im Vollbildmodus.
Versuchen Sie daher beim Testen einer Black Box nicht, viele Zeichen gleichzeitig herauszufinden. Versuchen Sie zuerst eine sinnvolle Bedeutung. Wenn Sie die Einschränkung für den Client aufgehoben haben, sollten Sie den Grenzwert dafür ausprobieren. War die maximale Länge = 10? Versuchen Sie es mit 11 Zeichen. Und dann 55 Millionen und dann 55 Millionen.
Gesamt: Checkliste zum Auffinden von Grenzen
In einer Client-Server-Anwendung können sich an jeder Verbindung Grenzen befinden. Und im Idealfall sollten sie zusammenpassen. Aber wir müssen es überprüfen!
Es kann mehr Grenzen geben. Auf dem Client kann ein Entwickler mehrere Grenzen gleichzeitig festlegen: Sowohl die maximale Länge als auch das Verhalten ändern sich beim Überschreiten einer bestimmten Linie (js-Code).
Es kann weniger Grenzen geben. Aus der Serie "Lassen Sie den Benutzer keine Dummheit eingeben", und als Ergebnis gibt es keine Einschränkungen für den Client und den Server. Die Dimension der Felder in der Datenbank bleibt jedoch erhalten.
So finden Sie Grenzen:
1. Überprüfen Sie, ob das Feld eine maximale Länge hat - dies ist die offensichtlichste Grenze auf dem Client.
2. Entfernen Sie diese Einschränkung .
3. Aktivieren Sie die JS-Konsole (wohin können wir ohne sie gehen?).
4. Beginnen Sie mit der Eingabe von Zeichen (ca. 50-100) in jedes Feld. Nachverfolgen:
- — ?
- — ?
Wenn sich das Verhalten des Systems ändert oder Fehler in der Konsole auftreten, ist dies auch die Grenze auf dem Client. Aber der andere ist in js Code.
5. Versuchen Sie, diese 50-100 Zeichen zu speichern. So suchen wir nach dem Rand auf dem Server und / oder in der Datenbank.
Wenn das System einen aussagekräftigen Fehler wie "Feld zu lang" generiert, ist dies ein Fehler auf dem Server. Wenn der Fehler nicht behoben wird, befindet sich höchstwahrscheinlich kein Rand auf dem Server, und Sie haben den Rand in der Datenbank gefunden.
Sie können den genauen Wert des Rahmens mithilfe der Methode der halbierten Teilung ermitteln. Nun, oder mit den Protokollen / Text der Fehlermeldung.
6. Führen Sie 100 Millionen Symbole ( Werkzeuge ) ein und versuchen Sie, sie zu speichern, um die technologische Grenze zu finden.
Im Verlauf des Artikels haben wir anhand dieser Checkliste die Felder "Name1" und "Hamster" im Benutzersystem überprüft. Ergebnisse:
Feld Name1:
- maximale Länge - 10 Zeichen
- Server - 10 Zeichen
Hamsterfeld:
- maximale Länge - 10 Zeichen
- js - 11 Zeichen
- Server - 20 Zeichen
Alles ist gut für den Namen, die Grenzen fallen zusammen. Bei der Untersuchung des "Hamsters" haben wir jedoch zwei Probleme gleichzeitig entdeckt - den Unterschied zwischen den Client-Server-Grenzen (10 und 20) sowie einen Fehler in der Konsole. Sie können Fehler posten!