Lista de verificación para probar un campo numérico

Al realizar las pruebas, hay tareas interesantes con lógica intrincada y tareas simples, como verificar una cadena simple o un campo numérico. Para campos simples, puede escribir una lista de verificación de cheques una vez y luego reutilizarla, cambiándola ligeramente para adaptarla a su propio campo.



Hoy analizaremos la lista de verificación para un campo numérico. Primero, escribiré una lista de verificación general, luego revisaremos cada elemento y averiguaremos por qué es necesario, y al final escribiremos una lista de verificación utilizando esta plantilla.



Entonces, tenemos un cierto campo donde debe ingresar un número. Por ejemplo, el campo "edad" al registrarse:







Al mismo tiempo, no puede registrarse en el sitio para menores de 18 años, hay contenido prohibido.



Qué controles se pueden hacer aquí:



  1. Valores válidos
  2. Valores incorrectos (fuera de rangos válidos o ilógicos: 200 años, 88 segundos ...)
  3. Valores límite
  4. Valores límite
  5. Número fraccionario - formato (separado por comas y puntos)
  6. Número fraccional: redondeo (con un montón de decimales)
  7. Cero
  8. Uno
  9. Campo vacío
  10. Número muy grande (búsqueda de frontera tecnológica)
  11. Un numero negativo
  12. Valores no numéricos y no numéricos


Poniéndolo todo junto - Ejemplo: Lista de verificación de edad .

Bueno, dónde practicar, ¡ pruébalo tú mismo!







Valores válidos



Imagina que tienes literalmente 5 minutos para probar la funcionalidad. Y solo logras realizar las primeras pruebas de la lista de verificación. Y tienes una lista de verificación:



  • Campo vacío
  • 0
  • -1


Como resultado, estas verificaciones se llevaron a cabo y cree que el sistema está funcionando bien (¡bueno, lo jura!). ¡Y ella siempre jura, incluso con el valor correcto! No es bueno ... Por eso, recordamos la regla:



¡SIEMPRE primero positivo, luego negativo!






Ver también:

Pruebas positivas y negativas : obtenga más información sobre por dónde empezar


Para un campo con edad, ¿cuáles son los valores correctos? Cualquier cosa mayor de 18 años:



  • Dieciocho
  • 25
  • 38
  • 45
  • ...






Aquí debe comprender que estamos eligiendo UN valor. Simplemente es diferente cada vez para evitar el efecto del pesticida.



También es importante comprender que es posible que tengamos más de un valor correcto. Aquí es cuando tenemos varios rangos y diferentes condiciones en cada uno.



Por ejemplo, la misma edad:



  • si es menor de 18 años, muestre todos los productos de la tienda, excepto los cigarrillos y el alcohol
  • si es mayor de 18 años - mostrar todos los productos


Entonces entendemos que ya tenemos dos rangos "válidos". Por lo que debemos tomar un valor de cada uno. Por ejemplo, 16 y 26.







O si estamos calculando el seguro en función de la experiencia de conducción:



  • 0-1 año - 1000 rublos
  • 1-3 años - 800 rublos
  • 3-5 años - 600 rublos
  • 5-10 años - 500 rublos
  • 10+ años - US $ 3.00


Resulta 5 intervalos. Y necesitamos tomar un valor de cada uno. Por ejemplo: 0.5, 2, 4, 6, 15.







Cada vez tomamos valores diferentes, pero en este párrafo el significado es el mismo: tomar los valores correctos del TK.





Valores inválidos



Aquí hay diferentes opciones. ¿Qué significa un valor incorrecto?



  • fuera de los rangos válidos
  • correcto desde un punto de vista informático (número), pero sin sentido (200 años)


Volvamos al ejemplo de la edad. El valor correcto es mayor de 18 años. Entonces, tenemos que hacer la pregunta:



- ¿Qué sucede si tomamos un valor del rango "incorrecto"? ¿Y si tengo menos de 18 años? Bueno, digamos, 10.







Luego miramos cuidadosamente el intervalo seleccionado:



- Hmmmmm, pero la edad no puede ser menor que 0. Es decir, tenemos un límite lógico que separa dos clases de equivalencia diferentes:



  • Posible físicamente, pero inválido según TK (0-17 años)
  • Físicamente imposible (0 o menos)


Por lo tanto, debe tomar un valor de cada rango. Entonces resulta 10 y "-5":







Pensamos más:



- Si tenemos un cierto borde lógico desde abajo, debe haber arriba. ¿Cuál es la edad máxima posible para registrarse en nuestro sitio? Lo más probable es que tenga entre 55 y 65 años, porque a la generación anterior no le gustan las computadoras. Pero puede establecer los 100-110 años condicionales de los centenarios.



Obtenemos otro intervalo con un borde implícito. Pero en cualquier caso, los valores 25 y 145 serán diferentes: uno es realista y el otro no. ¡Así que deberías probarlo también!







Y luego nuevamente el efecto del pesticida. Tomamos 145 una vez y 6666666 la otra.



Aquí podemos enfrentar el hecho de que no se pueden ingresar más de 2-3 caracteres en el campo. El desarrollador fue reasegurado "del tonto". Esta no es una razón para rendirse y entregar su cheque. Porque lo más probable es que el desarrollador haya establecido la longitud máxima en el campo, ¡y es fácil moverse !



Ver también:

Cómo eliminar maxlength de todos los campos de formulario : varias formas de anotar ツ







Valores límite



Los valores límite separan un intervalo de otro. ¡Deben ser probados! Porque es en las fronteras donde los errores son más comunes. ¿Por qué? Sí, porque caen en ambos rangos, o no caen en ninguno.



En nuestro ejemplo, los CC.TT. tienen una condición "registro solo para personas mayores de 18 años". Esto significa que el desarrollador debe realizar la siguiente lógica en el código del programa:



  • SI x> 18 ENTONCES registrarse
  • SI x <= 18 ENTONCES damos un error


Si el desarrollador olvidó agregar el valor 18 a uno de los rangos, es posible que esto no resulte en un error. Porque en tales casos se suele utilizar la construcción if else. Y el desarrollador pone el último "más" por si acaso, es decir, si REPENTINAMENTE el valor ingresado no cayó en ninguna de las condiciones anteriores:



  • si x> 18 ...
  • elseif x <18 ...
  • más ...


Pero si el desarrollador agregó el valor 18 a varios rangos a la vez:



  • si x => 18 ...
  • elseif x <= 18 ...


Entonces el programa se perderá, ¿qué debería elegir? ¡Y bien puede caer!



En general, los errores son más comunes en los límites que dentro de un intervalo. Por lo tanto, ¡asegúrese de investigarlos! En nuestro TK hay una frontera clara “más de 18 años”. Entonces, probamos el número 18:







si tenemos varios intervalos de acuerdo con la asignación técnica, verificamos cada borde por separado. Estos son límites arbitrarios, que impone TK.



Pero las fronteras son de diferentes tipos:



  • Arbitrario
  • acertijo
  • Tecnológico


¿Marcado arbitrariamente? Vayamos más lejos. La lógica es todo aquello que obedece a la lógica (en un minuto 60 segundos, una persona no puede tener “menos un año”, etc.). Apliquemos a nuestro ejemplo.



Límite desde abajo:



- Es lógico que la edad no sea inferior a cero. Entonces 0 es el borde. ¡Pruebas!







Límite desde arriba:



- Nuuuu ... Apenas la edad será más de 35 años. Aunque, ¿qué impide que la abuela acceda al sitio? ¿Quizás 65? 88?



Es difícil encontrar la frontera aquí. Es fácil tomar un valor del rango "No lo creo demasiado", pero no hay un borde específico. Por lo tanto, no hay nada que probar. No hay un borde lógico en la parte superior.



Puse la búsqueda de la frontera tecnológica en un ítem separado, por lo que volveremos a ello un poco más tarde. En cualquier caso, esto es menos importante que conciliar los límites válidos que se encuentran en los conocimientos tradicionales.



Consulte también:

Tipos de límites Uso de una lavadora como ejemplo

Por qué probar los valores límite



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

Mnemotécnicos de BMW para encontrar valores límite






Valores límite



Si tenemos un borde, entonces hay valores de borde. ¡Y también deben ser revisados!

En el ejemplo de la edad, el límite es 18. Entonces, los valores del límite son 17 y 19.







¿Por qué verificar los valores del límite? Sí, entonces, que el desarrollador podría cometer un error en el código e indicar un poco el borde no ahí.



if x > 18
if x > 17


Si nuestro borde se desplaza y no probamos los valores del borde, podemos omitir fácilmente este error. Después de todo, comprobamos:



  • border - 18.18> 17, entonces todo funciona
  • el valor no válido del rango de la izquierda es 10. 10 <17, por lo que se lanzó un error.


Concluimos que todo está funcionando correctamente, ¡aunque no es así! Así que asegúrese de verificar los valores límite.



Pero, ¿es necesario probar los valores de los bordes en ambos lados? Con 17 resueltos, necesitas. ¿Y 19? Digamos que el desarrollador ha sellado en la otra dirección:



if x > 18
if x > 19


Encontraremos este error comprobando el valor límite 18. Y si funciona para 18 y funciona para un número dentro del rango (por ejemplo, 26), entonces el código está escrito correctamente. Es decir, para que haya un error en el código, es como pervertirse, escribe algo como:



if (x == 18 or x > 21) …


Esto solo se puede hacer a propósito)) Bueno, si confías en un desarrollador tonto con bromas malvadas en forma de huevos de Pascua, entonces solo tienes que hacer un busto completo. Así que consideremos a los colegas como personas adecuadas.



¡Pero! ¿Qué pasa si un desarrollador describe cómo funciona el código para múltiples intervalos? Luego, si ocurre un error tipográfico, los rangos se superponen:



if x <= 19 () …
if (x > 18 and x < 55) …


El número 18 no detectará el error, porque 18 <= 19, y no cae en el segundo rango. Entonces habrá una situación que funciona en el borde, funciona dentro del rango, pero no en el valor del borde.



Entonces, si no hay acceso al código, vale la pena verificar los límites en ambos lados, de lo contrario, ¿nunca se sabe dónde se ha deslizado el error tipográfico allí?



El asunto se vuelve aún más interesante si puede ingresar no solo un número entero, sino también un número fraccionario en el campo. ¿Cuál será entonces el valor límite? Vale la pena comenzar con un decimal. En nuestro ejemplo, estos son 17.9 y 18.1:







Ok, digamos que verificamos:



  • Fronteras enteras - 17 y 19
  • Límites fraccionales: 17,9 y 18,1


Pero si tales valores se redondean normalmente, ¿significa eso que otros también redondearán bien? ¿Qué sucede si ingresa el valor 17.99999999999 (hay 11 nueves después del punto decimal y el resultado del redondeo es llegar al borde)?



Estas son diferentes clases de equivalencia si hablamos de fracciones que se redondearán:



  • Una cifra decimal
  • Muchas señales


¡Y vale la pena echarle un vistazo a ambos! Entonces agregamos nuevas pruebas: 17.99999999999 y 18.00000000001









Número fraccional (formato)



Si el sistema le permite ingresar valores fraccionarios, los verificamos en el paso 1, al probar los valores correctos. Simplemente analizamos el concepto de "número correcto":



  • Todo
  • Fraccionario


Y desglosamos aún más el elemento "fraccional". Después de todo, un número fraccionario se puede escribir mediante:



  • punto - 6,9
  • coma - 6,9


Si uno de los métodos funciona, ¡no significa en absoluto que el segundo funcione! Incluso tengo un ejemplo de dos calculadoras que funcionan con números fraccionarios de manera diferente: http://bugred.ru/calc/ .



Vea también:

¡No escriba "Enter 6.9" en el error! - análisis de errores en la calculadora


Por lo tanto, debemos asegurarnos de que ambos métodos funcionen. Al menos si se supone que funcionan. Si solo uno debe funcionar, porque los estándares prohíben el uso del otro, ¡verifique que el segundo devuelva un error!



En el caso de la edad, ¿cuál es el valor fraccionario positivo? Probablemente la mitad, por ejemplo, 20,5 años:







¿lo ha comprobado? ¿Trabajando? Luego miramos a través de una coma - 20.5:







El hecho de que el trabajo fraccionario en principio está marcado. Bueno.





Número fraccional (redondeo)



De particular interés son los valores que están cerca de los límites, en lugar de cualquier valor fraccionario. Cuando nos acercamos al límite a una distancia menor que la precisión computacional, podemos entrar en una situación en la que las comprobaciones de validez del valor pasan con éxito, pero los cálculos fallan.



Entonces, si puede ingresar un número que no sea entero, asegúrese de probar muchos nueves después del punto decimal, cerca del borde del valor (ya lo hemos hecho en el párrafo anterior):







no tiene sentido verificar el redondeo a través de un punto o una coma. Esto será una duplicación innecesaria de pruebas. Comprobamos por separado:



  • formato - separado por punto o coma
  • redondeo - cuando uno o varios lugares decimales


Ver también: ¡

En las pruebas, siempre comenzamos de manera simple! - por qué no debería mezclar cheques






Cero



Siempre probamos cero. Y en todas partes. Solo recuerda esto como un axioma. Simplemente porque a menudo hay errores en cero.



Porque esta suele ser la frontera. Puede ser explícito (escrito en el TK) o implícito (no está escrito en el TK, pero está claro que la edad no puede ser negativa).



Si estamos hablando de un campo numérico, entonces intentamos ingresar el número 0. Aunque, por supuesto, "cero" en las pruebas va más allá de un número primo.







Consulte también:

Clase de equivalencia cero-no-cero : obtenga más información sobre la prueba de cero y no solo campos numéricos.






Uno



Como siempre buscamos cero, no nos olvidamos del valor límite: uno.



De hecho, este suele ser el "valor mínimo posible", si no estamos hablando de valores fraccionarios:



- Es lógico que si hacemos un pedido compremos al menos 1 libro, o 1 vestido, o 1 kg de harina ...

- La edad mínima es 1 día / mes / año

- Cantidad mínima de tiempo - 1 segundo

- Cantidad mínima de experiencia laboral - 1 día / mes / año

- ...



Entonces uno no es menos un número mágico que cero. ¡Nosotros también lo comprobamos!





Campo vacío



De hecho, esta también es una prueba cero. Solo que no por el número "cero", sino por cero en la longitud de la cadena de entrada.



Después de todo, si ingresamos "0", resulta un carácter.

Y si estamos estudiando la longitud de una cuerda, vale la pena verificar no solo una, sino también cero .



Recuerde que cero no es solo un número. Incluso en un campo numérico, tendremos al menos dos ceros: una cadena vacía y el número "0". Puede haber más ceros, no se olvide del cero en la salida. Pero en nuestro ejemplo con la edad, no lo es.





Un numero muy grande



Se debe ingresar un número muy grande para encontrar la frontera tecnológica. Por ejemplo, 9999999999999999.







Estamos intentando llegar lo más lejos posible. Pero no demasiado difícil, debería ser una prueba, bueno, dos.



Primero, puede comenzar desde el valor entero ; la mayoría de las veces, este tipo de datos se elige para un campo numérico. Si logra superarlo, solo marque 25 o 45 nueves en el campo. ¿No te caíste? Bueno, raro. No hay frontera tecnológica, pero al menos intentamos encontrarla.



Consulte también:

Cómo generar una cadena grande, herramientas ; no tiene que hacerlo a mano))

Frontera tecnológica en consejos legales : un ejemplo de un error real


Si el campo permite ingresar valores negativos, entonces marcamos “muchos nueves” con un signo más y un signo menos, realizando dos pruebas:



  • 99999999999999999999999
  • -99999999999999999999999


Permítame recordarle que si no puede ingresar muchos caracteres en un campo, esta no es una razón para darse por vencido y decir “¡el límite tecnológico no se puede verificar!”. Porque si no puede ingresar muchos caracteres en un campo, lo más probable es que haya una longitud máxima por campo, que es fácil de sortear . Eliminamos la restricción en el cliente y nos aseguramos de que el servidor también tenga una protección infalible.



Ver también:

Cómo eliminar maxlength de todos los campos de formulario

Cómo encontrar bordes en cliente y servidor






Un numero negativo



Cuando tenemos un número, siempre recordamos que puede ser:



  • positivo
  • negativo


Al mismo tiempo, por la experiencia de las entrevistas que realizo, puedo decir con certeza que pocas personas piensan en el cheque “y si ingresas un valor negativo”. Pero el sistema puede funcionar de diferentes formas:



  • dar un error "no existe tal antigüedad / cantidad de bienes, por favor ingrese un número positivo";
  • cortar el signo menos y tratar un número negativo como positivo.


Esto se suma al hecho de que un número negativo puede ser bastante normal para el campo (por ejemplo, si estamos ahorrando ingresos / gastos).



¿Qué estamos probando en esta sección?



  • ¿Qué sucede si ingresa un número negativo, que será correcto en módulo: -26 en nuestro ejemplo
  • Intentando encontrar el límite tecnológico: -99999999999999999999999






Valores no numéricos y no numéricos



Si cree que para verificar un valor no numérico es suficiente con ingresar cualquier cadena como "hola", entonces está equivocado))) Las



cadenas también pueden ser diferentes y se pueden dividir en:



  • muchas cadenas que el programa interpreta como números;
  • muchas cadenas que el programa no puede interpretar como números.


Las pruebas para valores "no del todo numéricos" están muy bien cubiertas en este artículo: Clases de equivalencia para una cadena que denota un número.



No lo reescribiré por completo, solo agregue a la lista de verificaciones para nuestro ejemplo. Lo que aún no hemos visto:



  • Definitivamente no es un número - "Prueba"
  • A la izquierda: "025"
  • Espacio antes del número: "25"
  • Espacio dentro del número: "2 5"
  • Escribir mediante e - "1.2e + 2"
  • Valor hexadecimal: "0xba"
  • Booleano: VERDADERO / FALSO (se puede interpretar como 0/1)
  • Infinito (sí, así en el texto y escribimos)
  • Yaya


En nuestro caso, con el valor correcto de edad a partir de los 18 años, el elemento "espacio dentro del número" se vuelve más interesante. Depende de la lógica del sistema. Aquí hay diferentes opciones:



  • Jurar si se ingresan varias palabras
  • Corta todo lo que viene después del primer espacio: "2 5" → "2"
  • Quite el espacio y finja que no estaba allí (se percibe como un error tipográfico en un número) - "2 5" → "25"


Lo mismo ocurre con las letras. El sistema puede maldecir cuando los ve, o simplemente puede desecharlos. Así que veamos las nuevas opciones de prueba:



  • hasta espacio menor de 18 años - 2 5
  • hasta un espacio mayor de 18 años - 25 6
  • después de un espacio de texto - 25 prueba
  • antes del texto del espacio - prueba 25


Tenga en cuenta que en la interfaz simplemente ingresamos algún valor sin especificar el tipo de datos. Pero si estamos probando la API REST y el mensaje json que contiene, definitivamente deberíamos intentar pasar el número en una cadena:



  • numero 3
  • numero 3"


Estos son diferentes significados. Si el valor no citado es un número. Si se cita es una cadena, incluso si parece un número. Quizás el desarrollador transmita los tipos en el código y "acepte" la segunda opción, o quizás no. ¡Vale la pena echarle un vistazo de todos modos!





Poniéndolo todo junto: lista de verificación de edad



Se escribieron ideas para las pruebas, se discutieron cada una. Ahora juntemos todos los puntos y escribamos una lista de verificación para nuestro ejemplo.



Permítame recordarle la condición: tenemos un campo "edad" al registrarse. Al mismo tiempo, no puede registrarse en el sitio hasta la edad de 18 años, hay contenido prohibido.







Al elaborar una lista de verificación, tenemos en cuenta todos los puntos que se discutieron anteriormente. Pero no olvidemos las prioridades. Siempre comenzamos con los cheques básicos, y no con "martillado en cero, un número negativo y generalmente tratamos de romperlo de todas las formas posibles".



Cheque Ejemplo Resultado
18 25
18 18
18 16 : « 18 »
21.5
21,5
18 17 : « 18 »
, 17.999999999999999999 : « 18 »
18* 18.00000000000000001
/
0 : « 18 »
( , , )
1 : « 18 »
999999999999999999999 : « »
. -999999999999999999999 : « »
: « »
025 , 25
25 , 25
2 5 : « 18 » ( )
18 25 6 , 25
25 , 25
25 , 25
1.2e+2 : « »
0xba : « »
Boolean TRUE : « »
Infinity Infinity : « »
NaN NaN : « »


* Si 18.000000000001 funciona, entonces no tiene sentido verificar el entero 19. Si el sistema no acepta fracciones, entonces sí, verificamos 19.



Por supuesto, las verificaciones del bloque "no enteros" no son muy importantes. A veces puedes y debes marcar con ellos. Sobre todo si sabemos que el sistema no debe analizar nada, quitar espacios, descartar texto, etc. Entonces basta con tomar un valor de esta lista. Y el resto para utilizar por el efecto del pesticida, es decir, cada vez una nueva versión de "no un número".



Pero para cortar el exceso, primero debes aprender a generar muchas ideas. Esto es lo que practicamos contigo hoy =)



Consulte también:

Lista de trucos para un campo numérico en Strainer (debe iniciar sesión)

Dónde obtener ideas para las pruebas (una selección de enlaces útiles)




Inténtalo tú mismo



Escriba una lista de verificación para el campo "Experiencia de conducción". El seguro se calcula en función de la duración del servicio. Todos los intervalos de la izquierda tienen el número "inclusivo" y de la derecha no.



  • 0-3 años - 1000 rublos
  • 3-6 años - 700 rublos
  • 6-10 años - 500 rublos
  • 10+ años - US $ 3.00


El formulario no le permite ingresar nada excepto números (esta limitación está en el cliente). Los valores fraccionarios son inaceptables, cuántos años completos de experiencia tenemos, por eso escribimos.



PD: busque más artículos útiles en mi blog con la etiqueta "útil" . Y hay videos útiles en mi canal de youtube.



All Articles