自动化测试整理 --- STAF/STAX Robot Framework

news2024/11/18 7:26:27

题记:上周花了点时间学习开源的自动化测试框架Robot Framework,结合自己之前的自动化经验,就想周末写篇文章整理下。

目前,所在项目的自动化测试框架是基于STAF/STAX的拓展,围绕STAX执行引擎,扩展了测试用例的创建、管理(挑选执行那些测试用例:按照模块,标签)、Log、Report功能,由Java来实现的。这是一个关键字驱动的测试,测试用例由一个个关键字组成记录每一关键字的执行结果。同时,测试用例和测试数据相分离,把测试用例中一些可能变换的数据抽离出来,用宏替代,避免hard-coding,避免因为一些环境因素的变换而导致测试用例的fail,对自动化框架而言,稳定还是蛮重要的。

STAF是一个开源、跨平台、支持多编程语言的框架,以Services 的形式提供一些常用功能,比如跨网络传出文件、远程启停一个程序、测试用例的执行引擎服务等。在我们的框架中用到了其中两个services,一个是 FILE SYSTEM用于在test client 和test server之间传文件,另一个便是STAX 测试用例执行引擎。

FS 的使用:

  1. #stafcore is a STAFHandle instance;  
  2. String service = "FS";  
  3. String req = "COPY DIRECTORY " + srcdir + " TODIRECTORY " + desdir + " TOMACHINE " + tomachine + " RECURSE KEEPEMPTYDIRECTORIES";  
  4. STAFResult result = stafcore.submit2(location, service, req);  

STAX 引擎的使用:

  1. String service = "STAX";  
  2. String req = "EXECUTE FILE "+jobpath;  
  3. stafcore.submit2(location, service, req);  

STAX中有个job的概念,你可以把job理解test case,job是以XML文档的形式传递给STAX服务的,因为STAX是使用Jyhton来执行Python代码的,而Jython允许以Python的语法格式来访问Java classes,所以你可以在XML 的<script>元素中插入java 代码 ,如下 :

  1. <script>  
  2. from com.ibm.staf import STAFHandle  
  3. myhanlde = STAFHandle("MySTAXJobHandle")  
  4. </script>  

现在来谈谈Robot 框架,第一次接触Robot Framework是帮同事写一个python脚本,当时很奇怪,要求如果expected result 与 actual result 不符合,就抛出一个exception。现在想想,这个python文件是作为libray 导入到Robot Framework, 里面包含的方法就是一个个keywords,Robot通过捕获exception来判定keyword Fail。

Robot是一个开源的自动化测试框架,是由Python实现的。可以说,Robot 实现了你能想到的所有自动化框架能做的事情。

  • Hight-level keywords : 可以基于现有keywords,由几个keywords组成一个high-level keowrd.
  • Tagging: 测试用例的标签,可以给测试用例一个,或多个标签,如smoke 、regression 等,执行测试用例的时候,可以只执行这些含有这些标签的测试用例.
  • Clear report & detailed log
  • Different library: Robot 提供一些library,如operatingsystem, 还有一些第三方提供的library,如Selenium2Library 用于web 自动化测试。你也可以自己扩展自己library库,可以用python 和java来实现。用java实现的library,需要jybot来运行。
  • Ride: 是一个用于编写自动化测试用例的GUI,导入library,便可以创建test suit ,test cases了,支持自动补全的哦。

现在要做的工作就是把原来实现的keyword,按照Robot要求的格式重新实现一遍,主要的不同是判断keyword pass,还是fail ,Robot要求抛出异常哦!

自动化测试开发,维护过程中,还有一点需要注意:一定要加入版本控制,无论是自动化框架的源码,还是测试用例、测试数据。现在比较流行的是Git.

最后:下方这份完整的软件测试视频学习教程已经整理上传完成,朋友们如果需要可以自行免费领取 【保证100%免费】

 

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

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

相关文章

验证功能覆盖率收集时per_instance=1可能导致覆盖率线性增长

验证覆盖率收集时&#xff0c;发现coverage database达到了惊人的256G&#xff0c;如下&#xff1a; 进入database中的testdata目录下的用例定位发现&#xff0c;问题出在这个文件&#xff1a; testbench.inst.xml其大小基本等同于验证用例覆盖率的大小。 这个文件时怎么产…

C++函数新思想和标准的输入和输出

欢迎来观看温柔了岁月.c的博客目前设有C学习专栏C语言项目专栏数据结构与算法专栏目前主要更新C学习专栏&#xff0c;C语言项目专栏不定时更新待C专栏完毕&#xff0c;会陆续更新C项目专栏和数据结构与算法专栏一周主要三更&#xff0c;星期三&#xff0c;星期五&#xff0c;星…

【决策树】一文看懂图解决策树原理:信息熵、条件熵与信息增益

本文用过图解的方式并结合实际案例的方式讲述了决策树的基本原理&#xff0c;主要包含信息熵、条件熵与信息增益的概念与计算方式&#xff0c;以及如何选择各个决策节点&#xff08;即&#xff1a;选择信息增益最大的特征&#xff09;。 想要PDF文档的小伙伴&#xff0c;通过关…

[SCOI2005]骑士精神(C++,启发式搜索)

题目描述 输入格式 第一行有一个正整数 TTT&#xff08;T≤10T \le 10T≤10)&#xff0c;表示一共有 TTT 组数据。 接下来有 TTT 个 555 \times 555 的矩阵&#xff0c;0 表示白色骑士&#xff0c;1 表示黑色骑士&#xff0c;* 表示空位。两组数据之间没有空行。 输出格式 …

【Node.js】详细记录express路由和中间件

Node.js路由的概念什么是路由Express中的路由路由的匹配过程路由的使用创建路由模块文件注册路由模块文件为路由模块添加前缀Express中间件Express中间件格式定义中间件函数定义全局生效的中间件函数中间件的作用定义多个全局中间件局部生效的中间件定义多个局部生效的中间件了…

Ae:使用代理

如果希望加快合成的预览或渲染速度&#xff0c;可考虑对素材使用代理 Proxy。虽然在 Ae 中&#xff0c;可以指定任何的静止图像或视频为代理&#xff0c;但一般情况下还是建议创建源素材的低分辨率版本来作为代理。对素材创建或指定代理后&#xff0c;可随意切换是否使用代理来…

物联网在医疗保健领域的5大创新应用

如今&#xff0c;物联网的发展越来越迅速&#xff0c;我们无法低估物联网在当今世界的重要性。大多数人每天都会使用到物联网设备。例如&#xff0c;当你使用智能手表来跟踪你的锻炼时&#xff0c;你就间接地使用了物联网的功能。由于物联网为世界带来了很多有效的帮助&#xf…

【涨薪技术】0到1学会性能测试 —— LR录制回放事务检查点

前言 上一次推文我们分享了性能测试分类和应用领域&#xff0c;今天带大家学习性能测试工作原理、事务、检查点&#xff01;后续文章都会系统分享干货&#xff0c;带大家从0到1学会性能测试&#xff0c;另外还有教程等同步资料&#xff0c;文末免费获取~ 01、LR工作原理 通常…

【原创】java+swing+mysql生肖星座查询系统设计与实现

今天我们来开发一个比较有趣的系统&#xff0c;根据生日查询生肖星座&#xff0c;输入生日&#xff0c;系统根据这个日期自动计算出生肖和星座信息反馈到界面。我们还是使用javaswingmysql去实现这样的一个系统。 功能分析&#xff1a; 生肖星座查询系统&#xff0c;顾名思义…

【uniapp微信小程序】跨平台使用echarts的方案选择踩坑

一、前言 使用Uniapp&#xff08;vue&#xff09;开发微信小程序&#xff0c;想用echarts图表实现类似github热力图的效果。 简要列一些可行或不可行的方案。 二、方案对比 1. 【应用】&#xff1a;微信小程序原生开发 有echarts官网提供的跨平台方案&#xff1a;在微信小程…

CHATGPT是新的“搜索引擎终结者”吗?百度是否慌了

ChatGPT 以其非凡的自然语言处理 &#xff08;NLP&#xff09; 能力和清晰的响应风靡全球&#xff0c;有望带来一场重大的技术革命。在不知不觉中&#xff0c;叙事转向了ChatGPT与百度的对决&#xff0c;因为来自OpenAI的智能和健谈的聊天机器人已经慢慢获得了“潜在的百度终结…

Allegro如何快速删除孤立铜皮操作指导

Allegro如何快速删除孤立铜皮操作指导 在做PCB设计的时候,铺铜是常用的设计方式,在PCB设计完成之后,需要删除PCB上孤立的铜皮,即铜皮有网络但是却没有任何连接 如下图 通过Status报表也可以看到Isolated shapes 如何快速地删除孤立铜皮,具体操作如下 点击Shape

C++ sort()函数和priority_queue容器中比较函数的区别

普通的queue是一种先进先出的数据结构&#xff0c;元素在队列尾追加&#xff0c;而从队列头删除。priority_queue中元素被赋予优先级。在创建的时候根据优先级进行了按照从大到小或者从小到大进行了自动排列&#xff08;大顶堆or小顶堆&#xff09;。可以以O(log n) 的效率查找…

23. 合并K个升序链表

解题思路&#xff1a;两种解法&#xff0c;一种优先级队列&#xff0c;一种分治优先级队列解法&#xff1a;以节点中存储的值进行排序依次遍历所有的链表&#xff0c;把链表中的节点加入到优先级队列中依次从优先级队列的弹出并删除最小的元素加入到新的链表中&#xff0c;直到…

final关键字是什么以及final的四种用法

final定义&#xff1a; final的翻译是最终&#xff0c;也就表示着它修饰的对象是最后一次被继承等含义。 被final修饰的对象不能更改其定义以及变量值 final的四种用法 一、修饰变量 public class Demo1 {public final int a 6;public void test() {a 10;} final修饰变量…

ESP-C3入门12. HTTPS请求、堆内存使用及JSON处理

ESP-C3入门12. HTTPS请求、堆内存使用及JSON处理一、创建HTTPS请求1. 基本流程2. ESP32 使用https证书的方式(1) 内置证书(2) ESP32管理证书3. 开发环境配置(1) 引用 esp-tls 库(2) 启用 CONFIG_MBEDTLS_CERTIFICATE_BUNDLE二、堆内存的使用1. 堆内存和栈内存2. 堆内存的使用(1…

Linux基础命令-which查找命令文件位置

文章目录 which 命令功能 语法格式 基本参数 参考实例 1&#xff09;查找chmod命令的文件位置 2&#xff09;查找chmod命令的所有路径 3&#xff09;一次性查找多个命令路径 4&#xff09;组合其他命令一起使用 5&#xff09;显示命令的版本信息 命令总结 which 命…

11 udp 发送数据的流程梳理

前言 呵呵 之前曾经看到过 湖光大佬 的 tcp 的流程梳理 呵呵 很高深 有很多不明白的地方, 不光是涉及到 linux 网络处理本身的东西, 还涉及到了 tcp协议 的一些具体的实现, 是非常的复杂 这里之前 在 0voice/linux_kernel_wiki 上面看到了网络协议栈部分的梳理 呵呵 自己也…

计算机网络(七):DNS协议和原理,DNS为什么用UDP,网页解析的全过程

文章目录一、什么是DNS二、DNS的作用三、DNS作用四、DNS为什么用UDP五、如果打开一个网站很慢&#xff0c;要如何排查六、网页解析的全过程一、什么是DNS DNS是域名系统的英文缩写&#xff0c;是一种组织成域层次结构的计算机和网络服务命名系统&#xff0c;用于TCP/IP网络。 …

数据库行业的 “叛逆者”:大数据已“死”,MotherDuck 当立

“大数据”已死——现今我们最重要的事情不是担心数据大小&#xff0c;而是专注于我们将如何使用它来做出更好的决策。数据库行业发展至今&#xff0c;在数据层面有很多的加速和变革&#xff0c;尤其是过去几年的云数仓爆炸式增长&#xff0c;带来了行业的很多变化。毫无疑问&a…