【发布时间】:2011-12-19 19:46:20
【问题描述】:
我想知道像 winrunner、QTP 等测试自动化工具是如何工作的。这些工具是使用windows提供的任何测试API还是依赖于IPC和事件。我无法弄清楚它们是如何工作的。对我来说,QTP 记录和播放功能似乎是一种魔力。任何指导将不胜感激?
【问题讨论】:
标签: winapi automation
我想知道像 winrunner、QTP 等测试自动化工具是如何工作的。这些工具是使用windows提供的任何测试API还是依赖于IPC和事件。我无法弄清楚它们是如何工作的。对我来说,QTP 记录和播放功能似乎是一种魔力。任何指导将不胜感激?
【问题讨论】:
标签: winapi automation
实际上,WatiN 是一个不错的起点。它不完全是单元测试框架。它可能看起来像一个第一眼,但它用于编写功能测试。如果您像单元测试一样运行它们,这完全取决于您。我正在以两种方式使用 WatiN 编写相同的测试(模拟网页上的用户操作的功能测试):
1) 像任何其他 PS 脚本一样从命令行运行时在 Powershell 中编写脚本。这很有趣,尽管您需要为报告、异常处理等编写大量代码。
2) 使用 MSVS 项目类型中的 C# Unit Test 在 C# 中编写 MSVS 中的单元测试。这实际上很有趣,因为您可以像单元测试一样在 MSVS 中运行它,但您有代码编写、报告、运行等的环境支持。
因此,如果您想从某事开始,请查看 WatiN,尤其是因为 WatiN 有专门的记录器,可以记录动作并在 C# 中输出代码。查看库和工具的内部结构会给你一些开始。
只提一件事 - 它仅适用于网络。桌面完全不同。通过网络,您可以连接到 IE,您可以查询 html 文档中的对象、检查浏览器状态等。使用台式机可能会更加困难。您需要连接到应用程序,可能是通过提到的 Win32hooks。也许尝试使用 Microsoft Scripting Host。
【讨论】:
我对 QTP 了解不多。但是,如果您想了解内部结构,则可以下载像 Watin- for dotnet 和 Watir- for ruby 这样的开源项目,看看里面发生了什么。两者都用于网络测试自动化。而且代码是免费提供的..
如果您正在寻找像 Nunit 这样的单元测试框架。它们是属性驱动的。Nunit 通过“TestFixtures”标识类,通过“Test”属性标识方法。它会扫描整个应用程序以查找这些测试方法并触发测试。
【讨论】:
我猜他们正在使用 Win32 Hooks。
编辑:here is 在 .NET 中定义挂钩的示例。
【讨论】:
应该是使用 COM、OLE 技术在 C、C++ 中进行 Win32/64 编程,并且它们可能正在使用 Active 可访问性 API。当然,他们可能已经在这些技术上创建了一个大型 API。甚至他们也可能使用过一些汇编编程。
【讨论】: