7

我正在维护一个具有 Windows.Forms 界面的 ~300K LOC C# 旧式胖客户端应用程序。该应用程序充满了小错误和怪癖。例如,我最近发现了一个错误,如果用户通过 DataViewGrid 上的单元格编辑和选项卡(而不是单击),并选择某个单元格,应用程序会收到“对象引用未设置为对象的实例”异常. 我大约每两周发现(或收到错误报告)这样的新东西。我已经受够了,并且正在考虑尝试对应用程序进行某种模糊测试,以试图找出未发现的问题。

如果我自己进行模糊测试,我假设我至少需要能够生成独立运行我的应用程序(主窗口、FormX、FormY、FormZ 等)的测试工具并尝试注入事件进入他们。

我试图寻找适合于此的工具,但到目前为止还没有为 Win Forms 提供任何工具。(然而,似乎不乏用于 Web 应用程序的模糊测试工具)。

有什么有用的想法吗?

4

2 回答 2

6

我一直喜欢在 Palm 手持设备上使用 Gremlins 测试工具的想法。它生成随机点击事件以清除 UI 编程错误。您可以在您的应用程序中执行相同的操作,在随机位置生成数百万个鼠标向下和向上事件。您需要 P/Invoke PostMessage() 并使用 Control.GetChildAtPoint() 为 WM_LBUTTONDOWN/UP 消息生成窗口句柄。Application.DoEvents() 在您的测试循环中让事件处理程序运行。

于 2010-05-28T14:23:56.513 回答
4

在网上进行了一些搜索,我发现了 2 个链接,其中包含有关模糊测试 WinForms 应用程序的有用工具和信息:

  • Monkey Fuzz Testing - codeplex 上的 alpha 状态工具,似乎非常接近我想要的。来自该网站:“MonkeyFuzz 主要将随机键盘和鼠标事件发送到程序,但它可以记录沿途的动作。这使得它们可以被重放,对回归测试很有用)。我可以尝试一下并报告我的发现。
  • 威斯康星大学计算机系的一篇关于随机测试的论文。这是 2000-2002 年的日期,但似乎确实包含一些很好的信息,以及他们在研究中使用的工具的链接。但是,这些工具似乎至少已经过时了 10 年。
于 2010-06-01T19:38:58.513 回答