65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 Visual Studio 2008 Team System 进行数据驱动的 Web 测试

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.79/5 (6投票s)

2007年12月12日

CPOL

10分钟阅读

viewsIcon

91274

downloadIcon

574

如何使用 Visual Studio 2008 Team System 创建数据驱动的 Web 测试。

Sample Image - maximum width is 600 pixels

引言

Web 测试是 Visual Studio 2008 Team System (VSTS) 中众多测试选项之一。通过利用 Web 测试,您可以创建一组可重复的测试,以确认您的 Web 应用程序正常工作。VSTS 通过记录您在浏览器窗口中逐步执行的操作,然后在运行测试时回放这些操作,从而使创建 Web 测试变得容易。但 Web 测试不止于此。只需点击几下鼠标,您就可以将 Web 测试转换为数据驱动的 Web 测试,从而允许您测试多个数据值,同时仍使用单个 Web 测试。最后,当您需要对 Web 测试所采取的操作有更多控制时,您可以创建编码的 Web 测试,这是一种用 C# 或 VB.NET 编写的 Web 测试。

我们将在本文中介绍所有三种类型的 Web 测试。我们的示例应用程序由两个简单的 ASP.NET 页面和一个 SQL Express 数据库组成。您需要安装 Visual Studio 2008 Team System Testing Edition 或 Visual Studio 2008 Team Suite,以及 SQL Express,才能运行示例应用程序和 Web 测试。我们将首先创建一个简单的 Web 测试来测试应用程序的登录功能。接下来,我们将使用逗号分隔文件将我们的简单 Web 测试转换为数据驱动的 Web 测试。但正如您将看到的,我们会遇到一个小问题。我们将最终通过使用编码 Web 测试来克服这个问题。

创建 Web 测试

运行应用程序

在创建 Web 测试之前,您需要确保示例 Web 应用程序可以运行。在 Visual Studio 中打开解决方案,然后从菜单中选择 调试 -> 开始调试。这将启动 ASP.NET 开发服务器,它将在某个端口上运行,例如 2062。它还将打开您的默认 Web 浏览器到 Web 应用程序的起始页面。URL 应该看起来像这样

https://:####/Default.aspx

请记下 ####,因为这是开发服务器使用的端口号,我们稍后在示例中会用到它。default.aspx 页面应显示一个带有文本 登录 的链接。点击登录链接应显示一个登录页面。输入 User1 作为用户名,network! 作为密码,然后点击 登录按钮。您应该返回到 Default.aspx 页面。这次,您应该看到一个带有文本 注销 的链接,以及一条消息 欢迎来到我们的网站 User1!,如下图所示

太好了,示例应用程序正在运行!关闭 Web 浏览器以停止调试并返回 Visual Studio。

创建 Web 测试

现在我们知道应用程序工作正常,接下来我们需要创建 Web 测试。您会注意到 Visual Studio 的解决方案资源管理器中有两个项目,MembershipExample 是 Web 应用程序,而 WebTestsProject。WebTestsProject 是 Visual Studio 中一种特殊形式的项目,称为测试项目。您可以使用测试项目来存储您的测试,从单元测试到 Web 测试再到手动测试。要开始,只需右键单击 WebTestsProject 测试项目并选择 添加 -> 新建测试。这将打开 添加新测试窗口。选择 Web 测试,并将其命名为 MyLoginTest.webtest。当您单击确定时,Internet Explorer 将打开。您会注意到一个窗口停靠在 IE 的左侧,名为 Web Test Recorder。此录制器将跟踪您在 IE 中所做的一切。

在地址栏中输入 https://:####/Default.aspx,其中 #### 是您之前记录的端口号。您会注意到录制器中记录了您访问的页面。您可以随意暂停和恢复录制。您还可以向录制中添加注释,以帮助跟踪您正在做什么。点击录制器中的文件夹图标,即 添加注释 按钮,并在注释窗口中输入 已导航到 default.aspx 页面。当您单击 确定 时,您会看到您的注释出现在您刚刚导航到的页面下方,在录制器中。

点击 登录 链接,然后添加注释 点击登录链接。输入 User1 作为用户名,network! 作为密码,然后点击 登录。添加注释 以 User1 身份登录。您的 Web 浏览器现在应该包含类似以下内容

请注意 Web 测试为您收集的所有信息。点击 Web Test Recorder 中的停止按钮以停止并关闭 IE,然后返回 Visual Studio。您现在将在 Visual Studio 中,在 MyLoginTest.webtest 选项卡中看到您的 Web 测试

运行 Web 测试

您要做的第一件事是运行您的 Web 测试,以确保它已正确记录。在 MyLoginTest.webtest 选项卡的顶部有一个绿色箭头按钮。单击该按钮运行 Web 测试。测试将运行并应成功完成。您应该会看到类似以下内容

您可以点击 Web 测试结果以查看为您捕获的所有详细信息。对于每个请求,您可以看到请求、响应、隐藏字段信息、总请求时间以及各种其他信息。每个请求旁边都应有一个绿色复选标记,表示它已通过,并且测试结果顶部也应有一个绿色复选标记,表示测试已通过。现在返回到 MyLoginTest.webtest 选项卡。

添加验证规则

现在我们知道 Web 测试有效,我们想添加一个规则以确保应用程序按预期工作。我们将添加一个验证规则。验证规则用于验证应用程序是否正常工作。在我们的例子中,我们将使用验证规则来确保在成功登录后,default.aspx 页面上出现短语 欢迎来到我们的网站 User1!

MyLoginTest.webtest 选项卡中,右键单击第三个请求(https://:####/login.aspx)并选择 添加验证规则。这将打开 添加验证规则 窗口。您有多个规则选项可供选择。选择 查找文本 规则。在此规则的属性中,在 查找文本 属性中输入 欢迎来到我们的网站 User1!。将 忽略大小写 属性设置为 True。窗口应显示为类似以下内容

单击 确定 按钮保存此规则。您会注意到在您的 Web 测试中,在请求下方,有一个名为 验证规则 的新文件夹,其中包含我们刚刚创建的规则。

点击 Web 测试上的绿色箭头再次运行测试。测试应该通过。在测试结果中,选择最后一个请求,然后选择 详细信息 选项卡。您可以看到您的验证规则已通过

用数据驱动您的 Web 测试

此 Web 测试运行良好,但它只测试一个登录。实际上我们需要测试三种不同的登录。我们不创建三个不同的 Web 测试,每个登录一个,而是使用逗号分隔文件将不同的用户名和密码输入到我们的 Web 测试中。

配置数据驱动的 Web 测试

回到 MyLoginTest.webtest。右键单击 MyLoginTest 并选择 添加数据源。这将打开 新建测试数据源向导。在 Visual Studio 2008 中,您有两个新的数据源选项。除了常规数据库,您还可以使用 XML 文件或逗号分隔文件(CSV 文件)。选择 CSV 文件 图标并单击 下一步 按钮。导航到您解压示例应用程序的位置,进入 WebTestsProject 文件夹,然后选择 MyUsers.csv 文件。您应该会看到类似以下内容

单击 完成 按钮结束向导。

现在我已添加数据源,我需要修改我的 Web 测试以使用文件中的值。在 Web 测试中,向下钻取到第三个请求(https://:####/login.aspx)下的 表单 Post 参数 文件夹。在该文件夹中,选择 Login1$UserName=User1 行,然后转到 属性 窗口。在属性窗口中,在 属性中,单击向下箭头以打开下拉列表。在下拉列表中,向下钻取到 DataSource1 -> MyUsers 并选择 UserName。属性窗口应如下所示

Login1$Password=network! 字段执行相同的操作,在下拉列表中选择 Password 值。选择 文件 -> 全部保存 以保存您目前的工作。

在运行测试之前,您需要修改测试配置文件,以确保它读取数据源中的所有行。在解决方案资源管理器中,在解决方案项文件夹中,双击 LocalTestRun.testrunconfig 文件。这将打开配置窗口。选择 Web 测试 以修改 Web 测试属性。在 运行迭代次数 下,选择 每个数据源行一次运行 单选按钮。单击 应用,然后单击 关闭 以关闭此窗口。

运行数据驱动的 Web 测试

您现在已准备好运行数据驱动的 Web 测试。回到 MyLogintest.webtest,点击绿色箭头运行测试。但是等等,发生了什么?测试显示为失败

如果您选择失败的行并点击 详细信息 选项卡,您会发现之前添加的验证规则在第一次运行时通过,但在接下来的两次运行时失败。这是有道理的,因为第一次登录时是 User1,所以短语是正确的。但是第二次和第三次登录时是 User2User3,所以测试要查找的短语将不存在。

您可能会认为我们只需要修改我们的验证规则,以添加动态用户名,您是正确的。但是,在 Web 测试 GUI 中,对于验证规则,您不能像那样添加动态参数。

那么当漂亮的 GUI 不起作用时该怎么办呢?您需要在构成 Web 测试的代码中动手操作。

下一个级别 - 编码数据驱动的 Web 测试

我们想将 Web 测试生成为 C# 代码,这样我们就可以操作代码以实现我们想要的功能。回到 MyLoginTest.webtest 选项卡。右键单击 MyLoginTest,然后选择 生成代码。接受默认名称 MyLoginTestCoded,然后单击 确定。这将创建 MyLoginTestCoded.cs 文件。此 Web 测试与 MyLoginTest.webtest Web 测试完全等效。这只是做同样事情的 C# 代码。

修改编码的 Web 测试

随意在这个文件中查看 Web 测试的工作原理。准备好后,搜索 Login1$UserName。这应该会带您到一行类似以下内容的代码

request3Body.FormPostParameters.Add("Login1$UserName", 
    this.Context["DataSource1.MyUsers#csv.?UserName"].ToString());

此行代码将 Login1$UserName 值设置为数据源中的值。选择

this.Context["DataSource1.MyUsers#csv.?UserName"].ToString()

右键单击它,然后选择 复制

现在搜索 Welcome。这应该会带您到一行类似以下内容的代码

validationRule2.FindText = "Welcome to our website User1!";

使用您之前复制的值,将此行代码更改为

validationRule2.FindText = "Welcome to our website " + 
                    this.Context["DataSource1.MyUsers#csv.?UserName"].ToString() 
                    + "!";

我们正在动态地将字符串中的名称替换为数据值。选择 文件 -> 全部保存 以保存您目前的工作。

运行编码的 Web 测试

从主菜单中,选择 测试 -> 窗口 -> 测试视图 打开 测试视图 窗口。右键单击 MyLoginTestCoded 测试并选择 运行选定项测试结果 窗口将打开在屏幕底部,并显示测试已通过。双击测试结果窗口中的测试以查看测试详细信息。如您所见,测试的所有三次运行都已通过。

结论

本文向您展示了 Web 测试和数据驱动的 Web 测试的基础知识。我们首先创建一个基本的 Web 测试来测试页面的登录功能,并向 Web 测试添加了验证规则。然后,我们通过从逗号分隔文件传入多个用户和密码,将此测试变为数据驱动的 Web 测试。但我们发现这导致我们的验证规则失败。最后,我们创建了一个编码的 Web 测试,以绕过 GUI 中的一些限制,并使我们的数据驱动 Web 测试成功完成。

历史

2007/12/12 - 初稿发布。请耐心等待,我正在解决源代码上传问题。

© . All rights reserved.