这是一个审查性能测试的应用程序。概念简单,难以描述。图片:
1)记录与WPF程序的交互,以便可以播放输入。
2)在进行连续屏幕捕捉时播放输入。
3)在播放期间捕获挂壁时间以及连续CPU百分比。
4)多次重复步骤(2)和(3)。
5)将相关内容写入files / db。
6)阅读并将其全部放入花哨的UI中,以便于查看/分析。
对我来说,杀手是(2)。我可以在一个好的,可能是商业的屏幕捕获SDK上使用一些指导。我也欢迎有关我的整个问题已经解决的消息。当然,对整体想法的任何想法都会很棒。
感谢。
版
答案 0 :(得分:2)
如果您要为此进行开发,可以使用Windows自动化设置Cucumber / SpecFlow ...这是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 :(得分:1)
您可以使用DirectShow在自己的应用程序中进行屏幕捕获。
有关如何使用DirectShow进行视频捕获以及指向示例代码的链接的一般详细信息,请参阅Video Capture。要从屏幕上专门捕获,您需要在wmpsrcwp.dll中找到的“屏幕捕获过滤器”过滤器,该过滤器可以在较新版本的Windows中找到,也可以作为Windows Media Encoder的一部分下载。
尽管UI Automation可用于播放事件,但它无法录制。如果您需要录制系统事件,我建议您使用Windows Hooks进行录制和播放。
DirectShow在C ++ / CLR中最容易做,而不是C#,因为您可以轻松地包含C ++头文件并进行非托管调用,而Windows Hooks只能在本机代码中完成。
答案 2 :(得分:1)
您是在创建性能测试产品还是在测试产品性能?
如果是后者,您可以查看Team Foundation Server 2010的功能集,特别是测试工具。似乎有一些不错的功能用于历史调试,分析和QA团队集成(测试会话视频播放等)。
否则,如果你只是在寻找vidcap工具,我总是喜欢SnagIt。
答案 3 :(得分:1)
听起来我正在寻找一种可以执行UI交互的自动化测试工具。我们使用TestComplete 我相信它会做很多你正在寻找的功能性UI测试和录制。还有其他人。我想知道你是否真的需要在运行测试时记录屏幕,如果你有什么东西可以轻松重现相同的交互。
答案 4 :(得分:1)
由于您正在寻找商业用于屏幕捕获,我建议您查看整个套件的商业广告:我建议使用Microsoft的Test Manager 2010(请参阅此处的功能:http://msdn.microsoft.com/en-us/library/bb385901.aspx)。它需要视频和记录并回放输入,这是我可以告诉您正在处理的大部分内容,但它也可以直接连接到.NET应用程序以进行intellitrace调试,与Team Foundation Server的错误报告系统集成等。如果您愿意牺牲intellitrace功能,可以将它与WPF,XNA,ASP.Net或其他语言一起使用。它甚至可以自动播放输入并验证输出到您的规范,以进行持续集成测试。
答案 5 :(得分:1)
你说困难的部分是:
2)在做的时候回放输入 连续的屏幕截图。
您可以考虑使用自动化和脚本编写工具,例如AutoIt或AutoHotKey。这些工具中的每一个都可以让您记录与Windows应用程序的交互。您可以记录基本方案,然后在编辑器中调整详细信息和时间。 AutoIt的一个很好的功能是能够将宏“编译”为独立的可执行文件。
据我所知,这些工具都不会捕获视频。为此,你可能会想到像Fraps这样的东西,这是一个受视频游戏玩家欢迎的视频屏幕。您应该能够使用上述任一脚本工具来启动和停止Fraps。
祝你的项目好运。
答案 6 :(得分:0)
Windows API?也许System.Drawing?