2010-05-13 28 views
8

Esta es una aplicación para revisar las pruebas de rendimiento. Simple en concepto, difícil de describir. Imagen:Captura de pantalla durante la prueba

1) Grabar interacciones con un programa WPF para que las entradas puedan reproducirse.

2) Reproducción de las entradas mientras se realiza una captura de pantalla continua.

3) Capturando el tiempo de pared así como los porcentajes de CPU continuos durante la reproducción.

4) Repitiendo los pasos (2) y (3) muchas veces.

5) Escribir las cosas relevantes en files/db.

6) Leerlo y ponerlo todo en una interfaz de usuario elegante para una fácil revisión/análisis.

El asesino para mí es (2). Podría usar alguna orientación sobre un SDK de captura de pantalla bueno, posiblemente comercial. También me gustaría recibir la noticia de que todo mi problema ya tiene una solución. Y, por supuesto, cualquier idea sobre la idea general también sería genial.

Gracias.

Ed

Respuesta

1

Usted puede hacer la captura de pantalla en su propia aplicación utilizando DirectShow.

Consulte Video Capture para obtener detalles generales sobre cómo hacer una captura de video usando DirectShow y enlaces a un código de ejemplo. Para capturar específicamente desde la pantalla, necesitará el filtro "Filtro de captura de pantalla" que se encuentra en wmpsrcwp.dll, que se encuentra en las versiones más nuevas de Windows y también se puede descargar como parte del Codificador de Windows Media.

Aunque la automatización de IU se puede utilizar para reproducir eventos, no puede grabar. Si necesita grabar eventos del sistema, le recomiendo que use Windows Hooks tanto para la grabación como para la reproducción.

DirectShow es más fácil de hacer en C++/CLR en lugar de C#, ya que puede incluir fácilmente los archivos de cabecera de C++ y hacer llamadas no administrados, y Windows Ganchos sólo debe hacerse en código nativo.

1

¿Está creando un producto de prueba de rendimiento o está probando el rendimiento de su producto?

En este último caso, puede consultar el conjunto de características de Team Foundation Server 2010, específicamente las herramientas de prueba. Parece que hay algunas características interesantes para la depuración histórica, la creación de perfiles y la integración del equipo de control de calidad (reproducción de video de la sesión de prueba, etc.).

De lo contrario, si solo está buscando la herramienta vidcap, siempre me ha gustado SnagIt.

2

Si va a hacer un desarrollo para esto, puede configurar Cucumber/SpecFlow usando Windows Automation ... y aquí hay un ejemplo en WPF de tomar una captura de pantalla de la aplicación bajo prueba.

 /// <summary> 
     /// Take screen shot 
     /// </summary> 
     /// <param name="left">left</param> 
     /// <param name="top">top</param> 
     /// <param name="width">width</param> 
     /// <param name="height">height</param> 
     /// <returns>screen shot in bytes</returns> 
     public static byte[] TakeScreenShot(int left, int top, int width, int height) 
     { 
      // Set the bitmap object to the size of the screen 
      var bmpScreenshot = new Bitmap(width, height, 
                PixelFormat.Format32bppArgb); 

      // Create a graphics object from the bitmap 
      var gfxScreenshot = Graphics.FromImage(bmpScreenshot); 

      // Take the screenshot from the upper left corner to the right bottom corner 
      gfxScreenshot.CopyFromScreen(left, top, 0, 0, 
              new Size(width, height), CopyPixelOperation.SourceCopy); 

      var buffer = new byte[bmpScreenshot.Size.Height * bmpScreenshot.Size.Width * 4]; 

      var stream = new MemoryStream(buffer); 

      bmpScreenshot.Save(stream, ImageFormat.Png); 

      return stream.ToArray(); 
     } 
1

Me parece que está buscando una herramienta de prueba automatizada que pueda ejecutar la interacción de UI.Usamos TestComplete que creo que hará muchas de las pruebas funcionales de interfaz de usuario y la grabación que está buscando. Hay otros también. Me pregunto si realmente necesita grabar la pantalla mientras se ejecuta la prueba si puede reproducir fácilmente la misma interacción si algo falla.

1

Dado que está buscando comerciales para la captura de pantalla, recomendaría mirar comerciales para toda la suite: recomendaría Microsoft Test Manager 2010 (ver características aquí: http://msdn.microsoft.com/en-us/library/bb385901.aspx). Toma videos y registros y reproduce entrada, que es la mayor parte de lo que puedo decir que está trabajando, pero también se conecta directamente a aplicaciones .NET para fines de depuración de inteligencia, se integra con el sistema de informes de fallas de Team Foundation Server, etc. Puede usarlo con WPF, XNA, ASP.Net u otros idiomas si está dispuesto a sacrificar las capacidades de inteligencia. Incluso automatizará la reproducción de entradas y verificará las salidas según su especificación para pruebas de integración continua.

1

Usted dice que la parte más difícil para usted es:

2) Reproducción de las entradas hacia atrás mientras se hace una captura de pantalla continua.

Puede considerar el uso de una herramienta de automatización y creación de scripts, como AutoIt o AutoHotKey. Cada una de estas herramientas te permitirá registrar tus interacciones con una aplicación de Windows. Puede grabar un escenario básico y luego ajustar los detalles y el tiempo en el editor. Una buena característica de AutoIt es la capacidad de "compilar" su macro a un ejecutable independiente.

Por lo que puedo decir, ninguna de estas herramientas capturará video. Para eso, podrías pensar en algo como Fraps, que es una captura de pantalla de video popularizada por los videojugadores. Debería poder usar cualquiera de las herramientas de scripts anteriores para iniciar y detener Fraps.

Buena suerte con su proyecto.