2012-01-24 20 views
7

Tenemos una antigua aplicación asp.net que no tiene pruebas de unidad, pruebas de integración, pruebas de componentes o pruebas de UI/funcionales - ¡sorpresa!Cómo escribir pruebas automáticas del sistema con C#?

Ahora, nos gustaría presentar algunas pruebas del sistema automatizado que prueban la funcionalidad para que cuando algo se rompe en la aplicación seamos notificados inmediatamente.

Por ejemplo, el formulario de registro de usuario donde el usuario puede ingresar el nombre de usuario y la dirección de correo electrónico y registrarse en el sistema.

Es demasiado tarde/costoso para presentar pruebas unitarias (ya que el diseño actual no se puede probar por unidad) así que lo más importante ahora es escribir pruebas automáticas del sistema.

Por ejemplo, nos gustaría escribir una prueba en C# que abre el navegador, ingresa los datos en los cuadros de texto, hace clic en el botón Registrar y luego nuestra prueba comprueba si los datos se insertan en la base de datos y si se envía un correo electrónico de verificación y al final si se muestra un mensaje adecuado al usuario (por supuesto, esto es solo los escenarios principales y habría numerosos casos especiales). ¡Básicamente no prueba unidades aisladas sino que prueba si todo el proceso funciona!

Entonces, ¿qué herramienta podría usar para ayudarme a escribir tal prueba y automatizarla?

¿Qué enfoque recomendaría usar?

Eché un vistazo a Selenium y Fitnesse pero no parecen permitirme escribir el código C# para probar la base de datos, etc. Miré el mismo problema de SoapUI/LoadUI. WatiN podría ser usado, no estoy seguro. cualquier pensamiento/recomendación es muy apreciado.

Espero que la pregunta sea clara.

Muchas gracias,

+0

http://seleniumhq.org/ es la herramienta de facto, o si tiene Visual Studio Ultimate, creo que la versión tiene algún tipo de habilidad para hacer eso. – Joe

+0

el estudio visual tiene un programa de "prueba" incluido, y piensa lo que describes aquí. ¿Lo has intentado? – Aristos

+0

@Joe usando Selenium puedes escribir el código C#? tenemos edición profesional de VS solamente. –

Respuesta

8

Selenium te permite escribir el código C# para las pruebas del sistema. Primero tendría un método para interactuar con el sitio web, un segundo método para verificar que la base de datos es correcta. Todo dentro de una sola aplicación/clase de prueba.

Para la interacción web, utilizaría un WebDriver (tomado del Selenium API doc). Aquí hay un código de ejemplo de la interfaz de IWebDriver. Interactúa con google, pero puede modificar esto para interactuar con su sitio web.

using OpenQA.Selenium.Firefox; 
using OpenQA.Selenium; 

class GoogleSuggest 
{ 
    static void Main(string[] args) 
    { 
     IWebDriver driver = new FirefoxDriver(); 
     driver.Navigate().GoToUrl("http://www.google.com/"); 
     IWebElement query = driver.FindElement(By.Name("q")); 
     query.SendKeys("Cheese"); 
     System.Console.WriteLine("Page title is: " + driver.Title); 
     driver.Quit(); 
    } 
} 

Entonces usted acaba de poner en práctica otro método que verifica las entradas de bases de datos son correctos, usando algo como LinqToSql u otra base de datos de la API C#.

+0

gracias, ¿podría también registrar/reproducir la actividad del usuario en la página con Selenium? –

+1

Nunca he usado WatiN, así que no puedo comentar sobre sus capacidades. En cuanto a grabar y reproducir, sí puede usar Selenium IDE (complemento de Firefox) para hacer clic en su interfaz de usuario web y el IDE registrará sus acciones en Selenese. Entonces puede exportarlo fácilmente al código C#. Nunca he hecho esto por mí mismo, pero según sus [documentos] (http://seleniumhq.org/docs/05_selenium_rc.html#from-selenese-to-a-program) es fácil. – mattypiper

+1

Tenga en cuenta que el código generado supone que está utilizando NUnit en C#, que no necesariamente necesita. Solo necesita las interacciones de IWebDriver. Depende de cuán formal y sofisticado quieras que sea. – mattypiper

2

Si tiene Visual Studio Ultimate, tal vez una interfaz de usuario de prueba codificado es lo que estás buscando? http://msdn.microsoft.com/en-us/library/dd286681.aspx

+0

lamentablemente tenemos la edición de Visual Studio Professional. –

+0

Las pruebas de interfaz de usuario codificadas también están disponibles para Visual Studio 2010 Premium. –

1
+0

Creo que obtendrás una buena idea de aquí-- http://blog.gfader.com/2010/02/smack-down-watin-vs-selenium-vs-vs2010.html –

1

Usted también podría buscar a Telerik's Test Studio como una solución para sus necesidades de pruebas. (Divulgación: trabajo para Telerik como Test Studio Evangelist.)

Test Studio le permite crear fácilmente pruebas funcionales y de rendimiento extremadamente sostenibles.

También puede agregar fácilmente pasos o pruebas en C# (o VB.NET) para manejar cosas como la configuración/desmontaje del dispositivo de prueba, o para hacer frente a situaciones de Oracle de prueba como las que menciona. (Comprobando la base de datos para asegurarse de que un registro se guarda correctamente, vinculando algo como nDumbster para la validación de correo electrónico, etc.)

1

Selenium Webdriver se puede agregar como paquete al proyecto C# en Visual Studio Express IDE y luego agregar el paquete nUnit uno puede escribir casos de prueba. A continuación se presentan los pocos enlaces que pueden ayudarle a kickstart con casos de prueba WebDriver automatizada de selenio

sobre cómo configurar el IDE (expreso contra), nUnit y selenio se refieren How to setup C#,nUnit and selenium client drivers on VSExpress for Automated tests

en la creación de script sencillo que lanza un navegador hace pocos pasos hacen referencia Creating Basic Selenium web driver test case using Nunit and C#

sobre cómo cargar la misma página web en un número de diferentes navegadores sugiero refiriéndose How to invoke locally different types of browser driver using selenium and c#

en Mín Al usar la misma página web en una serie de máquinas virtuales para esto, debe usar el controlador web remoto en lugar del controlador de web normal. También con el controlador web remoto, puede iniciar diferentes tipos de navegador. Consulte la página del How to invoke/run different type of web driver browser using remote webdriver in C#

Tomar instantánea en otro navegador puede vincular el enlace Capturing screen shots using remote/local webdriver in C#/Selenium webdriver

Cuestiones relacionadas