Cómo encontrar límites en el cliente y el servidor

¿Cómo suele un probador buscar límites en el campo? Si hay restricciones en el TK, entonces las prueba. ¿Y si no lo son? Todo está claro con el borde inferior: es un campo vacío. ¿Cómo encontrar el mejor? Inserte una línea grande y vea cuántos caracteres se guardan. Y eso es todo ...



Pero si tenemos una aplicación cliente-servidor , ¡entonces el desarrollador puede establecer límites en cada enlace!







Y el probador debe verificarlos a todos. ¿Por qué? Porque cuando duplicamos el mismo valor varias veces en diferentes lugares, hay una gran posibilidad de estar equivocado. Al mismo tiempo, el borde del cliente es muy fácil de eliminar. ¿Qué sucede si el usuario cruza la frontera del cliente? ¿Romperá nuestro sitio con una gran línea?



En este artículo, le mostraré cómo encontrar bordes para un campo en un formulario web. Tomemos, por ejemplo, el formulario de edición del usuario enSistema de usuarios gratuito .



Contenido





1. Fronteras en el cliente



Longitud máxima



La limitación en la longitud de la línea en el cliente se prescribe en el parámetro maxlength del campo.



Para encontrarlo, necesitas:



  1. Abra el panel de desarrollador: presione f12 .
  2. Presione el botón más a la izquierda y mueva el cursor sobre un elemento en la página.


Voila! Para el campo "nombre1" tenemos un límite de 10 caracteres.







Consulte también:

Lo que un probador necesita saber sobre el panel de desarrollador



Verificando el límite - tratando de ingresar más de 10 caracteres. Pero exactamente se introduce 10, ya no da más. Escribe en el teclado y el sistema simplemente no responde: ¡







Este es el borde! El borde está en el cliente, lo encontramos, hurra.



Pero esto no significa que necesite calmarse para esto. Los bordes del cliente se pueden eliminar muy fácilmente, por lo que también es importante verificar el servidor. Y nosotros, como probadores, debemos verificar si hay protección en el servidor.



Por lo tanto, eliminamos el borde. Para hacer esto, directamente en el modelo DOM (esta es la estructura de nuestra página, que buscamos con el inspector), corregimos la línea con el parámetro. Si, esta cambiando. Haga doble clic en el parámetro maxlength y cambie el valor. Voila! ¡Ahora se pueden ingresar muchos más caracteres que antes!







Tenga en cuenta que los caracteres se pueden ingresar de inmediato, sin actualizar la página. Además, si actualiza la página, sus cambios se perderán. Después de todo, cuando actualiza la página, se solicita el código HTML del servidor y sus cambios no están allí. Así que juegue todo lo que quiera, no tenga miedo de romper algo =)



En principio, para verificar el borde en el servidor, primero puede cambiar el valor de 10 a 1000. Pero si desea buscar exactamente el borde tecnológico, entonces es mejor elegir un valor más grande. O elimine el parámetro por completo. Seleccionar y eliminar!







Cuando encuentre un artículo en el inspector, puede ver números distintos de la longitud máxima . Por ejemplo, "data-max" o "data-jsmax" , o algo más. ¿Pueden considerarse límites? Solo si puede leer el código y encontrar su significado en él.



El desarrollador puede escribir HTML como quiera. Puede especificar cualquier atributo para la etiqueta, con cualquier nombre. No es en absoluto un hecho que esto sea algún tipo de frontera.



Puede ser un elemento "heredado", es decir, no se procesa ni se utiliza en absoluto. Solo olvidé eliminar. O puede usarse para CSS: "si tenemos tal o cual valor, entonces escribimos en blanco, si es así, luego en negro".



Y aquí está la longitud máximaEs un atributo estándar. Y si está configurado, entonces restringe al usuario: el usuario no puede ingresar más caracteres en el campo de entrada que los especificados en longitud máxima . Entonces esta es la frontera.



Y todo lo demás: es necesario verificar si nos limita de alguna manera o no. ¿Como revisar? ¡Enciende la consola!







Errores en la consola JS



Al probar la web, asegúrese de habilitar la consola:

F12 → Consola




Y mirarla por el rabillo del ojo. De lo contrario, puede omitir el error.



Sucede que el sistema no muestra el problema de ninguna manera, nada cambia en la interfaz misma. ¿Ingresando datos en los campos? Nada está resaltado en rojo, pero aparece un error en la consola. ¿Estamos presionando el botón? El informe se está cargando, todo parece estar bien, pero hay un error en la consola.



Si aparece un error en la consola, esto no es normal. Y esto debe ser tratado. El error puede tener un efecto retrasado, o tal vez simplemente no se dio cuenta de su manifestación. Por ejemplo, al cargar un informe, una celda se contaba incorrectamente, porque no podía cargar datos, que escribí en la consola. Al mismo tiempo, se cargó el informe y parece que hay datos dentro, se ve bien. Pero hay un error.



Entonces, abra la consola y comience a completar los campos de usuario. Por ejemplo, llevamos los datos al campo "hámster". Eliminamos el borde en el cliente (maxlength) e imprimimos. ¡Y luego notamos que apareció un error en la consola!







Resulta que el desarrollador ha puesto protección adicional en el campo. Además de maxlength, escribí una restricción en el código. Quizás este mensaje debería haberse mostrado en la interfaz para que el usuario pudiera ver que algo andaba mal, pero el desarrollador lo confundió y lo envió a la consola.



En el caso de los Usuarios, el desarrollador no confundió nada, tuvo que mostrar ese mensaje en la consola de acuerdo con el TK =)) Porque nuestra tarea era simplemente mostrar la situación cuando todo está bien en la interfaz, pero hay errores en la consola.



¿Pero dónde está la frontera? A juzgar por el mensaje de error "Máximo - 10". Entonces el borde es de 10 caracteres. ¿Si? No es un higo! El límite es cuando tenemos un comportamiento del sistema antes (sin errores) y después de otro.







Recuerde, los mensajes de error también son código. Que también necesita ser probado. El desarrollador puede cometer un error y escribir el mensaje incorrectamente. Entonces, verifiquemos dónde cambiará la respuesta del sistema a la entrada.



Comenzamos a escribir caracteres lentamente, mirando la consola:



  • 10 - sin error
  • 11 - sin error
  • 12 es un error!


Sí, significa que el borde según JS no es 10, ¡sino 11 caracteres! Hasta las 11, todo está bien, y después de eso, los errores comienzan a aparecer. Y el mensaje de error resultó ser mentiroso. Entonces "confiar pero verificar" =)



Esto también es un límite en el cliente. Entonces el campo de hámster tiene dos fronteras en el cliente:



  1. longitud máxima = 10 caracteres
  2. js = 11 caracteres


Pero en el campo "nombre 1" un borde en el cliente: longitud máxima = 10 caracteres. No hay errores en la consola al ingresar caracteres.







Cambio de comportamiento



Me gustaría enfatizar una vez más que el borde no es solo cuando los errores se vierten en la consola. También puede ser un cambio en el comportamiento del sistema visible para el usuario.



Por ejemplo, un analista decidió que un nombre debe tener al menos 3 letras de largo. Por lo tanto, cuando el usuario coloca el cursor en el campo con el nombre, aparece un marco rojo a su alrededor y la leyenda "El nombre no debe ser más corto que 3 letras" aparece en la parte inferior. Ingresé 1-2 letras, nada ha cambiado. Entró 3 - el marco con la firma desapareció. O el marco ha cambiado de rojo a verde.





No hay tales límites en los usuarios, así que acabo de tomar una foto de Internet =)



Este es el límite inferior establecido de acuerdo con los TOR. Y hecho en el cliente. Del mismo modo, puede organizar el borde superior: ¿ingresó más de 10 caracteres? Aparece un borde rojo alrededor del campo. Entonces esto también es una frontera.







Borde total en el cliente



El borde en el cliente es el valor del atributo "maxlength" en el campo de entrada de caracteres. No puede ingresar más de este valor, el sistema simplemente no le permitirá hacerlo.





Esta limitación se puede eliminar fácilmente a través del panel de desarrollador: cómo eliminar la longitud máxima de todos los campos del formulario .



Este puede no ser el único límite. El desarrollador también puede escribir el borde en el código. Para encontrarlo, seguimos el sistema. Si ella cambia su comportamiento, hemos encontrado la frontera:



  • Ingresa los símbolos y el campo tiene un borde rojo y la firma "demasiado larga" - ¡el borde! Además de "maxlength", el desarrollador agregó un cheque
  • Ingresas caracteres y aparecen errores en la consola, ¡también un borde!






2. Borde del servidor



El borde del servidor es cuántos caracteres podemos almacenar en el sistema. En teoría, debería coincidir con el límite en el cliente =) Pero cualquier cosa puede suceder. Cuando necesitamos escribir un valor en diferentes lugares, siempre existe la posibilidad de cometer un error.



Dado que el borde en el cliente es fácil de sortear, definitivamente debemos hacerlo durante las pruebas. Y vea si hay límites en el servidor. Y si es así, cuáles.



Eliminemos la restricción maxlength = 10 en Usuarios del campo "nombre1", ingrese una cadena larga allí e intente guardar. Al guardar, el sistema da un error:







este es el borde en el servidor. El cliente envió la solicitud al servidor, que la resolvió y devolvió sus comentarios.



Queda por entender dónde está la frontera. Por supuesto, el mensaje de error nos ayuda con esto: "real: 37, máximo: 9"... En teoría, el servidor tiene un límite de 9 caracteres. ¡Pero ya sabemos que esto debería verificarse!



Verificamos:



  • Ingrese 9 caracteres, guarde - ¡guardado!
  • Ingrese 10 caracteres - guardado.
  • Ingrese 11 caracteres: error al guardar.


Esto significa que el borde real es de 10 caracteres en el servidor. Coincide con el borde del cliente, eso es bueno.



Ahora revisemos el campo del hámster.







Ajá, aquí la frontera es diferente. En el mensaje 19, pero recordamos que está mintiendo. Verificamos: el borde tiene 20 caracteres. ¡Y en el cliente eran 10, en longitud máxima! Entonces los límites son diferentes.



En general, esta es una razón para publicar un error, porque los límites deben coincidir. Es cierto que se puede cerrar como un "no va a arreglar" , bueno, guardar un poco más, y está bien. Es mucho peor cuando el desarrollador está equivocado de otra manera:



  • Servidor - 10 caracteres
  • Cliente - 20 caracteres


Como resultado, puede ingresar 20 caracteres en el cliente, pero al guardar, recibimos un error. ¡No está bien!



Después de verificar el límite superior dentro de los límites "adecuados", vale la pena buscar el límite tecnológico. Eliminamos la limitación en el cliente, introdujimos varios millones de caracteres. Esto es muy fácil de hacer. Tomamos cualquier herramienta del artículo " Cómo generar una cadena grande, herramientas ", sustituir, guardar.



Si el sistema dio exactamente el mismo error que antes, entonces aprox. Esto significa que no hay frontera tecnológica. Bueno, eso es bonito. Lo principal es que tratamos de buscar =)



¿Por qué necesitamos hacer esto? Porque el sistema no solo puede guardar datos, sino que de alguna manera los procesa previamente. Verifique por condición u otra cosa. Y luego el sistema dominará una línea pequeña, pero ya no será enorme.



Ver también:

Borde tecnológico en los consejos para personas jurídicas : si ingresa 1000 caracteres, no sucederá nada, pero si "guerra y paz" ...







3. Borde en la base de datos



El borde en la base de datos es cuántos caracteres caben en la base de datos. Al crear una base, indicamos la dimensión de cada campo. Aquí hay un ejemplo de la gente :



  • apellido - VARCHAR (255)
  • nombre - VARCHAR (100)
  • ciudad - VARCHAR (20)


Esto significa que en el campo "apellido" podemos almacenar 255 caracteres, en el nombre 100 y en la ciudad - 20. Al intentar insertar una cadena más grande allí, el sistema generará un error de la serie "ORA-06502: PL / SQL: error numérico o de valor : buffer de cadena de caracteres demasiado pequeño " .



Es importante comprender que veremos el borde de la base de datos solo si no hay un borde en el servidor. La ruta de búsqueda para el borde no cambia:



  1. Se eliminó el borde del cliente.
  2. Relleno de una linea grande
  3. Tratando de ahorrar






Entonces, si el desarrollador ha establecido un borde en el servidor, entonces veremos un error manejado, bellamente (o no) representado, con texto bastante significativo. Porque el desarrollador lo escribió y se trata de nuestra aplicación.







Y si no hay un borde en el servidor, veremos un error no controlado. Puede ser un error como "ORA-06502: ..", o una secuencia de código, un conjunto de caracteres incomprensibles para un usuario común.







Por supuesto, puede haber otra situación: cuando el borde es más grande en el servidor que en la base de datos:



  • Servidor - 20 caracteres
  • DB - 10 caracteres


Y luego resulta ser una situación divertida. Sí, nos hemos protegido de la inserción de "guerra y paz". Al ingresar 25 caracteres o 25 millones de caracteres, se obtiene un error significativo. Pero si ingresas 11 caracteres, ¡oh! Un rastro de pila grande y aterrador en pantalla completa.



Por lo tanto, cuando pruebe una caja negra, no intente descubrir MUCHOS caracteres a la vez. Pruebe primero el significado significativo. Y si eliminó la limitación en el cliente, vale la pena probar el valor límite para él. ¿Era maxlength = 10? Prueba con 11 personajes. Y luego 55 millones, y luego 55 millones.







Total: lista de verificación para encontrar límites



En una aplicación cliente-servidor, los límites pueden estar en cada enlace. E idealmente deberían coincidir. ¡Pero tenemos que echarle un vistazo!







Puede haber más límites. En el cliente, un desarrollador puede imponer varios límites a la vez: tanto la longitud máxima como el cambio de comportamiento al cruzar una determinada línea (código js).



Puede haber menos fronteras. De la serie "deje que el usuario no entre en estupidez", y como resultado, no hay restricciones para el cliente y el servidor. Pero la dimensión de los campos en la base de datos permanece.



Cómo encontrar límites:



1. Compruebe si el campo tiene longitud máxima : este es el límite más obvio en el cliente.



2. Eliminar esta restricción .



3. Habilite la consola JS (¿a dónde podemos ir sin ella?).



4. Comience a conducir caracteres, aproximadamente 50-100 en cada campo. Seguimiento:



  • — ?
  • — ?


Si el comportamiento del sistema cambia o aparecen errores en la consola, este también es el límite en el cliente. Pero el otro está en código js.



5. Intente guardar estos 50-100 caracteres. Así es como buscamos el borde en el servidor y / o en la base de datos.



Si el sistema genera un error significativo como "Campo demasiado largo", este es un error en el servidor. Si el error no se maneja, lo más probable es que no haya un borde en el servidor y haya encontrado el borde en la base de datos.



Puede encontrar el valor exacto del borde utilizando el método de división biseccional. Bueno, o usando los registros / texto del mensaje de error.



6. Introduzca 100 millones de símbolos ( herramientas ) e intente guardarlos para encontrar la frontera tecnológica.



En el curso del artículo, verificamos los campos "nombre1" y "hámster" en el sistema de Usuarios usando esta lista de verificación. Resultados:



Nombre1 campo:



  • longitud máxima - 10 caracteres
  • servidor - 10 caracteres


Campo de hámster:



  • longitud máxima - 10 caracteres
  • js - 11 caracteres
  • servidor - 20 caracteres


Todo es bueno para el nombre, los límites coinciden. Pero al examinar el "hámster", descubrimos 2 problemas a la vez: la diferencia entre los límites cliente-servidor (10 y 20), así como un error en la consola. ¡Puedes publicar errores!



All Articles