软件测试下的AI之路(4)

在这里插入图片描述

 
 

在这里插入图片描述
😏作者简介:博主是一位测试管理者,同时也是一名对外企业兼职讲师。
📡主页地址:【Austin_zhai】
🙆目的与景愿:旨在于能帮助更多的测试行业人员提升软硬技能,分享行业相关最新信息。
💎声明:博主日常工作较为繁忙,文章会不定期更新,各类行业或职场问题欢迎大家私信,有空必回。

在这里插入图片描述

 
 

阅读目录

  • 1. 前言
  • 2. 变量创建
    • 2.1 字符串模板
    • 2.2 宏
    • 2.3 元素属性
    • 2.4 自定义JS代码
    • 2.5 mabl邮箱
  • 3. 变量使用

1. 前言

在这里插入图片描述

  随着科技日新月异的发展,人工智能正逐渐渗透到我们生活的各方各面,从智能语音助手到自动驾驶汽车,从智能家居到人脸识别技术,AI正以其卓越的智能和学习能力引领着新时代的发展方向。在这个快速演进的时代中,软件测试领域也受到了不小的冲击。虽然在当下,传统的软测技术仍然是绝对的主力,但是身为IT行业中的一员,近几年AI的全新业务体验与其超强的算力所带来的震撼感受也应该远超其他行业。所以为了跟上时代的步伐,作为软测的大家是不是也应该考虑如何让AI辅助我们更加完整高效的完成日常的各类质量保障工作呢?

  上一期我们介绍了mabl平台的CI/CD集成,相信实践过的测试同学们也一定有了自己的使用体验了吧。接下来我们来介绍一些带日常工作场景中会高频出现的一些mabl平台进阶玩法,掌握了这些就能让我们的自动化测试工作的效率再次上升一个台阶。

 
 

2. 变量创建

在这里插入图片描述
  在自动化测试框架或脚本中,变量永远是一个回避不了的话题。同样的,在mabl中如何使用变量也是大有讲究。

  我们打开mabl trainer之后可以在窗口的最下方看到{x}图标的按钮,这个就是添加在测试步骤中添加变量的按钮。如果不是以编写脚本的方式来定义的话直接用这个按钮来创建就行了。

在这里插入图片描述

 

  按下后会询问你需要进行的变量操作,这里可以进行变量的管理、创建变量和使用变量三个操作。我们先来创建一个变量来看看,选择Create a variable。

在这里插入图片描述

  创建的选项有四种,字符串模板、元素属性、自定义 JavaScript 代码、Mabl 邮箱地址,每项具体的内容与含义后续会详细说明。这边我们先选择字符串模板 (String template),可以看到下面会让我们填写各种参数。属性(Property)中填写要添加原始变量的位置,当前值(Current value)则显示的是当前变量的预览值,最后再定义一个变量的名称(Variable name)点击OK就完成了一个变量的创建操作了。
在这里插入图片描述

 

2.1 字符串模板

  当然再属性框中我们不仅仅可以填入一些常量,还可以使用各类变量、随机数据、算式这些灵活的元素来表达自己的变量属性。如下图,在mabl的字符串模板中表达式可以使用两个大括号“{{}}”来表示,如果要引用变量的话只要在前面加上@符号即可。这里我使用了一个随机的6位字母当作注册账号的邮箱名,在一些注册的正向场景中,我们可以引入一些随机的字符来满足用户名的注册条件,这样就无需特意去指定这些繁琐的命名规则,即可达成一些业务测试场景的需求。
在这里插入图片描述
 

以下是一些有效的表达式例子,大家可以做下参考:
{{@username}}:引用变量的值username
{{alpha:6}}:生成一个由六个大小写字母组成的随机字符串
{{fake.name.firstName}}:生成一个随机的名字
{{(6 + 10) / 2}}:将 6 和 10 之和除以 2
{{date}}:生成时间戳。如果您需要格式化的日期,请参阅我们关于在 mabl 中使用日期的指南。

 

  这里需要注意的是,如果你在表达式中引用变量的时候,要先确保引用的变量包含正确的赋值,不然就会出现值未定义的情况出现。

在这里插入图片描述

 

2.2 宏

  除了引入变量之外,宏也是一个不错的选择。一般生成随机字符串和快速的指定任意的输入内容,都可以用宏来达成类似的效果。宏的表示方法包括一个字符类型,后面跟一个冒号和一个数字,其中数字表示要创建的随机字符数。如下这些例子所示:

{{alpha:6}}: 6位大写和小写字母
{{alphaLower:4}}: 4位小写字母
{{alphaUpper:5}}:5位大写字母
{{digit:4}}:4位数字
{{alnum:11}}:11位字母数字

  mabl同样可以使用模板生成随机数据,它的表达式是使用双大括号并且以fake为开头,如{{fake.phone.phoneNumber}}这样的格式,但这里因为mabl平台仅支持英文区域,所以生成的数据格式均为美国区域的数据,这个就存在着很大的局限性,对于没有海外业务的小伙伴来说,这块功能就有些鸡肋了。当然如果你正好需要用到,那相较于其他的生成方式或在线网页生成器的随机数据,mabl自带的随机数据方式就比较便捷了。以下是一些基础的随机数据使用的表达式:

{{fake.name.firstName}}:随机名字
{{fake.name.lastName}}:随机姓氏
{{fake.address.streetAddress}}:随机街道地址
{{fake.address.city}}:随机城市名称
{{fake.address.state}}:随机美国州名
{{fake.address.zipCode}}:随机美国邮政编码
{{fake.address.countryCode}}:随机 2 个字母的国家/地区代码
{{fake.company.companyName}}:随机公司名称
{{fake.phone.phoneNumber}}:随机手机电话号码,格式为美国地区
{{fake.lorem.text}}:随机填充文本
{{fake.random.uuid}}:随机 UUID
{{fake.finance.amount}}:随机货币金额

  除此之外,mabl还支持数学运算,它可以在字符串模板中执行基本的数学运算并将结果保存到新变量或覆盖现有变量。这里要注意点的是,指定表达式对于获得正确的结果很重要。数学表达式同样也必须用要计算的双大括号括起来。以下是一些数学运算的表达式:
{{5 + 3 / 2}}:结果为:6.5 这是很基本的运算,在mabl中依然遵循运算符优先级来进行运算
{{(5 + 3) / 2}}: 结果为:4 按照括号的指定优先级来进行运算
${{(5 + 3 ) / 2}}:结果为:$4 类似于美元符或百分号这样的计算符号可以组合使用

  有了基础数学运算外,我们还可以使用一定的高级数据表达式来进行一些特定的场景计算。例如:
round:将数学计算结果四舍五入到小数位数,表达式为:round(number, numberOfDecialPlaces)
abs:返回数学计算的绝对值,表达式为:abs(number)
randomInt:返回一个大于或等于但小于,表达式为:randomInt(min, max)

 

2.3 元素属性

  元素属性,就和它的字面意思一样,元素属性的变量会从当前页面上(Trainer上的当前页面)的元素进行提取,并将其存储在元素属性变量中。
在这里插入图片描述

 

  其实这个类型很好理解,我们选择完元素属性这个类别后点击Select图标,在当前的页面上选择你想要提取的元素。如图,我们将鼠标悬停在百度的logo上,页面上就会显示当前被选中的元素属性,可以看到在元素定义的时候这个img元素的id于classname都是已经被识别出来的。

在这里插入图片描述

 

  然后我们点击这个logo元素,返回元素属性变量创建的对话框。此时我们就可以在属性(Property)选择框内选择该元素对应的属性名了,而当前值(Current value)这里会对应显示当前元素属性的属性值。就好比我们原则了id,那刚才与id对应的属性值就应该是s_lg_img。最后我们填入相应的变量名即可完成创建。
在这里插入图片描述

 

  可以看到我们的元素属性变量创建还是相当的简单的,所见即所得的操作可以免去在页面上用F12查找捕获元素的繁琐过程。同时在我们的自动化测试脚本的设计与维护过程中,因为采用了变量的形式,即使面对频繁多变的页面改动,仍旧可以以最少的工作量来覆盖所需的业务场景。

 

2.4 自定义JS代码

  第三种方式是利用JS代码段来进行变量的创建,这种情况相对来说会比较的少见。因为我们的mabl平台已经提供了相当完善的低代码功能,但往往有些小伙伴的公司小部分产品不支持开箱即用(out of the box),那么mabl也可以支持JS代码来提供更为高级的场景解决方法。

 
  如下图,比如在我们的业务测试过程中,无论是产品本身技术栈或形态不支持普通的低代码测试手段,利用mabl的JS代码段就可以进行对应的业务测试。对于一些web前端的测试来说,自定义JS代码段也不妨是一种剑走偏锋的好方式。

在这里插入图片描述

 

2.5 mabl邮箱

  最后一种是使用mabl邮箱地址来创建变量,对于一些电子邮件的测试我们可以填入真实的邮箱来进行对应的测试内容。

在这里插入图片描述

 

  在一些需要用到电子邮箱的测试业务中,这个类别就可以简单快速的达成测试业务目标,而无需编写脚本或进行复杂的设置。比如一些验证定时邮件、密码找回、注册账号、身份验证、邮件中的附件验证等。

 

验证的方式也十分的简单,我们可以在Trainer中添加对应的断言,可以包括发送人、主题、日期和附件等。

在这里插入图片描述

  当然mabl中的邮件测试也是存在有一定的限制的,比如邮件地址长度无法超过25个字符、附件大小不能超过10MB、邮件必须在断言步骤后的5分钟内到达,不然断言就会失败。

 
 

3. 变量使用

在这里插入图片描述

  我们创建完对应的变量之后就可以在脚本中的不同场合使用这些变量了,这里为大家总结几种高频的使用场合。

 

  输入值应该是我们最常用的一种变量调用方式了,首先在Trainer中按{x}打开变量界面,点击使用变量,这时可以看到变量使用方式选择的界面,我们选择Input Value选项。然后与元素属性类别的选择按钮一样,在当前页面中选择需要进行变量操作的元素。

在这里插入图片描述
 

  这里我们依然选择搜索框元素,并在下一个页面中选择search_key_word变量,该变量是之前定义好的其中一个,我们直接选择后,该变量就会直接作用于当前的搜索框。

在这里插入图片描述

 

在这里插入图片描述
 

  此时我们就可以看到搜索框内已经输入了自动化测试这几个关键字了,这样我们只要保存好之前的业务操作步骤,就可以每一次在使用搜索页面的时候输入自己指定的内容了。是不是特别的简单?

在这里插入图片描述
 

  如果我们不是使用新建的变量,想改变用调用一些既存的变量,我们也可以在执行步骤的过程中进行编辑和修改。我们先找到对应步骤,在步骤的右侧选择编辑(Edit)。

在这里插入图片描述
 

  开打后可以看到界面中对应元素的一些详细信息,也可以看到我们刚才调用的变量search_key_word,现在我们想调用另一个变量,我们一个是可以在下面的变量下拉列表中选择一个既存的变量。

在这里插入图片描述
 

  另一个方法是直接编辑这个元素的文本内容,我们先将选项单选按钮调至字符串(String),然后按照之前所说的字符串模板的表达式来调用其他的变量,这里我们调用了一个混沌工程的变量。可以看出这里的操作是灵活多变的,完全可以根据小伙伴们自己的实际习惯与需求来自行使用。

在这里插入图片描述
 

  一般在我们的测试项目中,存在多个测试环境已经不是什么新鲜事情了。无论是DEV、UAT、PRD还是其他的一些环境都是我们测试需要涉及的主体环境,所以在mabl中也可以通过变量来快速的访问你所指定的多个测试环境。当然mabl不单单是提供了整体的环境访问,还支持各类的业务子页面的跳转,这里就完全看大家各自的发挥了。
 

  默认情况下mabl开启Trainer的时候都会默认开始你设置的Application时设置的URL,当然我们的日常业务肯定不是那么简单的访问一个或两个地址。所以这里我们就需要根据业务流程的需求来定制我们的URL访问路径与跳转页面甚至是环境的快速切换。
 

  当需要添加URL跳转变量的时候我们需要先在Trainer中点击最下面的加号按钮,在添加步骤的界面中选择访问URL(Visit URL)。

在这里插入图片描述

在这里插入图片描述
 

  跳转进来后我们可以在字符串和变量两个输入种类中选择,这里的用法与字符串模板中的表达式用法一致,就不重复介绍了。在一些测试场景中我们可以在url的前后或本身进行url的拼接以达到正确跳转业务页面的目的。

在这里插入图片描述
 

  另一种较为高频的场合就是在我们的用例中进行断言,无论是判断值或元素是否存在,变量都可以很好的满足这些测试场景。在mabl中,如果已经事先将被测对象进行了变量创建,那我们大可以在业务操作的测试过程中将断言设置为你所需验证功能的核心元素。

 

  例如你需要测试一个系统的测试,登录按钮的亮起与文案变化会随着用户名密码输入而发生改变,那登录页面的一些特征元素或随业务状态变化的元素完全可以变成你的断言依据。我们先在对应需要断言的步骤处添加一个断言操作。

在这里插入图片描述
 

  在断言界面中,我们这里断言的对象是登录按钮,判断的内容则是按钮的内部文案,而变量使用预先创建的登录按钮的innerText的属性值,创建的时候需要注意必须将按钮的对应属性调整为登录信息录入完整状态下的属性,不然肯定会断言失败。下面的选项可以根据自己的测试场景需求来酌情选择。
在这里插入图片描述

 

  添加完断言并保存用例,我们先简单的跑一下用例,在报告结果中查看详细,就可以看到我们刚才添加的断言已经执行成功了。
在这里插入图片描述
 

  以上就是mabl中的变量的创建与使用的一些高频场景,其实对于我们的日常工作来说,频繁的利用变量的特性来丰富自动化业务测试脚本是一个非常高效的解决方案,面对敏捷开发的项目,即使频繁的更改需求与版本迭代,越是这样的环境,就越可以体现变量在整体脚本灵活性与维护性上的绝大优势。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数控机床采集网关助力企业实现智能化生产-天拓四方

随着工业4.0时代的到来,智能制造成为制造业转型升级的重要方向。数控机床作为制造业的核心设备,其数据采集与监控对于提升生产效率、优化生产流程具有重要意义。本案例将介绍数控机床采集网关的应用,通过该网关实现数控机床数据的实时采集、传…

IP地址证书怎么申请?

在数字化时代,网络空间的安全与稳定至关重要。其中,IP地址作为互联网通信的基础标识,其安全认证则依赖于一项重要工具——IP地址证书。本文将深入探讨IP地址证书的概念、作用以及其在网络安全防护中的重要意义。 一、IP地址证书的作用 身份验…

Java设计模式—策略模式(商场打折)

策略这个词应该怎么理解,打个比方说,我们出门的时候会选择不同的出行方式,比如骑自行车、坐公交、坐火车、坐飞机、坐火箭等等,这些出行方式,每一种都是一个策略。 再比如我们去逛商场,商场现在正在搞活动&…

设计模式总结-桥接模式

桥接模式 模式动机模式定义模式结构模式分析桥接模式实例与解析实例一:模拟毛笔 模式优缺点 模式动机 设想如果要绘制矩形、圆形、椭圆、正方形,我们至少需要4个形状类,但是如果绘制的图形需要具有不同的颜色,如红色、绿色、蓝色…

MySQL-基本SQL语句编写:运算符练习

运算符练习 1.选择工资不在5000到12000的员工的姓名和工资 SELECT last_name,salary FROM employees #where salary not between 5000 and 12000; WHERE salary < 5000 OR salary > 12000;2.选择在20或50号部门工作的员工姓名和部门号 SELECT last_name,department_id…

蓝桥杯算法题:卡片换位

问题描述 你玩过华容道的游戏吗&#xff1f;这是个类似的&#xff0c;但更简单的游戏。 看下面 2 x 3 的格子 --------- | A | * | * | --------- | B | | * | --------- 1 2 3 4 5 在其中放 5 张牌&#xff0c;其中 A 代表关羽&#xff0c;B 代表张飞&#xff0c;* 代表士兵…

【Erlang】【RabbitMQ】Linux(CentOS7)安装Erlang和RabbitMQ

一、系统环境 查版本对应&#xff0c;CentOS-7&#xff0c;选择Erlang 23.3.4&#xff0c;RabbitMQ 3.9.16 二、操作步骤 安装 Erlang repository curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sudo bash安装 Erlang package s…

CMake学习笔记(三)区分macro与function

目录 共同点--形式类似 macro的形式 function的形式 不同点 1 输入参数的替换阶段不同 macro function 2 输入参数作用域不同 macro function 共同点--形式类似 macro的形式 macro(宏名 输入参数名).... endmacro() function的形式 function(函数名 输入参数名).…

如何确认ip地址?一步步教会你

在数字化和网络化的时代&#xff0c;IP地址作为设备的网络标识&#xff0c;扮演着至关重要的角色。无论是个人用户还是企业网络管理员&#xff0c;掌握如何确认IP地址的方法都显得尤为重要。虎观代理将全面介绍如何确认IP地址&#xff0c;并深入探讨其背后的原理和意义。 首先&…

RabbitMQ3.13.0起支持MQTT5.0协议及MQTT5.0特性功能列表

RabbitMQ3.13.0起支持MQTT5.0协议及MQTT5.0特性功能列表 文章目录 RabbitMQ3.13.0起支持MQTT5.0协议及MQTT5.0特性功能列表1. MQTT概览2. MQTT 5.0 特性1. 特性概要2. Docker中安装RabbitMQ及启用MQTT5.0协议 3. MQTT 5.0 功能列表1. 消息过期1. 描述2. 举例3. 实现 2. 订阅标识…

Linux网卡与IP地址:通往网络世界的通行证

在探索Linux网卡和IP地址的关系之前&#xff0c;我们得先理解Linux网卡是怎么工作的。想象一下&#xff0c;每台计算机都是一个世界&#x1f30e;&#xff0c;而网卡就是连接这些世界的门户&#x1f6aa;。网卡的工作就是接收和发送数据包&#xff0c;就像邮差&#x1f4ec;递送…

还在担心报表不好做?不用怕,试试这个方法(三)

系列文章&#xff1a; 《还在担心报表不好做&#xff1f;不用怕&#xff0c;试试这个方法》&#xff08;一&#xff09; 《还在担心报表不好做&#xff1f;不用怕&#xff0c;试试这个方法》&#xff08;二&#xff09; 概要 在上一篇文章《还在担心报表不好做&#xff1f;…

C++数据结构与算法——回溯算法排列问题

C第二阶段——数据结构和算法&#xff0c;之前学过一点点数据结构&#xff0c;当时是基于Python来学习的&#xff0c;现在基于C查漏补缺&#xff0c;尤其是树的部分。这一部分计划一个月&#xff0c;主要利用代码随想录来学习&#xff0c;刷题使用力扣网站&#xff0c;不定时更…

SV学习笔记(六)

文章目录 覆盖率类型写在前面代码覆盖率断言覆盖率功能覆盖率漏洞率曲线 功能覆盖策略收集信息而非数据只测量需要的内容验证的完备性 覆盖组写在前面在类里定义covergroup 数据采样写在前面coverpoint和binbin的创建和应用命名coverpoint和bin条件覆盖率翻转覆盖率wildcard覆盖…

k8s svc流量转发

https://blog.csdn.net/qq_44930876/article/details/134813129 https://blog.csdn.net/weixin_43845924/article/details/136232099 默认使用iptables [rootlocalhost ~]# k logs kube-proxy-jcbcq I0405 10:37:28.610683 1 node.go:136] Successfully retrieved no…

NzN的数据结构--实现双向链表

上一章中&#xff0c;我们学习了链表中的单链表&#xff0c;那今天我们来学习另一种比较常见的链表--双向链表&#xff01;&#xff01; 目录 一、双向链表的结构 二、 双向链表的实现 1. 双向链表的初始化和销毁 2. 双向链表的打印 3. 双向链表的头插/尾插 4. 双向链表的…

[蓝桥杯 2019 国 C] 数正方形

[蓝桥杯 2019 国 C] 数正方形 题目描述 在一个 N N N \times N NN 的点阵上&#xff0c;取其中 4 4 4 个点恰好组成一个正方形的 4 4 4 个顶点&#xff0c;一共有多少种不同的取法&#xff1f; 由于结果可能非常大&#xff0c;你只需要输出模 1 0 9 7 10^9 7 1097 的…

八股面试速成—计算机网络部分

暑期实习面试在即&#xff0c;这几天八股和算法轮扁我>_ 八股部分打算先找学习视屏跟着画下思维导图&#xff0c;然后看详细的面试知识点&#xff0c;最后刷题 其中导图包含的是常考的题&#xff0c;按照思维导图形式整理&#xff0c;会在复盘后更新 细节研究侧重补全&a…

基于单片机钢琴电子节拍器系统设计

**单片机设计介绍&#xff0c;基于单片机钢琴电子节拍器系统设计 文章目录 一 概要二、功能设计三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机钢琴电子节拍器系统设计是一个综合性的项目&#xff0c;它结合了单片机编程、音频处理、用户界面设计等多个领域的…

SQL 中除了写 in 和 not in外,其他写法

一、WHY&#xff1f; IN 和 NOT IN 是比较常用的关键字&#xff0c;为什么要尽量避免呢&#xff1f; 1、效率低 项目中遇到这么个情况&#xff1a; t1表 和 t2表 都是150w条数据&#xff0c;600M的样子&#xff0c;都不算大。 但是这样一句查询 ↓ select * from t1 whe…