Sobes.tech
Middle

¿Cómo se puede realizar una comprobación de límites no en un rango numérico, sino en uno alfabético?

sobes.tech AI

Respuesta de la IA

La prueba de valores límite en un intervalo alfabético implica probar el primer y el último carácter permitido, así como los caracteres justo antes y después del rango permitido, si existen en el conjunto de caracteres.

Por ejemplo, para un campo que acepta letras cirílicas en minúscula (а-я):

  • Límite inferior:
    • 'а' (el primer carácter permitido)
    • El carácter antes de 'а' (si es aplicable y existe en la codificación utilizada)
  • Límite superior:
    • 'я' (el último carácter permitido)
    • El carácter después de 'я' (si es aplicable y existe en la codificación utilizada)

Además, se pueden verificar:

  • Cadena vacía: ""
  • Cadena de un solo carácter: 'б' (cualquier carácter dentro del rango)
  • Cadena con caracteres fuera del rango:
    • Latín: 'a', 'z'
    • Dígitos: '1', '9'
    • Caracteres especiales: '$', '#'
    • Cirílico en mayúscula: 'А', 'Я'
  • Cadena que contiene caracteres tanto dentro como fuera del rango: "абвA1"

La prueba consiste en enviar estos valores en el campo de entrada y verificar el comportamiento esperado del sistema: aceptar los valores permitidos y rechazar (o manejar correctamente) los no permitidos.

Ejemplo en código Python:

# Funcionalidad para validar una cadena en cirílico en minúscula
def validate_cyrillic_lowercase(text):
    import re
    return bool(re.fullmatch('[а-я]+', text))

# Casos de prueba para valores límite
test_cases = {
    "Límite inferior (primer carácter)": ('а', True),
    "Límite inferior (antes del rango, no válido)": ('`', False), # Ejemplo de carácter antes de 'а' en algunas codificaciones
    "Límite superior (último carácter)": ('я', True),
    "Límite superior (después del rango, no válido)": ('{', False), # Ejemplo de carácter después de 'я' en algunas codificaciones
    "Dentro del rango": ('абв', True),
    "Cadena vacía": ('', False),
    "Latín": ('abc', False),
    "Dígitos": ('123', False),
    "Caracteres especiales": ('@#$', False),
    "Cirílico en mayúscula": ('АБВ', False),
    "Cadena mixta": ('абвA1', False)
}

# Ejecutar pruebas
for description, (value, expected) in test_cases.items():
    actual = validate_cyrillic_lowercase(value)
    assert actual == expected, f"Prueba: {description}, Valor: '{value}', Esperado: {expected}, Obtenido: {actual}"
    print(f"Prueba '{description}' para el valor '{value}' pasada.")