`
saybody
  • 浏览: 903135 次
  • 性别: Icon_minigender_2
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

开发自动化测试脚本的技巧和心得

阅读更多
--- 原著Jose FajardoTips and Hints for Developing Automated Test Scripts
---Kiki翻译于2005/7/22
作者在本文中描述了一些构建更易维护的和健壮的自动化测试脚本的技巧。作者给那些使用自动化测试工具并且为将来测试工作而建立自动化测试脚本库的测试人员提供了有价值的远见。本文提供了许多在文档化测试脚本,调试测试脚本,执行测试脚本的同行评审和同步测试脚本方面的建议。
增量式调试脚本
录制测试脚本,和其他的软件开发成果一样,会变得非常大。为了可以成功的回放,需要调试几百行的代码,为了参数化的数据驱动测试脚本,它可能包含了几个数据集。常见的调试测试脚本方法是首先录制所有的业务流程和需求,然后测试人员回放测试脚本以验证并纠正问题。测试人员继续调试脚本直到它和可以一(或多)组数据集一起成功地回放。
当测试脚本有成百的代码行,验证点,分支的逻辑,错误处理,参数和数据在多个已录制的业务流程之间的相关性时,调试并且解决测试脚本中的问题变得特别的乏味和难以处理。对于调试那些复杂且又冗长的测试脚本,一个更加容易管理的方法是录制脚本的一部分并且在录制测试脚本的其他部分之前分开调试他们。在测试单个的部分后,你可以决定测试脚本的一部分如何和另一部分工作和数据如何从一个已录制的流程流向其他的流程。在测试脚本的所有部分都录制后,测试人员就可以回放整个测试脚本,并确保脚本同一个或多个数据集一起从头到尾被正确地回放了。
举个例子,我录制并自动化了一个执行了以下业务流程的复杂的测试脚本:
  1. 检查在货仓中的库存
  2. 执行一次MRP运行
  3. 补充库存
  4. 挑出一些要发送的货物并且进行发货
  5. 确定交货需要移交的订单
  6. 验证发送的货物到达了它们的目的地。
这个测试脚本有一些代码行,参数,验证点和需要象一个整体一样工作的数据相关性。首先我录制了每一个单独的流程并且验证了他们分别可以成功的回放。然后我将所有录制好的流程集成尾一个大的测试脚本并且验证它同多个数据集一起能够成功的回放。如前面所述,一个关键的目的是确信在继续录制整个测试脚本的剩余部分之前每一个已录制的流程可以成功的回放。我没有录制所有提及的流程(从1到6)并把它们排列一起回放,而不首先验证所有的流程可以作为单独的流程成功的回放。
这部分是为了避免等待调试脚本,直到整个测试脚本录制好。

测试脚本的同步
测试工具会用比终端用户手工按键快的多的速度回放已录制的测试脚本。接着由于应用程序可能不够快地显示数据或从数据库取出数值以允许测试脚本正确地回放,这可能会击垮所测试的应用程序。当测试地应用程序不能响应测试脚本时,脚本执行会突然中断,然后需要用户干涉。为了同步所测试应用程序和回放中地测试脚本,测试小组在已录制的测试脚本中引入了人为的等待时间。为了放慢测试脚本的执行,嵌入在测试脚本中的等待时间是最任意的且通过试验和错误最佳估计。等待时间主要的问题是它们要不是等的太长就是不够长时间。
例如,测试人员或许注意到对于所测试的应用程序测试脚本回放得太快。他可能打算放慢它几次直到测试脚本执行和测试的应用程序相同步。这个技巧可以会造成相反的结果-甚至失败-如果在测试执行时,由于外部的因素(例如网络有延迟或系统维护)导致应用程序运行比新引入的等待时间更慢。在这种情况下,每次测试人员将不得不不断的猜测一个新的合理的等待时间。用等待时间放慢脚本不是十分科学的,并且对于创建强健的,在没有用户干涉情况下能够成功运行的自动化测试脚本没有什么帮助。
如果有可能的化,测试人员应该避免引入人为的等待时间或任意的sleep变量以使测试脚本和应用程序同步。
"While"语句或嵌套的"loops"语句是用于同步需要同步点的测试脚本且不管所测试程序的响应时间都可以成功回放的正确的技术。在测试脚本种插入嵌套的loops或“while”语句也可以减少在测试脚本回放时用户的干涉。例如,我插入"while"语句在录制好的测试脚本里,不断按Enter键直到创建了一个计划中的协议,不管所测试应用程序要花多长时间产生协议。测试脚本不依赖所测试应用程序的响应时间工作。

已签核,通过了同行评审
作为测试准备审核标准的一部分,测试脚本应该被正式的接受并且在开始测试循环之前被批准。SMEs, 业务分析人员和开发人员都应该参与到批准已录制的测试脚本中。编写已自动化的测试脚本的测试人员应该证明测试脚本可以成功的在QA环境中回放,如果有可能的话,可以带上多种数据集。

录制、回放隐藏的对象
脚本可能被录制为增加或是双击表格中一个字段或字段位置没有被固定的一个数组的值。如果表格或数组中字段的位置从开始录制时就不断地变化,脚本可能在回放时会失败。测试脚本经常在回放中失败就是因为那些没有显示或在屏幕中可见的对象的位置发生了改变。
为了回放那些位置敏感或位置受变更影响的脚本,有必要用功能性增强脚本,例如“向下滚屏”,“下一页”或“查找”。包含这些实用性功能可以确保需要回放的隐藏对象将可以被识别,增加或是双击而不顾其在矩阵,表格,显示的屏幕上的位置。
举个例子,我曾经录制果一个脚本,在最初录制时它需要向下滚屏两次来查找一个可以在表格中输入的空字段。当我在几个星期之后回放它时,我不得不向下滚屏四次来查找空字段,而不是相之前录制的两次。接着脚本失败了,因此我在脚本中嵌入了逻辑判断以指导脚本向下滚屏需要的次数来查找一个空字段。我通过在一个“while”循环中放置一个“下一页”("next page")功能实现了这个目的,它可以驱动脚本不停的“下一页”(page down)直到找到空字段。

安排重运行脚本/储存执行日志
为了绕过测试工具不能在安排测试脚本重运行的局限,测试人员可以通过可以支持多种命令行选项的NT的scheduler安排测试脚本。测试百年应该将执行日志存储在一个共享的驱动盘或针对审核的测试结果的测试管理工具中。

为关键的脚本创建自动的消息通知
可以用错误处理程序逻辑增强测试脚本,当错误发生时它可以不断的发送错误信息给无限设备或email地址。一些测试脚本是关键性的业务并且可能在午夜批量地运行。正确并成功运行这些关键性业务的测试脚本会作为其他自动化任务的一个依赖或者前提条件。
通常也包括在关键业务脚本中一旦出现失败时自动发送消息通知的逻辑。

编制文档
为了使测试脚本可重用并且更容易维护,文档化所有和执行测试脚本,测试脚本的头文件,任何执行测试脚本的特殊条件相关的信息,例如:
  1. 为了关闭书本调整所测试应用程序中的日期
  2. 更新任何需要唯一数据的字段
  3. 为了环境判断模式(context sensitive)/ 模拟模式(analog) /位图录制,调整显示器设置
  4. 列出所有有依赖的测试脚本
  5. 指出为了执行脚本需要的权限级别或用户的角色
  6. 在什么条件下脚本会失败,以及重新运行脚本的绕行方法
  7. 需要在脚本运行过程中打开或关闭的应用程序
  8. 指明数据的格式,例如,欧洲日期格式VS美国日期格式,等等
此外,脚本中需要包含一个描述(例如,它是干什么用的)和特别用途(例如,回归测试)的文件头。脚本的文件头应该包括脚本的作者,所有者,创建和修改日期,脚本可以追溯到的需求识别符,脚本所支持的业务范围,脚本中的变量和参数数量。在测试脚本中提供这些信息使以后的测试工作中的脚本的执行,修改和维护更容易些。

实行测试脚本的版本控制
许多公司花好几万英镑购买测试工具,但是却忽略了测试工具的副产品-录制好的测试脚本。为了公司构建中的自动化测试脚本的库和存储库,强烈建议对自动化测试脚本实行版本控制。版本控制帮助追踪测试脚本中的变更,并可维护同一测试脚本的多个版本。

坚持测试脚本命名标准和存储
测试脚本应当遵循项目公认的命名标准,并且应该存储在指定的库中,例如一个共享的驱动盘或测试管理工具中。

测试经理应当指明包括如下方面的测试脚本命名标准:
  1. 项目的名称(例如,GSI代表着Global SAP Implementation)
  2. 版本号(例如,即将发布或部署的版本号)
  3. 主题或测试种类(例如,SC代表安全测试,LT代表负载测试)
  4. 有序的测试用例编号
  5. 标题或将要测试的功能(例如,来自外部供应商的采购业务)
遵循这些技巧使测试人员能够为他们的组织构建更强健的测试脚本。当然,开发可维护的测试脚本最大化自动化测试工具的效益。当自动化测试脚本用在以后的测试工作中,减少了完成一个测试循环所需要的时间时,公司就可以意识到自动化测试工具带来的投资回报(ROI)。以上的技术将帮助公司构建符合这些目标的测试脚本.
分享到:
评论

相关推荐

    软件测试中开发自动化测试脚本的技巧和心得

    技巧心得软件测试中开发自动化测试脚本的技巧和心得自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常,在设计了测试用例并通过评审之后,由测试人员根据测试用例中描述的规程一步步执行测试,得到...

    自动化测试下载

    本文将探讨在开发自动化测试脚本过程中的一些关键技巧和心得,旨在帮助测试工程师们提升自动化测试的效果。 #### 二、调试测试脚本:分段调试的重要性 1. **增量式调试**:对于复杂的测试脚本,传统的做法是一次性...

    selenium2 python自动化测试项目实战

    结合Selenium2,可以构建出高效稳定的Web自动化测试脚本。 #### 二、自动化测试的重要性 随着软件开发周期的加速,**自动化测试**变得越来越重要。它不仅能提高测试效率、减少人力成本,还能确保软件质量的一致性...

    自动化测试

    - **实战经验**:通过对少量脚本的编写实践,作者总结了一些宝贵的经验教训,旨在帮助新手更快地掌握自动化测试脚本的编写方法和技术要点。例如,通过了解如何发送消息、如何构造输入参数以及如何处理设备的响应等,...

    selenium java自动化测试实战

    2. **测试脚本编写**:使用Java语言结合Selenium WebDriver API编写自动化测试脚本。 3. **元素定位**:学习如何使用Selenium定位页面元素,包括通过ID、name、class name、CSS选择器和XPath等方式。 4. **测试用例...

    软件测试实习生的心得体会.doc

    - **自动化测试工具**:熟悉至少一种自动化测试工具的使用。 - **测试培训经历**:优先考虑有专业测试培训背景的实习生。 实习的意义在于: - **理论与实践结合**:实习帮助学生将课堂学习的工商管理理论应用于...

    QTP中文手册+自动测试框架+saffron

    QTP,全称为QuickTest Professional,是HP(现已被Micro Focus收购)开发的一款自动化测试工具,主要用于功能测试和回归测试。这款工具以其易用性和强大的功能,在IT行业中尤其是在软件测试领域有着广泛的应用。QTP...

    软件测试实习生的心得_实习生年度工作总结.docx

    3. 对安卓系统有一定的了解,熟悉常用工具和命令,这有助于进行手动和自动化测试。 4. 具备一定的自动化测试工具使用经验,如Appium、Junit等,可以提高测试效率。 5. 优秀的沟通技巧,以便与开发团队有效协作。 6. ...

    ration robot软件测试工具

    - **持续集成**:定期将测试脚本与持续集成系统集成,实现自动化测试。 总结,Rational Robot作为一款专业的软件测试工具,其强大功能和易用性使其成为软件测试人员的得力助手。通过深入学习和实践,新手可以快速...

    软件测试实习生的心得_实习生年度工作总结.pdf

    实习生还需要了解安卓系统的基本工具和命令,以及熟悉自动化测试工具的使用,这可以提高测试的覆盖率和速度。如果有过专业测试培训的经历,将对实习工作大有裨益。 软件测试实习生的实践不仅仅是技术上的锻炼,更是...

    零基础自学软件测试

    学习如何使用Selenium、Junit等工具进行自动化测试脚本的编写,提高测试效率。 5. **性能测试**:了解压力测试、负载测试和耐久测试的目的,学习使用JMeter或LoadRunner等工具进行性能测试。 6. **缺陷管理**:...

    loadrunner 和 qtp 的一些资料

    QTP,现已被命名为UFT(Unified Functional Testing),是HP开发的一款功能自动化测试工具,主要用于回归测试和回归验证。QTP支持多种技术环境,如Web、桌面应用、移动应用等。它利用对象识别技术和智能关联功能,...

    QTP学习与实践经验总结

    QTP,全称为QuickTest Professional,是HP(现被Micro Focus收购)开发的一款自动化测试工具,主要用于功能测试和回归测试。本资料集“QTP学习与实践经验总结”包含三份文档,分别命名为“QTP学习与实践经验总结1....

    微信短文

    2. 软件测试:介绍QTP(UFT)的自动化测试原理和操作步骤,如何创建和执行测试脚本。 3. 测试策略:如何利用QTP进行功能测试和回归测试,以及如何优化测试流程。 4. 编程语言:QTP通常基于VBScript编程,因此可能...

    微软的软件测试之道

    - SDET的职责还包括自动化测试脚本的编写、性能测试、安全性测试等。 2. **微软测试工程师的职称变迁**: - SDET这一职位名称并不是一开始就存在的,在微软的历史上,测试工程师的角色经历了多次演变。 - 从最初...

    软件测试工程师面试题

    - **效率提升**:团队工作可以实现任务的合理分配,例如,自动化测试脚本的编写、手动测试案例的设计等,这有助于提高测试效率。 - **多视角覆盖**:不同背景的测试工程师可以从各自的视角发现问题,这种多样性的...

Global site tag (gtag.js) - Google Analytics