C# GUI事件记录器和回放

C# GUI事件记录器和回放,c#,user-interface,macros,qa,C#,User Interface,Macros,Qa,我们正在编写一个相对较重的C#GUI,其中包含一些syncFusion(GUI框架)组件。我想添加客户机日志功能,QA可以稍后使用它来回放客户机事件,以便分析客户机在生产中使用的bug或其他工作流 是否存在用于记录和回放所有客户端击键、鼠标事件等的现成模块?(如果C++模块可以很容易地集成到windows C#客户端中,那么它也可以工作。) 我还想使用生成的日志来分析客户机的哪些功能使用得最多,哪些功能很少使用,以决定哪些bug应该得到优先权,哪些功能应该被删除/enhanced? 所以基本上我

我们正在编写一个相对较重的C#GUI,其中包含一些syncFusion(GUI框架)组件。我想添加客户机日志功能,QA可以稍后使用它来回放客户机事件,以便分析客户机在生产中使用的bug或其他工作流

是否存在用于记录和回放所有客户端击键、鼠标事件等的现成模块?(如果C++模块可以很容易地集成到windows C#客户端中,那么它也可以工作。)

我还想使用生成的日志来分析客户机的哪些功能使用得最多,哪些功能很少使用,以决定哪些bug应该得到优先权,哪些功能应该被删除/enhanced? 所以基本上我希望客户端将日志写入本地磁盘或通过网络返回服务器

我也有点担心性能,一些命中率是可以接受的,但是任何想法记录每个事件会在多大程度上降低客户端性能

这里的要点是记录生产中的所有客户机事件,而不是QA测试本身

根据Aydsman的评论进行编辑:
阅读后,以及看起来有很多兴趣在这种类型的“仪表板”,但没有开放或封闭的产品或解决方案在这个时候存在。我在本吉的网站上发布了一个关于现状的问题,但该网站看起来相当安静,自6月份以来没有回应。本吉的想法或多或少正是我想要的,但似乎还没有产品存在,这相当令人惊讶,我认为缺乏现有产品意味着实施这样一个系统肯定比我最初想象的要复杂。我们将继续寻找,并希望以后能找到一些东西。

当您可以购买产品来执行自动GUI测试时,为什么要编写代码?

您听说过log4net吗?我曾在一个项目中小规模使用过它——它可能适合您的需要。
我还研究了面向方面和IoC的日志记录技术。这取决于特定的技术,会对性能产生一些影响,但它可以使维护记录的代码变得更容易。Spring框架的Spring.NET端口为通用方法级日志记录提供了一些选项。您可以使用它们的一些组合来生成活动的“脚本”文件,以及一个“重播”模块,该模块可以在测试环境中读取和重新执行记录的操作。

正如其他海报所提到的,有一些商业产品可以做这种事情。如果你想写你自己的,你需要创建一个系统钩子DLL。这可以在C++中做得相当简单。如果您创建了一个,您可能可以使用pinvoke轻松地集成它。事实上,我会先看看pinvoke.net,看看那些已经做过类似工作的人

钩子DLL允许您截获所有鼠标和键盘事件。您还可以插入鼠标和键盘事件。所以如果你把这两个放在一起:intercept=record,inject=playback


这里有一个很好的文章列表可以让您开始阅读:

我将此添加到问题中:这里的重点是记录生产中的所有客户活动,而不是QA测试本身。我正在试图找到生产用户正在使用的功能。@Ville M,好的,重写后立即清除。也许您可以配置一个log4net(apache)通道用于客户端输入捕获。回放时,您可以编写custom.log4net,这听起来像是一个好主意,可以让日志从客户端返回到服务器,但更重要的是,如何捕获/记录所有客户端事件?是否有一个通用的解决方案,您可以直接“插入”到.net客户端,还是我必须自己编写一堆日志代码?日志记录都是可配置的,有多个通道输出到不同的源(UDP、SMTP、数据库、xml、跟踪等)。在上查看。好的,谢谢,我以前使用过log4J,这看起来很相似。我应该把“登出”这个词留下,因为这很简单。我想要的是一个模块,它将“注入”到C#app中,并记录每个事件以供以后回放(有点像键盘记录器,但出于此目的)。听说过这样的工具吗?链接?如果你这样做,我之前的问题()中的压倒性共识是确保用户允许将任何数据发送回你。我现在只注意到了这条评论,出于某种原因,评论的字体与答案相比很小,感谢这个链接,这绝对是我的想法之一。我会阅读你问题的答案,看看他们是否对我的项目有帮助。在评论中找到了这个链接:但是看起来没有下载,我想知道Benji或其他人是否还在开发这样的产品?看起来和我需要的一模一样。或者人们可以用这个:它很光滑。