01

自动化测试与测试自动化

很多人会以为自动化测试和测试自动化这两个概念没有什么不同。但是从我个人看来,这两个概念有本质上的区别。

自动化测试是指使用自动化测试工具代替人工的方式来执行测试用例。使用工具的原因一方面是为了代替人工执行那些简单、重复而枯燥的动作,从而节省人工的时间,让测试人员投入到真正有价值的探索式测试中;另一方面,像性能测试之类的的压测场景我们很难使用人海战术进行测试而只能借助于工具模拟的方式来进行。

测试自动化是指在软件测试全生命周期(STLC:Software Testing Lifecycle)过程中每一个环节都尽可能用自动化的方式来解决。所以它不仅仅关注测试执行过程,还包括测试数据准备、测试环境搭建等等都可以通过自动化的方式实现。

而今天我们要谈的是前者,也就是自动化测试。当我们在IT部门定义自动化测试时,它意味着通过不同的自动化工具在应用程序上执行测试。这些工具可以是开源的,也可以是商业的。

02

什么是自动化测试框架

在我们继续讨论自动化测试框架之前,让我们先了解一下什么是框架。

通常,框架是标准和规则的组合,当遵循这些标准和规则时,企业可以使用它们来获得最大的收益。

类似地,自动化测试框架是用于创建自动化脚本的特定方法,它是一组为自动化提供支持的原则、概念和实践。

自动化测试框架的特点:

  • 在编写脚本时遵循一组严格的原则。这些原则主要关注于减少自动化脚本的维护和提高脚本的质量。

  • 确保自动化脚本具有数据可行性,因此它们可以在各种数据集上执行。

  • 实现可重用、健壮和高效的自动化脚本。

03

自动化测试框架架构与组件

让我们在了解自动化测试框架组件之前先来了解自动化测试框架架构。下图列出了一个最基本的自动化测试框架架构:

一个基础的自动化测试框架体系结构涉及以下主要组件:

驱动引擎

控制其他组件或者工具执行的主要代码。有些框架和执行引擎在同一个工具里面,大部分商业工具都如此,比如QTP/UFT和Tosca;有些框架需要借助外部的测试工具,比如RobotFramework框架集成Selenium或者Appium等。

数据管理

这里提到的数据管理包括三个方面:

  1. 参数管理:需要对输入输出参数进行统一管理,提高脚本可维护性

  2. 环境变量:需要对测试环境变量做到可配置管理,提高脚本的健壮性

  3. 测试数据:测试数据的输入,是否能支持多种文件格式的导入,甚至是数据库直接取数的接口等

对象存储库

保存对象定义的文件。

异常处理

当脚本执行出现错误的时候,需要有异常处理的机制,是继续往下执行还是直接退出?这里需要有处理错误或异常的机制。

执行机制

执行脚本的机制。是否批量执行?是否定时执行?是否可分布式执行?

测试结果及报告

存在两个层面的测试报告:

  • 脚本层面:测试报告是否可以显示每个脚本的执行时间、每个步骤的执行时间、每个步骤的执行结果、错误日志和错误截图等;

  • 任务层面:每个执行任务到底多少脚本执行成功、多少脚本执行失败、百分比如何等等。

以下为某公司的自动化测试框架例子:

04

自动化测试框架的类型

现在您已经理解了什么是自动化测试框架及其组件,让我们来看看不同类型的框架。自动化测试涵盖了一系列测试框架。在这里,我将介绍最常见的类型。

线性自动化测试框架

线性自动化测试框架涉及入门级测试。测试人员依次创建测试脚本并单独运行它们。不需要编写自定义代码。所以测试人员不必是自动化专家。此外,快速的工作流是线性自动化框架最大的优点。

例如:

SystemUtil.Run "flight4a.exe","","","open"Dialog("Login").WinEdit("Agent Name:").Set "ChenXiaoCai"Dialog("Login").WinEdit("Password:").Set "666"Dialog("Login").WinButton("OK").Click'Check Flight Reservation Window has loaded after successful log-onWindow("Flight Reservation").Check CheckPoint("Flight Reservation")

好处:

1. 生成脚本的最快方式
2. 不需要自动化专业知识
3. 了解测试工具特性的最简单方法

坏处:

1. 很少重用脚本2. 测试数据硬编码到脚本中3. 维护的噩梦

模块测试框架

基于模块的测试框架将测试用例分解为小模块。然后,它遵循非增量和增量的方法。在那里,首先对模块进行独立测试,然后对整个应用程序进行测试。这使得每个测试都是独立的。

此外,一旦测试人员编写了函数库,您也可以在其中存储脚本。由于您可以轻松地在单个脚本中进行更改,因此不需要调整整个应用程序。因此,测试需要更少的时间和精力。

好处:

1. 该框架引入了高水平的模块化,这使得维护更容易、更经济。2. 这个框架是可扩展的3. 如果更改是在应用程序的某个部分中实现的,那么只需要修复表示该应用程序的那个部分的测试脚本,以保持所有其他部分不变。

坏处:

在为每个模块分别实现测试脚本时,我们将测试数据(我们应该使用这些数据执行测试)嵌入到测试脚本中。因此,无论何时我们需要使用不同的测试数据集进行测试,都需要在测试脚本中进行操作

库架构测试框架

使用库架构测试框架,框架识别测试脚本中具有相似性的任务。之后,测试人员根据功能对类似的任务进行函数封装。然后,库存储所有排序后的函数。因此,它促进了代码在不同测试脚本之间的可重用性。

例如,我们可以把登录作为一个公共的函数

Function Login()SystemUtil.Run "flight4a.exe","","","open"Dialog("Login").WinEdit("Agent Name:").Set "ChenXiaoCai"Dialog("Login").WinEdit("Password:").Set "666"Dialog("Login").WinButton("OK").ClickEnd Function

接下来就可以在其他地方调用

Call Login()---------------------------Other Function calls / Test Steps.---------------------------

好处:

1. 与“记录和回放”相比,结构化脚本实现了更高级别的代码重用。2. 由于更高的代码重用,自动化脚本的开发成本更低3. 简单的脚本维护

坏处:

1. 使用测试库框架编写脚本需要专业的技术知识。2. 需要更多的时间来计划和准备测试脚本。3. 测试数据硬编码在脚本中

数据驱动测试框架

数据驱动的测试框架隔离测试脚本逻辑和测试数据。之后,它在外部存储数据。这里,目标是为测试不同的数据集创建可重用的测试脚本。测试人员可以更改数据以更改测试场景。这确保了代码的可重用性。

例如:

1. 首先先在CSV、Excel文件或者其他数据源创建测试数据列表

AgentName

Password

Jimmy

Mercury

Tina

MERCURY

Bill

MerCURY

2. 编写脚本,登录名和密码与数据源匹配

SystemUtil.Run "flight4a.exe","","","open"Dialog("Login").WinEdit("Agent Name:").Set DataTable("AgentName", dtGlobalSheet)Dialog("Login").WinEdit("Password:").Set DataTable("Password", dtGlobalSheet)Dialog("Login").WinButton("OK").Click'Check Flight Reservation Window has loadedWindow("Flight Reservation").Check CheckPoint("Flight Reservation")**Note "dtGlobalSheet" is the default excel sheet provided by QTP.

好处:

1. 对测试脚本的更改不会影响测试数据

2. 可以使用多个数据集执行测试用例
3. 只要更改外部数据文件中的测试数据,就可以执行各种测试场景

坏处:

需要更多的时间来计划和准备测试脚本和测试数据

关键字(数据表)驱动测试框架

关键字驱动的测试框架将脚本逻辑从测试数据中分离出来。然后,它在外部存储数据。之后,它将关键字存储在不同的位置。与动作测试GUI相关的关键字是测试脚本的一部分。关键字将自己与对象或操作相关联。因为测试人员可以在不同的测试脚本中使用相同的关键字,所以它提高了可重用性。

一个关键字驱动框架有3个基本组件,即关键字、应用程序映射、组件功能。

什么是关键字?

关键字是可以在GUI组件上执行的操作。比如:对于GUI组件文本框,一些关键字(动作)是InputText, VerifyValue, VerifyProperty等。

什么是应用程序映射?

应用程序映射为GUI组件提供命名引用。应用程序映射只不过是“对象存储库”

什么是组件函数?

组件函数是那些主动操作或查询GUI组件的函数。函数的一个例子是,点击web按钮进行所有错误处理,在web编辑中输入数据进行所有错误处理。组件函数可以依赖于应用程序,也可以独立于应用程序。

例如:

步骤1:创建数据表(不同于在数据驱动框架中创建的测试数据表)。这个数据表包含要在GUI对象上执行的操作和相应的参数(如果有的话)。每一行代表一个测试步骤。

Object

(Application MAP)

Action

(KEYWORDS)

Argument

WinEdit(Agent Name) Set ChenXiaoCai
WinEdit(Password) Set 666
WinButton(OK) Click
Window(Flight Reservation) Verify Exists

步骤2:以组件函数的形式编写代码。

一旦创建了数据表,只需编写一个程序或一组脚本,读取每个步骤,根据包含Action字段的关键字执行步骤,执行错误检查,并记录所有相关信息。这个程序或脚本集将看起来像下面的伪代码:

Function main(){  Call ConnectTable(Name of the Table) { //Calling Function for connecting to the table.    while (Call TableParser() != -1) //Calling function for Parsing and extracting values from the table.    {      Pass values to appropriate COMPONENT functions.Like Set(Object Name, Argument) ex.Set(Agent Name, Guru99).    }  }  Call CloseConnection() //Function for Closing connection after all the operation has been performed.} //End of main

优点:

1. 提供高的代码可重用性2. 测试工具的独立3. 独立于测试中的应用程序,相同的脚本适用于AUT(有一些限制)4. 测试可以使用或不使用AUT进行设计

缺点:

1. 初始投资相当高,只有当应用程序相当大并且测试脚本要维护好几年的时候,才能实现这种好处。2. 创建关键字驱动框架需要很高的自动化专业知识。

混合测试框架

混合测试框架可以减少不同测试框架的缺陷。它通过组合不同框架的部分来利用这些优势,从而提供了灵活性。因此,测试的效率也得到了提高。

比如,登录的脚本如下:

SystemUtil.Run "flight4a.exe","","","open"Dialog("Login").WinEdit("Agent Name:").Set "ChenXiaocai"Dialog("Login").WinEdit("Password:").Set "666"Dialog("Login").WinButton("OK").Click'End of Script

现在您可以在主脚本中调用这个操作,如下所示:

RunAction ("Login[Argument]", oneIteration)

05

测试自动化框架的好处

为什么我们有了自动化测试工具之后还必须需要使用自动化测试框架?因为自动化测试框架可以提供很多好处:

1. 优化的资源

测试框架有助于优化资源。它通过根据组织需要促进不同资源的使用来做到这一点。

例如,为了实现既定的目标,测试自动化框架提供了一组过程。这些流程必须将资源与需求匹配起来。采用的灵活性越高,资源优化就会越好。

2. 增加测试量

测试自动化框架增加了测试量。例如,新的移动设备每隔一天就会出现。不可能对所有对象执行手工测试。即使一家公司成功地做到了这一点,也要花很长时间。但是自动化测试使测试人员能够同时在数千个移动设备上运行测试。

3.同时测试

测试自动化框架支持同时测试不同类型的设备。当测试脚本被自动化时,所有测试人员需要做的就是在不同的设备上运行它们。由于参数相同,测试人员可以快速生成比较测试报告。

4. 提高速度和可靠性

编写和运行测试对于任何软件公司来说都是非常耗时的。测试自动化框架减少了执行这些活动的时间。假设您正在测试网站的注销功能。如果有多个测试场景,对于每个场景,您都必须手动测试注销功能是否正常工作。但是如果您正在使用一个框架,您可以同时运行所有的场景并在很短的时间内获得测试结果。此外,由于使用了自动化工具,自动化测试更加可靠。这减少了出错的机会。

5. 用更少的时间产出更多的产品

测试自动化减少了同步、本地配置、错误管理和报告生成方面的挑战。自动化脚本最小化了准备和运行测试所花费的时间。随着效率和速度的提高,企业可以在更短的时间内获得更多的产出。

6. 在早期阶段修复bug

测试自动化框架有助于在早期阶段修复bug。你不需要太多的人力来为你执行,这意味着工作时间和费用也减少了。测试自动化工程师可以编写脚本并自动化测试。

7. 远程测试

有了测试自动化框架,就没有必要每天24小时呆在办公场所。例如,您可以在离开之前开始运行一个测试。几小时后你回来时,测试结果就会出来了。此外,你不需要买很多设备,因为你可以远程测试。

. 可重用的自动化代码

您可以在不同的应用程序中重用测试自动化脚本。假设您的组织的测试人员编写了一些脚本来测试登录功能。您可以对另一个具有登录功能的应用程序使用相同的脚本。

10. 增加ROI

测试自动化框架中涉及的初始投资对许多人来说是令人不快的。但长期投资回报率很高。正如前面所讨论的,测试自动化框架可以节省时间并促进快速交付。它还减少了对更多员工的需求。

例如,如果测试框架是自动化的,那么一个公司就可以测试人员投入到更有价值的事情上,提高ROI。测试自动化工程师可以执行大多数任务,比如配置框架或运行脚本。

如果您还想了解更多的知识,可以关注下面二维码:

关于作者

uft自动化测试工具安装步骤_你需要了解的自动化测试框架知识相关推荐

  1. uft自动化测试工具安装步骤_自动化功能测试和接口测试工具整理

    对于自动化测试,原来谈这方面的内容比较少,但是现在我们做DevOps支撑平台的时候,在整个持续集成和交付的过程中,有一个重要的内容就是自动化测试.自动化测试的覆盖面相当大,其中既包括了CS,BS和移动 ...

  2. uft自动化测试工具安装步骤_自动化测试灵魂三问:是什么、为什么和做什么

    什么是自动化测试 在软件测试领域,有两种测试技术:「手动测试」和「自动测试」.两种方法都旨在执行测试用例,然后将实际结果与预期结果进行比较. 概括来讲手动测试是一种人工执行操作的测试技术,可确保软件代 ...

  3. uft自动化测试工具安装步骤_2020年十大最佳自动化测试工具

    Best Automation Testing Tools for 2020 对更快交付高质量软件(或"快速质量")的需求要求组织以敏捷,持续集成(CI)和DevOps方法论来寻找 ...

  4. uft自动化测试工具安装步骤_10款好用的自动化测试工具

    我们都希望为 Web 应用程序构建易维护的测试.作为这个目标的一部分,我们都希望能集中精力在测试本身,而尽量避免困在实施的具体细节中.从长远来看,测试应该是可维护的,对软件定期的变更并不会破坏测试本身 ...

  5. arcgis超级工具安装教程_【软件安装管家】Autodesk卸载官方工具安装教程

    点击上面"蓝字"关注,获取更多资源!用心分享 一黑一白我不是灵魂导师一个分享软件/影视/音乐/网站/教程的公众号星标/置顶公众号?因公众号改版,不再按时间推送文章,为不错过最新资源 ...

  6. vatic标注工具安装步骤(非docker安装)以及错误解决办法

    Vatic标注工具安装步骤(非docker安装)以及错误解决 1.安装参考 2.安装步骤 2.1.环境介绍 2.2.下载Vatic 2.3.配置Apache 2.4.配置MySQL 2.5.配置/安装 ...

  7. 服务器如何安装虚拟声卡,虚拟声卡驱动安装步骤_虚拟声卡驱动有什么使用要求...

    这音频设备应用过程中经常是需要使用一些虚拟声卡驱动软件的,因为只有有了这种软件的支持,对于没有内录功能的笔记本电脑也是特别有用的一种工具.使用虚拟声卡驱动软件过程中,非常方便的让用户用来架设虚拟的线路 ...

  8. 【NVM】node多个版本管理工具安装步骤以及使用

    1.什么是nvm? nvm是一个管理nodejs版本的工具.在实际的开发中,有些项目的开发依赖需要不同版本的nodejs运行环境,此时我们就需要使用nvm来管理nodejs版本. 2.安装步骤 2.1 ...

  9. Vue开发者工具Vue.js devtools Vue开发者工具安装步骤 包含Vue2 和 Vue3

    保存一下操作步骤,这是Vue2的,最后有Vue3的 下载地址: https://wwm.lanzoul.com/iu4tS04cfeja   密码: vue_wt 安装步骤: 以谷歌浏览器为例 第一步 ...

最新文章

  1. 浙江万里学院计算机专业宿舍,浙江万里学院宿舍条件,宿舍几人间环境好不好(图片)...
  2. servlet的线程安全性问题
  3. mysql查询case when_【原创】关于MySQL高级查询–case when
  4. C++ 类模板语法初步01
  5. SpringCloud(三)之Feign实现负载均衡的使用
  6. UVA 12716 GCD XOR(数论+枚举+打表)
  7. 决策者根据什么曲线做出决策_如何在开放社区中做出品牌决策
  8. 基于频繁增长树(FP-树)的频繁项集挖掘算法实现
  9. Google 今天抽风了!
  10. Linux 进程间通信的六种机制
  11. html中图片动态效果代码,动态网页设计代码 网页制作动态图片效果源代码
  12. 最近不少朋友问WPS专业版,再发一次
  13. 地图上如何量方位角_野外怎样确定方位 户外辨别方向和位置的方法有哪些?...
  14. Oracle XDB 组件 重建 说明
  15. 大招:召唤最优的多因素cox模型
  16. 联想ThinkPad笔记本Fn键关闭与启用方法
  17. php normalize,PHP DOMNode normalize()用法及代码示例
  18. aruba无线轻轨项目
  19. ROM制作工具如何开通超级会员?超级会员体系有什么样的功能?
  20. SwingUtilities.invokeLater

热门文章

  1. Spark学习笔记(三):使用Java调用Spark集群
  2. Apache Mina
  3. 请求消息详解(请求头、get、post、请求体)
  4. ERROR 1045 (28000): Access denied for user ‘scan‘@‘localhost‘ (using password: NO) 解决;mysql8 2023
  5. 分裂布雷格曼方法--(Split Bregman Method)
  6. matlab lyapunov指数,matlab编写Lyapunov指数计算程序.doc
  7. word 制表位之mythtype公式编号右对齐
  8. 通信系统的正交调制(IQ)解调与希尔伯特变换原理
  9. 印能捷服务器系统怎么装,Prinergy印能捷JTP全自动建立工具(32/64bit)
  10. 复数值神经网络matlab,【原创】复数神经网络的反向传播算法,及pytorch实现方法...