Testing, Custom Rules
Para este articulo les traigo un escenario de testing para un aplicativo web, donde como lo disponible no cumplía con algunos de los requerimientos especificados tomé la decisión de extender las reglas de validación, puntualmente voy a trabajar sobre una regla de extracción personalizada.
Veamos el escenario, tengo una page desarrollada en donde se especifica un ingreso de cadena:
La idea en un nivel básico es que el test realizado me ayude a determinar que el valor que tiene el Textbox no es nulo, esto si el validador no ejecuta el java script del cliente.
Teniendo el Site Web con mi página web voy a crear un proyecto de testing y al mismo le voy a incorporar un testing web para grabar una situación de ingreso de valores por el control desarrollado.
Como vemos en la captura anterior, este example muestra el ingreso a la página y luego un ingreso de valores sobre el TextBox1, en ese caso la cadena Nicolas.
En primer lugar voy a limpiar el valor sobre el Textbox1 para que esté nulo el dato y voy a correr la prueba de Testing Web.
Veamos el resultado de la prueba:
El resultado es correcto, bien en este punto la idea es colocar reglas ya sean de validación o de extracción pero las disponibles no tienen la funcionalidad simple requerida que tengo que cubrir por este motivo la idea es crear una extensión.
Para este punto he creado un nuevo proyecto para segmentar la operación y tiene la siguiente forma:
La Clase CustomExtractInput tiene la siguiente forma:
Como vemos estoy heredando de "ExtrationRule" y tengo que redefinir algunos métodos para el objetivo planteado,lo fundamental es trabajar sobre el método Extract, esto es lo que les voy a detallar:
public
override
void Extract(object sender, ExtractionEventArgs e)
{
// si no es nulo el html
if (e.Response.HtmlDocument != null)
{
//Itero por los tags html
foreach (HtmlTag tag in e.Response.HtmlDocument.GetFilteredHtmlTags(new
string[] { "input" }))
{
//trabajo por la búsqueda del nombre del tag
if (String.Equals(tag.GetAttributeValueAsString("name"), Name, StringComparison.InvariantCultureIgnoreCase))
{
// Trabajo de la reglas de programación
string formFieldValue = tag.GetAttributeValueAsString("value");
if (formFieldValue == null)
{
formFieldValue = String.Empty;
//Hago fallar si es nulo el contenido
e.Success = false;
}
else
{
e.WebTest.Context.Add(this.ContextParameterName, formFieldValue);
//si hay contenido es correcto
e.Success = true;
}
return;
}
}
}
En este punto en mi proyecto de Testing voy a agregar una referencia a mi nueva biblioteca creada. Con esta operación voya tener disponible la nueva regla de extracción, veamos esto:
Veamos:
Para este punto al repetir la prueba si no tiene datos la caja de texto especificada la prueba no sería satisfactoria:
Ese es el resultado obtenido.
Espero les sea de utilidad este tipo de operaciones de extensión para ambientes de testeo de aplicativos Web, hasta la próxima.
Ya habia visto en seminarios algunos ejemplos de testeo web. Muy util para las pruebas unitarias y a nivel técnico.
ResponderBorrar