RF自动化测试系列-第一篇 前言

版权声明:博主原创,转载请注明原作者及出处。

背景介绍

Nokia在大家的印象中是不是已经淡忘了呀?其实也正常,自从Nokia手机业务失利以来就慢慢的淡出公众视线。但是她一直都在默默的努力,专心致志耕耘电信设备市场,为全球移动运营商提供设备和服务。目前市场份额是仅次于华为的第二大电信设备商。 扯远了:),回归正题,大家也许知道Robot Framework最初是Nokia 网络部门设计开发的,那时手机部门还是如日中天,网络部门就是负责电信设备这块。为了适应当时的敏捷开发,测试需要做回归和持续集成,自动化需求变得很迫切。Robot 在那时便应运而生并得到大家的一致喜爱,后推广至全公司乃至现在开源到全社区。在国外各大软件厂商也得到广泛应用,但是在国内貌似知道和使用的人并不是很多, 这跟国内大多数中小企业不太重视测试有关吧,尤其是从开发到打包到集成到测试到发布全自动的一体化流水线不是每个企业都愿意投入人力物力。

自动化测试发展史

自动化测试,顾名思义是指软件测试的自动化。是把以人力驱动的测试行为转化为机器执行的一种过程。通常,在设计了测试用例并通过评审之后,由测试人员根据测试用例中描述的规程一步步执行测试,得到实际结果与期望结果的比较。在此过程中,为了节省人力、时间或硬件资源,提高测试效率,便引入了自动化测试的概念。自动化经历了下面一些阶段:

一、记录回放。记录回放的方式流行于商业工具之中,无需编程技能即可快速上手。然而这种方法相对脆弱,一旦被测试对象发生变化测试就会受到影响,分散的脚本不可重用且难以维护,而且系统在测试前必须可用,这也就意味着无法使用验收测试驱动(ATDD)的开发方法。因此这种方法并不适合大型自动化测试。

二、线性脚本。线性脚本允许使用各种语言来编写非结构化脚本,脚本直接与被测系统交互。能够快速上手,灵活性强。但是编写脚本需要编程技能,测试脚本本身的质量也没有别的测试系统保证。被测系统中一个改动通常会影响多个脚本,没有经过模块化或重用的大量脚本难以维护。因此这种方法适合简单任务,不适合大型自动化。

三、模块化脚本。模块化脚本由两部分组成:驱动脚本执行测试,测试库函数完成与被测系统交互。驱动脚本编写起来非常简单,这样可以更快地建立新测试,容易维护。然而需要花时间和编程技能建立测试库,并将测试数据嵌入脚本,建立新测试就需要新的测试脚本。因此,只要拥有编程技能,这种方法还是适合大型项目,但不适合非编程人员。

四、数据驱动方法。将数据与测试脚本分离,基于模块化的测试库,一个驱动脚本可以执行多个相似测试,这样非常容易建立新测试。维护工作可以分离,测试人员负责数据,程序员负责写测试库。然而,不同类型测试仍需要新的驱动脚本,初始建立数据解析器和重用组件需要花人力。这种方法适合大型项目,只需要较少的编程技能。

五、关键字驱动。将数据与关键字结合来描述如何使用数据执行测试。这种方法具备数据驱动的优势,同时非编程人员也能建立新类型测试。所有测试由同一个框架来执行,无需不同的驱动脚本。然而初始成本很大,但是可以使用开源方案。因此非常适合大型项目。

TDD与ATDD

TDD – 测试驱动开发(Test-Driven Development),是敏捷开发中的一项核心实践和技术,也是一种设计方法论。指在开发功能代码之前,根据需求先编写具体的测试用例,而后编写产品代码使测试用例成功执行。从而用测试用例来驱动编写什么样的产品代码。这种开发方法能有效避免提交一些不是为了某个需求而写的冗余代码。

ATDD - 验收测试驱动开发(Acceptance test–driven development),是指用户或产品经理、 开发、测试三方在开发软件之前一起讨论制定出每个需求的验收标准,并总结提取出一组验收测试用例。然后开发根据测试用例用TDD方式编写产品代码。与此同时,测试人员也根据测试用例编写自动化测试脚本或手动测试步骤。当产品代码通过了所有的测试用例就表示这个需求开发完成。

TDD一般只涉及开发者本人以及和他结对的开发人员。如果开发人员对业务需求理解不正确,写出的测试用例也是错误的。 ATDD是用户、开发、测试三方大家一起讨论出的验收标准和测试用,能有效的保证大家对业务需求的一致理解。

Robot Framework测试框架

Robot是践行ATDD的利器,是一个基于Python编写的关键字驱动的自动测试框架。他具有良好的扩展性,端到端的ATDD验收测试驱动开发的自动化框架。可以用于UI界面、接口、服务、web应用等各种常见软件系统的自动化测试工作。下面是一些Robot的主要特性:

  • 方便好用的基于表格方式创建测试用例
  • 能够基于现有的关键字创建用户自定义的关键字
  • 能对测试用例打不同的标签进行分类,以便于在不同的测试级别跑不同的用例
  • 测试报告用HTML分级方式呈现,易于阅读检查。
  • 支持创建数据驱动的测试用例
  • 可以运行于各种操作系统和应用平台
  • 开放的测试库开发接口。用户可以用java或python创建自己的测试库。
  • 提供命令行运行接口和XML格式的测试报告,易于和各种持续集成平台集成。实现提交代码后自动触发运行测试并快速返回测试报告。
  • 支持用Selenium进行web测试、Java图形界面、Telnet、SSH等的测试

前言就说到这里吧,下一节预告:RF系统架构介绍

展开阅读全文

没有更多推荐了,返回首页