代码之家  ›  专栏  ›  技术社区  ›  Ogre Psalm33

对于模糊测试Windows窗体应用程序有什么好的工具或提示吗?

  •  9
  • Ogre Psalm33  · 技术社区  · 14 年前

    我在用windows.forms界面维护一个~300k loc c传统的厚客户端应用程序。这个应用程序充满了小错误和怪癖。例如,我最近发现了一个bug,如果用户在DataViewGrid的单元格中编辑和选项卡(而不是单击),并将某个单元格保留为选中状态,则应用程序将获得“未设置为对象实例的对象引用”异常。我每一两周就发现(或得到)类似这样的新东西。我已经受够了,正在考虑对应用程序进行某种模糊测试,试图找出未发现的问题。

    如果我进行自己的模糊测试,我会假设我至少需要能够独立地生成测试工具来运行我的应用程序(主窗口、窗体x、窗体y、窗体z等)并尝试向它们注入事件。

    我试着寻找适合这个的工具,但到目前为止还没有找到任何获胜的形式。(然而,似乎并不缺少用于Web应用程序的模糊测试工具)。

    有什么好主意吗?

    2 回复  |  直到 14 年前
        1
  •  6
  •   Hans Passant    14 年前

    我一直喜欢在掌上电脑上使用的gremlins测试工具的想法。它生成随机的tap事件来清除UI编程错误。你也可以在你的应用程序中做同样的事情,在随机的地点生成数百万个鼠标上下移动的事件。您需要p/invoke postmessage()并使用control.getchildatapoint()为wm lbuttonDown/Up消息生成窗口句柄。测试循环中的application.doEvents()以使事件处理程序运行。

        2
  •  4
  •   Ogre Psalm33    14 年前

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

    • Monkey Fuzz Testing -一个关于codeplex的alpha状态工具,看起来非常接近我想要的。从站点:“MonkeyFozz主要向程序发送随机的键盘和鼠标事件,但它可以记录一路上的操作。这使得它们可以被重新播放,这对回归测试很有用。”我可能会尝试一下,并报告我的发现。
    • Paper on Random Testing 来自威斯康星大学CS系。这是2000-2002年,但似乎包含了一些好的信息,以及 links to tools 他们在书房里用过。然而,这些工具似乎至少已经过时10年了。