用Rational Functional Tester创建随需应变的自动测试脚本
- 格式:doc
- 大小:416.00 KB
- 文档页数:15
自动化测试基本流程 自动化测试是一种通过使用自动化工具和脚本来执行测试任务的方法。它可以提高测试效率,减少人工测试的工作量,并且可以在短期内快速执行大量的测试用例。下面是自动化测试的基本流程。
1. 确定测试目标和需求: 在开始自动化测试之前,首先需要明确测试的目标和需求。这包括确定要测试的功能、系统环境、测试用例等。
2. 选择合适的自动化测试工具: 根据测试需求和项目特点,选择适合的自动化测试工具。常见的自动化测试工具包括Selenium、Appium、Jenkins等。
3. 创建测试计划: 在进行自动化测试之前,需要制定详细的测试计划。测试计划包括测试的范围、测试用例的设计、测试环境的搭建等。
4. 设计测试用例: 根据测试需求和目标,设计相应的测试用例。测试用例应该覆盖系统的各个功能和场景,并且具有可重复性和可验证性。
5. 编写测试脚本: 根据测试用例,使用自动化测试工具编写测试脚本。测试脚本是用于执行测试的代码,它可以摹拟用户的操作,验证系统的功能。
6. 配置测试环境: 在执行自动化测试之前,需要配置好测试环境。测试环境包括测试服务器、测试数据库、测试数据等。
7. 执行自动化测试: 在测试环境配置完成后,可以开始执行自动化测试。执行测试时,可以使用自动化测试工具来执行测试脚本,并生成测试报告。
8. 分析测试结果: 在测试执行完成后,需要对测试结果进行分析。分析测试结果可以发现系统的问题和缺陷,并进行修复和改进。
9. 优化测试脚本: 根据测试结果和反馈,对测试脚本进行优化和改进。优化测试脚本可以提高测试的效率和准确性。
10. 定期执行自动化测试: 自动化测试应该是一个持续的过程。定期执行自动化测试可以发现系统的问题并及时修复,保证系统的稳定性和质量。
总结: 自动化测试基本流程包括确定测试目标和需求、选择合适的自动化测试工具、创建测试计划、设计测试用例、编写测试脚本、配置测试环境、执行自动化测试、分析测试结果、优化测试脚本以及定期执行自动化测试。通过遵循这个流程,可以提高测试效率,减少人工测试的工作量,并且保证系统的稳定性和质量。
《软件测试》实验指导书实验一、自动化测试工具使用一、实验目的通过本次实验,学会Rational Purify,Rational PureCoverage,Rational Quantify的安装和配置,并初步掌握使用自动化测试工具Rational Purify,Rational PureCoverage,Rational Quantify 对应用程序进行测试。
二、实验内容本实验需要完成以下任务:1.Rational Purify,Rational PureCoverage,Rational Quantify的获取、安装和配置2.自动化测试工具purify1)了解Purify的功能2)熟悉Purify测试环境的操作和使用3)使用Purify对应用程序进行测试3. 自动化测试工具PureCoverage1)用了解PureCoverage的功能2)熟悉PureCoverage的测试环境的操作和使用3)使PureCoverage对应用程序进行测试4. 自动化测试工具Rational Quantify1)了解Rational Quantify的功能2)熟悉Rational Quantify测试环境的操作和使用3)使用Rational Quantify对应用程序进行测试三、实验步骤3.1自动化测试工具Rational Purify,Rational PureCoverage,Rational Quantify的获取、安装和配置(一) 获取Rational Purify,Rational Purecoverage,Rational Quantify从ftp://10.20.79.1/teacher/1_IBM Rational/下载Rational Purify,RationalPurecoverage,Rational Quantify的安装文件压缩包Rational Suite Team Unifying platform_01.iso、Rational Suite Team Unifying platform_02.iso、Rational Suite Team Unifying platform_03.iso。
测试用例自动生成的方法与工具在软件开发过程中,测试是一个关键环节,它可以帮助我们发现和修复潜在的缺陷,提高软件的质量和可靠性。
然而,编写测试用例是一项费时费力的任务,特别是对于大型复杂的软件系统来说。
为了提高效率和减少人力成本,许多自动生成测试用例的方法和工具被开发出来。
本文将介绍测试用例自动生成的方法和工具,并探讨其优势和局限性。
测试用例自动生成的方法主要基于代码静态分析和符号执行两种技术。
代码静态分析是通过对代码进行扫描和分析来推导出程序的行为和可能的输入。
符号执行则是一种对程序进行符号值代替的执行方式,以探索不同的执行路径和可能的错误情况。
这些技术可以帮助开发人员自动生成大量的测试用例,而无需手动编写。
测试用例自动生成的工具有许多种类,例如模型驱动的测试生成工具、基于统计的测试生成工具和基于搜索的测试生成工具。
模型驱动的测试生成工具可以根据系统模型自动生成测试用例,它们通常使用模型转换技术将系统模型转化为测试用例的输入。
基于统计的测试生成工具则根据程序的执行情况和覆盖率信息来生成测试用例,以增加测试的覆盖率。
而基于搜索的测试生成工具则通过搜索程序状态空间来生成更具挑战性的测试用例。
测试用例自动生成方法和工具的优势包括提高测试用例的数量和覆盖率、减少测试用例编写的工作量、避免测试用例的遗漏和不足等。
通过自动生成测试用例,开发人员可以更全面地发现软件中的缺陷和错误,并解决它们,从而提高软件的质量和可靠性。
但是,测试用例自动生成也存在一些局限性。
自动生成的测试用例往往只能覆盖程序中的一部分执行路径,而无法完全代替人工编写的测试用例。
自动生成的测试用例可能会出现大量的冗余和无效的情况,导致测试效率降低。
自动生成的测试用例往往只能发现既有的错误,而难以模拟和检测新的和未知的错误。
因此,在使用测试用例自动生成方法和工具时,我们需要结合人工编写测试用例的经验和专业知识,以确保测试的全面性和有效性。
同时,我们也需要对自动生成的测试用例进行评估和筛选,以减少冗余和无效的测试用例的数量,并确保尽可能地覆盖程序中的不同执行路径和边界情况。
自动化测试基本流程自动化测试是一种通过使用自动化工具和脚本来执行测试任务的方法,以提高测试效率和准确性。
下面将详细介绍自动化测试的基本流程。
1. 确定测试目标和范围在开始自动化测试之前,首先需要明确测试的目标和范围。
确定要测试的功能、模块或者系统,并定义测试的具体目标和期望的结果。
2. 选择合适的自动化测试工具根据测试需求和目标,选择适合的自动化测试工具。
常见的自动化测试工具包括Selenium、Appium、Jenkins等。
根据项目的需求和技术栈选择合适的工具。
3. 设计测试用例根据测试目标和范围,设计测试用例。
测试用例应该覆盖系统的各个功能和边界条件,以确保测试的全面性和准确性。
测试用例应该包括输入数据、预期结果和执行步骤。
4. 开辟自动化测试脚本根据设计的测试用例,开辟自动化测试脚本。
自动化测试脚本应该能够摹拟用户的操作,执行测试用例并验证结果。
脚本可以使用编程语言如Python、Java等来编写。
5. 配置测试环境配置测试环境包括安装和配置自动化测试工具、设置测试数据和环境变量等。
测试环境应该与实际的生产环境尽可能一致,以确保测试的准确性和可靠性。
6. 执行自动化测试执行自动化测试脚本,运行测试用例并生成测试报告。
测试报告应该包括测试结果、错误信息和执行日志等。
根据测试报告分析测试结果,发现和修复问题。
7. 维护和更新测试脚本随着系统的不断演化和变化,测试脚本也需要进行维护和更新。
根据系统的变化,更新测试脚本以保持其准确性和可靠性。
8. 定期回归测试定期进行回归测试,以确保系统的稳定性和功能的一致性。
回归测试应该包括之前通过的测试用例,以验证系统的修改没有引入新的问题。
9. 迭代和改进根据测试结果和反馈,不断迭代和改进自动化测试流程和脚本。
优化测试用例的设计和执行,提高自动化测试的效率和准确性。
总结:自动化测试的基本流程包括确定测试目标和范围、选择测试工具、设计测试用例、开辟测试脚本、配置测试环境、执行测试、维护和更新测试脚本、定期回归测试以及迭代和改进。
软件测试自动化工具的设计与实现随着软件行业的迅猛发展,软件测试作为保证软件质量的重要环节也日益受到重视。
在传统的软件测试过程中,测试人员需要手动执行大量的测试用例,不仅费时费力,还容易出现人为疏漏。
为了提高测试效率和准确性,软件测试自动化工具应运而生。
本文将探讨软件测试自动化工具的设计与实现,并分享一些实用的经验。
一、需求分析与功能设计在开始设计测试自动化工具之前,我们首先需要进行需求分析。
需求分析阶段主要包括对软件测试的目标、范围和交付物的定义,以及测试环境和资源的要求等方面的考虑。
根据需求分析的结果,我们可以确定测试自动化工具所需要具备的功能。
1. 测试用例管理:测试自动化工具应能够方便地管理测试用例,包括用例的编写、执行和结果记录等功能。
同时,它还应支持用例的批量执行和回归测试,以提升测试效率。
2. 自动化脚本录制和回放:对于非开发人员来说,编写自动化测试脚本可能存在一定的难度。
因此,测试自动化工具应提供简单易用的录制和回放功能,使非技术人员也能快速创建自动化测试脚本。
3. 多平台支持:随着移动互联网的快速发展,软件往往需要在多个平台上进行测试,如PC端、移动端等。
因此,测试自动化工具应具备跨平台的能力,以提供全面的测试覆盖。
4. 异常自动报警:当测试过程中出现异常时,测试自动化工具应能够自动报警并及时通知相关人员,以保障问题能够及时解决。
5. 数据驱动测试:对于大规模的测试用例,手动编写每个测试用例可能是一项繁琐且重复的工作。
因此,测试自动化工具应支持数据驱动测试,可以通过读取测试数据文件来执行不同的测试用例,提高测试的覆盖率和可复用性。
二、选择合适的测试自动化工具在进行测试自动化工具的设计和实现之前,我们需要选择合适的工具作为基础。
当前市场上存在多种测试自动化工具,如Selenium、Appium、Jenkins等。
我们需要根据项目需求、技术栈和预算等因素综合考虑,选择最适合的工具。
根据经验,Selenium是一款功能强大且广泛应用的Web前端自动化测试工具,而Appium则用于移动端应用的自动化测试。
软件测试自动化规范在软件开发过程中,测试是一个至关重要的环节。
为了提高测试效率和准确性,越来越多的企业开始采用软件测试自动化工具。
然而,软件测试自动化并非一蹴而就,需要一套规范和标准来指导实施。
本文将介绍软件测试自动化的规范,旨在帮助企业进行高效、可持续的软件测试自动化。
一、测试脚本编写规范1. 选择合适的测试自动化工具,如Selenium或Appium,并了解其相关的语法和框架。
2. 根据测试需求和测试用例编写测试脚本,确保可读性和可维护性。
3. 确定测试脚本的命名规范,例如使用清晰的英文命名,并标注脚本功能和所属模块。
4. 使用注释说明测试脚本的目的、逻辑和输入输出等关键信息,方便后续维护和排错。
二、测试数据管理规范1. 建立测试数据管理库,将测试数据和测试脚本分开存储,提高数据的可复用性和版本管理能力。
2. 为每个测试用例准备独立的测试数据,保证测试用例的独立性和可重复性。
3. 使用合适的数据格式,如Excel或CSV文件,便于数据的录入和维护。
4. 对敏感数据进行脱敏处理,确保测试数据的安全性。
三、测试环境搭建规范1. 确定适合测试自动化的环境,例如使用虚拟机或容器化技术搭建测试环境。
2. 搭建测试环境的过程需要进行文档记录,包括环境配置、依赖安装和版本管理等。
3. 测试环境的稳定性和一致性对测试自动化的可靠性至关重要,需要定期维护和更新测试环境。
四、测试报告生成规范1. 测试执行完成后,自动生成详细的测试报告,包括测试结果、错误信息和执行日志等。
2. 测试报告应具备易读性和准确性,方便开发人员和测试人员查看执行结果和错误原因。
3. 可以采用HTML或PDF等格式输出测试报告,便于分享和存档。
五、持续集成与自动化部署规范1. 将测试自动化集成到持续集成流程中,确保每次代码提交都进行自动化测试。
2. 使用版本控制工具管理测试脚本和相关的自动化测试代码,确保版本一致性和源代码可追溯性。
3. 配置自动化部署工具,实现自动化部署和回滚,提高测试环境的可控性和可重复性。
功能自动化测试方案自动化测试是指使用软件工具来执行测试任务的一种测试方法。
它可以提高测试效率和测试覆盖率,减少人工测试带来的风险和成本。
以下是一个功能自动化测试方案的详细介绍,包括测试策略、工具选择、测试环境和执行流程。
一、测试策略在制定功能自动化测试方案之前,需要明确测试目标和测试范围。
测试目标可以包括验证功能的正确性,确认系统的性能和稳定性,检查用户界面的可用性等。
测试范围可以根据产品的需求文档、设计文档和用户故事来确定。
同时,也需要考虑测试的优先级和重要性,根据项目的进度和资源分配做出合理的安排。
二、工具选择选择合适的自动化测试工具是非常重要的。
根据项目的需求和技术栈,可以选择不同的工具进行测试。
以下是一些常用的自动化测试工具:1. Selenium:适用于Web应用程序的自动化测试。
它支持多种编程语言,并且可以模拟用户操作,如点击按钮、输入文本和提交表单等。
2. Appium:适用于移动应用程序的自动化测试。
它可以在真实设备和模拟器上运行测试,并支持iOS和Android平台。
3. JUnit:适用于Java应用程序的单元测试。
它可以执行单元测试,并生成测试报告和代码覆盖率报告。
4. PyTest:适用于Python应用程序的自动化测试。
它可以执行功能和性能测试,并且提供了丰富的插件和扩展功能。
5. Jenkins:用于构建和部署自动化测试。
它可以与其他工具集成,例如版本控制系统、持续集成工具和测试管理工具。
三、测试环境自动化测试需要搭建适当的测试环境。
以下是一些测试环境的要点:1.测试工具的安装:根据选择的工具,在测试环境中安装工具的运行时环境和相关组件。
2.测试数据的准备:根据测试需求,准备适当的测试数据。
可以使用测试数据生成工具、数据库脚本或者外部接口来生成测试数据。
3.测试环境的配置:配置测试环境的账号、权限、配置文件等。
同时,准备好测试环境的日志和监控信息,以便在测试中记录和分析。
Rational测试⼯具+功能测试Rational测试⼯具-功能测试考试模拟题1、当你在IBM Rational Functional Tester中进⾏功能测试⼯作时,你应该在哪⼀个透视图中⼯作?(b)a.Java 透视图b. b. Functional Test 透视图c. c. Performance Test 透视图d. d. J2EE透视图2、录制⼀个脚本的步骤是?(a)a.创建测试项⽬ 2. 点击录制脚本按钮 3. 启动被测试应⽤ 4.执⾏应⽤操作 5.关闭被测试应⽤ 6. 点击停⽌录制按钮a.1,2,3,4,5,6b.1,3,2,4,6,5c.1,2,3,4,6,5d.1,3,2,4,6,53、使⽤时间延迟的选择的顺序是:(a)1)在验证点和操作向导中的选择⽅法下拉菜单中选择“时间延迟的选择”。
2)设置延迟秒数、缺省是10秒。
3).点击对象查找器图标(⼿形)。
4)移动你的⿏标到你的应⽤程序上直到你得到了你想要测试的对象。
在延迟期间的任何动作都不会被记录。
5)当延迟时间结束时,光标之下的对象被选定,对象的识别属性被列在验证点和操作向导下⽅的对象识别属性⽹格中。
a.12345b. b. 13245c. c. 12435d. d.1342 54、⼀个按钮对象通常有哪些属性:(abc)/doc/23c6e5d5360cba1aa811dabd.htmlb..classc..classIndexd. order5、你可以以两种⽅式创建⼀个Functional Test项⽬: (ab)a.从 Functional Tester 的菜单,点击⽂件 > 新建 > Functional Test 项⽬b.从Functional Tester的⼯具栏,点击新建. 也新建的对话框打开,选择Functional Test 项⽬c.从 Functional Tester 的菜单,点击⽂件 > 连接 > Functional Test 项⽬6、在回放期间,你能够从哪⾥查看正在执⾏的脚本名称、执⾏到了脚本的哪⼀⾏、动作的状态图标和描述?(d)a.任务视图b. b. 运⾏视图c. c. 控制台d. d. 回放监视器7、当你将Functional Test 项⽬与 Rational项⽬关联起来时,你可以从哪⾥运⾏你的测试脚本?(a)a.TestManagerb.ClearCasec.ClearCase8、⼀个Functional Tester 脚本中由RationalTestScript 继承下来的语句⽅法有:(ab)a.startApp()b.logTestResult()c.在测试对象上调⽤的⽅法,⽐如Click()d.任何你需要的但没有被Functional Tester ⽣成的 Java 代码9、下⾯哪⼀项提供了为访问测试对象和验证点特定的脚本⽅法。
自动化测试的流程与步骤在软件开发的过程中,测试是一个不可或缺的环节。
而自动化测试更是现代软件开发流程中的一个重要步骤,它能够提高测试的速度、准确性和可重复性。
本文将介绍自动化测试的流程和步骤。
一、选择自动化测试工具选择适合自己团队的自动化测试工具是第一步。
目前市面上的自动化测试工具种类繁多,如Selenium、Appium、Robot Framework等。
需要根据团队的需求和实际情况选择合适的自动化测试工具。
二、确定自动化测试的范围在进行自动化测试之前,需要确定测试的范围,以及哪些测试需要自动化。
一般建议将回归测试、压力测试和性能测试等重复性高、工作量大的测试自动化,以提高测试效率和准确性。
三、编写测试用例编写测试用例是自动化测试过程中的核心步骤。
在编写测试用例之前,需要对软件进行分析和理解,并确定需要测试的业务场景和测试数据。
测试用例的编写需要考虑到测试的覆盖率和准确性,通常会采用“输入-操作-预期结果”的方式来编写。
四、创建测试脚本和测试数据编写测试用例后,需要创建测试脚本和测试数据来实现自动化测试。
测试脚本的编写需要熟悉自动化测试工具的语法和操作,测试数据的创建需要考虑测试用例的覆盖性和可扩展性。
五、执行自动化测试执行自动化测试是将测试用例转化为测试结果的过程。
自动化测试工具能够模拟用户的操作和行为,将测试结果记录在测试报告中。
测试人员需要仔细阅读测试报告,发现测试中的问题并及时解决。
六、重复执行自动化测试自动化测试的优势在于能够重复执行测试用例,以保证软件的质量稳定性。
测试人员需要定期运行自动化测试,及时发现软件中的问题并解决。
七、维护和更新自动化测试自动化测试脚本需要定期维护和更新,以应对软件改动和业务变化。
测试人员需要及时维护和更新自动化测试脚本,以保证测试的有效性和可靠性。
结语通过以上步骤,自动化测试可以提高软件测试的效率、准确性和可重复性,并降低测试成本。
但需要注意,自动化测试并不能替代手工测试。
自动化测试基本流程自动化测试是一种通过使用自动化工具和脚本来执行测试任务的方法,它能够提高测试效率、减少人为错误,并节省测试时间和成本。
本文将介绍自动化测试的基本流程,包括需求分析、测试计划、测试设计、脚本编写、执行测试、结果分析和报告等。
1. 需求分析在进行自动化测试之前,首先需要对被测试的软件进行需求分析,明确测试的目标和范围。
这包括了解软件的功能、性能和安全需求,以及对测试环境和数据的要求。
2. 测试计划测试计划是制定自动化测试策略的重要步骤。
在测试计划中,需要确定测试的目标、范围、时间和资源等。
还需要确定测试的优先级和风险,以便在执行测试时能够有针对性地进行测试。
3. 测试设计测试设计是根据需求和测试计划来制定测试用例的过程。
测试用例是描述测试步骤和预期结果的文档,它是执行自动化测试的基础。
测试设计需要考虑不同的测试场景和边界条件,以确保测试的全面性和准确性。
4. 脚本编写脚本编写是自动化测试的核心环节。
根据测试设计中的测试用例,使用自动化测试工具或编程语言编写测试脚本。
脚本应该能够模拟用户的操作,执行测试步骤,并验证测试结果是否符合预期。
5. 执行测试在执行测试之前,需要准备好测试环境和测试数据。
执行测试时,将编写好的测试脚本运行起来,自动化工具会模拟用户的操作,并记录测试过程中的日志和错误信息。
执行测试过程中,还可以进行断言和验证,以确保测试结果的准确性。
6. 结果分析在执行测试后,需要对测试结果进行分析。
分析测试结果可以发现软件中的缺陷和问题,并进行优化和改进。
对于测试通过的用例,可以进行性能和稳定性的评估,以确保软件的质量。
7. 报告最后,根据测试结果生成测试报告。
测试报告应该清晰地记录测试的目标、范围、执行情况和结果分析等信息。
测试报告可以帮助项目团队了解软件的质量状况,以及下一步的改进计划。
总结:自动化测试的基本流程包括需求分析、测试计划、测试设计、脚本编写、执行测试、结果分析和报告。
用Rational Functional Tester创建随需应变的自动测试脚本 IBM Rational Functional Tester是由IBM推出的针对Java,.Net和Web应用程序的自动化测试工具,拥有功能强大的编辑器并支持多种脚本语言,还集成了ScriptAssure 技术、模式匹配功能及数据驱动,以增强测试脚本的灵活性。借助这一工具,测试人员可以轻松地录制或编写脚本来进行自动化测试,极大地提高了测试效率。 软件在开发过程中是不断变化的,之后各个版本间的更替也会不可避免地引起界面、功能的变化,可以说"唯一不变的,就是变化"。这对自动化测试提出了很高的要求:要随需应变。自动化测试的脚本必须具有相当的自适应能力,在各种环境下都能正常工作。只有提高脚本的复用程度和兼容性,自动化测试才有实际意义,否则随着软件的各个版本的变更、发布,测试人员只能不停地去更新脚本,造成效率的低下、人力物力的极大浪费。 要达到这个目标,可以从以下两个方面来着手: 1) 充分利用Rational Functional Tester的强大功能,比如ScriptAssure? 技术、正则表达式,数据驱动,Rational Functional Tester API等; 2) 合理地编写、优化脚本。提纲挈领地对测试过程进行抽象,对关键过程进行必要的验证。 本文将从录制一个简单脚本开始,一步步对其进行改造和完善,不断提高脚本的自适应能力,使之能够摆脱种种束缚,灵活可靠地在多变的测试环境中顺利执行。 一 摆脱初始录制环境的束缚 文中我们以这个简单的Web页面测试场景为例:用户进入IBM网站,搜索关键字"lotus",验证"www.lotus.com"这一链接存在于结果集内。 首先,我们可以使用Rational Functional Tester录制这段脚本: 1. 打开Rational Functional Tester, 新建一个"Functional Test项目",命名为"SearchLotusProject"; 2. 右键单击项目管理器中的"SearchLotusProject",选择"使用记录器添加脚本"; 3. 将新脚本命名为"SearchLotusLink",单击"完成"按钮;此时会弹出脚本记录器的窗口,脚本记录已经开始了; 4. 依次打开IE,输入地址:"www.ibm.com", 回车;在搜索栏里输入"lotus",单击"Search"按钮,可以得到一个结果列表,其中就有"www.lotus.com";
5. 插入验证点。点击脚本记录器上的按钮 ,会出现"验证点向导"窗口。按住手形的对象选择器,选中链接"www.lotus.com"(红框高亮显示),以默认的设置创建一个"数据验证点",点击按钮"完成"。 6. 点击脚本记录器上的按钮"停止记录",完成录入过程。 通过以上的操作,我们得到脚本:
public void testMain(Object[] args) { // HTML Browser
browser_htmlBrowser(document_htmlDocument(),DEFAULT_FLAGS).click(atPoint(455,108)); browser_htmlBrowser(document_htmlDocument(),DEFAULT_FLAGS).inputKeys("www.ibm.com{ENTER}"); // Document: IBM United States: http://www.ibm.com/us/ text_q().click(atPoint(25,7)); browser_htmlBrowser(document_ibmUnitedStates(),DEFAULT_FLAGS).inputChars("lotus"); button_search().click(); httpWwwLotusCom_textVP().performTest(); }
Java语言的脚本有很好的可读性,稍有Java知识的人便能看懂这些操作的具体含义。 接下来我们试着回放这段脚本(注意:此时搜索结果页面尚未关闭)。点击工具栏上的按钮"运行Functional Tester脚本",开始回放。 整个回放过程大约需要1分钟,但回放日志中有2条警告信息:"对象识别较困难(在警告阈值以上)",并给出了识别分数和警告阈值。这是由于Rational Functional Tester所使用的ScriptAssure? 技术认为这两次识别是弱识别,可能存在问题。下面我们来看看具体原因: ScriptAssure技术给各个界面元素赋予了一定的权重,再综合目标对象的各个属性得出一个量化的特征值,便于在对象之间进行比较,因此可以大大提高脚本对频繁变更的应用程序界面的弹性适应能力,ScriptAssure技术的原理并不难懂。打开脚本资源管理器中的对象"document_htmlDocument",可以看到这个对象在识别时,使用到3个属性:".class",".title"和".url",权重各有不同。 权重用来标识这个属性在识别过程中的重要程度,权重为100,表明这个属性非常关键,必须和原值完全一致;权重为0,表明这个属性是无关紧要的。识别分数就是在这些权重的基础上进行一定的运算而得到的。识别对象时,如果有一个权重100的属性值与原值不符,识别分数就要加上"权重×100",即10000分。在这个例子中,录制时使用的是空白的IE页面,而回放时使用的是录制遗留下的搜索结果页面,导致".title"和".url"这两项属性值不符,因此它的识别分数就是".title权重×100"再加上".url权重×100",一共是9000分+4000分=13000分,这就是警告信息里识别分数的由来。 至于警告信息里提到的"警告阈值",可以在Rational Functional Tester "首选项"的ScriptAssure高级选项里修改。缺省值是10000,表明有一个阈值为100的重要属性不匹配。"警告阈值"越小,则意味着识别过程越严格。
对于这一例子而言,使用空白页面和非空页面对结果都没有影响,只要操作对象是浏览器即可,因此我们可以把".title"和".url"这两项属性的权重设为0。修改之后,保存,再回放一次。同样使用刚才的结果页面,但在回放日志里不再有警告信息,而且回放过程也仅仅用了13秒,快速合格地完成了测试。 在录制脚本中,除了有录制时浏览器页面的限制,还有一处隐藏的限制:脚本中没有打开浏览器的操作。如果没有在回放前打开一个浏览器页面,回放操作肯定会失败。幸好Rational Functional Tester的API提供了这样的功能,在所有Java脚本的公共父类com.rational.test.ft.script.RationalTestScript里,有一个方法startBrowser(java.lang.String url),可以用来启动浏览器,并打开某个URL。因此需要在脚本的第一行前加上"startBrowser("");"用来打开一个空白页面,然后再执行其他操作。 通过修改页面对象的识别属性和添加必要的Java代码,我们完成了对脚本内容和录制环境的解耦工作。 二 摆脱时间的束缚 回放时,Java脚本是由Java虚拟机解释执行,进行速度很快;而浏览器的打开,页面的装入则往往由于机器性能、网络带宽、服务器负载而速度缓慢。如果被测程序的运行和脚本执行的时间差过大,极有可能导致测试的失败,因此等待时间是我们应该妥当设置的一个要素。可以在工具级和程序级这两个层次上进行设置。 1) 工具级设置 在Rational Functional Tester "首选项"的"回放"选项里,可以看到四项时间有关的回放设置。缺省的"尝试查找测试对象的最长时间"值为20秒。由于此处设置比较简单,而且是一个对所有项目和脚本都有效的全局设置,因此很难设定一个能满足所有脚本的值。建议接受默认设置,不在这一层上做时间定制,而是去程序级进行更为灵活的控制。 2) 程序级设置 我们可以在程序级上,对脚本做适量的加工。在某些关键操作后加上适当的等待,直到该操作完全执行完毕,再继续之后的操作。"步步为营"地执行脚本,确保每一步的前提都是正确的。 脚本可以使用以下两种方式来添加等待时间:
定长等待
调用Java脚本的公共父类com.rational.test.ft.script.RationalTestScript里的方法:sleep(double seconds)。这一方法可以使回放过程等待若干秒。 这种方式直观、简单。但缺点也是明显的:固定的时间常常不能适应多变的真实环境:等待时间设置得过长,无疑会拉长测试的回放时间,降低效率;等待时间设置得过短,在某些情况下,又无法起到延时应有的效果,仍然错过了被测对象。 不定长等待
脚本记录器记录下的这些页面对象都是从接口com.rational.test.ft.object.interfaces.TestObject继承下来的,在TestObject中有一个方法waitForExistence()可以用以实现不定长的等待。在一定的时间限度内,等待该对象的出现;一旦出现后就不再等待,程序继续往下执行。最大时间限度是在"首选项"的"回放"选项里设置的。不定长等待既达到灵活等待的目的,又没有浪费不必要的等待时间,是一个值得推荐的解决方案。
本例中,我们在脚本中添加了不定长的等待设置,如下:
public void testMain(Object[] args) { startBrowser("");