WPF应用程序的测试自动化

Posted

技术标签:

【中文标题】WPF应用程序的测试自动化【英文标题】:Test Automation of WPF Application 【发布时间】:2014-11-01 20:58:12 【问题描述】:

我们正在开发一个与服务器交互的新 WPF 应用程序。应用程序向服务器发送请求并获得响应。响应在不同视图中以不同方式显示(即具有多个视图的单个模型)。

现在我们想要自动化 WPF 应用程序的测试。我有以下测试自动化需求:

    使用用户输入的参数验证发送到服务器的请求。 使用显示在多个视图中的数据验证从服务器接收到的响应。

请告诉我如何使用任何测试自动化工具实现上述目标。

【问题讨论】:

您的问题似乎有点宽泛和不清楚。您在寻求工具推荐吗? 业界遵循的最佳实践是什么? 【参考方案1】:

您描述的此功能称为“录制和播放”。正如您已经提到的,它仅限于简单的 UI 交互,并且可能难以维护。

一旦您的交互逻辑变得更加复杂,您将不得不使用更分层的架构手动实现测试用例逻辑的主要部分。一种可能的架构可能有以下几层(这里的一些想法来自Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation这本书)

最低层将实现对 UI 控件本身的访问(例如,通过使用您提到的 UI 测试 API 之一。)

描述应用程序功能的应用程序驱动层。在这里,您可以使用LoginForm.LoginUser(userName,passWord) 之类的方法。例如,此方法在内部可以处理完整的用户输入,按下所有必要的按钮,甚至在需要时进行一些额外的验证(例如,如果密码已过期并且必须重新输入)。该层中的方法将通过下层访问不同的 UI 控件。一般来说,这一层是您被测应用程序的抽象。

用例/测试用例层。在这里,您通过调用应用程序层来定义不同的测试步骤。

因此,在您的具体情况下,您可以在应用程序驱动层中有一个名为ClientSoftware 的类,并且该类可以具有ValidateUserInputSendRequestToServer 之类的方法。然后,这些方法将实现必要的 UI 交互以执行所需的行为。然后,在您的测试用例本身中,您必须设置 ClientSoftware 的实例并调用所需的方法来实现您的测试用例。

【讨论】:

感谢分享您的想法,有哪些好的工具可用? 为了访问您正在测试的系统,我想您可以使用您已经提到的任何工具或许多开源替代品之一(例如TestStack.White)。为了管理测试用例本身,您可以使用任何可用的 .NET 测试框架(例如nunit)。

以上是关于WPF应用程序的测试自动化的主要内容,如果未能解决你的问题,请参考以下文章

WPF -- 应用启动慢问题

WPF -- 应用启动慢问题

防止窗户打开

ContentControl 在应用程序通过 UI 自动化测试启动时不可见,但在用户启动应用程序时可见

WPF:如何测试应用程序是不是在 Appium 中最小化

WPF 开发自动开机启动程序