Снимок экрана во время тестирования - PullRequest
8 голосов
/ 13 мая 2010

Это приложение для просмотра тестов производительности. Простой в концепции, сложно описать. Фото:

1) Запись взаимодействий с программой WPF, позволяющая воспроизводить входные данные.

2) Воспроизведение входов во время непрерывного захвата экрана.

3) Захват времени на стене, а также непрерывных процентов процессора во время воспроизведения.

4) Многократное повторение шагов (2) и (3).

5) Запись соответствующих материалов в файлы / db.

6) Чтение и вставка всего в необычный интерфейс для легкого просмотра / анализа.

Убийца для меня (2). Я мог бы использовать некоторые рекомендации относительно хорошего, возможно, коммерческого SDK для захвата экрана. Я также приветствовал бы сообщение, что у всей моей проблемы уже есть решение. И, конечно, любые мысли об общей идее также были бы великолепны.

Спасибо.

Ed

Ответы [ 7 ]

2 голосов
/ 19 мая 2010

Если вы собираетесь заниматься разработкой для этого, вы можете настроить Cucumber / SpecFlow с помощью Windows Automation ... и вот пример в WPF для создания снимка экрана тестируемого приложения.

        /// <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 голос
/ 01 июня 2010

Вы говорите, что трудная часть для вас:

2) Воспроизведение входов при выполнении непрерывный снимок экрана.

Вы можете рассмотреть возможность использования инструмента автоматизации и создания сценариев, такого как AutoIt или AutoHotKey. Каждый из этих инструментов позволит вам записывать ваши взаимодействия с приложением Windows. Вы можете записать базовый сценарий, а затем настроить параметры и время в редакторе. Приятной особенностью AutoIt является возможность «компилировать» ваш макрос в отдельный исполняемый файл.

Насколько я могу судить, ни один из этих инструментов не будет захватывать видео. Для этого вы можете подумать о чем-то вроде Fraps, захвате видео с экрана, которое стало популярным среди геймеров. Вы должны иметь возможность использовать любой из вышеперечисленных инструментов для запуска и остановки Fraps.

Удачи в вашем проекте.

1 голос
/ 31 мая 2010

Поскольку вы смотрите рекламу для захвата экрана, я бы порекомендовал посмотреть рекламу для всего пакета: я бы порекомендовал Microsoft Test Manager 2010 (см. Здесь: http://msdn.microsoft.com/en-us/library/bb385901.aspx). Требуется видео и записи и воспроизводит ввод, который является основной частью того, над чем, я могу сказать, вы работаете, но он также подключается непосредственно к приложениям .NET для целей отладки intellitrace, интегрируется с системой отчетов об ошибках Team Foundation Server и т. д. WPF, XNA, ASP.Net или другие языки, если вы готовы пожертвовать возможностями intellitrace. Он даже автоматизирует воспроизведение входных данных и проверяет выходные данные в соответствии с вашей спецификацией для непрерывного тестирования интеграции.

1 голос
/ 19 мая 2010

Мне кажется, что вы ищете инструмент автоматического тестирования, который может выполнять взаимодействие с пользовательским интерфейсом. Мы используем TestComplete который, я считаю, сделает много функционального тестирования пользовательского интерфейса и записи, которые вы ищете. Есть и другие. Мне интересно, нужно ли вам записывать экран во время выполнения теста, если вы можете легко воспроизвести то же взаимодействие, если что-то не получается.

1 голос
/ 15 мая 2010

Вы создаете продукт для тестирования производительности или тестируете свой продукт на производительность?

Если последнее, вы можете посмотреть на набор функций для Team Foundation Server 2010, в частности, инструменты тестирования. Там, похоже, есть несколько приятных возможностей для исторической отладки, профилирования и интеграции команды QA (воспроизведение видео тестовой сессии и т. Д.).

В противном случае, если вы просто ищете инструмент vidcap, мне всегда нравилось SnagIt .

1 голос
/ 15 мая 2010

Вы можете сделать снимок экрана в вашем собственном приложении, используя DirectShow.

См. Видеозахват для получения общей информации о том, как сделать захват видео с помощью DirectShow и ссылки на пример кода. Для захвата с экрана вам понадобится фильтр «Фильтр захвата экрана», который можно найти в wmpsrcwp.dll, который встречается в более новых версиях Windows и также может быть загружен как часть кодировщика Windows Media.

Хотя UI Automation можно использовать для воспроизведения событий, она не может записывать. Если вам нужно записать системные события, я рекомендую использовать Windows Hooks для записи и воспроизведения.

DirectShow проще всего сделать в C ++ / CLR вместо C #, потому что вы можете легко включать заголовочные файлы C ++ и выполнять неуправляемые вызовы, а хуки для Windows должны выполняться только в собственном коде.

0 голосов
/ 13 мая 2010

Windows API? Может быть System.Drawing?

http://www.codeproject.com/KB/dialog/screencap.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...