我正在维护一个带有Windows.Forms接口的~300K LOC C#传统胖客户端应用程序。该应用程序充满了小错误和怪癖。例如,我最近发现了一个错误,如果用户通过DataViewGrid上的单元格编辑和标签(而非点击),并且选择了某个单元格,则应用程序会获得“未将对象引用设置为对象实例”异常。我发现(或得到一个错误报告)大约每周或每两周这样的新事物。我已经受够了,并且正在考虑对应用程序进行某种模糊测试,试图找出未发现的问题。
如果我进行自己的模糊测试,我认为我至少需要能够独立生成运行我的应用程序(主窗口,FormX,FormY,FormZ,...)的测试工具。尝试将事件注入其中。
我试图找到适合这种情况的工具,但到目前为止还没有为Win Forms提供任何东西。 (但是,似乎并不缺少针对Web应用程序的模糊测试工具。)
有用的想法吗?
答案 0 :(得分:6)
我总是喜欢在Palm掌上电脑上使用的Gremlins测试工具的想法。它生成随机抽头事件以清除UI编程错误。您可以在应用中执行相同操作,在随机位置生成数百万个鼠标向下和向上事件。您需要P / Invoke PostMessage()并使用Control.GetChildAtPoint()来生成WM_LBUTTONDOWN / UP消息的窗口句柄。测试循环中的Application.DoEvents()以使事件处理程序运行。
答案 1 :(得分:4)
在网上进行一些搜索,我找到了2个链接,其中包含有关Fuzz测试WinForms应用程序的有用工具和信息: