14

我正在尝试对 gui 应用程序进行压力测试,但我不太确定如何执行此操作。首先,我有一个应用程序,所有 gui 和帮助函数都位于其中。我还制作了两个外部库,该应用程序使用它们。这些库只做一些小事情,我想在 QtMock 启动并工作时对这些部分进行单元测试(由于某种原因,目前它与 qt 4.8 不兼容)。

我想对主应用程序进行压力测试,而不必更改太多代码。我查看了 QtTestLib,它看起来非常基本,好像您必须将该代码与主代码集成,这是我不想要的。我真的很想在应用程序之外进行测试,并且想知道如何做到这一点?不太确定是否应该将我的 enitre gui 应用程序导出为可以导入测试的外部库?

你通常如何做到这一点来真正对整个事情进行压力测试。不知道我应该如何以及在哪里做测试代码,我将不胜感激!

4

1 回答 1

6

根据我的经验,您使用的任何测试工具包要么会以微妙的方式将自己融入您的代码,要么永远无法达到您需要的深度(或两者兼而有之)。

可以编写自定义测试代码,并且仍然为正在测试的应用程序保持代码清洁。我是在一个需要自动测试的大型 Windows C++ gui 应用程序上完成的。基本思想是创建一个新项目,引用基础项目中的所有代码,并编写一组新的类,这些类派生自基类并包含您的测试代码。

就我而言,我创建了一个新的 Visual Studio 项目,但您可以对新的 Qt 项目执行相同的操作。当然,基类可能必须重构以公开要测试的功能。测试类根据需要调用基类函数 - 如果需要,您可以创建整个测试 gui。

作为一个非常简单的例子,如果这是你的项目......

class MyView : public QMainWindow {}
class MyController {}
class MyModel {}

...创建一个新项目,拉入您的基本代码,然后添加这些:

class TestView       : public MyView {}
class TestController : public MyController {}
class TestModel      : public MyModel {}

最后,经过一些工作,零测试代码在我的基类中,我仍然能够在一个漂亮的测试 gui 中连接并启动各种重复的自动测试。

我并不是说这是一项简单或微不足道的任务。我只是鼓励你,这是可以做到的。:-)

编辑:这不是对嵌入式单元测试的批评,如果您可以从项目开始就将其落实到位,那就太好了。但这是一个大型遗留应用程序,我没有将测试代码注入基本代码是一个硬性要求。

于 2012-05-18T01:26:02.773 回答