- 浏览: 913387 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (537)
- Java SE (114)
- Struts (18)
- Hibernate (25)
- Spring (3)
- Page_Tech (41)
- Others (87)
- Database (29)
- Server (24)
- OpenSource_Tools (15)
- IDE_Tool (22)
- Algorithm (28)
- Interview (22)
- Test (28)
- Hardware (1)
- Mainframe (25)
- Web application (4)
- Linux (3)
- PHP (17)
- Android (1)
- Perl (6)
- ubuntu (1)
- Java EE (9)
- Web Analysis (5)
- Node.js (2)
- javascript (2)
最新评论
-
一键注册:
request.getRequestURL()和request.getRequestURI() -
SuperCustomer:
...
SED的暂存空间和模式空间 -
juyo_ch:
讲得挺好理解的,学习了
java 死锁及解决 -
chinaalex:
最后一题答案正确,但是分析有误.按照如下过程,上一行为瓶,下一 ...
zz智力题 -
liaowuxukong:
多谢博主啦,弱弱的了解了一点。
C++/Java 实现多态的方法(C++)
练习 1.6:回归测试
在开始本练习之前,您必须先完成练习 1.5:查看验证点和对象图。
您拥有应用程序的新工作版本后,就可以通过对新工作版本回放脚本来运行您记录的自动测试。要对新的工作版本执行脚本,则必须在脚本中更改应用程序的名称。(您不需要对开发项目执行此操作;这里,您这样做是为了模拟如何获取应用程序的新工作版本。)
- 在 Java 编辑器(脚本窗口)中,验证您的脚本(Classics.java)是否为活动脚本。
在脚本顶部的模板信息下面,就是启动应用程序命令:
startApp("ClassicsJavaA");
- 将“A”改为“B”。
Java 代码是区分大小写的,因此务必使用大写 B。您不需要保存或编译脚本来使更改生效。当您运行脚本时它会自动生效。
- 单击运行 Functional Test 脚本工具栏按钮()以回放脚本。
- 如有必要,在选择日志对话框中选择 Classics 并单击完成。您将被提示是否覆盖日志。
-
单击是。
脚本开始快速回放,但在 Member Logon 对话框上接近结尾时速度变慢。这是因为应用程序的工作版本 B 在复选框旁边的字段中具有不同的文本。Functional Test 正在查找与工作版本 A 中记录的识别属性相匹配的对象。稍后我们将展示如何解决这个问题。
-
当日志在回放后打开时,请查看消息。
您将在日志中看到一条失败消息和一条警告消息。第二个验证点(标记上的验证点)由于应用程序 中的更改而失败。接下来,我们将考虑如何更新验证点基线以解决这个问题。生成一条对应于密码复选框字段的对象识别警告。在教程的以后部分中,我们还将展示 如何使用正则表达式在对象图中解决该问题。
您是否注意到 ClassicsB 的主屏幕似乎与 ClassicsA 不同,但这种情况并未导致脚本失败?存在相同的对象,但位于两个应用程序的不同位置。这不会导致失败,因为 Functional Test 使用强健识别方法来查找对象。例如,它不依靠表面的属性(例如屏幕坐标)来查找对象。相反,它使用内部识别属性。这种方法允许灵活地设计用户界面,而不要求您改变或重新记录您的脚本。
- 使日志保持打开状态。
现在您可以开始进入练习 1.7:使用对照器更新验证点。
练习 1.7:使用对照器更新验证点
在开始本练习之前,您必须先完成练习 1.6:回归测试。
验证点提供对象属性或数据的基线。如果验证点在应用程序的后续工作版本中失败,您会发现应用程序的缺陷或预期更改。如果更改是预期的,那么您可以更新验证点的信息,这样测试就可以对将来的工作版本继续有效。
- 如果您关闭了日志,请在项目视图中双击日志名称来重新打开它。
-
在日志中,单击失败验证点条目结尾处的查看结果链接。事件标题为“验证点(OrderforTrentCulpito_standard)”。
Functional Test 验证点对照器显示您的验证点数据。请注意,对照器标题栏含有您的验证点的名称。(注:如果您得到一条错误消息,并且对照器未打开,您就需要启用浏览器的 Java 插件。关于该操作的指示信息,请参阅 Functional Test 帮助的“记录之前”部分中的主题“启用浏览器的 Java 插件”。使用 Functional Test 中的帮助菜单可访问“帮助”目录中的这一部分。
当某个验证点失败时,对照器会显示期望值和实际值,以帮助您分析其中的差别。然后您可以装入基线文件并编辑它,或者用实际文件中的值更新它。
失败以红色显示。
- 滚动到文本属性。
当您对 ClassicsA 创建了验证点时,标题栏的标题是“Trent Culpito 的订单”。当您对 ClassicsB 回放脚本时,标题栏标题是“Trent Culpito 的订单”。“订单”是正确的,因为一个客户可以在“订单”对话框中拥有多份订单。因此您必须更新基线文件,更改文本以与 ClassicsB 相匹配。
您仅可编辑基线文件。
- 单击“对照器”工具栏上的装入基线进行编辑按钮()。
请注意,现在左边的值列显示基线值。
- 不必滚动到文本属性,您可以单击属性列上面的跳至第一个区别处按钮()。四个导航按钮可以帮助您找出基线与实际文件之间的区别。
您可以用两种方法更新基线文件。您可以编辑网格的单元格,在单词“Order”后面添加字母 s,或者可以使用替换基线命令。如果替换基线,将会用实际文件中的值替换基线文件中的所有值。通常,如果您仅需要编辑一个或一小部分值,则应编辑个别值。
- 该测试仅需更新一个区别,故请单击“对照器”工具栏上的以实际值替换基线按钮()。
现在文本属性中的两个值都匹配,属性不再显示为红色。关于使用对照器的更多信息,请参阅 Functional Test 帮助。
- 关闭对照器。
既然您更新了失败的基线值,则让我们再次回放脚本,以确认验证点通过测试。
- 首先关闭日志。
- 单击 Functional Test 工具栏上的运行 Functional Test 脚本按钮。
- 选择 Classics 日志并单击完成。
-
如果提示是否覆盖日志,则单击是。
Functional Test 在出现 Member Logon 对话框时暂停,因为您尚未解决这种识别问题。在回放结束时,Functional Test 显示日志。现在验证点通过测试!看看,使用对照器更新对象数据和属性以解决测试中的应用程序的更改是多么容易。
- 使日志保持打开状态。
现在您可以开始进入练习 1.8:更新对象图。
练习 1.8:更新对象图
在开始本练习之前,您必须先完成练习 1.7:使用对照器更新验证点。
在这个练习中,您将使用对象图来解决对象识别警告问题。您还将使用正则表达式来更灵活地识别对象。
当您看到识别失败或警告问题时,请查看日志消息。在练习 1.7 结束时,您应该已经使该日志保持打开状态。如果日志没有打开,则在“项目”视图中双击以打开该日志。日志中保留一条单独的警告。事件标题为“对象识别效率低(超过警告阈值)”。- 查看日志底部附近的警告部分中的 ObjectLookedFor 和 objectFound 字段。
在 ClassicsA 中,密码字段的名称为 Remember Password。在 ClassicsB 中为 Remember The Password。当您对 ClassicsB 回放脚本时,这一差别导致了对象识别不完全匹配。
- 查看日志中的行号字段并记下号码。
- 关闭日志,回到 Functional Test。
- 单击脚本窗口中的任一处,然后单击浏览 > 转至行。
-
输入日志失败消息中的行号,并单击确定。
光标移到该行号的左侧页边空白处。您也可以通过查看 Functional Test 窗口底部的指示符来查找行号。该处会显示行号和光标在行内的位置。例如,“43:9”表示的位置是第 43 行中从左侧页边距起向右计数的第 9 个字符。您的脚本中的对应行应为:
RememberPassword().clickToState(SELECTED);
这一行代表您单击密码复选框。脚本中的这一行显示了失败的对象。现在您可以在对象图中查找该对象。
- 要查找对象,请回到脚本浏览器(右侧窗格)中的测试对象的列表。
您将看到测试对象文件夹下列出的“rememberPassword”。
- 双击 rememberPassword 对象,在对象图中打开它。
- 单击对象图菜单上的测试对象 > 全部接受()。如果该命令变灰,则不进行任何操作。
请注意,所有对象都更改为黑色文本。文本保持蓝色(表示新对象),直到您接受图中的对象为止。您应该在第一次查看新建的对象图时接受对象。
- 如果密码复选框对象在图中未被选中,则选中它。(该对象名为“Java: checkBox: checkRemember: javax.swing.JCheckBox”。)
- 查看对象图底部的识别选项卡中列出的识别属性。
要将新对象添加到图中,请打开 ClassicsB 和 Member Logon 对话框。您可以看到,这是 ClassicsA 中的对象,因为它的 accessibleContext.accessibleName 属性显示为“Remember Password”。这是“旧的”对象。然而,当您对 ClassicsB 回放脚本时,该对象的文本会更改,因此 Functional Test 将它识别为“新的”对象。您希望在这种情况下使用新的对象属性,因此必须将它添加到图中。
- 在对象图菜单上单击应用程序 > 运行。
- 使用箭头选择 ClassicsJavaB。(务必选中 B。)
- 单击确定。
- 在 ClassicsCD 中,选择任一 CD 并单击 Place Order。
Member Logon 对话框打开。
- 如有必要,将对象图向屏幕下方移动,以看到它的全部内容。在对象图菜单中,单击测试对象 > 插入对象。
这与“验证点向导”的选择对象页面中的对象查找器工具相同。
- 如果选中了“前进到下一页”选项,请将它清除。
- 使用对象查找器工具,在“Member Logon”对话框中选中“Remember the Password”复选框。
选中该复选框以后,您将看到 accessibleContext.accessibleName 属性现在为“Remember The Password”。如有必要,拉伸对象图的边框以查看属性。
- 在选择对象页面上,单击下一步。
- 不要更改选择对象选项页面上的任何内容,并单击完成。
新的复选框对象现在显示在对象图中。
- 单击另一个对象,并注意到列出的新项显示为蓝色,并且单词“New”出现在行首。
现在旧的和新的对象都列在图中。您希望统一这两个对象,并从每个对象中提取您希望新对象具备的属性。
- 要统一对象,请单击旧对象(标记为“CheckBox: checkRemember”的原始复选框),并将它拖动到列表中的新对象上。先将光标箭头的顶端放在新对象上,然后释放鼠标按键。
统一测试对象向导出现。
-
如有必要,将统一向导拉宽,以查看靠下部分的更多信息。
在左下部分,显示原始对象的属性。它应标记为“Source: RememberPassword”。那就是 ClassicsA 中复选框的文本内容。在右下部分,它应标记为“Target: RememberThePassword”。那就是 ClassicsB 中复选框的文本内容。
因为您将旧对象拖动到新对象,因此新对象的识别属性将在向导顶部填入数据。通常,如果新属性是首选的属性,Functional Test 就将其放在顶部。然而,某些旧的管理属性可能是首选属性。例如,Functional Test 保留旧属性集中的正则表达式。要使用旧对象的某一属性,则双击旧对象网格中的该属性,该属性将复制到统一过的对象中。在这种情况下,我们希望使用新对象的所有属性,这些属性已经填入了数据。
- 单击下一步。
对象图中受这种更改影响的所有脚本都被列出。仅有一个脚本,即 Classics,受到影响。
- 单击完成。
- 在对象图中,单击对象图工具栏上的文件:保存按钮,保存您所作的更改并关闭对象图。
- 首先关闭 ClassicsCD 的两个对话框。
- 在 Functional Test 中,单击工具栏上的运行 Functional Test 脚本。
-
选择 Classics 日志并单击完成。
现在脚本通过,无任何警告!请注意,回放不再在密码复选框对象处暂停,因为识别属性现已匹配。
这种对象统一功能是在对象的识别属性发生预期变化时更新脚本的一种简便方法。该功能的一个主要优点是,如果您的对象 图正由很多脚本使用,则当您在向导中作更改时,可以更新所有脚本。不必手工编辑多个脚本,您可以在图中作一次更改,更改会自动传播到使用它的所有脚本。此 功能可以节省您的时间。
注:还有一种更简便的方法可以在测试对象的识别属性发生变化时更新属性。不需使用本练习中描述的“统一”向导,您可以从对象图中选择测试对象以更新其识别属性。当测试对象显示在“对象图”树中时,右键单击该对象,并从弹出菜单中选择更新识别属性。执行该操作时,您需要运行测试应用程序,这样 Functional Test 才能获得更新后的识别属性。仅当您不想使用旧对象的任何属性时,才会使用这种更新方法。
- 关闭日志。
现在您可以开始进入练习 1.9:更改识别首选项。
练习 1.9:更改识别首选项
在开始本练习之前,您必须先完成练习 1.8:更新对象图。
在前一个练习中,您看到了在对象的识别属性发生变化的情况下可如何更新这些属性。可更改的另一个因素是 Functional Test 在回放期间所采用的识别权重。使用 ScriptAssure 识别首选项可进行这种设置。您使用第二个验证点测试的标记对象可以演示这是如何运作的。
- 在 Functional Test 菜单上单击窗口 > 首选项。
- 单击 Functional Test > 回放 > ScriptAssure。
- 单击高级按钮。
请注意,缺省设置之一是接受的分数大于以下值时发出警告:10000。分数为 10000 表示一个重要属性可能是错误的。将分数降低到 5000,查看会发生什么情况。
- 单击该字段旁边的使用缺省值复选框。
- 然后在字段中输入 5000。单击确定。
- 再次对 ClassicsB 回放脚本。
现在日志包含标记对象的一条警告。objectFound 字段中给出的理由是:识别分数为 10000。这一差异是由于标记中的单词“Order”被改为“Orders”而引起的。
- 关闭日志。
恢复识别分数的缺省值。
- 单击窗口 > 首选项。
- 单击 Functional Test > 回放 > ScriptAssure。
- 单击高级按钮。
- 单击如果接受的分数 ... 时发出警告字段旁边的使用缺省值复选框。
这会将 5000 改回为 10000。
- 单击确定。
- 再次回放脚本。
现在警告消失,所有内容都通过。
- 关闭日志。
本练习显示了您可以如何调节识别分数,以实现您希望对象识别所具备的灵敏度。关于使用 ScriptAssure 的更多信息,请参阅 Functional Test 帮助。
现在您可以开始进入练习 1.10:使用正则表达式。
练习 1.10:使用正则表达式
在开始本练习之前,您必须先完成练习 1.9:更改识别首选项。
我们要使用对象图完成的最后一个事项是将属性值转换成正则表达式。在这种情况下,正则表达式允许更灵活地进行对象识别。
我们刚才看到,脚本是如何对 ClassicsB 完全通过的。那是我们的目标,因为在 ClassicsB 中对应用程序所作的更改是正确的。因此,脚本现在所处的状态是我们希望继续保持的状态。现在,当您对 ClassicsA 回放脚本时,会由于前面所作的更改而失败。您可能希望允许某一对象的多个变异体通过测试。您可能拥有一个动态对象,或者拥有应用程序的几个版本以及某一对 象的略微不同的多个版本,这两者都是正确的。您可以使用正则表达式来容纳某一属性值的多个版本(例如文本),以适应这种场景。
- 要对 ClassicsA 进行回放,则编辑脚本顶部的 startApp 命令,将 B 改为 A。
- 单击 Functional Test 工具栏上的运行 Functional Test 脚本。
在回放期间,Functional Test 在密码复选框对象处暂停少许时间,但最终还是完成了。
现在脚本给出一个警告。请注意,在脚本中是同一个对象,即密码复选框。
- 关闭日志。
- 像练习 1.8 中所做的那样,通过双击脚本浏览器中的密码复选框,从密码复选框对象打开对象图。
- 单击对象图中的应用程序 > 运行,打开应用程序。
- 使用箭头选择 ClassicsJavaA。(请确保选中 A。)
- 单击确定。
- 在 ClassicsCD 中选择任一 CD 并单击 Place Order,打开 Member Logon 对话框。
- 像练习 1.8 中所做的那样,通过单击测试对象 > 插入对象向图中添加新对象,并使用对象查找器在应用程序的 Member Logon 对话框中选择密码复选框。
- 单击下一步,然后单击完成。
- 在对象图的顶部窗格中,将旧的复选框对象拖动到新的复选框对象,将两个对象统一起来。
- 如有必要,向外拖动一条边以拉宽“统一测试对象”向导,使字段延长。
统一后的对象显示在统一测试对象属性网格(顶部窗格)中;name 属性的值为“checkRemember”。
- 在顶部窗格中,右键单击“checkRemember”值并单击将值转换成正则表达式。
功能测试通过在值文本前面放置“xy”图标,将值指定为正则表达式。
- 再次双击名称值,以便编辑字段。
-
删除单词“check”,并将剩余部分编辑为:
[rR]emember
- 单击该单元格的外部。
该模式允许单词“remember”在具有大写“R”或小写“r”时都能通过。这很重要,因为比较操作是区分大小写的,仅在完全匹配时才能通过。
accessibleName 属性的值为“Remember Password”。
- 右键单击 Remember Password 值,并选择将值转换成正则表达式来转换它。
-
然后双击该值,将它编辑为:
Remember.*Password
除去空格并添加句号(.)和星号(*)字符。
- 单击另一个单元格。
“.”允许任一字符出现在该位置。在应用程序的一个版本中,该属性的两个单词之间存在空格,而在其它版本中没有空格。该模式对于两种情况都适用。
- 在向导中单击下一步,然后单击完成。
- 在对象图中单击文件:保存,保存更改并关闭对象图。
- 关闭 ClassicsCD。
现在这里出现了有趣的一幕!
- 再次对 ClassicsA 回放脚本。
关于 ClassicsA 的对象识别警告不再出现在日志中。
- 关闭日志。
- 更改 startApp 命令以回放 ClassicsB,并运行脚本。
对象识别对 ClassicsB 也通过!正则表达式允许更灵活地识别在应用程序的不同版本中具有不同属性的对象,在回放期间两者都能识别。关于正则表达式的更多信息,请参阅 Functional Test 帮助。
发表评论
-
Bugzilla 中文手册
2012-08-21 10:22 18949Bugzilla 是一个开源的缺陷跟踪系统(Bug ... -
(zz) Web Service 测试方法
2012-07-12 17:29 17121.WebService简介 WebService ... -
测试Servlet(转)
2012-06-10 18:31 977servlet的测试一般来说需 ... -
Rational Functional 测试命令接口
2012-05-17 13:26 889Functional Test Command-Line ... -
【原】JUNIT 源码分析之TestSuite
2012-04-25 21:59 1520Junit是如何使用适配器模式的呢?概念上可以理解,但 ... -
分享selenium+testng+reprotng+ant配置
2012-04-19 16:12 3534一、Configure1. 安装testNG插件到eclips ... -
[YUAN] JUNIT 源码分析总结
2012-04-11 15:21 1005今天看了下Junit3的源码,记录下一些心得。 J ... -
【zz】Ant + Junit 实现自动化测试
2012-04-10 14:01 1987在软件开发过程中,我 ... -
关键字驱动测试的原理和概念
2012-04-09 13:45 1708原理及特点 1. ... -
LoadRunner安装及破解
2012-03-19 15:13 10841、去HP的官方网 ... -
Web测试的一些思路
2012-03-19 15:10 837WEB测试分为6个部分: ●功能测试 ● ... -
测中策 - Web自动化测试的策略
2012-03-13 17:01 930大不可量,深不可测&quo ... -
软件测试的思路
2012-02-26 21:08 869任何东西的测试与软 ... -
TC interview
2012-02-21 11:34 10011. 自我介绍 2. 工作内容,完成过的具体项目及职责 3 ... -
RFT中文操作指南(上)
2011-04-02 15:03 1037练习 1.1:设置 Functional Test IB ... -
理解自动化测试
2011-04-02 11:06 1680“自动化测试”有时也叫“测试自动化”,由两部分组成,“自动化” ... -
一个纸杯子的测试用例
2010-10-26 11:52 1201一个纸杯,我们能想出多少个测试用例呢?想必很多人 ... -
测试一个搜索框
2010-10-26 11:51 1615摸索中,还很不成熟,但愿能抛砖引玉吧,我做的搜索测试是来抓取百 ... -
测试用例编写的“侯式标准”
2010-10-26 11:51 1462作为软件测试人员 ... -
编写测试用例方法心得体会
2010-10-26 11:47 1364在我的个人邮箱和MSN上,通常同行都问我类似下面这样的问题: ...
相关推荐
### RFT(Rational Function Tester)中文操作指南知识点详解 #### 一、RFT简介与应用场景 RFT(Rational Function Tester)是由IBM提供的一款强大的自动化功能测试工具,主要用于Web、Java Swing、.NET等应用程序的...
下面,我们将讲解RFT中文操作指南的第二部分,包括回归测试、更新验证点和使用对照器更新验证点等内容。 1. 回归测试 在开始回归测试之前,您需要完成练习1.5:查看验证点和对象图。您拥有应用程序的新工作版本后...
3. 录制测试脚本:打开需要测试的应用程序,使用RFT的录制功能捕捉操作,生成初步的测试脚本。 4. 编辑和优化脚本:在录制的基础上,可以编辑脚本,添加断言、条件语句等,以提高测试覆盖率。 5. 运行和调试测试:...
**IBM Rational Functional Tester (RFT) 基本使用手册** **第一节:Rational Functional Tester 产品介绍** Rational Functional Tester (RFT) 是 IBM 推出的一款强大的自动化功能测试工具,广泛应用于软件测试...
IBM Rational Functional Tester(RFT)是一款强大的自动化测试工具,主要用于软件功能测试和数据驱动测试...提供的"RFT帮助文档合集"应当包含了详细的操作指南、API参考、案例分析等内容,是学习和使用RFT的宝贵资源。
3. **对象识别和映射**:RFT通过识别应用程序中的对象来执行测试操作。了解如何正确地映射和识别这些对象,以及处理动态对象的方法,对于创建可靠的测试脚本至关重要。 4. **测试脚本创建与调试**:文档将详细阐述...
以下是RFT的一些核心特性和使用方法: 1. **脚本创建与回放**: - RFT通过记录应用程序的用户交互来生成测试脚本,简化了测试脚本的创建过程。 - 用户可以选择在Eclipse框架中的Java或Microsoft Visual Studio ...
RFT通过记录和回放用户操作来创建测试脚本,同时提供了丰富的脚本编辑和调试功能,使得测试人员可以对测试逻辑进行精细化控制。 RFT的核心特性主要包括以下几个方面: 1. **对象识别与映射**:RFT能够识别并跟踪...
rft的文档,自己找的,感觉还行,主要是给自己用的,做自动化测试用
RFT8.1的破解文件及说明。
RFT8.0 LICENSE,RFT8.0和7.0相比,的确是改进了不少,大家一起学习RFT8.0吧,有了这个jar包就可以正常使用了
《RFT(Rational Function Tester)原厂培训教程》是一份由IBM官方提供的深入解析Rational Function Tester(简称RFT)的全面指南。这份教程旨在帮助软件测试工程师掌握RFT的功能与应用,通过自动化脚本的录制、播放...
JAVA开发工具RFT 开发 本资源摘要信息主要介绍了JAVA开发工具RFT的开发相关知识点,包括XML标签的定义、动态页面的输出、系统定义变量等。 一、XML标签的定义 XML标签是构造HT应用程序的基本组件,系统提供了多种...
RFT脚本执行工具。它实现了加载测试脚本批量执行、计划测试任务、自动发送邮件通知和报告、测试前自动编译、设置执行次数、生成Html格式测试报告、显示测试报告、设置测试报告背景颜色/Logo/链接、重新验证Fail和...
RFT8.0安装手順.xls RFT8.0安装手順.xls
网上下的不管用,跟别人要了一个,现共享。另外平常使用RFT的,希望能够留个联系方式,大家平常交流下技术问题。fxy860709@hotmail.com
在使用iText RFT JAR包时,开发者需要注意以下几点: 1. 版权和许可证:iText有几种许可证模式,包括AGPL、commercial和 Affero GPL,选择哪种取决于你的项目需求和许可条件。 2. 版本兼容性:确保使用的iText版本与...
RFT脚本执行工具。不要解压,通过插件安装的方式安装于RFT。可通过工具栏按钮开启,会加载所选文件夹内所有脚本;或通过右键菜单开启(RFT处于Java模式)。 它实现了加载测试脚本批量执行、计划测试任务、自动发送...