如何实现工具无关化?——关于自动化测试脚本的设计

news2024/11/27 2:21:36

问题的提出

最近几年来,我的自动化测试工具之旅大致是这样的,最早用的是QTP,然后是RFT(IBM的功能测试自动化产品),之后也经历了Selenium,Watir等。再后来还是一些商业工具,主要是偏web自动化及移动自动化,如sahi, appnium, Keynote DeviceAnywhere,SeeTest,HP UFT等,这一系列的变化,让人痛苦的不是学习的过程,也不是各种编程语言的转换,最痛苦的是我们的自动化测试脚本要因为工具的变化而需要重写。因为无法重用,我们或是维护多种自动化工具脚本,或是将自动化测试脚本为最近使用的工具进行重写编写,有太多的时间和经历花在这些事情上。

在这里插入图片描述

我们怎么解决这类问题呢?试想,如果我们能够有这样一个平台,如果提供统一的自动化编程API,而且独立于某种工具,那该有多好。所以本文的目的要设计这样一个平台,能够对自动化测试人员提供统一的编程接口,能够适应测试工具的变化,而无须修改已经基于此平台编程好的自动化测试脚本。

如何实现工具无关化

首先,我们要考虑工具无关化,如果要实现工具无关化,那么对于使用者(自动化测试脚本实现者)一定是使用一致的api,一致的测试元素,一致的数据访问方式。那么我们先要考虑一下测试元素的一致性。

这里我们先假设未来的待测试应用都是web应用或是mobile应用,而mobile应用我们使用的都是hybrid应用。对于测试元素来讲,最重要的是如何能够识别它,我们在识别元素的时候,都会找到一个唯一id或属性来标识它。来看我们上边假设的应用,我们可以使用xpath来做为唯一id来识别元素。你可能根据自已实际场景来设计和定义它。除此之外,为了能够操作元素,我们需要知道它的名字,因此我们还需要为它命名。除此之外,我们还需要使用一个类型字段来区别不同工具之间可能对测试元素有些特别的要求,我们通常使用type字段来标识它。所以我们从逻辑上来看,一个工具无关的测试元素大致看起来是这样的。

图片

对于测试数据来讲,我认为,每个数据都是有一个列和一个值组成,所有数据看起来比较简单。

图片

数据有一点需要注意一下,如果我们要实现数据驱动的自动化测试,我们就需要在此平台提供处理多行数据能力。

有了测试对象和测试数据之后,我们需要了解我们的待测试应用,我们的平台需要对待测试应用使用之前进行一些配置,使用时还要进行一些初始化等工作,使用完我们还会对些进行一些清理销毁等工作。如此一来,我们的平台需要考虑如何进行测试设置工作,因为未来我们平台面对可能各种不同的测试工具,那么在这里我们也需要在些考虑好一致的接口。所以此部分看来如下所示:

图片

对于测试元素的操作,我们通常会使用类似 click,setValue 等一些点击、填值的操作,我们同时还会检查一些测试元素是否在页面中存在,也会检测一个测试元素是否展示在屏幕上。我们可以将些部分统一归结为 action。所以对象的 action 看起来如下所示:

图片

除了 action 之外,我们的平台还要提供 checkpoint 功能,此功能是为了能够让我们脚本有能力判断最近测试结果是通过还是失败。即有一个 checkpoint 失败了,整个测试脚本就是失败状态。Checkpoint 的功能使用起来极其简单,我们需要为其输入两个参数,一个为 expect,一个为 actua,二者进行比较并返回比较结果。这里需要强调的一点是,我们设计 checkpoint 时,要使其能够为其二个参数可以自适应到各种数据类型,因为我们实际应用时,有时会使用两个布尔值进行判断,有时可能会使用两个字符串进行判断,也可能我们可能直接将两个对象传过来进行比较。所以这里我们要让其能够自适应。

讲到这里,我们的平台还需要至少要有的一个功能是 report,我们的 report 要能够展示测试脚本最终是通过了还是失败了。同时能够记录每个步骤的状态,能够截屏。当然,如果 report 能够提供更多的 metric 数据就更好了,方便未来计算 ROI。

到这里我们都是讲的都是对外提供的统一的 API,从使用的角度,这些已经基本够用了。但是对于工具来讲,我们要实现工具无关化,可能会简单一些,但是实际做的时候还是比较麻烦的。因为我们需要针对我们平台支持的每一套测试工具编写接口,使其在外边看起来是一样的。所以平台这边说起来是简单的,但实现工作量还是比较大的,因为每套工具都有其复杂性,再次封装后并提供统一的简单易用接口并非总是那么容易。所以编写接口的人,必须是对其封装的工具是极其熟悉的,并且有丰富的实际应用经验,因为这样才能为使用者写出他们真正所需的接口。

总结

以上大致讲解了要实现一个工具无关的自动化测试平台所应该具有的最少元素集合。在实际应用中,我们所做的工作会远远大于这个集合。但是有了这个平台之后,我们自动化脚本的重用率有了很大的提升。对于团队中的自动化实现者来说,他们不需要再痛苦地学习和掌握每一种新的工具,或是因为工具的变化而重写自动化测试脚本了。


资源分享

下方这份完整的软件测试视频学习教程已经上传CSDN官方认证的二维码,朋友们如果需要可以自行免费领取 【保证100%免费】

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/86014.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

KubeClipper 1.3.1 正式发布

2022 年 12 月 12 日,KubeClipper 1.3.1 版本正式发布! 开源大事记 2022 年 08 月, KubeClipper 项目正式开源到 https://github.com/KubeClipper 项目。 2022 年 08 月,在由 OpenInfra 基金会举办的 2022 OpenInfra Days China…

nacos--基础--4.1--集成--SpringBoot--配置管理、服务发现、服务注册

nacos–基础–4.1–集成–SpringBoot–配置管理、服务发现、服务注册 代码位置 https://gitee.com/DanShenGuiZu/learnDemo/tree/master/nacos-learn/nacos-spring-boot1、介绍 主要面向 SpringBoot 的使用者通过2个实例,来介绍nacos和SpringBoot的集成 配置管理服…

【案例教程】Python气象海洋数据可视化到常见数据分析方法(折线图、柱状图、errorbar图、流场矢量、散点图、风玫瑰图、流场矢量、填色及等值线+地图)

【查看原文】Python在气象与海洋中的实践技术应用 Python是功能强大、免费、开源,实现面向对象的编程语言,能够在不同操作系统和平台使用,简洁的语法和解释性语言使其成为理想的脚本语言。除了标准库,还有丰富的第三方库&#xf…

点线面数据处理(wkt,geojson互转)

点线面数据点:[103.8810, 31.0896] 线:[[103.7767, 30.8424],[104.2546, 30.8150],[104.3068, 30.4552]] 面:[[[103.8810, 31.0896],[104.0129, 30.8891],[103.7520, 30.8809],[103.8810, 31.0896]]] wkt数据点:POINT(103.365926 …

对Dueling DQN理论的深度分析。

强化学习中Agent与环境的交互过程是由马尔可夫决策过程(Markov Decision Process, MDP)描述的。MDP对环境做了一个假设,称作马尔可夫性质,即下一时刻的状态只由上一时刻的状态和动作决定。 马尔可夫性质决定了值函数(状态值与动作值函数)可以写成递归的形…

【项目总结】医疗化验单的OCR识别

项目总结 医疗化验单OCR 文章目录项目总结前言一、项目要求二、解决思路1.模型1.扶正2.裁剪3.pipeline三、总结前言 课题组项目的总结。 一、项目要求 课题组和广州的一家药企有合作,甲方要求把一张医疗化验单内的表格内容整体识别出来,特别是化验的数…

测开- Junit 单元测试框架

文章目录前言了解 Junit准备工作 - 在 pom.xml 文件中引入 Junit 相关依赖1、Junit注解TestBeforeEach、BeforeAllAfterEach && AfterAll2、断言1、Assertions - assertEquals 方法2、Assertions - assertNotEquals 方法3、Assertions - assertTrue && assertF…

一个关于React数据不可变的无聊问题

对于一个React的开发者来说不知道你有没有想过为什么React追求数据不可变这个范式; 一个月前我想过一个问题如果我在使用useState这个hooks的时候传入的是一个改变后的引用类型对象会发生什么? 例如: import {useState} from "react&…

css之@media网页适配

原因&#xff1a; 原本是想用 iview Grid 栅格,但以下响应并不符合我的需求 【我需要的分辨率是1920和1536】&#xff0c;所以需要手动修改 解决方案&#xff1a; html <Row> <i-col :xs"6" :sm"6" :md"6" :lg"8"><d…

IB经济试卷实用指南分享

明明每个经济理论都知道&#xff0c;然而在实际答题过程中就是用不出来&#xff1f; 看到答案后却是恍然大悟&#xff0c;就像对着数学答案&#xff0c;大体还能想明白“原来是这样的”&#xff0c;但考试的时候就是想不到用这个理论、这个模型&#xff1f; 出现这种现象&#…

左值和右值

左值和右值 按字面意思&#xff0c;通俗地说。以赋值符号 为界&#xff0c; 左边的就是左值&#xff0c; 右边就是右值。 更深一层&#xff0c;可以将 L-value 的 L, 理解成 Location&#xff0c;表示定位&#xff0c;地址。将 R-value 的 R 理解成 Read&#xff0c;表示读取…

[附源码]Python计算机毕业设计电影售票管理系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

什么是位移电流?位移电流密度计算公式详解

位移电流变化着的电场可以存在于真空、导体、电介质中&#xff0c;本质是变化着的电场&#xff0c;不会产生化学效应&#xff0c;也不会产生焦耳热。下面一起随着小编一起了解一下什么是位移电流以及位移电流密度计算公式。 什么是位移电流&#xff1f; 1861年&#xff0c;詹姆…

[附源码]Python计算机毕业设计SSM基于web的医院门诊管理系统(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

基于java+springboot+mybatis+vue+mysql的一起来约苗系统

项目介绍 在系统流程分析当中调查分析它是比较重要的环节&#xff0c;因为在这个系统当中它都涉及到每个环节的业务流程&#xff0c;所以从JavaSprignBootVueMYSQL一起来约苗系统的设计的整体设计上要保证各个信息的正确输入和输出以及对数据储存的完整&#xff0c;并结合实际…

ASEMI肖特基二极管MBR20100FCT图片,MBR20100FCT大小

编辑-Z ASEMI肖特基二极管MBR20100FCT参数&#xff1a; 型号&#xff1a;MBR20100FCT 最大重复峰值反向电压&#xff08;VRRM&#xff09;&#xff1a;100V 最大RMS电桥输入电压&#xff08;VRMS&#xff09;&#xff1a;70V 最大直流阻断电压&#xff08;VDC&#xff09;…

python+django车辆充电桩管理系统

启动一个新项目 执行下面的命令来创建一个新的 Django 项目&#xff1a; django-admin startproject myproject 命令行工具django-admin会在安装Django的时候一起自动安装好。 执行了上面的命令以后&#xff0c;系统会为Django项目生成基础文件夹结构。 现在&#xff0c;我…

【软件测试】测试人我懵了,产品验收时还有一堆bug?

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 为什么明明写了 100…

屏幕录制怎么加上水印?这个方法,真的太实用啦

随着网络技术的飞速发展&#xff0c;短视频已经成为传播信息最快的方式之一。越来越多的人将自己喜欢的游戏直播视频和网络直播课程知识制作成短视频&#xff0c;并在各大媒体平台进行分享。然后&#xff0c;录制的视频可能会被其他人带到其他平台。屏幕录制怎么加上水印&#…

FLStudio21水果软件中文版本有哪些新增功能?

FL Studio 21即将推出 – 新功能和改进。如果您从事音乐制作&#xff0c;那么您不可能没有听说过 FL Studio&#xff0c;或者很可能已经使用过这个音乐程序。好了&#xff0c;新版本的 FL Studio 21 DAW 已经准备好向公众发布了。Image-line 正在为 2022 年的大型揭幕准备最终细…